aboutsummaryrefslogtreecommitdiff
path: root/extra/grub/build
diff options
context:
space:
mode:
Diffstat (limited to 'extra/grub/build')
-rwxr-xr-xextra/grub/build55
1 files changed, 55 insertions, 0 deletions
diff --git a/extra/grub/build b/extra/grub/build
new file mode 100755
index 00000000..10513bf0
--- /dev/null
+++ b/extra/grub/build
@@ -0,0 +1,55 @@
+#!/bin/sh -e
+
+# Grub expects Python but it isn't actually needed. Give
+# it something fake so that configure passes.
+export PYTHON=/bin/true
+
+# Disable the post-python mv calls as a means of disabling
+# the Python tooling. The /bin/true above will create a
+# blank file, this prevents the blank file from overwriting
+# the existing one.
+sed 's/mv $@.new $@/:/g' grub/Makefile.in > _
+cat _ > grub/Makefile.in; rm -f _
+
+# Strip '-march' from 'CFLAGS' as per advice from upstream.
+# Fixes build fails on specific hardware.
+CFLAGS=$(printf %s "$CFLAGS" | sed 's/-march=[^ ]*//g')
+
+# Grub is built in a function so the script argument
+# needs to be stored.
+pkg_dir=$1
+
+build_grub() (
+ cp -a grub "grub-${1##*=}"
+ cd "grub-${1##*=}"
+
+ ./configure \
+ --prefix=/usr \
+ --sbindir=/usr/bin \
+ --sysconfdir=/etc \
+ --disable-werror \
+ --disable-nls \
+ --disable-grub-mkfont \
+ --disable-grub-mount \
+ "$@"
+
+ make
+ make DESTDIR="$pkg_dir" install
+)
+
+build_grub --with-platform=pc
+build_grub --with-platform=efi --disable-efiemu
+
+# Install /etc/default/grub (used by grub-mkconfig).
+install -Dm0644 grub.default "$1/etc/default/grub"
+
+# Remove gdb debugging files.
+(
+ cd "$pkg_dir/usr/lib"
+
+ rm -f grub/*/*.module
+ rm -f grub/*/*.image
+ rm -f grub/*/kernel.exec
+ rm -f grub/*/gdb_grub
+ rm -f grub/*/gmodule.pl
+)