summaryrefslogtreecommitdiffstats
path: root/testing/source/grub
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2024-07-25 02:39:18 +0000
committer Eric Hameleers <alien@slackware.com>2024-07-25 06:11:40 +0200
commitb75837013c0ff4f20d1a2ccc1a7ea7eb4ad96765 (patch)
treeb9f7395251c5219b1485fe0fd97d7288d4ef0b53 /testing/source/grub
parentc9ced48b11b4756c10bb485d940ab7d5d1680c33 (diff)
downloadcurrent-b75837013c0ff4f20d1a2ccc1a7ea7eb4ad96765.tar.gz
current-b75837013c0ff4f20d1a2ccc1a7ea7eb4ad96765.tar.xz
Thu Jul 25 02:39:18 UTC 202420240725023918
Well folks, we have some more interesting stuff in /testing now. Our good friend LuckyCyborg posted a while back about our trials with GRUB2, and that we were banging our heads against a wall for no reason trying to bend GRUB2 with our 09_slackware_linux grub.d script instead of changing our kernel/initrd naming scheme to vmlinux-6.10.1-generic and initrd-6.10.1-generic.img. And, as is often the case, our friend is exactly correct. Once we stopped trying to swim against the current, GRUB2 started behaving as it should. The updates in /testing change the kernel naming scheme thusly, and modify the geninitrd script in the mkinitrd package to also use this naming scheme. And, of course, 09_slackware_linux is removed from GRUB2, and the 10_linux script is only lightly modified. Because lilo and elilo work with the symlinks to the kernel and initrd, they shouldn't care anout this change. We've probably got 6.9.11 coming tomorrow. Unless I hear that I should stop the presses on this change, it's likely that those kernels will be updated using the new naming scheme and the mkinitrd and grub updates will be moved into the main tree from /testing. We'll stick with 6.9 in the main tree for now because I'm still encountering suspend failure with the 6.10 kernel here. Enjoy! :-) a/kernel-firmware-20240723_b37d247-noarch-1.txz: Upgraded. ap/mpg123-1.32.6-x86_64-2.txz: Rebuilt. l/libxml2-2.13.3-x86_64-1.txz: Upgraded. This update fixes a security issue: Fix XXE protection in downstream code. For more information, see: https://www.cve.org/CVERecord?id=CVE-2024-40896 (* Security fix *) l/mozilla-nss-3.102.1-x86_64-1.txz: Upgraded. l/nodejs-20.16.0-x86_64-1.txz: Upgraded. l/python-importlib_metadata-8.2.0-x86_64-1.txz: Upgraded. l/v4l-utils-1.28.1-x86_64-1.txz: Upgraded. n/c-ares-1.32.3-x86_64-1.txz: Upgraded. n/curl-8.9.0-x86_64-1.txz: Upgraded. n/htdig-3.2.0b6-x86_64-10.txz: Rebuilt. Patch XSS vulnerability. Thanks to jayjwa. Get this out of cgi-bin. Thanks to LuckyCyborg. For more information, see: https://www.cve.org/CVERecord?id=CVE-2007-6110 (* Security fix *) n/libtirpc-1.3.5-x86_64-1.txz: Upgraded. extra/fltk/fltk-1.3.9-x86_64-2.txz: Rebuilt. extra/tigervnc/tigervnc-1.13.1-x86_64-6.txz: Rebuilt. Not sure why 1.14.0 isn't compiling, but we'll rebuild this for now. testing/packages/grub-2.12-x86_64-12.txz: Upgraded. Remove 09_slackware_linux. 10_linux: don't rename Slackware ;-) This should configure the renamed kernel/initrd perfectly. Perhaps 10_linux should no longer accept initrd.gz as a valid name? For now it is accepted to avoid disrupting existing workflows. testing/packages/kernel-generic-6.10.1-x86_64-1.txz: Upgraded. testing/packages/kernel-headers-6.10.1-x86-1.txz: Upgraded. testing/packages/kernel-huge-6.10.1-x86_64-1.txz: Upgraded. testing/packages/kernel-modules-6.10.1-x86_64-1.txz: Upgraded. testing/packages/kernel-source-6.10.1-noarch-1.txz: Upgraded. testing/packages/mkinitrd-1.4.11-x86_64-35.txz: Upgraded. geninitrd: create initrd with initrd-version-name.img filename. Make compat symlinks by default. Always add LVM (I've seen it mistakenly skipped... if we can get to the bottom of that then we'll stop always adding it) Add /etc/default/geninitrd for configuration.
Diffstat (limited to 'testing/source/grub')
-rw-r--r--testing/source/grub/0001-00_header-add-GRUB_COLOR_-variables.patch41
-rw-r--r--testing/source/grub/0001-skip-new-and-orig-files-in-etc-grub.d.patch10
-rw-r--r--testing/source/grub/0003-support-dropins-for-default-configuration.patch28
-rw-r--r--testing/source/grub/0004-add-GRUB_DISABLE_KERNEL_SYMLINKS-variable.patch12
-rw-r--r--testing/source/grub/0198-align-struct-efi_variable-better.patch36
-rw-r--r--testing/source/grub/09_slackware_linux196
-rw-r--r--testing/source/grub/10_linux.osname.patch12
-rw-r--r--testing/source/grub/b835601c7639ed1890f2d3db91900a8506011a8e.patch34
-rw-r--r--testing/source/grub/doinst.sh29
-rw-r--r--testing/source/grub/etc.default.grub44
-rwxr-xr-xtesting/source/grub/grub.SlackBuild257
-rw-r--r--testing/source/grub/grub.dejavusansmono.gfxterm.font.diff41
-rw-r--r--testing/source/grub/initrd_naming.patch13
-rw-r--r--testing/source/grub/slack-desc19
-rw-r--r--testing/source/grub/update-grub10
15 files changed, 782 insertions, 0 deletions
diff --git a/testing/source/grub/0001-00_header-add-GRUB_COLOR_-variables.patch b/testing/source/grub/0001-00_header-add-GRUB_COLOR_-variables.patch
new file mode 100644
index 000000000..867e8feeb
--- /dev/null
+++ b/testing/source/grub/0001-00_header-add-GRUB_COLOR_-variables.patch
@@ -0,0 +1,41 @@
+From 21e5bcf22ab1a9f08c63e2a0212219d7482f77c1 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Wed, 10 Mar 2021 18:42:25 +0100
+Subject: [PATCH] 00_header: add GRUB_COLOR_* variables
+---
+ util/grub-mkconfig.in | 2 ++
+ util/grub.d/00_header.in | 8 ++++++++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
+index f8cbb8d7a..1189d95f9 100644
+--- a/util/grub-mkconfig.in
++++ b/util/grub-mkconfig.in
+@@ -246,6 +246,8 @@ export GRUB_DEFAULT \
+ GRUB_BACKGROUND \
+ GRUB_THEME \
+ GRUB_GFXPAYLOAD_LINUX \
++ GRUB_COLOR_NORMAL \
++ GRUB_COLOR_HIGHLIGHT \
+ GRUB_INIT_TUNE \
+ GRUB_SAVEDEFAULT \
+ GRUB_ENABLE_CRYPTODISK \
+diff --git a/util/grub.d/00_header.in b/util/grub.d/00_header.in
+index 93a90233e..c5955df00 100644
+--- a/util/grub.d/00_header.in
++++ b/util/grub.d/00_header.in
+@@ -125,6 +125,14 @@ cat <<EOF
+
+ EOF
+
++if [ x$GRUB_COLOR_NORMAL != x ] && [ x$GRUB_COLOR_HIGHLIGHT != x ] ; then
++ cat << EOF
++set menu_color_normal=$GRUB_COLOR_NORMAL
++set menu_color_highlight=$GRUB_COLOR_HIGHLIGHT
++
++EOF
++fi
++
+ serial=0;
+ gfxterm=0;
+ for x in ${GRUB_TERMINAL_INPUT} ${GRUB_TERMINAL_OUTPUT}; do
diff --git a/testing/source/grub/0001-skip-new-and-orig-files-in-etc-grub.d.patch b/testing/source/grub/0001-skip-new-and-orig-files-in-etc-grub.d.patch
new file mode 100644
index 000000000..601a05b9a
--- /dev/null
+++ b/testing/source/grub/0001-skip-new-and-orig-files-in-etc-grub.d.patch
@@ -0,0 +1,10 @@
+--- ./util/grub-mkconfig_lib.in.orig 2023-12-05 08:46:53.000000000 -0600
++++ ./util/grub-mkconfig_lib.in 2024-01-02 13:44:41.164913702 -0600
+@@ -191,6 +191,7 @@
+ case "$1" in
+ *.dpkg-*) return 1 ;; # debian dpkg
+ *.rpmsave|*.rpmnew) return 1 ;;
++ *.new|*.orig) return 1 ;; # slackware incoming or backed up config file
+ README*|*/README*) return 1 ;; # documentation
+ *.sig) return 1 ;; # signatures
+ esac
diff --git a/testing/source/grub/0003-support-dropins-for-default-configuration.patch b/testing/source/grub/0003-support-dropins-for-default-configuration.patch
new file mode 100644
index 000000000..4840487a1
--- /dev/null
+++ b/testing/source/grub/0003-support-dropins-for-default-configuration.patch
@@ -0,0 +1,28 @@
+From ac560966d09295663fa9516d8d137e0c0fd04c06 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Mon, 12 Jun 2023 07:42:01 +0200
+Subject: [PATCH 1/1] support dropins for default configuration
+
+---
+ util/grub-mkconfig.in | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
+index 1a945085c..4338dceef 100644
+--- a/util/grub-mkconfig.in
++++ b/util/grub-mkconfig.in
+@@ -160,6 +160,11 @@ fi
+ if test -f ${sysconfdir}/default/grub ; then
+ . ${sysconfdir}/default/grub
+ fi
++for dropin in ${sysconfdir}/default/grub.d/*.cfg ; do
++ if test -f "${dropin}" ; then
++ . "${dropin}"
++ fi
++done
+
+ if [ "x${GRUB_DISABLE_UUID}" = "xtrue" ]; then
+ if [ -z "${GRUB_DISABLE_LINUX_UUID}" ]; then
+--
+2.41.0
+
diff --git a/testing/source/grub/0004-add-GRUB_DISABLE_KERNEL_SYMLINKS-variable.patch b/testing/source/grub/0004-add-GRUB_DISABLE_KERNEL_SYMLINKS-variable.patch
new file mode 100644
index 000000000..d49925ae1
--- /dev/null
+++ b/testing/source/grub/0004-add-GRUB_DISABLE_KERNEL_SYMLINKS-variable.patch
@@ -0,0 +1,12 @@
+--- ./util/grub-mkconfig.in.orig 2022-11-14 09:52:54.000000000 -0600
++++ ./util/grub-mkconfig.in 2024-06-26 12:44:00.986119802 -0500
+@@ -255,7 +255,8 @@
+ GRUB_ENABLE_CRYPTODISK \
+ GRUB_BADRAM \
+ GRUB_OS_PROBER_SKIP_LIST \
+- GRUB_DISABLE_SUBMENU
++ GRUB_DISABLE_SUBMENU \
++ GRUB_DISABLE_KERNEL_SYMLINKS
+
+ if test "x${grub_cfg}" != "x"; then
+ rm -f "${grub_cfg}.new"
diff --git a/testing/source/grub/0198-align-struct-efi_variable-better.patch b/testing/source/grub/0198-align-struct-efi_variable-better.patch
new file mode 100644
index 000000000..8ce8bdc82
--- /dev/null
+++ b/testing/source/grub/0198-align-struct-efi_variable-better.patch
@@ -0,0 +1,36 @@
+From 2485633ada06c11c07a34a696a92b14e58f1e846 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones@redhat.com>
+Date: Tue, 27 Feb 2018 13:55:35 -0500
+Subject: [PATCH 198/250] align struct efi_variable better...
+
+---
+ include/grub/efiemu/runtime.h | 2 +-
+ include/grub/types.h | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/include/grub/efiemu/runtime.h b/include/grub/efiemu/runtime.h
+index 9b6b729f4cc..856774a7c34 100644
+--- a/include/grub/efiemu/runtime.h
++++ b/include/grub/efiemu/runtime.h
+@@ -33,5 +33,5 @@ struct efi_variable
+ grub_uint32_t namelen;
+ grub_uint32_t size;
+ grub_efi_uint32_t attributes;
+-} GRUB_PACKED;
++} GRUB_PACKED GRUB_ALIGNED(8);
+ #endif /* ! GRUB_EFI_EMU_RUNTIME_HEADER */
+diff --git a/include/grub/types.h b/include/grub/types.h
+index b93e4820194..f6a9723971d 100644
+--- a/include/grub/types.h
++++ b/include/grub/types.h
+@@ -29,6 +29,7 @@
+ #else
+ #define GRUB_PACKED __attribute__ ((packed))
+ #endif
++#define GRUB_ALIGNED(x) __attribute__((aligned (x)))
+
+ #ifdef GRUB_BUILD
+ # define GRUB_CPU_SIZEOF_VOID_P BUILD_SIZEOF_VOID_P
+--
+2.14.3
+
diff --git a/testing/source/grub/09_slackware_linux b/testing/source/grub/09_slackware_linux
new file mode 100644
index 000000000..b3a2499a0
--- /dev/null
+++ b/testing/source/grub/09_slackware_linux
@@ -0,0 +1,196 @@
+#! /bin/sh
+set -e
+# grub-mkconfig helper script.
+# Copyright (C) 2006,2007,2008,2009,2010 Free Software Foundation, Inc.
+#
+# GRUB is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# GRUB is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+#
+# Save this file in /etc/grub.d/09_slackware_linux
+
+prefix="/usr"
+exec_prefix="${prefix}"
+datarootdir="${prefix}/share"
+
+. "${datarootdir}/grub/grub-mkconfig_lib"
+
+export TEXTDOMAIN=grub
+export TEXTDOMAINDIR="${datarootdir}/locale"
+
+CLASS="--class gnu-linux --class gnu --class os"
+
+if [ "${GRUB_DISTRIBUTOR}" = "" ] ; then
+ OS=Linux
+else
+ OS="${GRUB_DISTRIBUTOR} Linux"
+ CLASS="--class $(echo "${GRUB_DISTRIBUTOR}" | tr '[:upper:]' '[:lower:]') ${CLASS}"
+fi
+
+# loop-AES arranges things so that /dev/loop/X can be our root device, but
+# the initrds that Linux uses don't like that.
+case ${GRUB_DEVICE} in
+ /dev/loop/*|/dev/loop[0-9])
+ GRUB_DEVICE=$(losetup "${GRUB_DEVICE}" | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/")
+ ;;
+esac
+
+if [ "${GRUB_DEVICE_UUID}" = "" ] || [ "${GRUB_DISABLE_LINUX_UUID}" = "true" ] \
+ || ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" ; then
+ LINUX_ROOT_DEVICE=${GRUB_DEVICE}
+else
+ LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
+fi
+
+linux_entry ()
+{
+ os="$1"
+ tag="$2"
+ version="$3"
+ recovery="$4"
+ args="$5"
+ if ${recovery} ; then
+ title="$(gettext "%s, with Linux %s [%s] (recovery mode)")"
+ else
+ title="$(gettext "%s, with Linux %s [%s]")"
+ fi
+ printf "menuentry \"${title}\" ${CLASS} {\n" "${os}" "${version}" "${tag}"
+ save_default_entry | sed -e "s/^/\t/"
+
+ # Use ELILO's generic "efifb" when it's known to be available.
+ # FIXME: We need an interface to select vesafb in case efifb can't be used.
+ if [ "$GRUB_GFXPAYLOAD_LINUX" = "" ]; then
+ if grep -qx "CONFIG_FB_EFI=y" /boot/config-"${version}" 2> /dev/null \
+ && grep -qx "CONFIG_VT_HW_CONSOLE_BINDING=y" /boot/config-"${version}" 2> /dev/null; then
+ cat << EOF
+ set gfxpayload=keep
+EOF
+ fi
+ else
+ cat << EOF
+ set gfxpayload=$GRUB_GFXPAYLOAD_LINUX
+EOF
+ fi
+
+ if [ -z "${prepare_boot_cache}" ]; then
+ prepare_boot_cache="$(prepare_grub_to_access_device "${GRUB_DEVICE_BOOT}" | sed -e "s/^/\t/")"
+ fi
+ printf '%s\n' "${prepare_boot_cache}"
+ cat << EOF
+ echo $(printf "$(gettext "Loading Linux %s ...")" "${version}")
+ linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
+EOF
+ if test -n "${initrd}" ; then
+ cat << EOF
+ echo $(gettext "Loading initial ramdisk ...")
+ initrd ${initrd}
+EOF
+ fi
+ cat << EOF
+}
+EOF
+}
+
+process_list() {
+ mylist="$1"
+ tag="$2"
+ initrd_allowed="$3"
+
+ # Version-sort the kernels
+ sorted_kernels=$(echo "$mylist" | tr ' ' '\n' | version_sort -r)
+
+ # Use portable command substitution
+ kernels=$(echo "$sorted_kernels" | tr ' ' '\n')
+
+ for kernel in $kernels; do
+
+ # Skip symbolic links to kernels if requested:
+ if [ -L "$kernel" -a "$GRUB_DISABLE_KERNEL_SYMLINKS" = "true" ]; then
+ continue
+ fi
+
+ printf "Found linux image: %s\n" "$kernel" >&2
+ basename=$(basename "$kernel")
+ dirname=$(dirname "$kernel")
+ rel_dirname=$(make_system_path_relative_to_its_root "$dirname")
+ version=$(echo "$basename" | sed -e "s,^[^0-9]*-,,g")
+ alt_version=$(echo "$version" | sed -e "s,\.old$,,g")
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+ initrd=
+ actual_initrd=
+
+ if [ "${initrd_allowed}" = "true" ]; then
+ for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
+ ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
+ if [ -e "${dirname}/${i}" ]; then
+ if [ -z "$initrd" ]; then
+ initrd="$rel_dirname/$i"
+ else
+ initrd="$initrd $rel_dirname/$i"
+ fi
+ fi
+ done
+ for i in "initrd-${tag}-${version}.gz" "initrd-${tag}.gz" \
+ "initrd-${version}.gz" "initrd.gz" \
+ "initrd.img-${version}" "initrd-${version}.img" \
+ "initrd-${version}" "initrd.img-${alt_version}" \
+ "initrd-${alt_version}.img" "initrd-${alt_version}"; do
+ if [ -e "${dirname}/${i}" ]; then
+ actual_initrd="true"
+ if [ -z "$initrd" ]; then
+ initrd="$rel_dirname/$i"
+ else
+ initrd="$initrd $rel_dirname/$i"
+ fi
+ break
+ fi
+ done
+
+ if [ -n "${initrd}" ]; then
+ printf "Found initrd image: %s\n" "${initrd}" >&2
+ fi
+ if [ -z "$actual_initrd" ]; then
+ # "UUID=" magic is parsed by initrds. Since there's no initrd, it can't work here.
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+ else
+ # "UUID=" magic is parsed by initrds. Since there's no initrd, it can't work here.
+ linux_root_device_thisversion=${GRUB_DEVICE}
+ fi
+
+ linux_entry "${OS}" "${tag}" "${version}" false \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
+
+ if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+ linux_entry "${OS}" "${tag}" "${version}" true \
+ "single ${GRUB_CMDLINE_LINUX}"
+ fi
+ done
+}
+
+prepare_boot_cache=
+
+list=$(for i in /boot/vmlinu[xz]-generic-* /boot/vmlinu[xz]-generic /vmlinu[xz]-generic-* ; do
+ if grub_file_is_not_garbage "$i" ; then printf "%s " "$i"; fi
+ done)
+
+process_list "${list}" "generic" "true"
+
+list=$(for i in /boot/vmlinu[xz]-custom-* /boot/vmlinu[xz]-custom /vmlinu[xz]-custom-* ; do
+ if grub_file_is_not_garbage "$i" ; then printf "%s " "$i"; fi
+ done)
+process_list "${list}" "custom" "true"
+
+list=$(for i in /boot/vmlinu[xz]-huge-* /boot/vmlinu[xz]-huge /vmlinu[xz]-huge-* ; do
+ if grub_file_is_not_garbage "$i" ; then printf "%s " "$i"; fi
+ done)
+process_list "${list}" "huge" "false"
diff --git a/testing/source/grub/10_linux.osname.patch b/testing/source/grub/10_linux.osname.patch
new file mode 100644
index 000000000..f76adee78
--- /dev/null
+++ b/testing/source/grub/10_linux.osname.patch
@@ -0,0 +1,12 @@
+--- ./util/grub.d/10_linux.in.orig 2022-12-07 07:47:11.000000000 -0600
++++ ./util/grub.d/10_linux.in 2024-07-24 14:14:09.362582694 -0500
+@@ -30,6 +30,9 @@
+
+ if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+ OS=GNU/Linux
++elif echo ${GRUB_DISTRIBUTOR} | grep -q Slackware ; then # opting out, thanks
++ OS="${GRUB_DISTRIBUTOR}"
++ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+ else
+ OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
diff --git a/testing/source/grub/b835601c7639ed1890f2d3db91900a8506011a8e.patch b/testing/source/grub/b835601c7639ed1890f2d3db91900a8506011a8e.patch
new file mode 100644
index 000000000..6670f7677
--- /dev/null
+++ b/testing/source/grub/b835601c7639ed1890f2d3db91900a8506011a8e.patch
@@ -0,0 +1,34 @@
+From b835601c7639ed1890f2d3db91900a8506011a8e Mon Sep 17 00:00:00 2001
+From: Oskari Pirhonen <xxc3ncoredxx@gmail.com>
+Date: Thu, 21 Dec 2023 01:17:35 -0600
+Subject: build: Include grub-core/extra_deps.lst in dist
+
+Fixes build failure due to the extra_deps.lst file not existing in the
+tarball. Found while trying to package GRUB 2.12 for Gentoo.
+
+ make[3]: *** No rule to make target '/var/tmp/portage/sys-boot/grub-2.12/work/grub-2.12/grub-core/extra_deps.lst', needed by 'syminfo.lst'. Stop.
+
+Fixes: 89fbe0cac (grub-core/Makefile.am: Make path to extra_deps.lst relative to $(top_srcdir)/grub-core)
+Fixes: 154dcb1ae (build: Allow explicit module dependencies)
+
+Signed-off-by: Oskari Pirhonen <xxc3ncoredxx@gmail.com>
+Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+---
+ conf/Makefile.extra-dist | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/conf/Makefile.extra-dist b/conf/Makefile.extra-dist
+index 5e7126f..d9e2b8c 100644
+--- a/conf/Makefile.extra-dist
++++ b/conf/Makefile.extra-dist
+@@ -21,6 +21,7 @@ EXTRA_DIST += conf/i386-cygwin-img-ld.sc
+ EXTRA_DIST += grub-core/Makefile.core.def
+ EXTRA_DIST += grub-core/Makefile.gcry.def
+
++EXTRA_DIST += grub-core/extra_deps.lst
+ EXTRA_DIST += grub-core/genmoddep.awk
+ EXTRA_DIST += grub-core/genmod.sh.in
+ EXTRA_DIST += grub-core/gensyminfo.sh.in
+--
+cgit v1.1
+
diff --git a/testing/source/grub/doinst.sh b/testing/source/grub/doinst.sh
new file mode 100644
index 000000000..fea6117d2
--- /dev/null
+++ b/testing/source/grub/doinst.sh
@@ -0,0 +1,29 @@
+config() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ # If there's no config file by that name, mv it over:
+ if [ ! -r $OLD ]; then
+ mv $NEW $OLD
+ elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
+ # toss the redundant copy
+ rm $NEW
+ fi
+ # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
+
+# Process config files in etc/grub.d/:
+for file in etc/grub.d/*.new ; do
+ preserve_perms $file
+done
+config etc/default/grub.new
diff --git a/testing/source/grub/etc.default.grub b/testing/source/grub/etc.default.grub
new file mode 100644
index 000000000..363eda767
--- /dev/null
+++ b/testing/source/grub/etc.default.grub
@@ -0,0 +1,44 @@
+# If you change this file, run grub-mkconfig -o /boot/grub/grub.cfg
+# afterwards to update /boot/grub/grub.cfg.
+
+GRUB_DEFAULT=0
+#GRUB_HIDDEN_TIMEOUT=0
+GRUB_HIDDEN_TIMEOUT_QUIET=false
+GRUB_TIMEOUT=10
+GRUB_DISTRIBUTOR=$( sed 's/Slackware /Slackware-/' /etc/slackware-version )
+GRUB_CMDLINE_LINUX_DEFAULT=""
+GRUB_CMDLINE_LINUX=""
+
+# 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
+#GRUB_GFXMODE=1024x768x32
+
+# Font used on the graphical terminal:
+#GRUB_FONT=/usr/share/grub/dejavusansmono.pf2
+
+# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux:
+#GRUB_DISABLE_LINUX_UUID=true
+
+# Uncomment to disable generation of recovery mode menu entries:
+GRUB_DISABLE_RECOVERY="true"
+
+# Search for other operating systems with os-prober.
+# If you don't want this, you can do any of these things to disable it:
+# - change to "true"
+# - comment it out, since disabled is the default
+# - remove the executable bit from /etc/grub.d/30_os-prober
+GRUB_DISABLE_OS_PROBER="false"
+
+# Disable the submenus:
+GRUB_DISABLE_SUBMENU="true"
+
+# When using 09_slackware_linux, this option skips making menu entries for the
+# symbolic links to kernels. Some folks don't like the extra (redundant) menu
+# entries, while others like having an unversioned menu entry that doesn't
+# require "update-grub" after installing new kernels. Your call.
+#GRUB_DISABLE_KERNEL_SYMLINKS="true"
diff --git a/testing/source/grub/grub.SlackBuild b/testing/source/grub/grub.SlackBuild
new file mode 100755
index 000000000..905b9d3a9
--- /dev/null
+++ b/testing/source/grub/grub.SlackBuild
@@ -0,0 +1,257 @@
+#!/bin/bash
+
+# Copyright 2013, 2016, 2017, 2018, 2019, 2023, 2024 Patrick J. Volkerding, Sebeka, Minnesota, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Modified 2016 by Eric Hameleers <alien@slackware.com> for Slackware Live Edition.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PKGNAM=grub
+VERSION=${VERSION:-$(echo $PKGNAM-*.tar.xz | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
+# Better to use _ than ~ in the package filenames version:
+PKGVER=$(echo $VERSION | tr '~' '_')
+BUILD=${BUILD:-12}
+
+# If you use stack-protector, then grub will not work with legacy BIOS:
+STACKPROTECT=${STACKPROTECT:---enable-stack-protector=no}
+
+# Automatically determine the architecture we're building on:
+if [ -z "$ARCH" ]; then
+ case "$(uname -m)" in
+ i?86) ARCH=i686 ;;
+ arm*) readelf /usr/bin/file -A | grep -E -q "Tag_CPU.*[4,5]" && ARCH=arm || ARCH=armv7hl ;;
+ # Unless $ARCH is already set, use uname -m for all other archs:
+ *) ARCH=$(uname -m) ;;
+ esac
+ export ARCH
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PKGNAM-$PKGVER-$ARCH-$BUILD.txz"
+ exit 0
+fi
+
+NUMJOBS=${NUMJOBS:-" -j$(expr $(nproc) + 1) "}
+
+if [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-mtune=generic"
+ EFI32_FLAGS=" --with-platform=efi --target=i386 --program-prefix= "
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-mtune=generic"
+ EFI32_FLAGS=" --with-platform=efi --target=i386 --program-prefix= "
+ EFI_FLAGS=" --with-platform=efi --target=x86_64 --program-prefix= "
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS=""
+ LIBDIRSUFFIX=""
+fi
+
+# Don't use icecream:
+PATH=$(echo $PATH | sed "s|/usr/libexec/icecc/bin||g" | tr -s : | sed "s/^://g" | sed "s/:$//g")
+
+TMP=${TMP:-/tmp}
+PKG=$TMP/package-$PKGNAM
+
+rm -rf $PKG
+mkdir -p $TMP $PKG
+
+cd $TMP
+rm -rf $PKGNAM-$VERSION
+tar xvf $CWD/$PKGNAM-$VERSION.tar.xz || exit 1
+cd $PKGNAM-$VERSION || exit 1
+
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \+
+
+# Accept /boot/initrd.gz as a valid initrd name (obsolete?):
+cat $CWD/initrd_naming.patch | patch -p1 --verbose || exit 1
+
+# Support DejaVuSansMono font (dejavusansmono.pf2) by default:
+cat $CWD/grub.dejavusansmono.gfxterm.font.diff | patch -p1 --verbose || exit 1
+
+# Fix alignment error with gcc8:
+cat $CWD/0198-align-struct-efi_variable-better.patch | patch -p1 --verbose || exit 1
+
+# Skip processing any files in /etc/grub.d/ that end in .new or .orig:
+cat $CWD/0001-skip-new-and-orig-files-in-etc-grub.d.patch | patch -p1 --verbose || exit 1
+
+# From Arch, add a couple more GRUB_COLOR options:
+cat $CWD/0001-00_header-add-GRUB_COLOR_-variables.patch | patch -p1 --verbose || exit 1
+
+# Also from Arch, support drop-in config bits in /etc/default/grub.d/:
+cat $CWD/0003-support-dropins-for-default-configuration.patch | patch -p1 --verbose || exit 1
+
+# Support GRUB_DISABLE_KERNEL_SYMLINKS variable in /etc/default/grub.
+# If this is not defined, it is assumed to be false.
+cat $CWD/0004-add-GRUB_DISABLE_KERNEL_SYMLINKS-variable.patch | patch -p1 --verbose || exit 1
+
+# Fix 2.12 release with upstream commit (won't compile otherwise):
+cat $CWD/b835601c7639ed1890f2d3db91900a8506011a8e.patch | patch -p1 --verbose || exit 1
+
+# For Slackware, opt-out of having our operating system renamed:
+cat $CWD/10_linux.osname.patch | patch -p1 --verbose || exit 1
+
+# Still won't compile. Someday they'll remember how to cut a new release.
+touch grub-core/extra_deps.lst
+
+# Regenerate build system to fix dependency on outdated automake:
+autoreconf -vif
+
+build_grub() {
+ EFI_DO="$*"
+ # Configure:
+ CFLAGS="$SLKCFLAGS" \
+ ./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --infodir=/usr/info \
+ --mandir=/usr/man \
+ --disable-werror \
+ --with-dejavufont=/usr/share/fonts/TTF/DejaVuSans.ttf \
+ $STACKPROTECT \
+ $EFI_DO || exit 1
+
+ # Build and install:
+ make clean || exit 1
+ make $NUMJOBS || make || exit 1
+ make install DESTDIR=$PKG || exit 1
+
+ # Clear $EFI_DO :
+ unset EFI_DO
+}
+
+# Build 32bit and 64bit efi targets if requested:
+if [ -n "$EFI32_FLAGS" ]; then
+ build_grub $EFI32_FLAGS || exit 1
+fi
+if [ -n "$EFI_FLAGS" ]; then
+ build_grub $EFI_FLAGS || exit 1
+fi
+# Always end with regular build:
+build_grub || exit 1
+
+## NOT USED (but we'll leave the file here for now)
+## Add custom 09_slackware_linux config. Thanks to Richard Cranium for the
+## initial version, and Daedra for making it POSIX compliant:
+#cp -a $CWD/09_slackware_linux $PKG/etc/grub.d/09_slackware_linux
+#chown root:root $PKG/etc/grub.d/09_slackware_linux
+#chmod 755 $PKG/etc/grub.d/09_slackware_linux
+
+# Preserve files in /etc/grub.d/:
+for file in $PKG/etc/grub.d/*_* ; do
+ mv ${file} ${file}.new
+done
+
+# Add an update-grub script ala Ubuntu:
+cp -a $CWD/update-grub $PKG/usr/sbin/update-grub
+chown root:root $PKG/usr/sbin/update-grub
+chmod 755 $PKG/usr/sbin/update-grub
+
+# Since every other grub command is of the form "grub-{command}", add a symlink
+# so that "grub-update" also works:
+ln -sf update-grub $PKG/usr/sbin/grub-update
+
+# Strip binaries:
+( cd $PKG
+ find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+ find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null
+)
+
+# Put bash-completion file in system directory:
+mkdir -p $PKG/usr/share/bash-completion/completions/
+mv $PKG/etc/bash_completion.d/grub \
+ $PKG/usr/share/bash-completion/completions/grub
+rmdir --parents $PKG/etc/bash_completion.d 2>/dev/null
+
+# Install default options file:
+mkdir -p $PKG/etc/default/grub.d
+cat $CWD/etc.default.grub > $PKG/etc/default/grub.new
+# Add a hint:
+echo "Files in this directory must end in .cfg to be processed." > $PKG/etc/default/grub.d/README
+
+# Create a directory for grub.cfg:
+mkdir -p $PKG/boot/grub
+
+# Add fonts, if found on the system:
+FONT_SIZE=${FONT_SIZE:-19}
+if [ -r /usr/share/fonts/TTF/unifont.ttf ]; then
+ $PKG/usr/bin/grub-mkfont -o $PKG/usr/share/grub/unifont.pf2 -abv \
+ -s $FONT_SIZE /usr/share/fonts/TTF/unifont.ttf
+fi
+if [ -r /usr/share/fonts/TTF/DejaVuSansMono.ttf ]; then
+ $PKG/usr/bin/grub-mkfont -o $PKG/usr/share/grub/dejavusansmono.pf2 -abv \
+ -s $FONT_SIZE /usr/share/fonts/TTF/DejaVuSansMono.ttf
+fi
+
+# Add a documentation directory:
+mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION
+cp -a \
+ AUTHORS BUGS COPYING* INSTALL NEWS README* THANKS TODO \
+ $PKG/usr/doc/${PKGNAM}-$VERSION
+
+# Compress and if needed symlink the man pages:
+if [ -d $PKG/usr/man ]; then
+ ( cd $PKG/usr/man
+ for manpagedir in $(find . -type d -name "man*") ; do
+ ( cd $manpagedir
+ for eachpage in $( find . -type l -maxdepth 1) ; do
+ ln -s $( readlink $eachpage ).gz $eachpage.gz
+ rm $eachpage
+ done
+ gzip -9 *.?
+ )
+ done
+ )
+fi
+
+# Compress info files, if any:
+if [ -d $PKG/usr/info ]; then
+ ( cd $PKG/usr/info
+ rm -f dir
+ gzip -9 *
+ )
+fi
+
+# If there's a ChangeLog, installing at least part of the recent history
+# is useful, but don't let it get totally out of control:
+if [ -r ChangeLog ]; then
+ DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION)
+ cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog
+ touch -r ChangeLog $DOCSDIR/ChangeLog
+fi
+
+mkdir -p $PKG/install
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $TMP/$PKGNAM-$PKGVER-$ARCH-$BUILD.txz
+
diff --git a/testing/source/grub/grub.dejavusansmono.gfxterm.font.diff b/testing/source/grub/grub.dejavusansmono.gfxterm.font.diff
new file mode 100644
index 000000000..2890f16f9
--- /dev/null
+++ b/testing/source/grub/grub.dejavusansmono.gfxterm.font.diff
@@ -0,0 +1,41 @@
+--- ./util/grub.d/00_header.in.orig 2012-05-03 18:04:39.000000000 -0500
++++ ./util/grub.d/00_header.in 2013-09-17 01:43:37.870841064 -0500
+@@ -143,7 +143,7 @@
+ EOF
+ else
+ for dir in "${pkgdatadir}" "`echo '/@bootdirname@/@grubdirname@' | sed "s,//*,/,g"`" /usr/share/grub ; do
+- for basename in unicode unifont ascii; do
++ for basename in unicode unifont dejavusansmono ascii; do
+ path="${dir}/${basename}.pf2"
+ if is_path_readable_by_grub "${path}" > /dev/null ; then
+ font_path="${path}"
+@@ -156,7 +156,7 @@
+ if [ -n "${font_path}" ] ; then
+ cat << EOF
+ if [ x\$feature_default_font_path = xy ] ; then
+- font=unicode
++ font=dejavusansmono
+ else
+ EOF
+ # Make the font accessible
+@@ -169,7 +169,7 @@
+ EOF
+ else
+ cat << EOF
+-if loadfont unicode ; then
++if loadfont dejavusansmono ; then
+ EOF
+ fi
+ fi
+diff -Naur grub-2.02~beta2.orig/util/grub-install.c grub-2.02~beta2/util/grub-install.c
+--- grub-2.02~beta2.orig/util/grub-install.c 2013-12-24 08:40:31.000000000 -0800
++++ grub-2.02~beta2/util/grub-install.c.new 2015-01-27 22:07:56.714000000 -0800
+@@ -827,7 +827,7 @@
+ grub_util_host_init (&argc, &argv);
+ product_version = xstrdup (PACKAGE_VERSION);
+ pkgdatadir = grub_util_get_pkgdatadir ();
+- label_font = grub_util_path_concat (2, pkgdatadir, "unicode.pf2");
++ label_font = grub_util_path_concat (2, pkgdatadir, "dejavusansmono.pf2");
+
+ argp_parse (&argp, argc, argv, 0, 0, 0);
+
diff --git a/testing/source/grub/initrd_naming.patch b/testing/source/grub/initrd_naming.patch
new file mode 100644
index 000000000..6b62778b0
--- /dev/null
+++ b/testing/source/grub/initrd_naming.patch
@@ -0,0 +1,13 @@
+diff -Naur grub-2.00.orig/util/grub.d/10_linux.in grub-2.00/util/grub.d/10_linux.in
+--- grub-2.00.orig/util/grub.d/10_linux.in 2012-04-18 23:24:38.000000000 +0200
++++ grub-2.00/util/grub.d/10_linux.in 2012-06-30 07:53:03.765625589 +0200
+@@ -198,7 +198,8 @@
+ "initramfs-genkernel-${version}" \
+ "initramfs-genkernel-${alt_version}" \
+ "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
+- "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
++ "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}" \
++ "initrd.gz"; do
+ if test -e "${dirname}/${i}" ; then
+ initrd="$i"
+ break
diff --git a/testing/source/grub/slack-desc b/testing/source/grub/slack-desc
new file mode 100644
index 000000000..b07c8a3b2
--- /dev/null
+++ b/testing/source/grub/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+grub: grub (the GRand Unified Bootloader)
+grub:
+grub: GNU GRUB, the GRand Unified Bootloader, is a flexible and powerful
+grub: boot loader program for a wide range of architectures.
+grub:
+grub: Homepage: https://www.gnu.org/software/grub/
+grub:
+grub:
+grub:
+grub:
+grub:
diff --git a/testing/source/grub/update-grub b/testing/source/grub/update-grub
new file mode 100644
index 000000000..fef55d9b8
--- /dev/null
+++ b/testing/source/grub/update-grub
@@ -0,0 +1,10 @@
+#!/bin/sh
+# This is a simple script to update grub from the configuration file.
+# Please note that after upgrading to a new grub version, you should
+# first use "grub-install" to reinstall the bootloader, similar to this:
+# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB --recheck
+# or this:
+# grub-install --target=i386-pc --recheck /dev/sdX
+
+set -e
+exec grub-mkconfig -o /boot/grub/grub.cfg "$@"