diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-06-25 12:45:53 -0400 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2018-06-27 14:38:15 -0400 |
commit | 316dfdd917bec6a218f431211d28bf8df6b6fb0f (patch) | |
tree | 5541073f9851f44c2bd67b4959dc776ee3c3810f /import-layers/yocto-poky/meta/recipes-bsp/grub | |
parent | 36acd3e888044dea2ac0b2946f15616f968388c9 (diff) | |
download | talos-openbmc-316dfdd917bec6a218f431211d28bf8df6b6fb0f.tar.gz talos-openbmc-316dfdd917bec6a218f431211d28bf8df6b6fb0f.zip |
Yocto 2.5
Move OpenBMC to Yocto 2.5(sumo)
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Change-Id: I5c5ad6904a16e14c1c397f0baf10c9d465594a78
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-bsp/grub')
6 files changed, 167 insertions, 35 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/gcc8.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/gcc8.patch new file mode 100644 index 000000000..fa7331f1b --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/gcc8.patch @@ -0,0 +1,74 @@ +From 563b1da6e6ae7af46cc8354cadb5dab416989f0a Mon Sep 17 00:00:00 2001 +From: Michael Chang <mchang@suse.com> +Date: Mon, 26 Mar 2018 16:52:34 +0800 +Subject: Fix packed-not-aligned error on GCC 8 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When building with GCC 8, there are several errors regarding packed-not-aligned. + +./include/grub/gpt_partition.h:79:1: error: alignment 1 of ‘struct grub_gpt_partentry’ is less than 8 [-Werror=packed-not-aligned] + +This patch fixes the build error by cleaning up the ambiguity of placing +aligned structure in a packed one. In "struct grub_btrfs_time" and "struct +grub_gpt_part_type", the aligned attribute seems to be superfluous, and also +has to be packed, to ensure the structure is bit-to-bit mapped to the format +laid on disk. I think we could blame to copy and paste error here for the +mistake. In "struct efi_variable", we have to use grub_efi_packed_guid_t, as +the name suggests. :) + +Signed-off-by: Michael Chang <mchang@suse.com> +Tested-by: Michael Chang <mchang@suse.com> +Tested-by: Paul Menzel <paulepanter@users.sourceforge.net> +Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> + +Upstream-Status: Backport http://git.savannah.gnu.org/cgit/grub.git/commit/?id=563b1da6e6ae7af46cc8354cadb5dab416989f0a +--- + grub-core/fs/btrfs.c | 2 +- + include/grub/efiemu/runtime.h | 2 +- + include/grub/gpt_partition.h | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/grub-core/fs/btrfs.c b/grub-core/fs/btrfs.c +index 4849c1c..be19544 100644 +--- a/grub-core/fs/btrfs.c ++++ b/grub-core/fs/btrfs.c +@@ -175,7 +175,7 @@ struct grub_btrfs_time + { + grub_int64_t sec; + grub_uint32_t nanosec; +-} __attribute__ ((aligned (4))); ++} GRUB_PACKED; + + struct grub_btrfs_inode + { +diff --git a/include/grub/efiemu/runtime.h b/include/grub/efiemu/runtime.h +index 9b6b729..36d2ded 100644 +--- a/include/grub/efiemu/runtime.h ++++ b/include/grub/efiemu/runtime.h +@@ -29,7 +29,7 @@ struct grub_efiemu_ptv_rel + + struct efi_variable + { +- grub_efi_guid_t guid; ++ grub_efi_packed_guid_t guid; + grub_uint32_t namelen; + grub_uint32_t size; + grub_efi_uint32_t attributes; +diff --git a/include/grub/gpt_partition.h b/include/grub/gpt_partition.h +index 1b32f67..9668a68 100644 +--- a/include/grub/gpt_partition.h ++++ b/include/grub/gpt_partition.h +@@ -28,7 +28,7 @@ struct grub_gpt_part_type + grub_uint16_t data2; + grub_uint16_t data3; + grub_uint8_t data4[8]; +-} __attribute__ ((aligned(8))); ++} GRUB_PACKED; + typedef struct grub_gpt_part_type grub_gpt_part_type_t; + + #define GRUB_GPT_PARTITION_TYPE_EMPTY \ +-- +cgit v1.0-41-gc330 + diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch index 935c472cf..ffc2d40d8 100644 --- a/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch +++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch @@ -43,19 +43,16 @@ Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> grub-core/genmod.sh.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/grub-core/genmod.sh.in b/grub-core/genmod.sh.in -index 76df0bb..39a9cfc 100644 ---- a/grub-core/genmod.sh.in -+++ b/grub-core/genmod.sh.in -@@ -59,7 +59,7 @@ if test x@TARGET_APPLE_CC@ != x1; then +Index: grub-2.02/grub-core/genmod.sh.in +=================================================================== +--- grub-2.02.orig/grub-core/genmod.sh.in ++++ grub-2.02/grub-core/genmod.sh.in +@@ -56,7 +56,7 @@ if test x@TARGET_APPLE_LINKER@ != x1; th if test x@platform@ != xemu; then - @STRIP@ --strip-unneeded \ + @TARGET_STRIP@ --strip-unneeded \ -K grub_mod_init -K grub_mod_fini \ - -K _grub_mod_init -K _grub_mod_fini \ + -K _grub_mod_init -K _grub_mod_fini -K .module_license \ -R .note.gnu.gold-version -R .note.GNU-stack \ - -R .note -R .comment $tmpfile || exit 1 + -R .note -R .comment -R .ARM.exidx $tmpfile || exit 1 fi --- -2.8.1 - diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-bootconf_1.00.bb b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-bootconf_1.00.bb new file mode 100644 index 000000000..750f8c808 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-bootconf_1.00.bb @@ -0,0 +1,29 @@ +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +SUMMARY = "Basic grub.cfg for use in EFI systems" + +RPROVIDES_${PN} += "virtual/grub-bootconf" + +inherit grub-efi-cfg + +S = "${WORKDIR}" + +GRUB_CFG = "${S}/grub-bootconf" +LABELS = "boot" + +ROOT ?= "root=/dev/sda2" + +python do_configure() { + bb.build.exec_func('build_efi_cfg', d) +} + +do_configure[vardeps] += "APPEND ROOT" + +do_install() { + install -d ${D}/boot + install -d ${D}/boot/EFI + install -d ${D}/boot/EFI/BOOT + install grub-bootconf ${D}/boot/EFI/BOOT/grub.cfg +} + +FILES_${PN} = "/boot/EFI/BOOT/grub.cfg" diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-efi_2.02.bb b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-efi_2.02.bb index 128da162d..7bfc8eece 100644 --- a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-efi_2.02.bb +++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub-efi_2.02.bb @@ -3,7 +3,7 @@ require grub2.inc GRUBPLATFORM = "efi" DEPENDS_append_class-target = " grub-efi-native" -RDEPENDS_${PN}_class-target = "diffutils freetype" +RDEPENDS_${PN}_class-target = "diffutils freetype grub-common virtual/grub-bootconf" SRC_URI += " \ file://cfg \ @@ -15,16 +15,22 @@ S = "${WORKDIR}/grub-${PV}" python __anonymous () { import re target = d.getVar('TARGET_ARCH') + prefix = "" if d.getVar('EFI_PROVIDER') == "grub-efi" else "grub-efi-" if target == "x86_64": grubtarget = 'x86_64' - grubimage = "grub-efi-bootx64.efi" + grubimage = prefix + "bootx64.efi" elif re.match('i.86', target): grubtarget = 'i386' - grubimage = "grub-efi-bootia32.efi" + grubimage = prefix + "bootia32.efi" + elif re.match('aarch64', target): + grubtarget = 'arm64' + grubimage = prefix + "bootaa64.efi" else: - raise bb.parse.SkipPackage("grub-efi is incompatible with target %s" % target) + raise bb.parse.SkipRecipe("grub-efi is incompatible with target %s" % target) d.setVar("GRUB_TARGET", grubtarget) d.setVar("GRUB_IMAGE", grubimage) + prefix = "grub-efi-" if prefix == "" else "" + d.setVar("GRUB_IMAGE_PREFIX", prefix) } inherit deploy @@ -36,12 +42,36 @@ EXTRA_OECONF += "--enable-efiemu=no" # and many other places in the grub code when compiled with some native gcc compilers (specifically, gentoo) CFLAGS_append_class-native = " -Wno-error=trampolines" +do_mkimage() { + cd ${B} + # Search for the grub.cfg on the local boot media by using the + # built in cfg file provided via this recipe + grub-mkimage -c ../cfg -p /EFI/BOOT -d ./grub-core/ \ + -O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} \ + ${GRUB_BUILDIN} +} + +addtask mkimage before do_install after do_compile + +do_mkimage_class-native() { + : +} + +do_install_append_class-target() { + install -d ${D}/boot + install -d ${D}/boot/EFI + install -d ${D}/boot/EFI/BOOT + install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${D}/boot/EFI/BOOT/${GRUB_IMAGE} +} + do_install_class-native() { install -d ${D}${bindir} install -m 755 grub-mkimage ${D}${bindir} } -do_install_append_class-target() { +do_install_class-target() { + oe_runmake 'DESTDIR=${D}' -C grub-core install + # Remove build host references... find "${D}" -name modinfo.sh -type f -exec \ sed -i \ @@ -52,15 +82,10 @@ do_install_append_class-target() { } GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \ - efi_gop iso9660 search loadenv test" + efi_gop iso9660 configfile search loadenv test" do_deploy() { - # Search for the grub.cfg on the local boot media by using the - # built in cfg file provided via this recipe - grub-mkimage -c ../cfg -p /EFI/BOOT -d ./grub-core/ \ - -O ${GRUB_TARGET}-efi -o ./${GRUB_IMAGE} \ - ${GRUB_BUILDIN} - install -m 644 ${B}/${GRUB_IMAGE} ${DEPLOYDIR} + install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${DEPLOYDIR} } do_deploy_class-native() { @@ -69,9 +94,11 @@ do_deploy_class-native() { addtask deploy after do_install before do_build -FILES_${PN} += "${libdir}/grub/${GRUB_TARGET}-efi \ - ${datadir}/grub \ - " +FILES_${PN} = "${libdir}/grub/${GRUB_TARGET}-efi \ + ${datadir}/grub \ + /boot/EFI/BOOT/${GRUB_IMAGE} \ + " + # 64-bit binaries are expected for the bootloader with an x32 userland INSANE_SKIP_${PN}_append_linux-gnux32 = " arch" diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc index 28f96bb16..a8f335e1f 100644 --- a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc +++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub2.inc @@ -18,6 +18,7 @@ SRC_URI = "https://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \ file://grub-module-explicitly-keeps-symbole-.module_license.patch \ file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \ file://fix.build.with.gcc-7.patch \ + file://gcc8.patch \ " SRC_URI[md5sum] = "1116d1f60c840e6dbd67abbc99acb45d" SRC_URI[sha256sum] = "660ee136fbcee08858516ed4de2ad87068bfe1b6b8b37896ce3529ff054a726d" @@ -47,7 +48,7 @@ EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} \ PACKAGECONFIG ??= "" PACKAGECONFIG[grub-mount] = "--enable-grub-mount,--disable-grub-mount,fuse" -PACKAGECONFIG[device-mapper] = "--enable-device-mapper,--disable-device-mapper,lvm2" +PACKAGECONFIG[device-mapper] = "--enable-device-mapper,--disable-device-mapper,libdevmapper" # grub2 creates its own set of -nostdinc / -isystem / -ffreestanding CFLAGS and # OE's default BUILD_CFLAGS (assigned to CFLAGS for native builds) etc, conflict @@ -67,12 +68,4 @@ do_configure_prepend() { ${S}/autogen.sh ) } -# grub and grub-efi's sysroot/${datadir}/grub/grub-mkconfig_lib are -# conflicted, remove it since no one uses it. -SYSROOT_DIRS_BLACKLIST += "${datadir}/grub/grub-mkconfig_lib" - -PACKAGES =+ "${PN}-editenv" - -FILES_${PN}-editenv = "${bindir}/grub-editenv" -RDEPENDS_${PN} += "${PN}-editenv" RDEPENDS_${PN}_class-native = "" diff --git a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.02.bb b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.02.bb index 3e61f6a16..e0973759f 100644 --- a/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.02.bb +++ b/import-layers/yocto-poky/meta/recipes-bsp/grub/grub_2.02.bb @@ -1,6 +1,18 @@ require grub2.inc -RDEPENDS_${PN} += "diffutils freetype" +RDEPENDS_${PN}-common += "${PN}-editenv" +RDEPENDS_${PN} += "diffutils freetype ${PN}-common" + +RPROVIDES_${PN}-editenv += "${PN}-efi-editenv" + +PACKAGES =+ "${PN}-editenv ${PN}-common" +FILES_${PN}-editenv = "${bindir}/grub-editenv" +FILES_${PN}-common = " \ + ${bindir} \ + ${sysconfdir} \ + ${sbindir} \ + ${datadir}/grub \ +" do_install_append () { install -d ${D}${sysconfdir}/grub.d |