Added grub-2.02-r3.

This commit is contained in:
László Valkó 2019-04-08 01:57:37 +02:00
parent 28369ac597
commit 370f86107a
12 changed files with 1238 additions and 0 deletions

14
sys-boot/grub/Manifest Normal file
View file

@ -0,0 +1,14 @@
AUX 2.02-X86_64_PLT32.patch 2615 BLAKE2B db2c7f22a5232ec903bbad2416879d330a9d7c0e529f1135b07deaab4026ae51e6fd60ee6f29cb7cbc4c4422343ec0c56dcd3bb205855c45481ebcfc0e0c9c10 SHA512 d8d52f2e92291d382cff2c50af79634967eb5decba39f5787e311e771bd18763b68e87d93f44419ecc647c0189b7d4246ad4a4f9e3558200e7febf32cd757f5e
AUX 2.02-freetype-capitalise-variables.patch 6454 BLAKE2B 7a05448d42c935b6942f2b9ac98eef2ddc2e7bb7e6584516859cd6586dee57911c83c98402b38cfe9044a3c3a79d41d6a86bb0918d1ca8ccf792d5ef93bad258 SHA512 99c8061453f54af0e95361101f6beb2340baef9b5a66c4c4ba78876b978df4b5686190b642090aae41f2ed2d464e267ba598e94c0926a37df3c36d866911a40c
AUX 2.02-freetype-pkg-config.patch 7359 BLAKE2B 86ee01b2cb833354377aec3db0dcc05c9950169c9e83b9878018debef925a5238ba19b10ee0ce5124d7884deae8023ee03597e6eb56c244030f2492b5b7f0b1b SHA512 20fd57f8410073db7d6ae5c626266a310be65ca2f5cc4a2a9f2e66cb85a421c883b497e5fc7e3cd5a6ec066531f3ca4b8d837bf64007ade99418958aefd2dcf6
AUX 2.02-gcc8.patch 2514 BLAKE2B 5eb8210441a41a44c4e0c73120d201c4ec5a8db27d0dbf37f991599ee6c2bb3aaf771a201d02829597f34f9a1af76f70dffcc9e25fa079c3e2eb72702d704692 SHA512 8eae4bfdbe595685961ed8f491b8dc8f30632d5d9e338612346a928318d4e4b811c5ffeb38354f698e40dbaa8449fd540a33ff2ca0e2af604cbe08988fc11238
AUX 2.02-multiple-early-initrd.patch 6771 BLAKE2B 088d1178c51ea7526bd7620ae0f8160c10d3673afd0ae3407e35673cb438875e24e13f8455245c36792814751995df1235d975eb036e97813e677250af403a9d SHA512 41450b475fb83ade629d165ae2c30682e5beb2edbfd148c6388bb720241f0682b20aa0456bc624d5e9f5605616ea27fab32a829ede6c8c673e1c88e6b774a5a8
AUX 2.02-xfs-sparse-inodes.patch 2548 BLAKE2B c3333b82b678bc0a2bfc6594719c89982f97b14b7a2f012814ce2f75e004cda46b8b7c2d4e668c5a52aee7814114a763c4d853d9c75b4322535096ba3c22e256 SHA512 4723c5dd9fd6e9b6c8677e32e4906c7995d695c7e85e834b1b29eb1d9a024678f8fa75846c7b929d1db9b5911b604c69c1b0379cb3b9adc98d5bb6d6719eb2c4
AUX gfxpayload.patch 1118 BLAKE2B 4104fc696535b1c3feba5876bccc64f9b2e52319ee992c59e7f17b8310cc9addf7545630fff78c73ca3f4b0dcd44e1bf69f4df5264d6f58777f7e5aeae93cbcb SHA512 00324825c369902a0383b792cd21e161853eadccbdc5abe2420f2d443bf6a74f72be6c15243107b936acd38c3547387c3771dc2cb566003c4c754c9260b4aa00
AUX grub-2.02_beta2-KERNEL_GLOBS.patch 2121 BLAKE2B 398195f59537d40a4f61eadf5be974b8f9eb56a4eb07b798f0dc18e29588b3a9f8daa8d6e64980a835ec1960fab60b8c96d6552ef2920fe6604170abf7d5e7da SHA512 f85bc538ae647c46efbe07d7b87acf49daa7b07e9752af3aa3f77019f48ea24cd1b6a095a6f9c19d50128701753f453c531b9b068e11ee22a259f3fdf8ac205e
AUX grub.default-3 2532 BLAKE2B f59b8e862b7069603a975327d51507aae4568bfc80d7aa237f620008b00520a5a14b0c95e3f9c277360e1dfafc83bcc815970b47a69bf469ad7e594956f47c60 SHA512 2faf5e730331b7d04045ee64d990227ef02f1b14a1cf88b5b71a18c91a9a8cba773a601eb3f5442092f6937935efed02629a278bd6822fac60f9c72045e4b13d
DIST dejavu-sans-ttf-2.37.zip 417746 BLAKE2B c8904f3cd5a49370a7dc10e456684c88aeae998a99090bf4d0a5baa4f36cc8fb8f70586cf6d610a5ffeee97261d28c80f55bbe9dcfc3ed796d5c2d60e79adb58 SHA512 ede5899daa1984c5aa8cacb1c850eb53f189dddef3d9bb78bf9774d8976b7c0d6eb0bcf86237cd7d11f5b36cf5b5058d42cd94d3bd76f2bd0931c7ceb1271fae
DIST grub-2.02.tar.xz 6113260 BLAKE2B 7c5ec61a8dc5a00e9cdc91c489f0d2ee37cd7e673eef8e8e26bbc18c5ec28829f563b9298874fb96d45a5d523ce366e936649c21ebda7462afda0cc328b970ce SHA512 cc6eb0a42b5c8df2f671cc128ff725afb3ff1f8832a196022e433cf0d3b75decfca2316d0aa5fabea75747d55e88f3d021dd93508563f8ca80fd7b9e7fe1f088
DIST unifont-9.0.06.pcf.gz 1360354 BLAKE2B 09b96e1711c729ef159d62e3ea7b289ca2d01dc0ea417e35a18b73dc02a23f62ce7821d9761bceee4002d9eeaabd91cfb69bbacc6fbdfdfa00445d18fe8f1d66 SHA512 dd0a1afa72f5204c62055d83f22750c74af38ffafdb8eda8e1f1cf7292e572a14969b8a9a6a2cb336d5bed4ab633f6b5a962c59117a590e4238788959cb82774
EBUILD grub-2.02-r3.ebuild 8034 BLAKE2B 446b220e826bf96f2a8200a38369ec732eb7e25742ad07f8e4a2f2a7a8dcf5cd2be6b0ff38bad673fc4d476207b61fff800abaebcb5588b869c49888ee2e0842 SHA512 f2fd9bd1a47e134fbacc96b2158f33ff71e6aa64809326abbc40900fcd2b97326a0849deb34ba1a48bb0013d48125c393aa7f5e729f1c338a5cf1a9fd81abf9b
MISC metadata.xml 1149 BLAKE2B c0a364b1d8139f26f7dd09ba49dd68d591c7532e2eec25dae97caea49be8bfc92c8d5c69dcc77d89f58367fa04a73526cc55768f93222effc6c6e47a52b53500 SHA512 45d0425236957395e275bd340aeabfcd03451b037c616c54cf8babdc3bdee6aa3706fa7565f595ba4391773d331353b8920a627094c01289935a1a9aedc1f7bf

View file

@ -0,0 +1,75 @@
From 02702bdfe14d8a04643a45b03715f734ae34dbac Mon Sep 17 00:00:00 2001
From: "H.J. Lu" <hjl.tools@gmail.com>
Date: Sat, 17 Feb 2018 06:47:28 -0800
Subject: x86-64: Treat R_X86_64_PLT32 as R_X86_64_PC32
Starting from binutils commit bd7ab16b4537788ad53521c45469a1bdae84ad4a:
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=bd7ab16b4537788ad53521c45469a1bdae84ad4a
x86-64 assembler generates R_X86_64_PLT32, instead of R_X86_64_PC32, for
32-bit PC-relative branches. Grub2 should treat R_X86_64_PLT32 as
R_X86_64_PC32.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Origin: upstream, https://git.savannah.gnu.org/cgit/grub.git/commit/?id=842c390469e2c2e10b5aa36700324cd3bde25875
Last-Update: 2018-07-30
Patch-Name: R_X86_64_PLT32.patch
---
grub-core/efiemu/i386/loadcore64.c | 1 +
grub-core/kern/x86_64/dl.c | 1 +
util/grub-mkimagexx.c | 1 +
util/grub-module-verifier.c | 1 +
4 files changed, 4 insertions(+)
diff --git a/grub-core/efiemu/i386/loadcore64.c b/grub-core/efiemu/i386/loadcore64.c
index e49d0b6ff..18facf47f 100644
--- a/grub-core/efiemu/i386/loadcore64.c
+++ b/grub-core/efiemu/i386/loadcore64.c
@@ -98,6 +98,7 @@ grub_arch_efiemu_relocate_symbols64 (grub_efiemu_segment_t segs,
break;
case R_X86_64_PC32:
+ case R_X86_64_PLT32:
err = grub_efiemu_write_value (addr,
*addr32 + rel->r_addend
+ sym.off
diff --git a/grub-core/kern/x86_64/dl.c b/grub-core/kern/x86_64/dl.c
index 440690673..3a73e6e6c 100644
--- a/grub-core/kern/x86_64/dl.c
+++ b/grub-core/kern/x86_64/dl.c
@@ -70,6 +70,7 @@ grub_arch_dl_relocate_symbols (grub_dl_t mod, void *ehdr,
break;
case R_X86_64_PC32:
+ case R_X86_64_PLT32:
{
grub_int64_t value;
value = ((grub_int32_t) *addr32) + rel->r_addend + sym->st_value -
diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
index e63f148e4..f20255a28 100644
--- a/util/grub-mkimagexx.c
+++ b/util/grub-mkimagexx.c
@@ -832,6 +832,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
break;
case R_X86_64_PC32:
+ case R_X86_64_PLT32:
{
grub_uint32_t *t32 = (grub_uint32_t *) target;
*t32 = grub_host_to_target64 (grub_target_to_host32 (*t32)
diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c
index 9179285a5..a79271f66 100644
--- a/util/grub-module-verifier.c
+++ b/util/grub-module-verifier.c
@@ -19,6 +19,7 @@ struct grub_module_verifier_arch archs[] = {
-1
}, (int[]){
R_X86_64_PC32,
+ R_X86_64_PLT32,
-1
}
},

View file

@ -0,0 +1,126 @@
From ba84c8d1b4830e9fcb14d9f0e4a36e03ac40a09d Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwatson@ubuntu.com>
Date: Tue, 30 Jan 2018 14:08:26 +0000
Subject: build: Capitalise *freetype_* variables
Using FREETYPE_CFLAGS and FREETYPE_LIBS is more in line with the naming
scheme used by pkg-config macros.
Bug-Debian: https://bugs.debian.org/887721
Last-Update: 2018-02-11
Patch-Name: freetype-capitalise-variables.patch
---
Makefile.am | 6 +++---
Makefile.util.def | 4 ++--
configure.ac | 24 ++++++++++++------------
3 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/Makefile.am b/Makefile.am
index f0ab1adc3..b47b4b1ac 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -71,7 +71,7 @@ endif
starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0
build-grub-mkfont$(BUILD_EXEEXT): util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c
- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs)
+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(BUILD_FREETYPE_CFLAGS) $(BUILD_FREETYPE_LIBS)
CLEANFILES += build-grub-mkfont$(BUILD_EXEEXT)
garbage-gen$(BUILD_EXEEXT): util/garbage-gen.c
@@ -80,11 +80,11 @@ CLEANFILES += garbage-gen$(BUILD_EXEEXT)
EXTRA_DIST += util/garbage-gen.c
build-grub-gen-asciih$(BUILD_EXEEXT): util/grub-gen-asciih.c
- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(BUILD_FREETYPE_CFLAGS) $(BUILD_FREETYPE_LIBS) -Wall -Werror
CLEANFILES += build-grub-gen-asciih$(BUILD_EXEEXT)
build-grub-gen-widthspec$(BUILD_EXEEXT): util/grub-gen-widthspec.c
- $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
+ $(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $(BUILD_LDFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(BUILD_FREETYPE_CFLAGS) $(BUILD_FREETYPE_LIBS) -Wall -Werror
CLEANFILES += build-grub-gen-widthspec$(BUILD_EXEEXT)
if COND_STARFIELD
diff --git a/Makefile.util.def b/Makefile.util.def
index 168acbe59..fa39d8bd1 100644
--- a/Makefile.util.def
+++ b/Makefile.util.def
@@ -302,14 +302,14 @@ program = {
common = grub-core/kern/emu/argp_common.c;
common = grub-core/osdep/init.c;
- cflags = '$(freetype_cflags)';
+ cflags = '$(FREETYPE_CFLAGS)';
cppflags = '-DGRUB_MKFONT=1';
ldadd = libgrubmods.a;
ldadd = libgrubgcry.a;
ldadd = libgrubkern.a;
ldadd = grub-core/gnulib/libgnu.a;
- ldadd = '$(freetype_libs)';
+ ldadd = '$(FREETYPE_LIBS)';
ldadd = '$(LIBINTL) $(LIBDEVMAPPER) $(LIBZFS) $(LIBNVPAIR) $(LIBGEOM)';
condition = COND_GRUB_MKFONT;
};
diff --git a/configure.ac b/configure.ac
index cd1f49837..85c23bd62 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1505,12 +1505,12 @@ unset ac_cv_header_ft2build_h
if test x"$grub_mkfont_excuse" = x ; then
# Check for freetype libraries.
- freetype_cflags=`$FREETYPE --cflags`
- freetype_libs=`$FREETYPE --libs`
+ FREETYPE_CFLAGS=`$FREETYPE --cflags`
+ FREETYPE_LIBS=`$FREETYPE --libs`
SAVED_CPPFLAGS="$CPPFLAGS"
SAVED_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $freetype_cflags"
- LIBS="$LIBS $freetype_libs"
+ CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS"
+ LIBS="$LIBS $FREETYPE_LIBS"
AC_CHECK_HEADERS([ft2build.h], [],
[grub_mkfont_excuse=["need freetype2 headers"]])
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
@@ -1527,8 +1527,8 @@ else
enable_grub_mkfont=no
fi
AC_SUBST([enable_grub_mkfont])
-AC_SUBST([freetype_cflags])
-AC_SUBST([freetype_libs])
+AC_SUBST([FREETYPE_CFLAGS])
+AC_SUBST([FREETYPE_LIBS])
SAVED_CC="$CC"
SAVED_CPP="$CPP"
@@ -1566,12 +1566,12 @@ fi
if test x"$grub_build_mkfont_excuse" = x ; then
# Check for freetype libraries.
- build_freetype_cflags=`$BUILD_FREETYPE --cflags`
- build_freetype_libs=`$BUILD_FREETYPE --libs`
+ BUILD_FREETYPE_CFLAGS=`$BUILD_FREETYPE --cflags`
+ BUILD_FREETYPE_LIBS=`$BUILD_FREETYPE --libs`
SAVED_CPPFLAGS_2="$CPPFLAGS"
SAVED_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $build_freetype_cflags"
- LIBS="$LIBS $build_freetype_libs"
+ CPPFLAGS="$CPPFLAGS $BUILD_FREETYPE_CFLAGS"
+ LIBS="$LIBS $BUILD_FREETYPE_LIBS"
AC_CHECK_HEADERS([ft2build.h], [],
[grub_build_mkfont_excuse=["need freetype2 headers"]])
AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
@@ -1595,8 +1595,8 @@ if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu || tes
fi
fi
-AC_SUBST([build_freetype_cflags])
-AC_SUBST([build_freetype_libs])
+AC_SUBST([BUILD_FREETYPE_CFLAGS])
+AC_SUBST([BUILD_FREETYPE_LIBS])
CC="$SAVED_CC"
CPP="$SAVED_CPP"

View file

@ -0,0 +1,194 @@
From 3eec911197081a63d9dae28f1784ad01a06fb60a Mon Sep 17 00:00:00 2001
From: Colin Watson <cjwatson@ubuntu.com>
Date: Tue, 30 Jan 2018 21:54:17 +0000
Subject: build: Use pkg-config to find FreeType
pkg-config is apparently preferred over freetype-config these days (see
the BUGS section of freetype-config(1)). pkg-config support was added
to FreeType in version 2.1.5, which was released in 2003, so it should
comfortably be available everywhere by now.
We no longer need to explicitly substitute FREETYPE_CFLAGS and
FREETYPE_LIBS, since PKG_CHECK_MODULES does that automatically.
Fixes Debian bug #887721.
Reported-by: Hugh McMaster <hugh.mcmaster@outlook.com>
Signed-off-by: Colin Watson <cjwatson@ubuntu.com>
Bug-Debian: https://bugs.debian.org/887721
Last-Update: 2018-02-11
Patch-Name: freetype-pkg-config.patch
---
INSTALL | 11 +++++----
configure.ac | 74 +++++++++++++++++++++++++-----------------------------------
2 files changed, 37 insertions(+), 48 deletions(-)
diff --git a/INSTALL b/INSTALL
index f3c20edc8..b370d7753 100644
--- a/INSTALL
+++ b/INSTALL
@@ -37,6 +37,7 @@ configuring the GRUB.
* GNU gettext 0.17 or later
* GNU binutils 2.9.1.0.23 or later
* Flex 2.5.35 or later
+* pkg-config
* Other standard GNU/Unix tools
* a libc with large file support (e.g. glibc 2.1 or later)
@@ -52,7 +53,7 @@ For optional grub-emu features, you need:
To build GRUB's graphical terminal (gfxterm), you need:
-* FreeType 2 or later
+* FreeType 2.1.5 or later
* GNU Unifont
If you use a development snapshot or want to hack on GRUB you may
@@ -158,8 +159,8 @@ For this example the configure line might look like (more details below)
(some options are optional and included here for completeness but some rarely
used options are omitted):
-./configure BUILD_CC=gcc BUILD_FREETYPE=freetype-config --host=amd64-linux-gnu
-CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" FREETYPE=amd64-linux-gnu-freetype-config
+./configure BUILD_CC=gcc BUILD_PKG_CONFIG=pkg-config --host=amd64-linux-gnu
+CC=amd64-linux-gnu-gcc CFLAGS="-g -O2" PKG_CONFIG=amd64-linux-gnu-pkg-config
--target=arm --with-platform=uboot TARGET_CC=arm-elf-gcc
TARGET_CFLAGS="-Os -march=armv6" TARGET_CCASFLAGS="-march=armv6"
TARGET_OBJCOPY="arm-elf-objcopy" TARGET_STRIP="arm-elf-strip"
@@ -176,7 +177,7 @@ corresponding platform are not needed for the platform in question.
2. BUILD_CFLAGS= for C options for build.
3. BUILD_CPPFLAGS= for C preprocessor options for build.
4. BUILD_LDFLAGS= for linker options for build.
- 5. BUILD_FREETYPE= for freetype-config for build (optional).
+ 5. BUILD_PKG_CONFIG= for pkg-config for build (optional).
- For host
1. --host= to autoconf name of host.
@@ -184,7 +185,7 @@ corresponding platform are not needed for the platform in question.
3. HOST_CFLAGS= for C options for host.
4. HOST_CPPFLAGS= for C preprocessor options for host.
5. HOST_LDFLAGS= for linker options for host.
- 6. FREETYPE= for freetype-config for host (optional).
+ 6. PKG_CONFIG= for pkg-config for host (optional).
7. Libdevmapper if any must be in standard linker folders (-ldevmapper) (optional).
8. Libfuse if any must be in standard linker folders (-lfuse) (optional).
9. Libzfs if any must be in standard linker folders (-lzfs) (optional).
diff --git a/configure.ac b/configure.ac
index 85c23bd62..f102b7024 100644
--- a/configure.ac
+++ b/configure.ac
@@ -50,6 +50,10 @@ AC_PREREQ(2.60)
AC_CONFIG_SRCDIR([include/grub/dl.h])
AC_CONFIG_HEADER([config-util.h])
+# Explicitly check for pkg-config early on, since otherwise conditional
+# calls are problematic.
+PKG_PROG_PKG_CONFIG
+
# Program name transformations
AC_ARG_PROGRAM
grub_TRANSFORM([grub-bios-setup])
@@ -1493,29 +1497,22 @@ if test x"$enable_grub_mkfont" = xno ; then
grub_mkfont_excuse="explicitly disabled"
fi
-if test x"$grub_mkfont_excuse" = x ; then
- # Check for freetype libraries.
- AC_CHECK_TOOLS([FREETYPE], [freetype-config])
- if test "x$FREETYPE" = x ; then
- grub_mkfont_excuse=["need freetype2 library"]
- fi
-fi
-
unset ac_cv_header_ft2build_h
if test x"$grub_mkfont_excuse" = x ; then
# Check for freetype libraries.
- FREETYPE_CFLAGS=`$FREETYPE --cflags`
- FREETYPE_LIBS=`$FREETYPE --libs`
- SAVED_CPPFLAGS="$CPPFLAGS"
- SAVED_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS"
- LIBS="$LIBS $FREETYPE_LIBS"
- AC_CHECK_HEADERS([ft2build.h], [],
- [grub_mkfont_excuse=["need freetype2 headers"]])
- AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_mkfont_excuse=["freetype2 library unusable"]])
- CPPFLAGS="$SAVED_CPPFLAGS"
- LIBS="$SAVED_LIBS"
+ PKG_CHECK_MODULES([FREETYPE], [freetype2], [
+ SAVED_CPPFLAGS="$CPPFLAGS"
+ SAVED_LIBS="$LIBS"
+ CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS"
+ LIBS="$LIBS $FREETYPE_LIBS"
+ AC_CHECK_HEADERS([ft2build.h], [],
+ [grub_mkfont_excuse=["need freetype2 headers"]])
+ AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [],
+ [grub_mkfont_excuse=["freetype2 library unusable"]])
+ CPPFLAGS="$SAVED_CPPFLAGS"
+ LIBS="$SAVED_LIBS"
+ ], [grub_mkfont_excuse=["need freetype2 library"]])
fi
if test x"$enable_grub_mkfont" = xyes && test x"$grub_mkfont_excuse" != x ; then
@@ -1527,8 +1524,6 @@ else
enable_grub_mkfont=no
fi
AC_SUBST([enable_grub_mkfont])
-AC_SUBST([FREETYPE_CFLAGS])
-AC_SUBST([FREETYPE_LIBS])
SAVED_CC="$CC"
SAVED_CPP="$CPP"
@@ -1558,25 +1553,21 @@ AC_SUBST([BUILD_WORDS_BIGENDIAN])
if test x"$grub_build_mkfont_excuse" = x ; then
# Check for freetype libraries.
- AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
- if test "x$BUILD_FREETYPE" = x ; then
- grub_build_mkfont_excuse=["need freetype2 library"]
- fi
-fi
-
-if test x"$grub_build_mkfont_excuse" = x ; then
- # Check for freetype libraries.
- BUILD_FREETYPE_CFLAGS=`$BUILD_FREETYPE --cflags`
- BUILD_FREETYPE_LIBS=`$BUILD_FREETYPE --libs`
- SAVED_CPPFLAGS_2="$CPPFLAGS"
- SAVED_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS $BUILD_FREETYPE_CFLAGS"
- LIBS="$LIBS $BUILD_FREETYPE_LIBS"
- AC_CHECK_HEADERS([ft2build.h], [],
- [grub_build_mkfont_excuse=["need freetype2 headers"]])
- AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [], [grub_build_mkfont_excuse=["freetype2 library unusable"]])
- LIBS="$SAVED_LIBS"
- CPPFLAGS="$SAVED_CPPFLAGS_2"
+ SAVED_PKG_CONFIG="$PKG_CONFIG"
+ test -z "$BUILD_PKG_CONFIG" || PKG_CONFIG="$BUILD_PKG_CONFIG"
+ PKG_CHECK_MODULES([BUILD_FREETYPE], [freetype2], [
+ SAVED_CPPFLAGS_2="$CPPFLAGS"
+ SAVED_LIBS="$LIBS"
+ CPPFLAGS="$CPPFLAGS $BUILD_FREETYPE_CFLAGS"
+ LIBS="$LIBS $BUILD_FREETYPE_LIBS"
+ AC_CHECK_HEADERS([ft2build.h], [],
+ [grub_build_mkfont_excuse=["need freetype2 headers"]])
+ AC_LINK_IFELSE([AC_LANG_CALL([], [FT_Load_Glyph])], [],
+ [grub_build_mkfont_excuse=["freetype2 library unusable"]])
+ LIBS="$SAVED_LIBS"
+ CPPFLAGS="$SAVED_CPPFLAGS_2"
+ ], [grub_build_mkfont_excuse=["need freetype2 library"]])
+ PKG_CONFIG="$SAVED_PKG_CONFIG"
fi
if test x"$enable_build_grub_mkfont" = xyes && test x"$grub_build_mkfont_excuse" != x ; then
@@ -1595,9 +1586,6 @@ if test x"$enable_build_grub_mkfont" = xno && ( test "x$platform" = xqemu || tes
fi
fi
-AC_SUBST([BUILD_FREETYPE_CFLAGS])
-AC_SUBST([BUILD_FREETYPE_LIBS])
-
CC="$SAVED_CC"
CPP="$SAVED_CPP"
CFLAGS="$SAVED_CFLAGS"

View file

@ -0,0 +1,72 @@
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>
---
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

View file

@ -0,0 +1,177 @@
From a698240df0c43278b2d1d7259c8e7a6926c63112 Mon Sep 17 00:00:00 2001
From: "Matthew S. Turnbull" <sparky@bluefang-logic.com>
Date: Sat, 24 Feb 2018 17:44:58 -0500
Subject: grub-mkconfig/10_linux: Support multiple early initrd images
Add support for multiple, shared, early initrd images. These early
images will be loaded in the order declared, and all will be loaded
before the initrd image.
While many classes of data can be provided by early images, the
immediate use case would be for distributions to provide CPU
microcode to mitigate the Meltdown and Spectre vulnerabilities.
There are two environment variables provided for declaring the early
images.
* GRUB_EARLY_INITRD_LINUX_STOCK is for the distribution declare
images that are provided by the distribution or installed packages.
If undeclared, this will default to a set of common microcode image
names.
* GRUB_EARLY_INITRD_LINUX_CUSTOM is for user created images. User
images will be loaded after the stock images.
These separate configurations allow the distribution and user to
declare different image sets without clobbering each other.
This also makes a minor update to ensure that UUID partition labels
stay disabled when no initrd image is found, even if early images are
present.
This is a continuation of a previous patch published by Christian
Hesse in 2016:
http://lists.gnu.org/archive/html/grub-devel/2016-02/msg00025.html
Down stream Gentoo bug:
https://bugs.gentoo.org/645088
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
Signed-off-by: Matthew S. Turnbull <sparky@bluefang-logic.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
---
docs/grub.texi | 19 +++++++++++++++++++
util/grub-mkconfig.in | 8 ++++++++
util/grub.d/10_linux.in | 33 +++++++++++++++++++++++++++------
3 files changed, 54 insertions(+), 6 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi
index 137b894..65b4bbe 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -1398,6 +1398,25 @@ for all respectively normal entries.
The values of these options replace the values of @samp{GRUB_CMDLINE_LINUX}
and @samp{GRUB_CMDLINE_LINUX_DEFAULT} for Linux and Xen menu entries.
+@item GRUB_EARLY_INITRD_LINUX_CUSTOM
+@itemx GRUB_EARLY_INITRD_LINUX_STOCK
+List of space-separated early initrd images to be loaded from @samp{/boot}.
+This is for loading things like CPU microcode, firmware, ACPI tables, crypto
+keys, and so on. These early images will be loaded in the order declared,
+and all will be loaded before the actual functional initrd image.
+
+@samp{GRUB_EARLY_INITRD_LINUX_STOCK} is for your distribution to declare
+images that are provided by the distribution. It should not be modified
+without understanding the consequences. They will be loaded first.
+
+@samp{GRUB_EARLY_INITRD_LINUX_CUSTOM} is for your custom created images.
+
+The default stock images are as follows, though they may be overridden by
+your distribution:
+@example
+intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio
+@end example
+
@item GRUB_DISABLE_LINUX_UUID
Normally, @command{grub-mkconfig} will generate menu entries that use
universally-unique identifiers (UUIDs) to identify the root filesystem to
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index f8496d2..35ef583 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -147,6 +147,12 @@ if [ x"$GRUB_FS" = xunknown ]; then
GRUB_FS="$(stat -f --printf=%T / || echo unknown)"
fi
+# Provide a default set of stock linux early initrd images.
+# Define here so the list can be modified in the sourced config file.
+if [ "x${GRUB_EARLY_INITRD_LINUX_STOCK}" = "x" ]; then
+ GRUB_EARLY_INITRD_LINUX_STOCK="intel-uc.img intel-ucode.img amd-uc.img amd-ucode.img early_ucode.cpio microcode.cpio"
+fi
+
if test -f ${sysconfdir}/default/grub ; then
. ${sysconfdir}/default/grub
fi
@@ -211,6 +217,8 @@ export GRUB_DEFAULT \
GRUB_CMDLINE_NETBSD \
GRUB_CMDLINE_NETBSD_DEFAULT \
GRUB_CMDLINE_GNUMACH \
+ GRUB_EARLY_INITRD_LINUX_CUSTOM \
+ GRUB_EARLY_INITRD_LINUX_STOCK \
GRUB_TERMINAL_INPUT \
GRUB_TERMINAL_OUTPUT \
GRUB_SERIAL_COMMAND \
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index de9044c..faedf74 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -136,9 +136,13 @@ EOF
if test -n "${initrd}" ; then
# TRANSLATORS: ramdisk isn't identifier. Should be translated.
message="$(gettext_printf "Loading initial ramdisk ...")"
+ initrd_path=
+ for i in ${initrd}; do
+ initrd_path="${initrd_path} ${rel_dirname}/${i}"
+ done
sed "s/^/$submenu_indentation/" << EOF
echo '$(echo "$message" | grub_quote)'
- initrd ${rel_dirname}/${initrd}
+ initrd $(echo $initrd_path)
EOF
fi
sed "s/^/$submenu_indentation/" << EOF
@@ -188,7 +192,15 @@ while [ "x$list" != "x" ] ; do
alt_version=`echo $version | sed -e "s,\.old$,,g"`
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
- initrd=
+ initrd_early=
+ for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
+ ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
+ if test -e "${dirname}/${i}" ; then
+ initrd_early="${initrd_early} ${i}"
+ fi
+ done
+
+ initrd_real=
for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
"initrd-${version}" "initramfs-${version}.img" \
"initrd.img-${alt_version}" "initrd-${alt_version}.img" \
@@ -198,11 +210,22 @@ while [ "x$list" != "x" ] ; do
"initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
"initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
if test -e "${dirname}/${i}" ; then
- initrd="$i"
+ initrd_real="${i}"
break
fi
done
+ initrd=
+ if test -n "${initrd_early}" || test -n "${initrd_real}"; then
+ initrd="${initrd_early} ${initrd_real}"
+
+ initrd_display=
+ for i in ${initrd}; do
+ initrd_display="${initrd_display} ${dirname}/${i}"
+ done
+ gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
+ fi
+
config=
for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
if test -e "${i}" ; then
@@ -216,9 +239,7 @@ while [ "x$list" != "x" ] ; do
initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
fi
- if test -n "${initrd}" ; then
- gettext_printf "Found initrd image: %s\n" "${dirname}/${initrd}" >&2
- elif test -z "${initramfs}" ; then
+ if test -z "${initramfs}" && test -z "${initrd_real}" ; then
# "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. Since there's
# no initrd or builtin initramfs, it can't work here.
linux_root_device_thisversion=${GRUB_DEVICE}
--
cgit v1.0-41-gc330

View file

@ -0,0 +1,60 @@
From cda0a857dd7a27cd5d621747464bfe71e8727fff Mon Sep 17 00:00:00 2001
From: Daniel Kiper <daniel.kiper@oracle.com>
Date: Tue, 29 May 2018 16:16:02 +0200
Subject: xfs: Accept filesystem with sparse inodes
The sparse inode metadata format became a mkfs.xfs default in
xfsprogs-4.16.0, and such filesystems are now rejected by grub as
containing an incompatible feature.
In essence, this feature allows xfs to allocate inodes into fragmented
freespace. (Without this feature, if xfs could not allocate contiguous
space for 64 new inodes, inode creation would fail.)
In practice, the disk format change is restricted to the inode btree,
which as far as I can tell is not used by grub. If all you're doing
today is parsing a directory, reading an inode number, and converting
that inode number to a disk location, then ignoring this feature
should be fine, so I've added it to XFS_SB_FEAT_INCOMPAT_SUPPORTED
I did some brief testing of this patch by hacking up the regression
tests to completely fragment freespace on the test xfs filesystem, and
then write a large-ish number of inodes to consume any existing
contiguous 64-inode chunk. This way any files the grub tests add and
traverse would be in such a fragmented inode allocation. Tests passed,
but I'm not sure how to cleanly integrate that into the test harness.
Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Tested-by: Chris Murphy <lists@colorremedies.com>
---
grub-core/fs/xfs.c | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
index c6031bd..3b00c74 100644
--- a/grub-core/fs/xfs.c
+++ b/grub-core/fs/xfs.c
@@ -79,9 +79,18 @@ GRUB_MOD_LICENSE ("GPLv3+");
#define XFS_SB_FEAT_INCOMPAT_SPINODES (1 << 1) /* sparse inode chunks */
#define XFS_SB_FEAT_INCOMPAT_META_UUID (1 << 2) /* metadata UUID */
-/* We do not currently verify metadata UUID so it is safe to read such filesystem */
+/*
+ * Directory entries with ftype are explicitly handled by GRUB code.
+ *
+ * We do not currently read the inode btrees, so it is safe to read filesystems
+ * with the XFS_SB_FEAT_INCOMPAT_SPINODES feature.
+ *
+ * We do not currently verify metadata UUID, so it is safe to read filesystems
+ * with the XFS_SB_FEAT_INCOMPAT_META_UUID feature.
+ */
#define XFS_SB_FEAT_INCOMPAT_SUPPORTED \
(XFS_SB_FEAT_INCOMPAT_FTYPE | \
+ XFS_SB_FEAT_INCOMPAT_SPINODES | \
XFS_SB_FEAT_INCOMPAT_META_UUID)
struct grub_xfs_sblock
--
cgit v1.0-41-gc330

View file

@ -0,0 +1,29 @@
From e2d5bf1bc6aaaabeba538c1ca94ea8601e4e1474 Mon Sep 17 00:00:00 2001
From: Mike Gilbert <floppym@gentoo.org>
Date: Thu, 16 Oct 2014 23:43:51 -0400
Subject: [PATCH] 10_linux: Default gfxpayload=keep only when booting using efi
vesafb seems to be unreliable when using BIOS compat mode.
---
util/grub.d/10_linux.in | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index d2e2a8f..a54b888 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -104,7 +104,9 @@ linux_entry ()
echo " load_video" | sed "s/^/$submenu_indentation/"
if grep -qx "CONFIG_FB_EFI=y" "${config}" 2> /dev/null \
&& grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" "${config}" 2> /dev/null; then
- echo " set gfxpayload=keep" | sed "s/^/$submenu_indentation/"
+ echo ' if [ "x$grub_platform" = xefi ]; then' | sed "s/^/$submenu_indentation/"
+ echo " set gfxpayload=keep" | sed "s/^/$submenu_indentation/"
+ echo ' fi' | sed "s/^/$submenu_indentation/"
fi
else
if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
--
2.7.2

View file

@ -0,0 +1,67 @@
From 43e3295aaad5278a1e53c5282e2660b72cd76d28 Mon Sep 17 00:00:00 2001
From: "Robin H. Johnson" <robbat2@gentoo.org>
Date: Tue, 29 Dec 2015 15:29:14 -0800
Subject: [PATCH] GRUB_LINUX_KERNEL_GLOBS: configurable kernel selection
* util/grub.d/10_linux.in: Implement GRUB_LINUX_KERNEL_GLOBS
* docs/grub.texi: Document GRUB_LINUX_KERNEL_GLOBS
Signed-off-by: Robin H. Johnson <robbat2@gentoo.org>
---
docs/grub.texi | 5 +++++
util/grub.d/10_linux.in | 21 +++++++++++----------
2 files changed, 16 insertions(+), 10 deletions(-)
diff --git a/docs/grub.texi b/docs/grub.texi
index 9a25a0b..d1129ec 100644
--- a/docs/grub.texi
+++ b/docs/grub.texi
@@ -1490,6 +1490,11 @@ This option may be set to a list of GRUB module names separated by spaces.
Each module will be loaded as early as possible, at the start of
@file{grub.cfg}.
+@item GRUB_LINUX_KERNEL_GLOBS
+This option may be set to override the list of path globs used to find Linux
+kernels. The defaults vary by architecture, and generally include both
+@file{/boot} and @file{/}.
+
@end table
The following options are still accepted for compatibility with existing
diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
index 859b608..e5ac11d 100644
--- a/util/grub.d/10_linux.in
+++ b/util/grub.d/10_linux.in
@@ -145,18 +145,19 @@ EOF
}
machine=`uname -m`
-case "x$machine" in
+globs="$GRUB_LINUX_KERNEL_GLOBS"
+[ -z "$globs" ] && case "x$machine" in
xi?86 | xx86_64)
- list=
- for i in /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
- if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
- done ;;
+ globs="/boot/vmlinuz-* /vmlinuz-* /boot/kernel-*"
+ ;;
+ *)
+ globs="/boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-*"
+ ;;
esac
+list=
+for i in ${globs} ; do
+ if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
+done
case "$machine" in
i?86) GENKERNEL_ARCH="x86" ;;
--
2.3.0

View file

@ -0,0 +1,73 @@
# Copyright 1999-2015 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
#
# To populate all changes in this file you need to regenerate your
# grub configuration file afterwards:
# 'grub2-mkconfig -o /boot/grub/grub.cfg'
#
# See the grub info page for documentation on possible variables and
# their associated values.
GRUB_DISTRIBUTOR="Gentoo"
# Default menu entry
#GRUB_DEFAULT=0
# Boot the default entry this many seconds after the menu is displayed
#GRUB_TIMEOUT=5
#GRUB_TIMEOUT_STYLE=menu
# Append parameters to the linux kernel command line
#GRUB_CMDLINE_LINUX=""
#
# Examples:
#
# Boot with network interface renaming disabled
# GRUB_CMDLINE_LINUX="net.ifnames=0"
#
# Boot with systemd instead of sysvinit (openrc)
# GRUB_CMDLINE_LINUX="init=/usr/lib/systemd/systemd"
# Append parameters to the linux kernel command line for non-recovery entries
#GRUB_CMDLINE_LINUX_DEFAULT=""
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal.
# Note that you can use only modes which your graphic card supports via VBE.
# You can see them in real GRUB with the command `vbeinfo'.
#GRUB_GFXMODE=640x480
# Set to 'text' to force the Linux kernel to boot in normal text
# mode, 'keep' to preserve the graphics mode set using
# 'GRUB_GFXMODE', 'WIDTHxHEIGHT'['xDEPTH'] to set a particular
# graphics mode, or a sequence of these separated by commas or
# semicolons to try several modes in sequence.
#GRUB_GFXPAYLOAD_LINUX=
# Path to theme spec txt file.
# The starfield is by default provided with use truetype.
# NOTE: when enabling custom theme, ensure you have required font/etc.
#GRUB_THEME="/boot/grub/themes/starfield/theme.txt"
# Background image used on graphical terminal.
# Can be in various bitmap formats.
#GRUB_BACKGROUND="/boot/grub/mybackground.png"
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to kernel
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY=true
# Uncomment to disable generation of the submenu and put all choices on
# the top-level menu.
# Besides the visual affect of no sub menu, this makes navigation of the
# menu easier for a user who can't see the screen.
#GRUB_DISABLE_SUBMENU=y
# Uncomment to play a tone when the main menu is displayed.
# This is useful, for example, to allow users who can't see the screen
# to know when they can make a choice on the menu.
#GRUB_INIT_TUNE="60 800 1"

View file

@ -0,0 +1,315 @@
# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
GRUB_AUTOGEN=1
GRUB_AUTORECONF=1
if [[ -n ${GRUB_AUTOGEN} ]]; then
PYTHON_COMPAT=( python{2_7,3_3,3_4,3_5,3_6} )
inherit python-any-r1
fi
if [[ -n ${GRUB_AUTORECONF} ]]; then
WANT_LIBTOOL=none
inherit autotools
fi
inherit bash-completion-r1 flag-o-matic multibuild pax-utils toolchain-funcs
if [[ ${PV} != 9999 ]]; then
if [[ ${PV} == *_alpha* || ${PV} == *_beta* || ${PV} == *_rc* ]]; then
# The quote style is to work with <=bash-4.2 and >=bash-4.3 #503860
MY_P=${P/_/'~'}
SRC_URI="mirror://gnu-alpha/${PN}/${MY_P}.tar.xz"
S=${WORKDIR}/${MY_P}
else
SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
S=${WORKDIR}/${P%_*}
fi
KEYWORDS="amd64 ~arm ~arm64 ppc ppc64 x86"
else
inherit git-r3
EGIT_REPO_URI="git://git.sv.gnu.org/grub.git
http://git.savannah.gnu.org/r/grub.git"
fi
PATCHES=(
"${FILESDIR}"/gfxpayload.patch
"${FILESDIR}"/grub-2.02_beta2-KERNEL_GLOBS.patch
"${FILESDIR}"/2.02-multiple-early-initrd.patch
"${FILESDIR}"/2.02-freetype-capitalise-variables.patch
"${FILESDIR}"/2.02-freetype-pkg-config.patch
"${FILESDIR}"/2.02-xfs-sparse-inodes.patch
"${FILESDIR}"/2.02-X86_64_PLT32.patch
"${FILESDIR}"/2.02-gcc8.patch
)
DEJAVU=dejavu-sans-ttf-2.37
UNIFONT=unifont-9.0.06
SRC_URI+=" fonts? ( mirror://gnu/unifont/${UNIFONT}/${UNIFONT}.pcf.gz )
themes? ( mirror://sourceforge/dejavu/${DEJAVU}.zip )"
DESCRIPTION="GNU GRUB boot loader"
HOMEPAGE="https://www.gnu.org/software/grub/"
# Includes licenses for dejavu and unifont
LICENSE="GPL-3 fonts? ( GPL-2-with-font-exception ) themes? ( BitstreamVera )"
SLOT="2/${PVR}"
IUSE="debug device-mapper doc efiemu +fonts mount multislot nls static sdl test +themes truetype libzfs"
GRUB_ALL_PLATFORMS=( coreboot efi-32 efi-64 emu ieee1275 loongson multiboot qemu qemu-mips pc uboot xen xen-32 )
IUSE+=" ${GRUB_ALL_PLATFORMS[@]/#/grub_platforms_}"
REQUIRED_USE="
grub_platforms_coreboot? ( fonts )
grub_platforms_qemu? ( fonts )
grub_platforms_ieee1275? ( fonts )
grub_platforms_loongson? ( fonts )
"
# os-prober: Used on runtime to detect other OSes
# xorriso (dev-libs/libisoburn): Used on runtime for mkrescue
COMMON_DEPEND="
app-arch/xz-utils
>=sys-libs/ncurses-5.2-r5:0=
debug? (
sdl? ( media-libs/libsdl )
)
device-mapper? ( >=sys-fs/lvm2-2.02.45 )
libzfs? ( sys-fs/zfs )
mount? ( sys-fs/fuse:0 )
truetype? ( media-libs/freetype:2= )
ppc? ( >=sys-apps/ibm-powerpc-utils-1.3.5 )
ppc64? ( >=sys-apps/ibm-powerpc-utils-1.3.5 )
"
DEPEND="${COMMON_DEPEND}
${PYTHON_DEPS}
app-misc/pax-utils
sys-devel/flex
sys-devel/bison
sys-apps/help2man
sys-apps/texinfo
fonts? (
media-libs/freetype:2
virtual/pkgconfig
)
grub_platforms_xen? ( app-emulation/xen-tools:= )
grub_platforms_xen-32? ( app-emulation/xen-tools:= )
static? (
app-arch/xz-utils[static-libs(+)]
truetype? (
app-arch/bzip2[static-libs(+)]
media-libs/freetype[static-libs(+)]
sys-libs/zlib[static-libs(+)]
virtual/pkgconfig
)
)
test? (
app-admin/genromfs
app-arch/cpio
app-arch/lzop
app-emulation/qemu
dev-libs/libisoburn
sys-apps/miscfiles
sys-block/parted
sys-fs/squashfs-tools
)
themes? (
app-arch/unzip
media-libs/freetype:2
virtual/pkgconfig
)
truetype? ( virtual/pkgconfig )
"
RDEPEND="${COMMON_DEPEND}
kernel_linux? (
grub_platforms_efi-32? ( sys-boot/efibootmgr )
grub_platforms_efi-64? ( sys-boot/efibootmgr )
)
!multislot? ( !sys-boot/grub:0 !sys-boot/grub-static )
nls? ( sys-devel/gettext )
"
RESTRICT="strip !test? ( test )"
QA_EXECSTACK="usr/bin/grub*-emu* usr/lib/grub/*"
QA_WX_LOAD="usr/lib/grub/*"
QA_MULTILIB_PATHS="usr/lib/grub/.*"
src_unpack() {
if [[ ${PV} == 9999 ]]; then
git-r3_src_unpack
fi
default
}
src_prepare() {
default
sed -i -e /autoreconf/d autogen.sh || die
if use multislot; then
# fix texinfo file name, bug 416035
sed -i -e 's/^\* GRUB:/* GRUB2:/' -e 's/(grub)/(grub2)/' docs/grub.texi || die
fi
# Nothing in Gentoo packages 'american-english' in the exact path
# wanted for the test, but all that is needed is a compressible text
# file, and we do have 'words' from miscfiles in the same path.
sed -i \
-e '/CFILESSRC.*=/s,american-english,words,' \
tests/util/grub-fs-tester.in \
|| die
if [[ -n ${GRUB_AUTOGEN} ]]; then
python_setup
bash autogen.sh || die
fi
if [[ -n ${GRUB_AUTORECONF} ]]; then
autopoint() { :; }
eautoreconf
fi
}
grub_do() {
multibuild_foreach_variant run_in_build_dir "$@"
}
grub_do_once() {
multibuild_for_best_variant run_in_build_dir "$@"
}
grub_configure() {
local platform
case ${MULTIBUILD_VARIANT} in
efi*) platform=efi ;;
xen*) platform=xen ;;
guessed) ;;
*) platform=${MULTIBUILD_VARIANT} ;;
esac
case ${MULTIBUILD_VARIANT} in
*-32)
if [[ ${CTARGET:-${CHOST}} == x86_64* ]]; then
local CTARGET=i386
fi ;;
*-64)
if [[ ${CTARGET:-${CHOST}} == i?86* ]]; then
local CTARGET=x86_64
local -x TARGET_CFLAGS="-Os -march=x86-64 ${TARGET_CFLAGS}"
local -x TARGET_CPPFLAGS="-march=x86-64 ${TARGET_CPPFLAGS}"
fi ;;
esac
local myeconfargs=(
--disable-werror
--program-prefix=
--libdir="${EPREFIX}"/usr/lib
--htmldir="${EPREFIX}"/usr/share/doc/${PF}/html
$(use_enable debug mm-debug)
$(use_enable device-mapper)
$(use_enable mount grub-mount)
$(use_enable nls)
$(use_enable themes grub-themes)
$(use_enable truetype grub-mkfont)
$(use_enable libzfs)
$(use sdl && use_enable debug grub-emu-sdl)
$(use !sdl && use_enable sdl grub-emu-sdl)
${platform:+--with-platform=}${platform}
# Let configure detect this where supported
$(usex efiemu '' '--disable-efiemu')
)
if use multislot; then
myeconfargs+=( --program-transform-name="s,grub,grub2," )
fi
# Set up font symlinks
ln -s "${WORKDIR}/${UNIFONT}.pcf" unifont.pcf || die
if use themes; then
ln -s "${WORKDIR}/${DEJAVU}/ttf/DejaVuSans.ttf" DejaVuSans.ttf || die
fi
local ECONF_SOURCE="${S}"
econf "${myeconfargs[@]}"
}
src_configure() {
# Bug 508758.
replace-flags -O3 -O2
# We don't want to leak flags onto boot code.
export HOST_CCASFLAGS=${CCASFLAGS}
export HOST_CFLAGS=${CFLAGS}
export HOST_CPPFLAGS=${CPPFLAGS}
export HOST_LDFLAGS=${LDFLAGS}
unset CCASFLAGS CFLAGS CPPFLAGS LDFLAGS
use static && HOST_LDFLAGS+=" -static"
tc-ld-disable-gold #439082 #466536 #526348
export TARGET_LDFLAGS="${TARGET_LDFLAGS} ${LDFLAGS}"
unset LDFLAGS
tc-export CC NM OBJCOPY RANLIB STRIP
tc-export BUILD_CC # Bug 485592
MULTIBUILD_VARIANTS=()
local p
for p in "${GRUB_ALL_PLATFORMS[@]}"; do
use "grub_platforms_${p}" && MULTIBUILD_VARIANTS+=( "${p}" )
done
[[ ${#MULTIBUILD_VARIANTS[@]} -eq 0 ]] && MULTIBUILD_VARIANTS=( guessed )
grub_do grub_configure
}
src_compile() {
# Sandbox bug 404013.
use libzfs && addpredict /etc/dfs:/dev/zfs
grub_do emake
use doc && grub_do_once emake -C docs html
}
src_test() {
# The qemu dependency is a bit complex.
# You will need to adjust QEMU_SOFTMMU_TARGETS to match the cpu/platform.
grub_do emake check
}
src_install() {
grub_do emake install DESTDIR="${D}" bashcompletiondir="$(get_bashcompdir)"
use doc && grub_do_once emake -C docs install-html DESTDIR="${D}"
einstalldocs
if use multislot; then
mv "${ED%/}"/usr/share/info/grub{,2}.info || die
fi
insinto /etc/default
newins "${FILESDIR}"/grub.default-3 grub
}
pkg_postinst() {
elog "For information on how to configure GRUB2 please refer to the guide:"
elog " https://wiki.gentoo.org/wiki/GRUB2_Quick_Start"
if has_version 'sys-boot/grub:0'; then
elog "A migration guide for GRUB Legacy users is available:"
elog " https://wiki.gentoo.org/wiki/GRUB2_Migration"
fi
if [[ -z ${REPLACING_VERSIONS} ]]; then
elog
elog "You may consider installing the following optional packages:"
optfeature "Detect other operating systems (grub-mkconfig)" sys-boot/os-prober
optfeature "Create rescue media (grub-mkrescue)" dev-libs/libisoburn
optfeature "Enable RAID device detection" sys-fs/mdadm
fi
}

View file

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>floppym@gentoo.org</email>
<name>Mike Gilbert</name>
</maintainer>
<maintainer type="project">
<email>base-system@gentoo.org</email>
<name>Gentoo Base System</name>
</maintainer>
<use>
<flag name="device-mapper">
Enable support for device-mapper from <pkg>sys-fs/lvm2</pkg>
</flag>
<flag name="efiemu">
Build and install the efiemu runtimes
</flag>
<flag name="fonts">Build and install fonts for the gfxterm module</flag>
<flag name="mount">
Build and install the grub-mount utility
</flag>
<flag name="libzfs">
Enable support for <pkg>sys-fs/zfs</pkg>
</flag>
<flag name="multislot">
Allow concurrent installation of <pkg>sys-boot/grub</pkg> SLOT 0 and
<pkg>sys-boot/grub</pkg> SLOT 2 by renaming all programs.
</flag>
<flag name="themes">Build and install GRUB themes (starfield)</flag>
<flag name="truetype">Build and install grub-mkfont conversion utility</flag>
</use>
<upstream>
<remote-id type="sourceforge">dejavu</remote-id>
</upstream>
</pkgmetadata>