[packages/grub2] EFI support added
jajcus
jajcus at pld-linux.org
Sat Oct 27 20:07:54 CEST 2012
commit 1536aaf2ef81965c6f99c0dcf508a3629451e402
Author: Jacek Konieczny <jajcus at jajcus.net>
Date: Sat Oct 27 20:03:28 2012 +0200
EFI support added
BIOS is going to die…
- grub-install.in.patch patch dropped:
– no need for all this files on the /boot partition whenever the grub
package is installed
- /boot is populated by 'grub-install' as neccessary
– we need separate directories for separate platforms
– multiple platforms may be built from the spec at once
– 'pc' and 'efi' subpackages added, each for one platform
grub-install.in.patch | 39 ----------
grub2.spec | 198 ++++++++++++++++++++++++++++++++++----------------
pld-mkconfigdir.patch | 2 +-
3 files changed, 136 insertions(+), 103 deletions(-)
---
diff --git a/grub2.spec b/grub2.spec
index 740b681..9ece453 100644
--- a/grub2.spec
+++ b/grub2.spec
@@ -1,7 +1,4 @@
# TODO
-# - grub-install: source_dir doesn't exist. Please specify --target or --directory
-# - multiple targets. This functionality is reaped by our patches,
-# but is needed e.g. for reasonable EFI support
# - reap out which in probe scripts and drop R: which
# - subpackages? e.g. modules and utils
# - check where is that locale path: /boot/grub/locale and fix it or change it
@@ -10,6 +7,9 @@
# - to build and install the `grub-emu' debugging utility we need to re-run build with --target=emu
# - put grub-emu to subpackage if it is fixed
# - warning: Installed (but unpackaged) file(s) found:
+# /sbin/grub-sparc64-setup
+# /usr/share/man/man8/grub-sparc64-setup.8.gz
+
# /boot/grub/config.h
# /etc/bash_completion.d/grub
# /sbin/grub-sparc64-setup
@@ -18,8 +18,10 @@
# /sbin/grub-sparc64-setup
#
# Conditional build:
-%bcond_with grubemu # build grub-emu debugging utility
+%bcond_with grubemu # build grub-emu debugging utility
%bcond_without efiemu # build efiemu runtimes
+%bcond_without pc # do not build for PC BIOS platform
+%bcond_without efi # do not build for EFI platform
%if "%{cc_version}" < "3.4"
# cc does not support:
@@ -32,6 +34,16 @@
%undefine with_efiemu
%endif
+%ifarch %{ix86}
+%define target_cpu i386
+%endif
+%ifarch %{x8664}
+%define target_cpu x86_64
+%endif
+
+# the 'most natural' platform should go last
+%define platforms %{?with_efi:efi} %{?with_pc:pc}
+
Summary: GRand Unified Bootloader
Summary(de.UTF-8): GRUB2 - ein Bootloader für x86 und ppc
Summary(hu.UTF-8): GRUB2 - rendszerbetöltő x86 és ppc gépekhez
@@ -53,14 +65,13 @@ Patch0: pld-initrd.patch
Patch1: pld-sysconfdir.patch
Patch2: grub-garbage.patch
Patch3: grub-shelllib.patch
-Patch4: grub-install.in.patch
-Patch5: grub-lvmdevice.patch
-Patch6: pld-mkconfigdir.patch
-Patch7: grub-mkconfig-diagnostics.patch
-Patch8: ppc.patch
-Patch9: %{name}-awk.patch
-Patch10: posix.patch
-Patch11: %{name}-gets.patch
+Patch4: grub-lvmdevice.patch
+Patch5: pld-mkconfigdir.patch
+Patch6: grub-mkconfig-diagnostics.patch
+Patch7: ppc.patch
+Patch8: %{name}-awk.patch
+Patch9: posix.patch
+Patch10: %{name}-gets.patch
BuildRequires: autoconf >= 2.53
BuildRequires: automake >= 1:1.11.1-1
BuildRequires: bison
@@ -89,13 +100,16 @@ Suggests: cdrkit-mkisofs
Suggests: os-prober
Provides: bootloader
Conflicts: grub
+Suggests: %{name}-pc
+Suggests: %{name}-efi
ExclusiveArch: %{ix86} %{x8664} ppc sparc64
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _sbindir /sbin
%define _bindir %{_sbindir}
-%define _libdir /boot
+%define _libdir /lib
%define _libexecdir %{_libdir}/grub
+%define _grubdir /boot/grub
%description
GRUB is a GPLed bootloader intended to unify bootloading across x86
@@ -196,6 +210,22 @@ This package provides bash-completion for GRUB.
%description -n bash-completion-%{name} -l pl.UTF-8
Pakiet ten dostarcza bashowe uzupełnianie nazw dla GRUB.
+%package pc
+Summary: PC BIOS platform support for GRUB
+Group: Base
+Requires: %{name} = %{version}-%{release}
+
+%description pc
+PC BIOS platform support for GRUB.
+
+%package efi
+Summary: (U)EFI platform support for GRUB
+Group: Base
+Requires: %{name} = %{version}-%{release}
+
+%description efi
+(U)EFI platform support for GRUB.
+
%package mkfont
Summary: GRUB font files converter
Group: Base
@@ -216,7 +246,6 @@ Converts common font file formats into PF2.
%patch8 -p1
%patch9 -p1
%patch10 -p1
-%patch11 -p1
%if "%{cc_version}" < "3.4"
grep -rl -- -Wno-missing-field-initializers . | xargs %{__sed} -i -e 's,-Wno-missing-field-initializers,,'
@@ -237,27 +266,38 @@ echo timestamp > stamp-h.in
%{__autoconf}
export CFLAGS="%{rpmcflags} -Os %{?debug:-g}"
-# mawk stalls at ./genmoddep.awk, so force gawk
-AWK=gawk \
-%configure \
- --disable-werror \
-%if %{with grubemu}
- --enable-grub-emu-usb \
- --enable-grub-emu-sdl \
- --enable-grub-emu-pci \
-%endif
- --%{!?with_efiemu:dis}%{?with_efiemu:en}able-efiemu \
- TARGET_LDFLAGS=-static
-
-%{__make}
+for platform in %{platforms} ; do
+ install -d build-%{target_cpu}-${platform}
+ cd build-%{target_cpu}-${platform}
+ ln -s ../configure .
+ # mawk stalls at ./genmoddep.awk, so force gawk
+ AWK=gawk \
+ %configure \
+ --with-platform=${platform} \
+ --disable-werror \
+ %if %{with grubemu}
+ --enable-grub-emu-usb \
+ --enable-grub-emu-sdl \
+ --enable-grub-emu-pci \
+ %endif
+ --%{!?with_efiemu:dis}%{?with_efiemu:en}able-efiemu \
+ TARGET_LDFLAGS=-static
+
+ %{__make}
+ cd ..
+done
%install
rm -rf $RPM_BUILD_ROOT
-%{__make} install \
- pkgdatadir=%{_libexecdir} \
- pkglibdir=%{_libexecdir} \
- DESTDIR=$RPM_BUILD_ROOT
+for platform in %{platforms} ; do
+ cd build-%{target_cpu}-${platform}
+ %{__make} install \
+ pkgdatadir=%{_libexecdir} \
+ pkglibdir=%{_libexecdir} \
+ DESTDIR=$RPM_BUILD_ROOT
+ cd ..
+done
# not in Th (?)
%{__rm} -r $RPM_BUILD_ROOT%{_localedir}/de at hebrew
@@ -268,9 +308,11 @@ rm -rf $RPM_BUILD_ROOT
# this must be after 'make install'
install -d $RPM_BUILD_ROOT%{_libexecdir}/locale
-cp -p docs/grub.cfg $RPM_BUILD_ROOT%{_libexecdir}
+install -d $RPM_BUILD_ROOT%{_grubdir}
+cp -p docs/grub.cfg $RPM_BUILD_ROOT%{_grubdir}
+
# grub.d/41_custom
-cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_libexecdir}/custom.cfg
+cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_grubdir}/custom.cfg
%{__rm} $RPM_BUILD_ROOT/lib/grub.d/40_custom
install -p %{SOURCE1} $RPM_BUILD_ROOT%{_sbindir}/update-grub
@@ -283,12 +325,12 @@ cp -p %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/grub
rm -f $RPM_BUILD_ROOT%{_infodir}/dir
# core.img - bootable image generated by grub-mkimage(1) via grub-install(1)
-touch $RPM_BUILD_ROOT%{_libexecdir}/core.img
-touch $RPM_BUILD_ROOT%{_libexecdir}/device.map
+touch $RPM_BUILD_ROOT%{_grubdir}/core.img
+touch $RPM_BUILD_ROOT%{_grubdir}/device.map
# needs to be exactly 1KiB
# but we're ghosting it. so whom are we kidding here? :P (maybe %config it in future?)
-dd bs=1024 if=/dev/zero count=1 of=$RPM_BUILD_ROOT%{_libexecdir}/grubenv
+dd bs=1024 if=/dev/zero count=1 of=$RPM_BUILD_ROOT%{_grubdir}/grubenv
%clean
rm -rf $RPM_BUILD_ROOT
@@ -311,8 +353,8 @@ echo "Grub was upgraded, trying to setup it to boot sector"
%triggerpostun -- %{name} < 1.99-7.3
# migrate /etc/grub.d/custom.cfg.rpmsave -> /boot/grub/custom.cfg
if [ -f %{_sysconfdir}/grub.d/custom.cfg.rpmsave ]; then
- cp -f %{_libexecdir}/custom.cfg{,.rpmnew}
- mv -f %{_sysconfdir}/grub.d/custom.cfg.rpmsave %{_libexecdir}/custom.cfg
+ cp -f %{_grubdir}/custom.cfg{,.rpmnew}
+ mv -f %{_sysconfdir}/grub.d/custom.cfg.rpmsave %{_grubdir}/custom.cfg
fi
%files -f grub.lang
@@ -370,37 +412,18 @@ fi
%endif
/lib/grub-mkconfig_lib
+%dir %{_grubdir}
%dir %{_libexecdir}
# XXX: check this locale dir location and if it is neccesaary to exist on /boot
%dir %{_libexecdir}/locale
-%config(noreplace) %verify(not md5 mtime size) %{_libexecdir}/grub.cfg
-%config(noreplace) %verify(not md5 mtime size) %{_libexecdir}/custom.cfg
-%{_libexecdir}/modinfo.sh
-%{_libexecdir}/*.exec
-%{_libexecdir}/*.image
-%{_libexecdir}/*.lst
-%{_libexecdir}/*.mod
-%{_libexecdir}/*.module
-%{_libexecdir}/lzma_decompress.img
-%if %{with efiemu}
-%ifarch %{x8664}
-%{_libexecdir}/efiemu*.o
-%endif
-%endif
-%{_libexecdir}/kernel.img
-%ifarch %{ix86} %{x8664} sparc sparc64
-%{_libexecdir}/boot.img
-%{_libexecdir}/cdboot.img
-%{_libexecdir}/diskboot.img
-%{_libexecdir}/lnxboot.img
-%{_libexecdir}/pxeboot.img
-%endif
+%config(noreplace) %verify(not md5 mtime size) %{_grubdir}/grub.cfg
+%config(noreplace) %verify(not md5 mtime size) %{_grubdir}/custom.cfg
# generated by grub at runtime
-%ghost %{_libexecdir}/device.map
-%ghost %{_libexecdir}/core.img
-%ghost %{_libexecdir}/grubenv
+%ghost %{_grubdir}/device.map
+%ghost %{_grubdir}/core.img
+%ghost %{_grubdir}/grubenv
%dir /lib/grub.d
%doc /lib/grub.d/README
@@ -417,6 +440,55 @@ fi
%{_infodir}/grub*.info*
+%if %{with pc}
+%files pc
+%defattr(644,root,root,755)
+%dir %{_libexecdir}/*-pc
+%{_libexecdir}/*-pc/modinfo.sh
+%{_libexecdir}/*-pc/*.exec
+%{_libexecdir}/*-pc/*.image
+%{_libexecdir}/*-pc/*.lst
+%{_libexecdir}/*-pc/*.mod
+%{_libexecdir}/*-pc/*.module
+%{_libexecdir}/*-pc/lzma_decompress.img
+%{_libexecdir}/*-pc/config.h
+%{_libexecdir}/*-pc/gdb_grub
+%{_libexecdir}/*-pc/gmodule.pl
+%if %{with efiemu}
+%ifarch %{x8664}
+%{_libexecdir}/*-pc/efiemu*.o
+%endif
+%endif
+%{_libexecdir}/*-pc/kernel.img
+%ifarch %{ix86} %{x8664} sparc sparc64
+%{_libexecdir}/*-pc/boot.img
+%{_libexecdir}/*-pc/cdboot.img
+%{_libexecdir}/*-pc/diskboot.img
+%{_libexecdir}/*-pc/lnxboot.img
+%{_libexecdir}/*-pc/pxeboot.img
+%endif
+%endif
+
+%if %{with efi}
+%files efi
+%defattr(644,root,root,755)
+%dir %{_libexecdir}/*-efi
+%{_libexecdir}/*-efi/modinfo.sh
+%{_libexecdir}/*-efi/*.exec
+%{_libexecdir}/*-efi/*.lst
+%{_libexecdir}/*-efi/*.mod
+%{_libexecdir}/*-efi/*.module
+%{_libexecdir}/*-efi/config.h
+%{_libexecdir}/*-efi/gdb_grub
+%{_libexecdir}/*-efi/gmodule.pl
+%if %{with efiemu}
+%ifarch %{x8664}
+%{_libexecdir}/*-efi/efiemu*.o
+%endif
+%endif
+%{_libexecdir}/*-efi/kernel.img
+%endif
+
%files mkfont
%defattr(644,root,root,755)
%{_mandir}/man1/grub-mkfont.1*
diff --git a/grub-install.in.patch b/grub-install.in.patch
deleted file mode 100644
index 5a03a0e..0000000
--- a/grub-install.in.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-diff -dur grub-2.00.orig/conf/Makefile.common grub-2.00/conf/Makefile.common
---- grub-2.00.orig/conf/Makefile.common 2012-05-27 18:16:05.000000000 +0200
-+++ grub-2.00/conf/Makefile.common 2012-10-27 15:00:48.537431538 +0200
-@@ -99,7 +99,7 @@
- # Other variables
-
- grubconfdir = $(sysconfdir)/grub.d
--platformdir = $(pkglibdir)/$(target_cpu)-$(platform)
-+platformdir = $(pkglibdir)
- starfielddir = $(pkgdatadir)/themes/starfield
-
- CFLAGS_GCRY = -Wno-error -Wno-missing-field-initializers
-diff -dur grub-2.00.orig/util/grub-install.in grub-2.00/util/grub-install.in
---- grub-2.00.orig/util/grub-install.in 2012-06-26 23:31:03.000000000 +0200
-+++ grub-2.00/util/grub-install.in 2012-10-27 15:03:21.133028965 +0200
-@@ -522,23 +522,6 @@
- device_map=
- fi
-
--# Copy the GRUB images to the GRUB directory.
--for file in "${grubdir}"/*.mod "${grubdir}"/*.lst "${grubdir}"/*.img "${grubdir}"/efiemu??.o "${grubdir}"/${grub_modinfo_target_cpu}-$grub_modinfo_platform/*.mod "${grubdir}"/${grub_modinfo_target_cpu}-$grub_modinfo_platform/*.lst "${grubdir}"/${grub_modinfo_target_cpu}-$grub_modinfo_platform/*.img "${grubdir}"/${grub_modinfo_target_cpu}-$grub_modinfo_platform/efiemu??.o; do
-- if test -f "$file" && [ "`basename $file`" != menu.lst ]; then
-- rm -f "$file" || exit 1
-- fi
--done
--for file in "${source_dir}"/*.mod "${source_dir}"/*.lst; do
-- cp -f "$file" "${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform" || exit 1
--done
--if [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "i386-pc" ] || [ "${grub_modinfo_target_cpu}-${grub_modinfo_platform}" = "sparc64-ieee1275" ] ; then
-- for file in "${source_dir}"/*.img "${source_dir}"/efiemu??.o; do
-- if test -f "$file"; then
-- cp -f "$file" "${grubdir}/${grub_modinfo_target_cpu}-$grub_modinfo_platform" || exit 1
-- fi
-- done
--fi
--
- # Copy gettext files
- mkdir -p "${grubdir}"/locale/
- for dir in "${localedir}"/*; do
diff --git a/pld-mkconfigdir.patch b/pld-mkconfigdir.patch
index b80181b..5d6943e 100644
--- a/pld-mkconfigdir.patch
+++ b/pld-mkconfigdir.patch
@@ -7,7 +7,7 @@ diff -dur grub-2.00.orig/conf/Makefile.common grub-2.00/conf/Makefile.common
-grubconfdir = $(sysconfdir)/grub.d
+grubconfdir = /lib/grub.d
- platformdir = $(pkglibdir)
+ platformdir = $(pkglibdir)/$(target_cpu)-$(platform)
starfielddir = $(pkgdatadir)/themes/starfield
diff -dur grub-2.00.orig/util/grub-mkconfig.in grub-2.00/util/grub-mkconfig.in
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/grub2.git/commitdiff/1536aaf2ef81965c6f99c0dcf508a3629451e402
More information about the pld-cvs-commit
mailing list