summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Burton <ross@burtonini.com>2021-02-22 18:06:37 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-02-23 22:31:55 +0000
commit801c10b33eb2074677d46b361e46f47b693b573a (patch)
treee02dd2725a5c74825e3bd468d6998191a8394e32
parenta748e6098fa7d2ff594319937c7e0cf97700e83a (diff)
downloadopenembedded-core-contrib-801c10b33eb2074677d46b361e46f47b693b573a.tar.gz
grub: shuffle packaging for aarch64 builds
Even in grub-efi platforms we need to build grub for the the common tools. On x86 this isn't a problem because grub builds legacy boot and grub-efi builds EFI, but on aarch64 there is no legacy boot supported by grub. To ensure that the common tools are built the grub recipe also builds EFI binaries, but this now means that grub and grub-efi ship the same binaries. oe-core 933286 fixed this conflict by deleting the binaries from grub-efi and putting the aarch64 modules into grub-common (relying on dependencies to pull grub-common in). This seems backwards: grub-efi no longer contains the binaries and they're in different packages on arm or x86. Also, SDK generation is broken as the grub package itself is now empty as the binaries are in grub-common. Resolve all of these issues by reversing the logic: grub-efi is the package which holds the EFI binaries on all platforms. grub only builds for EFI on aarch64 as a way to build the common binaries, so delete them in that recipe to avoid conflicts. And finally as the grub recipe is empty on aarch64 but needed by dependencies, set ALLOW_EMPTY. Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-bsp/grub/grub-efi_2.04.bb6
-rw-r--r--meta/recipes-bsp/grub/grub_2.04.bb11
2 files changed, 7 insertions, 10 deletions
diff --git a/meta/recipes-bsp/grub/grub-efi_2.04.bb b/meta/recipes-bsp/grub/grub-efi_2.04.bb
index f80afd95cb..287845c507 100644
--- a/meta/recipes-bsp/grub/grub-efi_2.04.bb
+++ b/meta/recipes-bsp/grub/grub-efi_2.04.bb
@@ -70,10 +70,6 @@ do_install() {
install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}${EFI_FILES_PATH}/${GRUB_IMAGE}
}
-do_install_append_aarch64() {
- rm -rf ${D}/${prefix}/
-}
-
GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \
efi_gop iso9660 configfile search loadenv test"
@@ -88,8 +84,6 @@ FILES_${PN} = "${libdir}/grub/${GRUB_TARGET}-efi \
${EFI_FILES_PATH}/${GRUB_IMAGE} \
"
-FILES_${PN}_remove_aarch64 = "${libdir}/grub/${GRUB_TARGET}-efi"
-
# 64-bit binaries are expected for the bootloader with an x32 userland
INSANE_SKIP_${PN}_append_linux-gnux32 = " arch"
INSANE_SKIP_${PN}-dbg_append_linux-gnux32 = " arch"
diff --git a/meta/recipes-bsp/grub/grub_2.04.bb b/meta/recipes-bsp/grub/grub_2.04.bb
index f2942b9e37..d4e09faa40 100644
--- a/meta/recipes-bsp/grub/grub_2.04.bb
+++ b/meta/recipes-bsp/grub/grub_2.04.bb
@@ -16,12 +16,15 @@ FILES_${PN}-common = " \
${sbindir} \
${datadir}/grub \
"
-
-FILES_${PN}-common_append_aarch64 = " \
- ${libdir}/${BPN} \
-"
+ALLOW_EMPTY_${PN} = "1"
do_install_append () {
+ # Avoid conflicts with the EFI package for systems such as arm64 where we
+ # need to build grub and grub-efi but only EFI is supported by removing EFI
+ # from this package.
+ rm -rf ${D}${libdir}/grub/*-efi/
+ rmdir --ignore-fail-on-non-empty ${D}${libdir}/grub ${D}${libdir}
+
install -d ${D}${sysconfdir}/grub.d
# Remove build host references...
find "${D}" -name modinfo.sh -type f -exec \