summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKhem Raj <raj.khem@gmail.com>2016-01-12 23:43:13 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-01-30 11:36:58 +0000
commit047ad2c81a7ec0d59d5fb1ddf52668c29a1119c9 (patch)
tree87cbebb1238a9d20c8346b78cd6021567cd4bbfc
parent956be0c858b55f34e666ad2a00bd07ae61e36ae1 (diff)
downloadpoky-047ad2c81a7ec0d59d5fb1ddf52668c29a1119c9.tar.gz
grub: Backport fix for largefile detection/use
This is inspired by musl porting, where grub's configure is enabling largefile support based on glibc versions, instead an upstream patch turns it into autoconf check Update git version recipe arm platforms use this recipe to provide grub and it needed fixes from upstream so upgrade to latest tip of git and forward port patches as well as drop the ones already applied upstream (From OE-Core rev: a290429c8415042cb8c2f4258e76a3cc6815a172) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-bsp/grub/files/0001-Remove-direct-_llseek-code-and-require-long-filesyst.patch81
-rw-r--r--meta/recipes-bsp/grub/grub-efi_2.00.bb2
-rw-r--r--meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch46
-rw-r--r--meta/recipes-bsp/grub/grub-git/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch56
-rw-r--r--meta/recipes-bsp/grub/grub2.inc1
-rw-r--r--meta/recipes-bsp/grub/grub_2.00.bb2
-rw-r--r--meta/recipes-bsp/grub/grub_git.bb13
7 files changed, 196 insertions, 5 deletions
diff --git a/meta/recipes-bsp/grub/files/0001-Remove-direct-_llseek-code-and-require-long-filesyst.patch b/meta/recipes-bsp/grub/files/0001-Remove-direct-_llseek-code-and-require-long-filesyst.patch
new file mode 100644
index 0000000000..9eabce977b
--- /dev/null
+++ b/meta/recipes-bsp/grub/files/0001-Remove-direct-_llseek-code-and-require-long-filesyst.patch
@@ -0,0 +1,81 @@
1From 3bac4caa2bc64db313aaee54fffb90383e118517 Mon Sep 17 00:00:00 2001
2From: Felix Janda <felix.janda@posteo.de>
3Date: Thu, 22 Jan 2015 19:54:36 +0100
4Subject: [PATCH] Remove direct _llseek code and require long filesystem libc.
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7---
8Upstream-Status: Backport
9 configure.ac | 8 ++++++++
10 grub-core/osdep/unix/hostdisk.c | 24 ------------------------
11 4 files changed, 13 insertions(+), 24 deletions(-)
12
13Index: grub-2.00/configure.ac
14===================================================================
15--- grub-2.00.orig/configure.ac
16+++ grub-2.00/configure.ac
17@@ -306,6 +306,14 @@ if test x$grub_cv_apple_cc = xyes ; then
18 HOST_LDFLAGS="$HOST_LDFLAGS -Wl,-allow_stack_execute"
19 fi
20
21+case "$host_os" in
22+ cygwin | windows* | mingw32* | aros*)
23+ ;;
24+ *)
25+ AC_CHECK_SIZEOF(off_t)
26+ test x"$ac_cv_sizeof_off_t" = x8 || AC_MSG_ERROR([Large file support is required]);;
27+esac
28+
29 if test x$USE_NLS = xno; then
30 HOST_CFLAGS="$HOST_CFLAGS -fno-builtin-gettext"
31 fi
32Index: grub-2.00/grub-core/kern/emu/hostdisk.c
33===================================================================
34--- grub-2.00.orig/grub-core/kern/emu/hostdisk.c
35+++ grub-2.00/grub-core/kern/emu/hostdisk.c
36@@ -44,11 +44,6 @@
37 #ifdef __linux__
38 # include <sys/ioctl.h> /* ioctl */
39 # include <sys/mount.h>
40-# if !defined(__GLIBC__) || \
41- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1)))
42-/* Maybe libc doesn't have large file support. */
43-# include <linux/unistd.h> /* _llseek */
44-# endif /* (GLIBC < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR < 1)) */
45 # ifndef BLKFLSBUF
46 # define BLKFLSBUF _IO (0x12,97) /* flush buffer cache */
47 # endif /* ! BLKFLSBUF */
48@@ -761,25 +756,6 @@ linux_find_partition (char *dev, grub_di
49 }
50 #endif /* __linux__ */
51
52-#if defined(__linux__) && (!defined(__GLIBC__) || \
53- ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1))))
54- /* Maybe libc doesn't have large file support. */
55-grub_err_t
56-grub_util_fd_seek (int fd, const char *name, grub_uint64_t off)
57-{
58- loff_t offset, result;
59- static int _llseek (uint filedes, ulong hi, ulong lo,
60- loff_t *res, uint wh);
61- _syscall5 (int, _llseek, uint, filedes, ulong, hi, ulong, lo,
62- loff_t *, res, uint, wh);
63-
64- offset = (loff_t) off;
65- if (_llseek (fd, offset >> 32, offset & 0xffffffff, &result, SEEK_SET))
66- return grub_error (GRUB_ERR_BAD_DEVICE, N_("cannot seek `%s': %s"),
67- name, strerror (errno));
68- return GRUB_ERR_NONE;
69-}
70-#else
71 grub_err_t
72 grub_util_fd_seek (int fd, const char *name, grub_uint64_t off)
73 {
74@@ -790,7 +766,6 @@ grub_util_fd_seek (int fd, const char *n
75 name, strerror (errno));
76 return 0;
77 }
78-#endif
79
80 static void
81 flush_initial_buffer (const char *os_dev __attribute__ ((unused)))
diff --git a/meta/recipes-bsp/grub/grub-efi_2.00.bb b/meta/recipes-bsp/grub/grub-efi_2.00.bb
index ecc6c9a431..4e80e1815e 100644
--- a/meta/recipes-bsp/grub/grub-efi_2.00.bb
+++ b/meta/recipes-bsp/grub/grub-efi_2.00.bb
@@ -33,6 +33,8 @@ EXTRA_OECONF = "--with-platform=efi --disable-grub-mkfont \
33 --enable-efiemu=no --program-prefix='' \ 33 --enable-efiemu=no --program-prefix='' \
34 --enable-liblzma=no --enable-device-mapper=no --enable-libzfs=no" 34 --enable-liblzma=no --enable-device-mapper=no --enable-libzfs=no"
35 35
36EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '--enable-largefile ac_cv_sizeof_off_t=8', '--disable-largefile', d)}"
37
36do_install_class-native() { 38do_install_class-native() {
37 install -d ${D}${bindir} 39 install -d ${D}${bindir}
38 install -m 755 grub-mkimage ${D}${bindir} 40 install -m 755 grub-mkimage ${D}${bindir}
diff --git a/meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch b/meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch
new file mode 100644
index 0000000000..87ec29e32b
--- /dev/null
+++ b/meta/recipes-bsp/grub/grub-git/0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch
@@ -0,0 +1,46 @@
1From fb7b827a56b1f92f882d0f5ef130acc968b23293 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 13 Jan 2016 19:17:31 +0000
4Subject: [PATCH] Disable -mfpmath=sse as well when SSE is disabled
5
6Fixes
7
8configure:20574: i586-poky-linux-gcc -m32 -march=core2 -msse3
9-mtune=generic -mfpmath=sse
10--sysroot=/usr/local/dev/yocto/grubtest2/build/tmp/sysroots/emenlow -o
11conftest -O2 -pipe -g -feliminate-unused-debug-types -Wall -W -Wshadow
12-Wpointer-arith -Wmissing-prototypes -Wundef -Wstrict-prototypes -g
13-falign-jumps=1 -falign-loops=1 -falign-functions=1 -mno-mmx -mno-sse
14-mno-sse2 -mno-3dnow -fno-dwarf2-cfi-asm -m32 -fno-stack-protector
15-mno-stack-arg-probe -Werror -nostdlib -Wl,--defsym,___main=0x8100
16-Wall -W -I$(top_srcdir)/include -I$(top_builddir)/include
17-DGRUB_MACHINE_PCBIOS=1 -DGRUB_MACHINE=I386_PC -Wl,-O1
18-Wl,--hash-style=gnu -Wl,--as-needed conftest.c >&5
19conftest.c:1:0: error: SSE instruction set disabled, using 387
20arithmetics [-Werror]
21cc1: all warnings being treated as errors
22
23Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com>
24Signed-off-by: Khem Raj <raj.khem@gmail.com>
25---
26Upstream-Status: Pending
27
28 configure.ac | 2 +-
29 1 file changed, 1 insertion(+), 1 deletion(-)
30
31diff --git a/configure.ac b/configure.ac
32index 26d2f33..9ce56de 100644
33--- a/configure.ac
34+++ b/configure.ac
35@@ -783,7 +783,7 @@ fi
36 if ( test "x$target_cpu" = xi386 || test "x$target_cpu" = xx86_64 ) && test "x$platform" != xemu; then
37 # Some toolchains enable these features by default, but they need
38 # registers that aren't set up properly in GRUB.
39- TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow"
40+ TARGET_CFLAGS="$TARGET_CFLAGS -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mfpmath=387"
41 fi
42
43 # GRUB doesn't use float or doubles at all. Yet some toolchains may decide
44--
452.7.0
46
diff --git a/meta/recipes-bsp/grub/grub-git/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch b/meta/recipes-bsp/grub/grub-git/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch
new file mode 100644
index 0000000000..d5bfaa177a
--- /dev/null
+++ b/meta/recipes-bsp/grub/grub-git/0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch
@@ -0,0 +1,56 @@
1From b512c77222a8b133d7dd71a0dcef081a921d97d4 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 13 Jan 2016 19:28:00 +0000
4Subject: [PATCH] grub.d/10_linux.in: add oe's kernel name
5
6Our kernel's name is bzImage, we need add it to grub.d/10_linux.in so
7that the grub-mkconfig and grub-install can work correctly.
8
9We only need add the bzImage to util/grub.d/10_linux.in, but also add it
10to util/grub.d/20_linux_xen.in to keep compatibility.
11
12Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15Upstream-Status: Inappropriate [OE specific]
16
17 util/grub.d/10_linux.in | 6 +++---
18 util/grub.d/20_linux_xen.in | 2 +-
19 2 files changed, 4 insertions(+), 4 deletions(-)
20
21diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
22index 859b608..946be5d 100644
23--- a/util/grub.d/10_linux.in
24+++ b/util/grub.d/10_linux.in
25@@ -148,12 +148,12 @@ machine=`uname -m`
26 case "x$machine" in
27 xi?86 | xx86_64)
28 list=
29- for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
30+ for i in /boot/bzImage-* /bzImage-* /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
31 if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
32 done ;;
33- *)
34+ *)
35 list=
36- for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
37+ for i in /boot/bzImage-* /boot/vmlinuz-* /boot/vmlinux-* /bzImage-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
38 if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
39 done ;;
40 esac
41diff --git a/util/grub.d/20_linux_xen.in b/util/grub.d/20_linux_xen.in
42index f532fb9..1994244 100644
43--- a/util/grub.d/20_linux_xen.in
44+++ b/util/grub.d/20_linux_xen.in
45@@ -138,7 +138,7 @@ EOF
46 }
47
48 linux_list=
49-for i in /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
50+for i in /boot/bzImage[xz]-* /bzImage[xz]-* /boot/vmlinu[xz]-* /vmlinu[xz]-* /boot/kernel-*; do
51 if grub_file_is_not_garbage "$i"; then
52 basename=$(basename $i)
53 version=$(echo $basename | sed -e "s,^[^0-9]*-,,g")
54--
552.7.0
56
diff --git a/meta/recipes-bsp/grub/grub2.inc b/meta/recipes-bsp/grub/grub2.inc
index a8c41f8e28..84a47273a5 100644
--- a/meta/recipes-bsp/grub/grub2.inc
+++ b/meta/recipes-bsp/grub/grub2.inc
@@ -28,6 +28,7 @@ SRC_URI = "ftp://ftp.gnu.org/gnu/grub/grub-${PV}.tar.gz \
28 file://0001-parse_dhcp_vendor-Add-missing-const-qualifiers.patch \ 28 file://0001-parse_dhcp_vendor-Add-missing-const-qualifiers.patch \
29 file://grub2-fix-initrd-size-bug.patch \ 29 file://grub2-fix-initrd-size-bug.patch \
30 file://0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch \ 30 file://0001-Fix-CVE-2015-8370-Grub2-user-pass-vulnerability.patch \
31 file://0001-Remove-direct-_llseek-code-and-require-long-filesyst.patch \
31 " 32 "
32 33
33DEPENDS = "flex-native bison-native xz" 34DEPENDS = "flex-native bison-native xz"
diff --git a/meta/recipes-bsp/grub/grub_2.00.bb b/meta/recipes-bsp/grub/grub_2.00.bb
index c1be13304a..addc1b2833 100644
--- a/meta/recipes-bsp/grub/grub_2.00.bb
+++ b/meta/recipes-bsp/grub/grub_2.00.bb
@@ -6,6 +6,8 @@ PR = "r1"
6EXTRA_OECONF = "--with-platform=pc --disable-grub-mkfont --program-prefix="" \ 6EXTRA_OECONF = "--with-platform=pc --disable-grub-mkfont --program-prefix="" \
7 --enable-liblzma=no --enable-device-mapper=no --enable-libzfs=no" 7 --enable-liblzma=no --enable-device-mapper=no --enable-libzfs=no"
8 8
9EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '--enable-largefile ac_cv_sizeof_off_t=8', '--disable-largefile', d)}"
10
9do_install_append () { 11do_install_append () {
10 install -d ${D}${sysconfdir}/grub.d 12 install -d ${D}${sysconfdir}/grub.d
11} 13}
diff --git a/meta/recipes-bsp/grub/grub_git.bb b/meta/recipes-bsp/grub/grub_git.bb
index 6a0e3ee036..3ebab7f2f8 100644
--- a/meta/recipes-bsp/grub/grub_git.bb
+++ b/meta/recipes-bsp/grub/grub_git.bb
@@ -5,13 +5,14 @@ DEPENDS += "autogen-native"
5DEFAULT_PREFERENCE = "-1" 5DEFAULT_PREFERENCE = "-1"
6DEFAULT_PREFERENCE_arm = "1" 6DEFAULT_PREFERENCE_arm = "1"
7 7
8FILESEXTRAPATHS =. "${FILE_DIRNAME}/grub-git:"
9
8PV = "2.00+${SRCPV}" 10PV = "2.00+${SRCPV}"
9SRCREV = "87de66d9d83446ecddb29cfbdf7369102c8e209e" 11SRCREV = "b95e92678882f56056c64ae29092bc9cf129905f"
10SRC_URI = "git://git.savannah.gnu.org/grub.git \ 12SRC_URI = "git://git.savannah.gnu.org/grub.git \
11 file://grub-2.00-fpmath-sse-387-fix.patch \ 13 file://0001-Disable-mfpmath-sse-as-well-when-SSE-is-disabled.patch \
12 file://autogen.sh-exclude-pc.patch \ 14 file://autogen.sh-exclude-pc.patch \
13 file://grub-2.00-add-oe-kernel.patch \ 15 file://0001-grub.d-10_linux.in-add-oe-s-kernel-name.patch \
14 file://0001-Fix-build-with-glibc-2.20.patch \
15 " 16 "
16 17
17S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
@@ -30,6 +31,8 @@ GRUBPLATFORM ??= "pc"
30EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} --disable-grub-mkfont --program-prefix="" \ 31EXTRA_OECONF = "--with-platform=${GRUBPLATFORM} --disable-grub-mkfont --program-prefix="" \
31 --enable-liblzma=no --enable-device-mapper=no --enable-libzfs=no" 32 --enable-liblzma=no --enable-device-mapper=no --enable-libzfs=no"
32 33
34EXTRA_OECONF += "${@bb.utils.contains('DISTRO_FEATURES', 'largefile', '--enable-largefile ac_cv_sizeof_off_t=8', '--disable-largefile', d)}"
35
33do_configure_prepend() { 36do_configure_prepend() {
34 ( cd ${S} 37 ( cd ${S}
35 ${S}/autogen.sh ) 38 ${S}/autogen.sh )
@@ -37,7 +40,7 @@ do_configure_prepend() {
37 40
38do_install_append () { 41do_install_append () {
39 install -d ${D}${sysconfdir}/grub.d 42 install -d ${D}${sysconfdir}/grub.d
40 43 rm -rf ${D}${libdir}/charset.alias
41} 44}
42 45
43# debugedit chokes on bare metal binaries 46# debugedit chokes on bare metal binaries