summaryrefslogtreecommitdiff
path: root/user/grub
diff options
context:
space:
mode:
Diffstat (limited to 'user/grub')
-rw-r--r--user/grub/APKBUILD19
-rw-r--r--user/grub/default-grub9
-rw-r--r--user/grub/grub.post-upgrade38
-rw-r--r--user/grub/grub.trigger2
-rw-r--r--user/grub/quirk-01_radeon_agpmode28
-rw-r--r--user/grub/update-grub16
6 files changed, 110 insertions, 2 deletions
diff --git a/user/grub/APKBUILD b/user/grub/APKBUILD
index 9d6ada6fd..d571310e7 100644
--- a/user/grub/APKBUILD
+++ b/user/grub/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=grub
pkgver=2.02
-pkgrel=7
+pkgrel=8
pkgdesc="Bootloader with support for Linux, Multiboot and more"
url="https://www.gnu.org/software/grub/"
arch="all !s390x"
@@ -12,6 +12,8 @@ license="GPL-3.0+"
depends=""
makedepends="bison flex freetype-dev linux-headers lvm2-dev python3 xz unifont
automake autoconf libtool"
+# [22:02] <@awilfox> [[sroracle]]: grub breaks without its locale files present
+# [22:02] <@awilfox> it cannot be split
subpackages="$pkgname-dev $pkgname-doc"
# currently grub only builds on x86*, aarch64 and ppc* systems
@@ -27,6 +29,9 @@ for f in $flavors; do
subpackages="$subpackages $pkgname-$f"
done
+install="$pkgname.post-upgrade"
+triggers="$pkgname.trigger=/boot"
+
source="https://ftp.gnu.org/gnu/grub/grub-$pkgver.tar.xz
fix-gcc-no-pie-specs.patch
grub2-accept-empty-module.patch
@@ -34,6 +39,8 @@ source="https://ftp.gnu.org/gnu/grub/grub-$pkgver.tar.xz
the-arch-everyone-uses-and-nobody-loves.patch
x86_64_asm.patch
default-grub
+ update-grub
+ quirk-01_radeon_agpmode
"
prepare() {
@@ -119,8 +126,14 @@ package() {
rm -f "$pkgdir"/usr/lib/charset.alias
install -D -m644 "$srcdir"/default-grub "$pkgdir"/etc/default/grub
+ install -D -m755 "$srcdir"/update-grub "$pkgdir"/usr/sbin
# remove grub-install warning of missing directory
mkdir -p "$pkgdir"/usr/share/locale
+
+ for i in "$srcdir"/quirk-*; do
+ install -Dm755 "$i" \
+ "$pkgdir"/etc/grub-quirks.d/"${i##"$srcdir"/quirk-}"
+ done
}
bios() {
@@ -163,4 +176,6 @@ f2a7d9ab6c445f4e402e790db56378cecd6631b5c367451aa6ce5c01cd95b95c83c3dd24d6d4b857
4e7394e0fff6772c89683039ccf81099ebbfe4f498e6df408977a1488fd59389b6e19afdbf0860ec271e2b2aea0df7216243dcc8235d1ca3af0e7f4d0a9d60a4 grub-xen-host_grub.cfg
088455205f2f397d60e43eab19ed73994880ea1f442661f7975846cceaf2b112d92fd1341119d7dbfad3af2174dfd4d4721f31dead1ac35f4a3cb7c0d92f8a04 the-arch-everyone-uses-and-nobody-loves.patch
8752b5e689ec3b7e1f438c7207adc517d7acb4f7d15fda2907bc9177883a686f23994c66641bfc0c7620365415972b5d8b74f511c13dd234f5f3461dda4bb445 x86_64_asm.patch
-048d061ac0aab0106f59a3d257739ff5de6c7dc08a4dc9b8b12e9bd2b1ec11f9bc6214013f3d1083b11c3ce41185fcbb5615beb2f290380abf392bb4c3f0d509 default-grub"
+1e6ae4a3884829864dbd789d3c3a0d43a5aa5f279c3ebb25f71775686e9236bc1c6295e5064ad32b384635987ee0814df95e9ca33bc57bc8e0aeb47bec34270e default-grub
+0907a810e9ba5be92d10dae38403d1e50fb9b324799df36d2241ff59f545dace37a65f2b1c8f07367220da4fd341d8f21dd9a4fab8da6c87ae52d7ffbca3dbd7 update-grub
+78b7ec141a364994c7de181e47fedca820add9960c56c7adf4c14ee11d5249a0887fd788ecd5d24b9bdd102b7c40395181e2f7c3fe5ab795dd7c0057ba1115c5 quirk-01_radeon_agpmode"
diff --git a/user/grub/default-grub b/user/grub/default-grub
index 18fc2317d..3fb754c7e 100644
--- a/user/grub/default-grub
+++ b/user/grub/default-grub
@@ -6,3 +6,12 @@ GRUB_DEFAULT="Adélie"
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Adélie"
GRUB_CMDLINE_LINUX_DEFAULT="ro"
+
+# Uncomment the following line if you do *not* want /boot/grub/grub.cfg to be
+# automatically regenerated when easy-kernel is upgraded.
+#ADELIE_MANUAL_CONFIG=1
+
+for i in /etc/grub-quirks.d/[0-9][0-9]*; do
+ [ -x "$i" ] || continue
+ . "$i"
+done
diff --git a/user/grub/grub.post-upgrade b/user/grub/grub.post-upgrade
new file mode 100644
index 000000000..5b9cbb072
--- /dev/null
+++ b/user/grub/grub.post-upgrade
@@ -0,0 +1,38 @@
+#!/bin/sh -e
+ver_new="$1"
+ver_old="$2"
+
+if [ "$(apk version -t "$ver_old" "2.02-r8")" = "<" ]; then
+ cat >&2 <<-EOF
+ *
+ * Starting with grub=2.02-r8, /boot/grub/grub.cfg is now automatically
+ * regenerated when easy-kernel is upgraded.
+ *
+ EOF
+ if ! grep -Fqx '# DO NOT EDIT THIS FILE' /boot/grub/grub.cfg; then
+ cat >&2 <<-EOF
+ * It appears that you have a manual GRUB configuration.
+ * If this is incorrect, comment out ADELIE_MANUAL_CONFIG
+ * in /etc/default/grub. When this option is set, /boot/grub/grub.cfg
+ * will *not* be automatically regenerated.
+ *
+ EOF
+
+ cat >> /etc/default/grub <<-EOF
+ # Uncomment the following line if you do *not* want /boot/grub/grub.cfg to be
+ # automatically regenerated when easy-kernel is upgraded.
+ ADELIE_MANUAL_CONFIG=1
+ EOF
+ else
+ cat >&2 <<-EOF
+ * It appears that you have a default GRUB configuration.
+ * If this is incorrect, uncomment ADELIE_MANUAL_CONFIG=1
+ * in /etc/default/grub. When this option is set, /boot/grub/grub.cfg
+ * will *not* be automatically regenerated.
+ *
+ * A copy of the existing configuration will be saved as
+ * /boot/grub/grub.cfg.update-grub-old.
+ *
+ EOF
+ fi
+fi
diff --git a/user/grub/grub.trigger b/user/grub/grub.trigger
new file mode 100644
index 000000000..eba13a458
--- /dev/null
+++ b/user/grub/grub.trigger
@@ -0,0 +1,2 @@
+#!/bin/sh -e
+exec update-grub
diff --git a/user/grub/quirk-01_radeon_agpmode b/user/grub/quirk-01_radeon_agpmode
new file mode 100644
index 000000000..879f1619e
--- /dev/null
+++ b/user/grub/quirk-01_radeon_agpmode
@@ -0,0 +1,28 @@
+#!/bin/sh
+# vi: noet:
+# Horst Burkhardt <horst@adelielinux.org> 2018
+# Max Rees <maxcrees@me.com> 2019
+#
+# AGP acceleration in the Radeon KMS driver has been broken on Apple PPC
+# since the 2.6 series, and most developers are in agreement that since
+# UniNorth is underdocumented, it probably won't ever be fixed. Disable
+# it on all Apple machines except ones where it is known not to apply.
+#
+# https://bts.adelielinux.org/show_bug.cgi?id=49
+set -e
+
+case "$(uname -m)" in
+ppc|ppc64)
+ if grep -q 'MacRISC[23]' /proc/cpuinfo; then
+ case "$(awk '$1 == "machine" { print $3 }' /proc/cpuinfo)" in
+ PowerBook1,1) ;;
+ PowerMac1,1) ;;
+ PowerMac1,2) ;;
+ PowerMac11,2) ;;
+ PowerMac12,1) ;;
+ RackMac3,1) ;;
+ iMac,1) ;;
+ *) export GRUB_CMDLINE_LINUX="radeon.agpmode=-1 $GRUB_CMDLINE_LINUX";;
+ esac
+ fi;;
+esac
diff --git a/user/grub/update-grub b/user/grub/update-grub
new file mode 100644
index 000000000..d22930bd7
--- /dev/null
+++ b/user/grub/update-grub
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+. /etc/default/grub
+if [ "$ADELIE_MANUAL_CONFIG" = 1 ]; then
+ cat >&2 <<-EOF
+ *
+ * You have specified that you are using a manual GRUB configuration.
+ * You must update it yourself.
+ *
+ EOF
+ exit 0
+fi
+
+if [ -e /boot/grub/grub.cfg ]; then
+ cp -p /boot/grub/grub.cfg /boot/grub/grub.cfg.update-grub-old
+fi
+exec grub-mkconfig -o /boot/grub/grub.cfg