]> git.ipfire.org Git - people/ms/ipfire-3.x.git/commitdiff
grub: Enable support for x86_64. Also EFI.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 4 Mar 2012 19:24:45 +0000 (20:24 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 4 Mar 2012 19:24:45 +0000 (20:24 +0100)
grub/grub.nm

index cea1a68bdb96a87a22e22e85337785a2a038ae08..feb62bad781aa039e98be67d0c5be90b888f6360 100644 (file)
@@ -5,8 +5,8 @@
 
 name       = grub
 version    = 1.99
-release    = 3
-sup_arches = i686
+release    = 4
+sup_arches = x86_64 i686
 
 groups     = System/Boot
 url        = http://www.gnu.org/software/grub/
@@ -14,9 +14,9 @@ license    = GPLv2+
 summary    = Grand Unified Boot Loader.
 
 description
-       GRUB (Grand Unified Boot Loader) is an experimental boot loader \
-       capable of booting into most free operating systems - Linux, FreeBSD, \
-       NetBSD, GNU Mach, and others as well as most commercial operating \
+       GRUB (Grand Unified Boot Loader) is an experimental boot loader
+       capable of booting into most free operating systems - Linux, FreeBSD,
+       NetBSD, GNU Mach, and others as well as most commercial operating
        systems.
 end
 
@@ -25,27 +25,71 @@ source_dl  = http://ftp.gnu.org/gnu/grub/
 build
        requires
                autoconf
+               autogen
                automake
                bison
                flex
                freetype-devel
                gettext
+               libdevmapper-devel
                ncurses-devel
                zlib-devel
        end
 
        # Can only use very basic CFLAGS.
-       export CFLAGS = -O2 -pipe
+       export CFLAGS = -Os -pipe
        export CXXFLAGS = %{CFLAGS}
 
+       prepare_cmds
+               # Replace pkglib_DATA (automake 1.11.2 incompatibility)
+               sed -i -e "s/pkglib_DATA/pkgdata_DATA/g" \
+                       -e "s/pkglib_SCRIPTS/pkgdata_SCRIPTS/g" \
+                       Makefile.am conf/Makefile.common \
+                       gentpl.py util/grub-*.in
+
+               ./autogen.sh
+
+               # Create a copy of the source tree to build
+               # an EFI enabled version of grub.
+               cp -R . %{DIR_SRC}/%{thisapp}-efi
+       end
+
        configure_options += \
-               --sysconfdir=/etc \
                --sbindir=/sbin \
                --with-platform=pc
 
-       install
+       build_cmds
+               cd ../%{thisapp}-efi
+               #./autogen.sh
+               ./configure %{configure_options} \
+                       --with-platform=efi \
+                       --program-transform-name=s,grub,grub-efi,
+               make %{PARALLELISMFLAGS}
+
+               ./grub-mkimage \
+                       -O i386-efi \
+                       -p /EFI/%{DISTRO_SNAME}/grub-efi \
+                       -o grub.efi \
+                       -d grub-core part_gpt hfsplus fat ext2 btrfs normal chain \
+                       boot configfile linux appleldr minicmd loadbios reboot halt \
+                       search font gfxterm echo video efi_gop efi_uga
+       end
+
+       install_cmds
+               cd ../%{thisapp}-efi
                make install DESTDIR=%{BUILDROOT}
 
+               mv -v %{BUILDROOT}/etc/bash_completion.d/grub{,-efi}
+               mv -v %{BUILDROOT}/usr/lib/grub{,-efi}
+               sed -e "s,grub/grub-mkconfig_lib,grub-efi/grub-mkconfig_lib," \
+                       -i %{BUILDROOT}/sbin/grub-efi-mkconfig
+
+               install -m 755 -d %{BUILDROOT}/boot/efi/EFI/%{DISTRO_SNAME}/
+               install -d %{BUILDROOT}/boot/efi/EFI/%{DISTRO_SNAME}/grub-efi
+               touch %{BUILDROOT}/boot/efi/EFI/%{DISTRO_SNAME}/grub-efi/grub.cfg
+               ln -svf ../boot/efi/EFI/%{DISTRO_SNAME}/grub-efi/grub.cfg %{BUILDROOT}/etc/grub-efi.cfg
+               install -m 755 grub.efi %{BUILDROOT}/boot/efi/EFI/%{DISTRO_SNAME}/grub-efi/grub.efi
+
                # Install theme file
                install -m 0744 %{DIR_SOURCE}/05_theme %{BUILDROOT}/etc/grub.d/
 
@@ -81,7 +125,30 @@ packages
                # This only converts Latin-1, Latin Extended A+B, Arrows, Box and Block characters
                script postin
                        /usr/bin/grub-mkfont --output /boot/grub/unifont.pf2 \
-                               --range=0x0000-0x0241,0x2190-0x21FF,0x2500-0x259f /usr/share/X11/fonts/misc/unifont.pcf.gz
+                               --range=0x0000-0x0241,0x2190-0x21FF,0x2500-0x259f \
+                               /usr/share/X11/fonts/misc/unifont.pcf.gz
+               end
+       end
+
+       package %{name}-efi
+               description
+                       EFI version of GRUB, the Grand Unified Boot Loader.
+               end
+               summary = %{description}
+
+               requires += grub = %{thisver}
+
+               configfiles
+                       /boot/efi/EFI/%{DISTRO_SNAME}/grub-efi/grub.cfg
+               end
+
+               files
+                       /boot/efi
+                       /etc/bash_completion.d/grub-efi
+                       /etc/grub-efi.cfg
+                       /sbin/grub-efi-*
+                       /usr/bin/grub-efi-*
+                       /usr/lib/grub-efi
                end
        end