make_dtb_boot_files already creates the list of device trees with their
right destination. There is no need to redo a similar logic here. As a
matter of fact, the sdimg functionality had a bug because it didn't
treat overlay_map.dtb as an overlays file.
Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
This is the result of automated script conversion:
oe-core/scripts/contrib/convert-overrides.py .
converting the metadata to use ":" as the override character instead of "_".
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
The bootfiles:do_deploy task already depends on rpi-config:do_deploy so
we do not explicitly need to list the dependency again in the
sdcard_image-rpi class.
Signed-off-by: Paul Barker <pbarker@konsulko.com>
If the variable is not defined, bitbake will fail:
[...]
Task 'depends' should be specified in the form 'packagename:task'
[...]
This is because not expanding the variable leaves an invalid entry.
Signed-off-by: Andrei Gherzan <andrei@gherzan.ro>
The raspberry pi 4 variant has a BCM2711 chip, however it still
uses the same boot files as the BCM2835 used in previous generations.
This change generalizes the naming of the directory generated in the
$DEPLOY_DIR to avoid the implication that the files are only
meant for the BCM2835.
Signed-off-by: Jeff Ithier <ithijme@gmail.com>
Add DEPLOYPAYLOAD, similar to the existing FATPAYLOAD, to enable
adding files to the boot partition from the image deploy directory.
Files such as hypervisor binaries may not be present (and in fact
unwanted) within the root filesystem, so FATPAYLOAD is not sufficient.
DEPLOYPAYLOAD is implemented with support for file renaming from the
source file in the image deploy directory to the filename written into
the boot image. DEPLOYPAYLOAD is a space-separated list of entries for
additions, each of which can optionally be colon-separated:
<image deploy directory file>:<destination filename>
If the colon separator is omitted, the source deploy directory filename
is used as the destination filename.
The support for specifying the destination filename is used for
including Xen, which produces a machine-specific file in the image
deploy directory, and is written to the image partition with its
expected filename: xen.
Files that are to be included from the image deploy directory will
be produced by tasks that the do_image_rpi_sdimg[depends] must list,
so enable adding entries to that via a new variable:
RPI_SDIMG_EXTRA_DEPENDS.
These changes enable retiring a Xen-specific Raspberry Pi SD card
bbclass from meta-virtualization and have been tested on the
Raspberry Pi 4.
Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
Add u-boot-default-script to the PROVIDES variable to make easier to
replace boot script in another layer just by changing
PREFERRED_PROVIDER_u-boot-default-script variable. Set rpi-u-boot-scr as
the default provider for meta-raspberrypi.
Signed-off-by: Fabio Berton <fabio.berton@ossystems.com.br>
Use the IMAGE_NAME_SUFFIX variable to build the SDIMG name. Some layers,
notably meta-mender, change the IMAGE_NAME_SUFFIX variable to something
other that ".rootfs", causing build failures.
Signed-off-by: Francois Retief <fgretief@gmail.com>
* I have this in our layer for some time:
RPI_KERNEL_DEVICETREE_OVERLAYS_append = " overlays/vc4-fkms-v3d.dtbo"
because we're using vc4graphics also on raspberrypi3 and it was
working fine until recently.
* now the default rpi-base.inc in warrior and master branch includes the same since:
37aa050d5a
and do_image_rpi_sdimg started failing with a bit useless log:
...
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 4194kB 46.1MB 41.9MB primary boot, lba
2 46.1MB 1145MB 1099MB primary
mkfs.fat: warning - lowercase labels might not work properly with DOS or
Windows
mkfs.fat 4.1 (2017-01-24)
WARNING: exit code 1 from a shell command.
* after adding -v to mcopy calls I got slightly better log:
...
Copying w1-gpio-pullup.dtbo
Copying w1-gpio.dtbo
WARNING: exit code 1 from a shell command.
* the issue is that mcopy behavior in non-interactive shell is to fail
when the target file already exists (sometimes it seems to cause mcopy
to hang forever), but when you execute the run.do_image_rpi_sdimg
script manually in interactive shell it will nicely show this prompt
on stderr:
$ dtb=vc4-fkms-v3d.dtbo recipe-sysroot-native/usr/bin/mcopy -i boot.img -s BUILD/deploy/images/raspberrypi3/$dtb ::overlays/$dtb
Long file name "vc4-fkms-v3d.dtbo" already exists.
a)utorename A)utorename-all r)ename R)ename-all o)verwrite O)verwrite-all
s)kip S)kip-all q)uit (aArRoOsSq): o
* with the bbfatal the log is finally a bit more useful:
...
Copying w1-gpio-pullup.dtbo
Copying w1-gpio.dtbo
ERROR: mcopy cannot copy TOPDIR/BUILD/deploy/images/raspberrypi3/vc4-fkms-v3d.dtbo into boot.img
WARNING: exit code 1 from a shell command.
* the only exception is FATPAYLOAD where it was ignoring mcopy with || true
before, I've added bbwarn, because even issues like mentioned there
"vfat issues like not supporting .~lock files" are probably worth
reporting as warning (why would people add .~lock to FATPAYLOAD if
it cannot be copied into boot.img)
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
Double quotation marks were added around FATPAYLOAD to prevent parsing error when FATPAYLOAD contains list of file names
Signed-off-by: Nataliya Korovkina <malus.brandywine@gmail.com>
Using SDIMG_COMPRESSION variable to choose compression type for
produced images is deprecated. IMAGE_FSTYPES should be used instead.
This patch removes any response to SDIMG_COMPRESSION within
sdcard_image-rpi.bbclass
Signed-off-by: Iurii Lunev <koolkhel@mail.ru>
* use INITRAMFS_SYMLINK_NAME from new kernel-artifact-names.bbclass
instead of KERNEL_INITRAMFS
* the documentation says that KERNEL_INITRAMFS should be used to
define extension of initramfs, but in linux-raspberrypi.inc it's
defined only to 1 or empty based on INITRAMFS_IMAGE_BUNDLE variable
and I don't see any code in meta-raspberry or oe-core which would
use KERNEL_INITRAMFS to actualy name the initramfs artifact to create:
${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin
used in classes/sdcard_image-rpi.bbclass
* also fix the assumption that there is -${MACHINE} suffix in:
${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}${KERNEL_INITRAMFS}-${MACHINE}.bin
because that's defined as KERNEL_IMAGE_SYMLINK_NAME and some DISTROs
might use different value
* this depends on oe-core changes which were merged today:
http://git.openembedded.org/openembedded-core/commit/?id=7d0ef0eaa1bfe97015a774c26f5791622e7e8b12
* this is the last piece of previous pull-request:
https://github.com/agherzan/meta-raspberrypi/pull/159
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
* there is runtime dependency on rpi-u-boot-scr from u-boot itself:
recipes-bsp/u-boot/u-boot_%.bbappend:RDEPENDS_${PN}_append_rpi = " rpi-u-boot-scr"
* but that's not enough to ensure that rpi-u-boot-scr:do_deploy is
finished before do_image_rpi_sdimg and for
${DEPLOY_DIR_IMAGE}/boot.scr to exist in time
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
* instead of using ${KERNEL_IMAGETYPE}-${DTB_BASE_NAME}.dtb use
the entries from KERNEL_DEVICETREE
* basename is still needed because raspberrypi3-64 is using:
broadcom/bcm2710-rpi-3-b.dtb and the ${DEPLOY_DIR_IMAGE} doesn't
contain any directories for DTBs and we cannot remove broadcom/
prefix, because then "make bcm2710-rpi-3-b.dtb" from
kernel-devicetree.bbclass will fail with:
make[3]: *** No rule to make target 'arch/arm64/boot/dts/bcm2710-rpi-3-b.dtb'. Stop.
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
The dependency resolution code in bitbake has recently been optimized and this
seems to have slightly changed the behaviour of do_image_rpi_sdimg and
do_image_wic. We ensure that the main build artifacts are present by depending
on the relevant do_deploy and do_populate_sysroot tasks. However, we need to
ensure that other build tasks for these dependencies have also been executed
before we try to create our image. This can be achieved by adding a recursive
dependency on do_build, so that the do_build tasks of all recipes in the
dependency chain of do_image_rpi_sdimg/do_image_wic are executed before the
image function itself is executed.
The original issue seen here was that 'recipedata' files were not copied to
'tmp/deploy/licenses' as do_populate_lic for each dependency had not been ran
before the image creation function. The write_deploy_manifest function from
license.bbclass (listed in IMAGE_POSTPROCESS_COMMAND) therefore failed. Adding
the recursive dependency on do_build fixes this issue, ensuring do_populate_lic
runs before do_image_rpi_sdimg/do_image_wic.
Signed-off-by: Paul Barker <pbarker@toganlabs.com>
The timestamp in the rootfs partition image filename may not match the current
timestamp if the do_image_rpi_sdimg step is repeated without repeating the
previous do_image_ext3 (or similar) step.
Signed-off-by: Paul Barker <pbarker@toganlabs.com>
These commands are unnecessary and seem to mask failures to find the rootfs.ext3
file when re-running the do_image_rpi_sdimg stage without re-running the
preceeding do_image_ext3 stage.
Signed-off-by: Paul Barker <pbarker@toganlabs.com>
For raspberrypi3-64 we need to use the Image or Image.gz format with u-boot
instead of the legacy uImage format. We also need to issue the 'booti' command
to boot the kernel instead of 'bootm'.
Signed-off-by: Paul Barker <pbarker@toganlabs.com>
The only remaining function in linux-raspberrypi-base was split_overlays() which
is used in the sdcard_image-rpi class. So we can move this function over and
drop the now-empty linux-raspberrypi-base class.
Signed-off-by: Paul Barker <pbarker@toganlabs.com>
* The kerneltype variable is not used anywhere after being set.
* The manipulation of KERNEL_DEVICETREE is effectively a no-op, we read the
current value in get_dts() and store this back into the same variable.
Signed-off-by: Paul Barker <pbarker@toganlabs.com>
Fix bitbake complaining with:
ERROR: core-image-minimal-1.0-r0 do_image_complete: sstate found an absolute
path symlink [...].vfat pointing at [...].vfat. Please replace this with a
relative link.
This patch redefines SDIMG_VFAT as a file name instead of a full absolute path,
then fixing the symlink creation by pointing to a relative target. The cp
command that deploys the artifact is changed accordingly to include the
destination path.
Signed-off-by: Andrea Galbusera <gizero@gmail.com>
* oe-core removed IMAGE_DEPENDS -> parsing fails with hint how to fix
* add required task for each recipe
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
The value of the RPI_KERNEL_VERSION can change between None and the
kernel version which can result in taskhash mismatch errors while
building images.
The taskhash mismatch errors can be reproduced using:
bitbake -c cleansstate virtual/kernel core-image-minimal && bitbake core-image-minimal
The get_dts() and split_overlays() functions are modified so that the
kernel version argument is optional. If the version is not supplied to
these functions, they will fallback to the Python equivalent of the
expression used for RPI_KERNEL_VERSION.
Signed-off-by: Jonathan Liu <net147@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
oe-core's commit d54339d4b1a7e884de636f6325ca60409ebd95ff creates image in
IMGDEPLOYDIR and copies through sstate to DEPLOY_DIR_IMAGE. That causes
DEPLOY_DIR_IMAGE not valid when calling IMAGE_CMD. Therefore use
IMGDEPLOYDIR for sdcard creation too.
Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
Add support for both extensions for overlays (".dtb" and ".dtbo")
CAUTION: in IMAGE_CMD_rpi-sdimg, 'TMPDIR' is not set, causing 'STAGING_KERNEL_BUILDDIR' to not be expanded, causing get_dts() to not being able to get the kernel version!
To avoid this problem, the kernel version is added in a new variable outside the scope of IMAGE_CMD_rpi-sdimg, and its value passed to get_dts() and split_overlays()!
Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
Kernel 4.4.6+ on RaspberryPi support .dtbo files for overlays, instead of .dtb.
Add support for both variants of overlays ("-overlay.dtb" and ".dtbo")
Change which variant needs to be supported based on the kernel version
CAUTION: when called from IMAGE_CMD_rpi-sdimg, 'TMPDIR' is not set, causing 'STAGING_KERNEL_BUILDDIR' to not be expanded, causing get_kernelversion_file() to fail!
To avoid this problem, get_dts() and split_overlays() MUST be called with the kernel version parameter set, when called from IMAGE_CMD_rpi-sdimg!
Signed-off-by: Herve Jourdain <herve.jourdain@neuf.fr>
The IMAGE_NAME variable already contains the date and time so it is
redundant to also include the date again with IMAGEDATESTAMP
when writing to image-version-info in the boot partition.
Signed-off-by: Jonathan Liu <net147@gmail.com>