mpc85xx uses this for firmware image files, since the dtb data is not
directly part of the kernel image. This causes build failures in the
image builder.
Fix this by adding a separate build step that runs this call earlier,
reusing the generated file for any calls from kernel or image build
commands.
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Starting with commit d5d332d3f7e8 ("devicetree: Move include prefixes
from arch to separate directory") included in 4.12 and newer relocated
the dt-bindings directory, so account for that while passing CPPFLAGS
before DTC runs.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Some files (e.g. /etc/dropbear) need to be owned by root. Add cpio
option to ensure that.
Other image types (at least targz and squashfs) already have this.
Signed-off-by: Michal Sojka <sojkam1@fel.cvut.cz>
This reduces the amount of hacks in the makefile code.
Remove the apm821xx code to do the same - it was broken and left both
compressed and uncompressed images in $(BIN_DIR)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
The generated 'its' is passed to mkimage which expects linux arch
strings rather than the full arch (e.g. mips not mipsel).
It currently works in some cases where LINUX_KARCH == ARCH but
otherwise you get an unknown arch build error.
Signed-off-by: Ian Pozella <Ian.Pozella@imgtec.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Now that the VERSION_NUMBER variable holds the human friendly name and not
the commit ID anymore, we need to support adding the revision ID as well.
Introduce a new config variable CONFIG_VERSION_CODE_FILENAMES which, if set,
causes the resulting file names to contain a commit ID designation as printed
by scripts/getver.sh.
Also sanitize the input variables to ensure that the resulting strings are
lowercased and no not contain spaces.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
There is very little practical use to limit the number of available inodes on
an ext4 filesystem and the make_ext4fs utility is able to calculate useful
defaults by itself.
Drop the option to make resulting ext4 filesystems more flexible by default.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Acked-by: Michael Heimpold <mhei@heimpold.de>
Allow CONFIG_TARGET_EXT4_RESERVED_PCT to be empty as make_ext4fs is usually
able to figure out a suitable default.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
Reviewed-by: Michael Heimpold <mhei@heimpold.de>
Especially --force-overwrite and --force-depends will often lead to broken
images; it's better to fail the build in such cases than to silently ignore
the errors.
Instead, ignore errors in the per-device rootfs opkg remove command, so
the build doesn't break when packages can't be removed because of
dependencies.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Some DEVICE_PACKAGES definitions replace one package variant with another
(e.g. wpad-mini is replaced with wpad). To avoid file conflicts, first
remove, then install packages.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Modifying the file permissions can be harmful, as it would make files
world-readable even if they weren't in the ipk packages. The
Image/mkfs/prepare step is removed completely, as it is redundant now (/tmp
and /overlay are already provided by base-files with the correct
permissions).
It has been verified that this change does not affect any permissions of
files in the default package set except /etc/ppp/chap-secrets, which was
world-readable before. All packages not in the default set are more likely
to be installed via opkg than being part of a base image and thus were
usually not affected by the permission modification anyways.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Running prepare_rootfs on TARGET_DIR deletes the opkg state when
CONFIG_CLEAN_IPKG is enabled, making the per-device rootfs package install
fail.
To avoid this, create a copy of the TARGET_DIR before prepare_rootfs is run
and use this as basis for per-device rootfs generation.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Add a new option to each device in multi-profile mode, allowing to provide
a list of packages to add or remove. In case of added packages, the user
must take care that these are selected to be built.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
opkg's -l option is always interpreted relative to the installation root.
This leads to very weird paths inside the rootfs (containing the whole path
to the LEDE tree on the build machine) and causes the subsequent deletion
of the list directory to fail (cluttering the resulting images).
Instead, use the default list directory and remove its contents in
prepare_rootfs.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
Only add them where they are actually required.
Should help with compatibility issues with stock U-Boot images that
access UBI
Signed-off-by: Felix Fietkau <nbd@nbd.name>
A few linux BSP's create a manifest file of installed packages for a given
target in order to help them understand exactly what's on their images. Create
one here as well as a build artifact since many users have an affinity to
prune down on packages to save valuable flash space.
Signed-off-by: Pushpal Sidhu <psidhu@gateworks.com>
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Now that we globally calculate sha256sums over the bin/ directory we can remove
the target image specific checksum handling.
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This allows the image builder to change EXTRA_IMAGE_NAME at a later
point in time without breaking the build
Signed-off-by: Felix Fietkau <nbd@nbd.name>
They are not used to produce regular firmware images anyway. Instead,
call their build templates directly if enabled in the config
Signed-off-by: Felix Fietkau <nbd@nbd.name>
It is used by a core build template, so the variable should be
initialized and added to DEVICE_VARS in the core.
Same for DEVICE_DTS_DIR
Signed-off-by: Felix Fietkau <nbd@nbd.name>
If KERNEL_INITRAMFS := in the target/linux/*/image/Makefile->Device/%NAME% section is set to ''
then personal initramfs file for this target device will not be created.
This var is similar to the Device/Build/kernel KERNEL_INSTALL :=
Signed-off-by: Sergey Sergeev <adron@yapic.net>
The --mtime argument to 'tar' sets the modification time for all files within
the archive, which determines the timestamp files will get when they are
extracted. In this case, rootfs and other tarballs will get mtimes which
correspond to the last commit timestamp of the build system, as reported by
git/subversion.
This is a step towards reproducible image builds.
Signed-off-by: bryan newbold <bnewbold@robocracy.org>
Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 48586
`Build/ubnt-erx-factory-kernel` in `target\linux\ramips\image\Makefile`
references `$(KERNEL_INITRAMFS_IMAGE)`
which is not exported
Signed-off-by: YounJae Rho <luxflow@live.com>
SVN-Revision: 48116
For final output image names allow user to add an
extra string (which is sanitized). This is particularly
useful with ImageBuilder where you may generate multiple
images from the same base and for the same board,
with different package selections and additional files
(via FILES=).
Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
SVN-Revision: 48083
We allow to configure the version distribution name;
let's also use it for the final image filenames.
Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
SVN-Revision: 48082
Use kernel arch for dts compilation.
Also use Image/BuildDTB to build dts for ramips.
Signed-off-by: Nikolay Martynov <mar.kolya@gmail.com>
SVN-Revision: 47823
Some devices require the kernel to be in a JFFS2 file system. Make the
support for this more generic so that it can be used by other devices.
Signed-off-by: Benjamin Berg <benjamin@sipsolutions.net>
SVN-Revision: 47404
In case if we're interested in generation of non-binary images
(for example if we want images to be valid .elfs - and that's what we
want for ARC now) we have to instruct Device/Build/initramfs target to
use input file with some extension (in case of ARC it will be
essentially .elf).
Otherwise default binary vmlinux-initramfs (without extension) is used and
resulting images then are binaries instead of elfs.
Now having KERNEL_INITRAMFS_NAME variable it's possible to substitute
default $$(KERNEL_NAME)-initramfs with preferred option like
$$(KERNEL_NAME)-initramfs.elf.
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Felix Fietkau <nbd@openwrt.org>
Cc: John Crispin <blogic@openwrt.org>
SVN-Revision: 47403
Making common code reusable as there's a lot of duplicate code in imx6,
kirkwood and oxnas archs.
Signed-off-by: Petr Štetiar <ynezz@true.cz>
SVN-Revision: 47307
several packages reported different file order between builds
make binutils, kmod-sched reproducible
Signed-off-by: Dirk Neukirchen <dirkneukirchen@web.de>
SVN-Revision: 46859
The KERNEL_SIZE should be the maximum size, inclusive, so we need to
check for greater equal, not just greater.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 46792
Make the device name accessible for any build commands instead of
forcing targets to define it themselves.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 46597
Instead of letting each target define it themselves, create on in
include/image.mk and let the targets use it.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 46596
Instead of each target defining it the same, move the KDIR_TMP
definition to include/image.mk. In addition Image/Build/SysupgradeNAND
already requires KDIR_TMP to be set, so it makes sense to have it
globally defined.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 46592
Add a Image/BuildDTB command that takes the path to an dts file and
applies the CPP using the default include directories, then uses dtc
to compile the dts as the specified output file.
Additional CPP and DTC flags can be supplied as additional arguments.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 46389
To improve reproducibility, prevent the inclusion of timestamps
in the gzip header.
Signed-off-by: Reiner Herrmann <reiner@reiner-h.de>
SVN-Revision: 46361
Some kernel images need to be wrapped in a loader, which cannot be built
without a working toolchain.
Also, this speeds up the image builder run.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 45836
Output warnings through stderr to allow them to be easilier spotted
when building with V=w.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
SVN-Revision: 45746
As mkits.sh makes the -d argument optional, we'll make this same
argument optional in the MkFIT function as well.
With this change, MkFIT can be used both to generate FIT images with DT,
and without DT.
Signed-off-by: Mathieu Olivari <mathieu@qca.qualcomm.com>
SVN-Revision: 45660
Set it to the filesystem which is build. mktplinkfw need to know which filesystem
is used.
FILESYSTEM can be squashfs, jffs2-64k, ...
Signed-off-by: Alexander Couzens <lynxis@fe80.eu>
SVN-Revision: 44997
This simplifies building device / profile specific images, and allows
the build system to parallelize generating images
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 43907
This commit introduces a new option CONFIG_VERSION_FILENAMES which causes
OpenWrt to embed the version number in generated image files, SDK- and
ImageBuilder archives.
The option is enabled by default if CONFIG_VERSIONOPT is set.
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 43869
When using UbinizeImage with ubifs rootfs, ubinize.cfg is no longer
needed. Yet, the absance of ubinize.cfg would make the build process
abort with an error.
Fix that by checking if ubinize.cfg is present and do no not call the
"classic" ubinize image generation if it isn't.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
[missing new-line before UbinizeImage added itentionally]
SVN-Revision: 43788