summaryrefslogtreecommitdiffstats
path: root/meta/recipes-bsp/grub
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:35:01 +0000
commitb2d8e3cf620133ea8121b67dc6b449cd7d4ebc02 (patch)
tree3d8998c3ee70ddbdc57c43aafdbcb8b3fe6348b4 /meta/recipes-bsp/grub
parent05fd93ca14436c70253d9c0195deb4be843cbf2b (diff)
downloadpoky-b2d8e3cf620133ea8121b67dc6b449cd7d4ebc02.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. (From OE-Core rev: 801c10b33eb2074677d46b361e46f47b693b573a) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-bsp/grub')
-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() {
70 install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}${EFI_FILES_PATH}/${GRUB_IMAGE} 70 install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}${EFI_FILES_PATH}/${GRUB_IMAGE}
71} 71}
72 72
73do_install_append_aarch64() {
74 rm -rf ${D}/${prefix}/
75}
76
77GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \ 73GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \
78 efi_gop iso9660 configfile search loadenv test" 74 efi_gop iso9660 configfile search loadenv test"
79 75
@@ -88,8 +84,6 @@ FILES_${PN} = "${libdir}/grub/${GRUB_TARGET}-efi \
88 ${EFI_FILES_PATH}/${GRUB_IMAGE} \ 84 ${EFI_FILES_PATH}/${GRUB_IMAGE} \
89 " 85 "
90 86
91FILES_${PN}_remove_aarch64 = "${libdir}/grub/${GRUB_TARGET}-efi"
92
93# 64-bit binaries are expected for the bootloader with an x32 userland 87# 64-bit binaries are expected for the bootloader with an x32 userland
94INSANE_SKIP_${PN}_append_linux-gnux32 = " arch" 88INSANE_SKIP_${PN}_append_linux-gnux32 = " arch"
95INSANE_SKIP_${PN}-dbg_append_linux-gnux32 = " arch" 89INSANE_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 = " \
16 ${sbindir} \ 16 ${sbindir} \
17 ${datadir}/grub \ 17 ${datadir}/grub \
18" 18"
19 19ALLOW_EMPTY_${PN} = "1"
20FILES_${PN}-common_append_aarch64 = " \
21 ${libdir}/${BPN} \
22"
23 20
24do_install_append () { 21do_install_append () {
22 # Avoid conflicts with the EFI package for systems such as arm64 where we
23 # need to build grub and grub-efi but only EFI is supported by removing EFI
24 # from this package.
25 rm -rf ${D}${libdir}/grub/*-efi/
26 rmdir --ignore-fail-on-non-empty ${D}${libdir}/grub ${D}${libdir}
27
25 install -d ${D}${sysconfdir}/grub.d 28 install -d ${D}${sysconfdir}/grub.d
26 # Remove build host references... 29 # Remove build host references...
27 find "${D}" -name modinfo.sh -type f -exec \ 30 find "${D}" -name modinfo.sh -type f -exec \