From eb8dc40360f0cfef56fb6947cc817a547d6d9bc6 Mon Sep 17 00:00:00 2001 From: Dave Cobbley Date: Tue, 14 Aug 2018 10:05:37 -0700 Subject: [Subtree] Removing import-layers directory As part of the move to subtrees, need to bring all the import layers content to the top level. Change-Id: I4a163d10898cbc6e11c27f776f60e1a470049d8f Signed-off-by: Dave Cobbley Signed-off-by: Brad Bishop --- ...-mfpmath-sse-as-well-when-SSE-is-disabled.patch | 46 +++++++++ ...need_charset_alias-when-building-for-musl.patch | 30 ++++++ ...1-grub.d-10_linux.in-add-oe-s-kernel-name.patch | 56 +++++++++++ .../grub/files/autogen.sh-exclude-pc.patch | 34 +++++++ poky/meta/recipes-bsp/grub/files/cfg | 2 + .../grub/files/fix.build.with.gcc-7.patch | 39 ++++++++ poky/meta/recipes-bsp/grub/files/gcc8.patch | 74 ++++++++++++++ ...-explicitly-keeps-symbole-.module_license.patch | 58 +++++++++++ poky/meta/recipes-bsp/grub/grub-bootconf_1.00.bb | 29 ++++++ poky/meta/recipes-bsp/grub/grub-efi_2.02.bb | 109 +++++++++++++++++++++ poky/meta/recipes-bsp/grub/grub2.inc | 71 ++++++++++++++ poky/meta/recipes-bsp/grub/grub_2.02.bb | 29 ++++++ 12 files changed, 577 insertions(+) create mode 100644 poky/meta/recipes-bsp/grub/files/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch create mode 100644 poky/meta/recipes-bsp/grub/files/0001-Unset-need_charset_alias-when-building-for-musl.patch create mode 100644 poky/meta/recipes-bsp/grub/files/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch create mode 100644 poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch create mode 100644 poky/meta/recipes-bsp/grub/files/cfg create mode 100644 poky/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch create mode 100644 poky/meta/recipes-bsp/grub/files/gcc8.patch create mode 100644 poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch create mode 100644 poky/meta/recipes-bsp/grub/grub-bootconf_1.00.bb create mode 100644 poky/meta/recipes-bsp/grub/grub-efi_2.02.bb create mode 100644 poky/meta/recipes-bsp/grub/grub2.inc create mode 100644 poky/meta/recipes-bsp/grub/grub_2.02.bb (limited to 'poky/meta/recipes-bsp/grub') diff --git a/poky/meta/recipes-bsp/grub/files/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch b/poky/meta/recipes-bsp/grub/files/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch new file mode 100644 index 000000000..ce3238f3a --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch @@ -0,0 +1,46 @@ +From fb7b827a56b1f92f882d0f5ef130acc968b23293 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 13 Jan 2016 19:17:31 +0000 +Subject: [PATCH] Disable -mfpmath=sse as well when SSE is disabled + +Fixes + +configure:20574: i586-poky-linux-gcc -m32 -march=core2 -msse3 +-mtune=generic -mfpmath=sse +--sysroot=/usr/local/dev/yocto/grubtest2/build/tmp/sysroots/emenlow -o +conftest -O2 -pipe -g -feliminate-unused-debug-types -Wall -W -Wshadow +-Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g +-falign-jumps=1 -falign-loops=1 -falign-functions=1 -mno-mmx -mno-sse +-mno-sse2 -mno-3dnow -fno-dwarf2-cfi-asm -m32 -fno-stack-protector +-mno-stack-arg-probe -Werror -nostdlib -Wl,--defsym,___main=0x8100 +-Wall -W -I$(top_srcdir)/include -I$(top_builddir)/include +-DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC -Wl,-O1 +-Wl,--hash-style=gnu -Wl,--as-needed conftest.c >&5 +conftest.c:1:0: error: SSE instruction set disabled, using 387 +arithmetics [-Werror] +cc1: all warnings being treated as errors + +Signed-off-by: Nitin A Kamble +Signed-off-by: Khem Raj +--- +Upstream-Status: Pending + + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 26d2f33..9ce56de 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -783,7 +783,7 @@ fi + if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then + # Some toolchains enable these features by default, but they need + # registers that aren't set up properly in GRUB. +- TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow" ++ TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mfpmath=387" + fi + + # GRUB doesn't use float or doubles at all. Yet some toolchains may decide +-- +2.7.0 + diff --git a/poky/meta/recipes-bsp/grub/files/0001-Unset-need_charset_alias-when-building-for-musl.patch b/poky/meta/recipes-bsp/grub/files/0001-Unset-need_charset_alias-when-building-for-musl.patch new file mode 100644 index 000000000..67dc11549 --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/0001-Unset-need_charset_alias-when-building-for-musl.patch @@ -0,0 +1,30 @@ +From b9565dc2fe0c4f7daaec91b7e83bc7313dee2f4a Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 13 Apr 2015 17:02:13 -0700 +Subject: [PATCH] Unset need_charset_alias when building for musl + +localcharset uses ac_cv_gnu_library_2_1 from glibc21.m4 +which actually shoudl be fixed in gnulib and then all downstream +projects will get it eventually. For now we apply the fix to +coreutils + +Upstream-Status: Pending + +Signed-off-by: Khem Raj +--- + lib/gnulib.mk | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: grub-2.00/grub-core/gnulib/Makefile.am +=================================================================== +--- grub-2.00.orig/grub-core/gnulib/Makefile.am ++++ grub-2.00/grub-core/gnulib/Makefile.am +@@ -410,7 +410,7 @@ install-exec-localcharset: all-local + case '$(host_os)' in \ + darwin[56]*) \ + need_charset_alias=true ;; \ +- darwin* | cygwin* | mingw* | pw32* | cegcc*) \ ++ darwin* | cygwin* | mingw* | pw32* | cegcc* | linux-musl*) \ + need_charset_alias=false ;; \ + *) \ + need_charset_alias=true ;; \ diff --git a/poky/meta/recipes-bsp/grub/files/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch b/poky/meta/recipes-bsp/grub/files/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch new file mode 100644 index 000000000..d5bfaa177 --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch @@ -0,0 +1,56 @@ +From b512c77222a8b133d7dd71a0dcef081a921d97d4 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 13 Jan 2016 19:28:00 +0000 +Subject: [PATCH] grub.d/10_linux.in: add oe's kernel name + +Our kernel's name is bzImage, we need add it to grub.d/10_linux.in so +that the grub-mkconfig and grub-install can work correctly. + +We only need add the bzImage to util/grub.d/10_linux.in, but also add it +to util/grub.d/20_linux_xen.in to keep compatibility. + +Signed-off-by: Robert Yang +Signed-off-by: Khem Raj +--- +Upstream-Status: Inappropriate [OE specific] + + util/grub.d/10_linux.in | 6 +++--- + util/grub.d/20_linux_xen.in | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in +index 859b608..946be5d 100644 +--- a/util/grub.d/10_linux.in ++++ b/util/grub.d/10_linux.in +@@ -148,12 +148,12 @@ machine=`uname -m` + case "x$machine" in + xi?86 | xx86_64) + list= +- for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do ++ for i in /boot/bzImage-* /bzImage-* /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do + if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi + done ;; +- *) ++ *) + list= +- for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do ++ for i in /boot/bzImage-* /boot/vmlinuz-* /boot/vmlinux-* /bzImage-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do + if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi + done ;; + esac +diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in +index f532fb9..1994244 100644 +--- a/util/grub.d/20_linux_xen.in ++++ b/util/grub.d/20_linux_xen.in +@@ -138,7 +138,7 @@ EOF + } + + linux_list= +-for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do ++for i in /boot/bzImage[xz]-* /bzImage[xz]-* /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do + if grub_file_is_not_garbage "$i"; then + basename=$(basename $i) + version=$(echo $basename | sed -e "s,^[^0-9]*-,,g") +-- +2.7.0 + diff --git a/poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch b/poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch new file mode 100644 index 000000000..fc5aa4e31 --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/autogen.sh-exclude-pc.patch @@ -0,0 +1,34 @@ +From ff8f68cc48fd3c30d55e1d570d51f2e0952c968e Mon Sep 17 00:00:00 2001 +From: Robert Yang +Date: Sat, 25 Jan 2014 23:49:44 -0500 +Subject: [PATCH] autogen.sh: exclude .pc from po/POTFILES.in + +Exclude the .pc from po/POTFILES.in since quilt uses "patch --backup", +which will create the backup file under .pc, this may cause unexpected +errors, for example, on CentOS 5.x, if the backup file is null +(newfile), it's mode will be 000, then we will get errors when xgettext +try to read it. + +Upstream-Status: Inappropriate [OE specific] + +Signed-off-by: Robert Yang +--- + autogen.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/autogen.sh b/autogen.sh +index 7424428..843619e 100755 +--- a/autogen.sh ++++ b/autogen.sh +@@ -5,7 +5,7 @@ set -e + export LC_COLLATE=C + unset LC_ALL + +-find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' |sort > po/POTFILES.in ++find . -iname '*.[ch]' ! -ipath './grub-core/lib/libgcrypt-grub/*' ! -ipath './build-aux/*' ! -ipath './grub-core/lib/libgcrypt/src/misc.c' ! -ipath './grub-core/lib/libgcrypt/src/global.c' ! -ipath './grub-core/lib/libgcrypt/src/secmem.c' ! -ipath './util/grub-gen-widthspec.c' ! -ipath './util/grub-gen-asciih.c' ! -path './.pc/*' | sort > po/POTFILES.in + find util -iname '*.in' ! -name Makefile.in |sort > po/POTFILES-shell.in + + echo "Importing unicode..." +-- +1.7.10.4 + diff --git a/poky/meta/recipes-bsp/grub/files/cfg b/poky/meta/recipes-bsp/grub/files/cfg new file mode 100644 index 000000000..8ca53d24d --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/cfg @@ -0,0 +1,2 @@ +search.file ($cmdpath)/EFI/BOOT/grub.cfg root +set prefix=($root)/EFI/BOOT diff --git a/poky/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch b/poky/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch new file mode 100644 index 000000000..f35df97bf --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/fix.build.with.gcc-7.patch @@ -0,0 +1,39 @@ +* e.g. with gentoo gcc-7.1 they define _FORTIFY_SOURCE by default with: + https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo/src/patchsets/gcc/7.1.0/gentoo/10_all_default-fortify-source.patch?view=markup + which results in following error while building grub-efi-native: + ./config-util.h:1504:48: error: this use of "defined" may not be portable [-Werror=expansion-to-defined] + || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ + ^~~~~~~~~~~~~~~ + this part comes from gnulib and it's used only for Apple and BSD, + so we can ignore it, but we cannot add -Wno-error=expansion-to-defined + because this warning was introduced only in gcc-7 and older gcc + will fail with: + cc1: error: -Werror=expansion-to-defined: no option -Wexpansion-to-defined + use #pragma to work around this + +Upstream-Status: Pending (should be fixed in gnulib which is then rarely updated in grub) + +Signed-off-by: Martin Jansa + +diff -uNr grub-2.02.old/m4/extern-inline.m4 grub-2.02/m4/extern-inline.m4 +--- grub-2.02.old/m4/extern-inline.m4 2016-02-28 15:22:21.000000000 +0100 ++++ grub-2.02/m4/extern-inline.m4 2017-08-22 19:26:45.213637276 +0200 +@@ -39,6 +39,10 @@ + OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and + for clang but remains for g++; see . + Assume DragonFly and FreeBSD will be similar. */ ++#pragma GCC diagnostic push ++#if __GNUC__ >= 7 ++#pragma GCC diagnostic ignored "-Wexpansion-to-defined" ++#endif + #if (((defined __APPLE__ && defined __MACH__) \ + || defined __DragonFly__ || defined __FreeBSD__) \ + && (defined __header_inline \ +@@ -50,6 +52,7 @@ + && defined __GNUC__ && ! defined __cplusplus)))) + # define _GL_EXTERN_INLINE_STDHEADER_BUG + #endif ++#pragma GCC diagnostic pop + #if ((__GNUC__ \ + ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ + : (199901L <= __STDC_VERSION__ \ diff --git a/poky/meta/recipes-bsp/grub/files/gcc8.patch b/poky/meta/recipes-bsp/grub/files/gcc8.patch new file mode 100644 index 000000000..fa7331f1b --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/gcc8.patch @@ -0,0 +1,74 @@ +From 563b1da6e6ae7af46cc8354cadb5dab416989f0a Mon Sep 17 00:00:00 2001 +From: Michael Chang +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 +Tested-by: Michael Chang +Tested-by: Paul Menzel +Reviewed-by: Daniel Kiper + +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/poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch b/poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch new file mode 100644 index 000000000..ffc2d40d8 --- /dev/null +++ b/poky/meta/recipes-bsp/grub/files/grub-module-explicitly-keeps-symbole-.module_license.patch @@ -0,0 +1,58 @@ +From 7461a3de38b66edbe2f5593f9bdab9f2704d32bc Mon Sep 17 00:00:00 2001 +From: Hongxu Jia +Date: Wed, 17 Aug 2016 04:06:34 -0400 +Subject: [PATCH] grub module explicitly keeps symbole .module_license + +While using oe-core toolchain to strip grub module 'all_video.mod', +it stripped symbol table: +-------------- +root@localhost:~# objdump -t all_video.mod + +all_video.mod: file format elf64-x86-64 + +SYMBOL TABLE: +no symbols +-------------- + +It caused grub to load module all_video failed. +-------------- +grub> insmod all_video +error: no symbol table. +-------------- + +Tweak strip option to keep symbol .module_license could workaround +the issue. +-------------- +root@localhost:~# objdump -t all_video.mod + +all_video.mod: file format elf64-x86-64 + +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000000000000 l d .data 0000000000000000 .data +0000000000000000 l d .module_license 0000000000000000 .module_license +0000000000000000 l d .bss 0000000000000000 .bss +0000000000000000 l d .moddeps 0000000000000000 .moddeps +0000000000000000 l d .modname 0000000000000000 .modname +-------------- + +Upstream-Status: Pending + +Signed-off-by: Hongxu Jia +--- + grub-core/genmod.sh.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +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 + @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 -R .ARM.exidx $tmpfile || exit 1 + fi diff --git a/poky/meta/recipes-bsp/grub/grub-bootconf_1.00.bb b/poky/meta/recipes-bsp/grub/grub-bootconf_1.00.bb new file mode 100644 index 000000000..750f8c808 --- /dev/null +++ b/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/poky/meta/recipes-bsp/grub/grub-efi_2.02.bb b/poky/meta/recipes-bsp/grub/grub-efi_2.02.bb new file mode 100644 index 000000000..7bfc8eece --- /dev/null +++ b/poky/meta/recipes-bsp/grub/grub-efi_2.02.bb @@ -0,0 +1,109 @@ +require grub2.inc + +GRUBPLATFORM = "efi" + +DEPENDS_append_class-target = " grub-efi-native" +RDEPENDS_${PN}_class-target = "diffutils freetype grub-common virtual/grub-bootconf" + +SRC_URI += " \ + file://cfg \ + " + +S = "${WORKDIR}/grub-${PV}" + +# Determine the target arch for the grub modules +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 = prefix + "bootx64.efi" + elif re.match('i.86', target): + grubtarget = 'i386' + grubimage = prefix + "bootia32.efi" + elif re.match('aarch64', target): + grubtarget = 'arm64' + grubimage = prefix + "bootaa64.efi" + else: + 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 + +CACHED_CONFIGUREVARS += "ac_cv_path_HELP2MAN=" +EXTRA_OECONF += "--enable-efiemu=no" + +# ldm.c:114:7: error: trampoline generated for nested function 'hook' [-Werror=trampolines] +# 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_class-target() { + oe_runmake 'DESTDIR=${D}' -C grub-core install + + # Remove build host references... + find "${D}" -name modinfo.sh -type f -exec \ + sed -i \ + -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \ + -e 's|${DEBUG_PREFIX_MAP}||g' \ + -e 's:${RECIPE_SYSROOT_NATIVE}::g' \ + {} + +} + +GRUB_BUILDIN ?= "boot linux ext2 fat serial part_msdos part_gpt normal \ + efi_gop iso9660 configfile search loadenv test" + +do_deploy() { + install -m 644 ${B}/${GRUB_IMAGE_PREFIX}${GRUB_IMAGE} ${DEPLOYDIR} +} + +do_deploy_class-native() { + : +} + +addtask deploy after do_install before do_build + +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" +INSANE_SKIP_${PN}-dbg_append_linux-gnux32 = " arch" +INSANE_SKIP_${PN}_append_linux-muslx32 = " arch" +INSANE_SKIP_${PN}-dbg_append_linux-muslx32 = " arch" + +BBCLASSEXTEND = "native" diff --git a/poky/meta/recipes-bsp/grub/grub2.inc b/poky/meta/recipes-bsp/grub/grub2.inc new file mode 100644 index 000000000..a8f335e1f --- /dev/null +++ b/poky/meta/recipes-bsp/grub/grub2.inc @@ -0,0 +1,71 @@ +SUMMARY = "GRUB2 is the next-generation GRand Unified Bootloader" + +DESCRIPTION = "GRUB2 is the next generaion of a GPLed bootloader \ +intended to unify bootloading across x86 operating systems. In \ +addition to loading the Linux kernel, it implements the Multiboot \ +standard, which allows for flexible loading of multiple boot images." + +HOMEPAGE = "http://www.gnu.org/software/grub/" +SECTION = "bootloaders" + +LICENSE = "GPLv3" +LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504" + +SRC_URI = "https://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \ + file://0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch \ + file://0001-Unset-need_charset_alias-when-building-for-musl.patch \ + file://autogen.sh-exclude-pc.patch \ + 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" + +DEPENDS = "flex-native bison-native" + +COMPATIBLE_HOST = '(x86_64.*|i.86.*|arm.*|aarch64.*)-(linux.*|freebsd.*)' +COMPATIBLE_HOST_armv7a = 'null' +COMPATIBLE_HOST_armv7ve = 'null' + +# configure.ac has code to set this automagically from the target tuple +# but the OE freeform one (core2-foo-bar-linux) don't work with that. + +GRUBPLATFORM_arm = "uboot" +GRUBPLATFORM_aarch64 = "efi" +GRUBPLATFORM ??= "pc" + +inherit autotools gettext texinfo + +EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} \ + --disable-grub-mkfont \ + --program-prefix="" \ + --enable-liblzma=no \ + --enable-libzfs=no \ + --enable-largefile \ +" + +PACKAGECONFIG ??= "" +PACKAGECONFIG[grub-mount] = "--enable-grub-mount,--disable-grub-mount,fuse" +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 +# with that. Note that since BUILD_CFLAGS etc are not used by grub2 target +# builds, it's safe to clear them unconditionally for both target and native. +BUILD_CPPFLAGS = "" +BUILD_CFLAGS = "" +BUILD_CXXFLAGS = "" +BUILD_LDFLAGS = "" + +do_configure_prepend() { + # The grub2 configure script uses variables such as TARGET_CFLAGS etc + # for its own purposes. Remove the OE versions from the environment to + # avoid conflicts. + unset TARGET_CPPFLAGS TARGET_CFLAGS TARGET_CXXFLAGS TARGET_LDFLAGS + ( cd ${S} + ${S}/autogen.sh ) +} + +RDEPENDS_${PN}_class-native = "" diff --git a/poky/meta/recipes-bsp/grub/grub_2.02.bb b/poky/meta/recipes-bsp/grub/grub_2.02.bb new file mode 100644 index 000000000..e0973759f --- /dev/null +++ b/poky/meta/recipes-bsp/grub/grub_2.02.bb @@ -0,0 +1,29 @@ +require grub2.inc + +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 + # Remove build host references... + find "${D}" -name modinfo.sh -type f -exec \ + sed -i \ + -e 's,--sysroot=${STAGING_DIR_TARGET},,g' \ + -e 's|${DEBUG_PREFIX_MAP}||g' \ + -e 's:${RECIPE_SYSROOT_NATIVE}::g' \ + {} + +} + +INSANE_SKIP_${PN} = "arch" +INSANE_SKIP_${PN}-dbg = "arch" -- cgit v1.2.3