0e50f1f
# Modules always contain just 32-bit code
0e50f1f
%define _libdir %{_exec_prefix}/lib
0e50f1f
e046631
# 64bit intel machines use 32bit boot loader
0e50f1f
# (We cannot just redefine _target_cpu, as we'd get i386.rpm packages then)
0e50f1f
%ifarch x86_64
0e50f1f
%define _target_platform i386-%{_vendor}-%{_target_os}%{?_gnu}
0e50f1f
%endif
e046631
#sparc is always compile 64 bit
e046631
%ifarch %{sparc}
e046631
%define _target_platform sparc64-%{_vendor}-%{_target_os}%{?_gnu}
e046631
%endif
0e50f1f
95e479d
%if ! 0%{?efi}
95e479d
%global efi %{ix86} x86_64 ia64
95e479d
%endif
95e479d
0e50f1f
Name:           grub2
e98789b
Epoch:          1
1fcd613
Version:        1.99
1fcd613
%define filever 1.99~rc1
1fcd613
Release:        0.1%{?dist}
0e50f1f
Summary:        Bootloader with support for Linux, Multiboot and more
0e50f1f
0e50f1f
Group:          System Environment/Base
0e50f1f
License:        GPLv3+
0e50f1f
URL:            http://www.gnu.org/software/grub/
1fcd613
Source0:        ftp://alpha.gnu.org/gnu/grub/grub-%{filever}.tar.gz
0e50f1f
Source1:        90_persistent
0e50f1f
Source2:        grub.default
ca74990
Source3:        README.Fedora
1fcd613
Patch0:		grub-1.99-handle-fwrite-return.patch
1fcd613
Patch1:		grub-1.99-unused-variable.patch
1fcd613
Patch2:		grub-1.99-grub_test_assert_printf.patch
0e50f1f
0e50f1f
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
0e50f1f
95e479d
BuildRequires:  flex bison binutils python
95e479d
BuildRequires:  ncurses-devel xz-devel
5e0037e
BuildRequires:  freetype-devel libusb-devel
e046631
%ifarch %{sparc}
e046631
BuildRequires:  /usr/lib64/crt1.o glibc-static
e046631
%else
b95f802
BuildRequires:  /usr/lib/crt1.o glibc-static
e046631
%endif
1fcd613
BuildRequires:  autoconf automake autogen device-mapper-devel
1fcd613
BuildRequires:	freetype-devel gettext-devel git
0e50f1f
1fcd613
Requires:	gettext
a736a84
Requires(pre):  dracut
a736a84
Requires(post): dracut
0e50f1f
34399bb
# TODO: ppc
1fcd613
# ExclusiveArch:  %{ix86} x86_64 %{sparc}
0e50f1f
0e50f1f
%description
95e479d
The GRand Unified Bootloader (GRUB) is a highly configurable and customizable
95e479d
bootloader with modular architecture.  It support rich varietyof kernel formats,
95e479d
file systems, computer architectures and hardware devices.
95e479d
95e479d
%ifarch %{efi}
95e479d
%package efi
95e479d
Summary:	GRUB for EFI systems.
95e479d
Group:		System Environment/Base
95e479d
95e479d
%description efi
95e479d
The GRand Unified Bootloader (GRUB) is a highly configurable and customizable
95e479d
bootloader with modular architecture.  It support rich varietyof kernel formats,
95e479d
file systems, computer architectures and hardware devices.  This subpackage
95e479d
provides support for EFI systems.
95e479d
%endif
0e50f1f
0e50f1f
%prep
95e479d
%setup -T -c -n grub-%{version}
95e479d
%ifarch %{efi}
95e479d
%setup -D -q -T -a 0 -n grub-%{version}
95e479d
cd grub-%{filever}
95e479d
cp %{SOURCE3} .
1fcd613
git init
1fcd613
git config user.email "pjones@fedoraproject.org"
1fcd613
git config user.name "Fedora Ninjas"
1fcd613
git add .
1fcd613
git commit -a -q -m "%{version} baseline."
1fcd613
git am %{patches}
95e479d
cd ..
95e479d
mv grub-%{filever} grub-efi-%{filever}
95e479d
%endif
95e479d
%setup -D -q -T -a 0 -n grub-%{version}
95e479d
cd grub-%{filever}
ca74990
cp %{SOURCE3} .
95e479d
git init
95e479d
git config user.email "pjones@fedoraproject.org"
95e479d
git config user.name "Fedora Ninjas"
95e479d
git add .
95e479d
git commit -a -q -m "%{version} baseline."
95e479d
git am %{patches}
ca74990
0e50f1f
0e50f1f
%build
95e479d
%ifarch %{efi}
95e479d
cd grub-efi-%{filever}
95e479d
./autogen.sh
95e479d
%configure						\
95e479d
	CFLAGS="$(echo $RPM_OPT_FLAGS | sed		\
95e479d
		-e 's/-fstack-protector//g'		\
95e479d
		-e 's/--param=ssp-buffer-size=4//g'	\
95e479d
		-e 's/-mregparm=3/-mregparm=4//g'	\
95e479d
		-e 's/-fasynchronous-unwind-tables//g' )"\
95e479d
	TARGET_LDFLAGS=-static				\
95e479d
        --with-platform=efi				\
95e479d
        --program-transform-name=s,grub,%{name}-efi,
95e479d
make %{?_smp_mflags}
95e479d
cd ..
95e479d
%endif
95e479d
95e479d
cd grub-%{filever}
95e479d
./autogen.sh
0e50f1f
# -static is needed so that autoconf script is able to link
0e50f1f
# test that looks for _start symbol on 64 bit platforms
e046631
%ifarch %{sparc}
95e479d
PLATFORM=ieee1275
e046631
%else
95e479d
PLATFORM=pc
e046631
%endif
95e479d
%configure						\
95e479d
	CFLAGS="$(echo $RPM_OPT_FLAGS | sed		\
95e479d
		-e 's/-fstack-protector//g'		\
95e479d
		-e 's/--param=ssp-buffer-size=4//g'	\
95e479d
		-e 's/-mregparm=3/-mregparm=4//g'	\
95e479d
		-e 's/-fasynchronous-unwind-tables//g' )"\
95e479d
	TARGET_LDFLAGS=-static				\
95e479d
        --with-platform=$PLATFORM			\
0e50f1f
        --program-transform-name=s,grub,%{name},
0e50f1f
e046631
make %{?_smp_mflags}
0e50f1f
0e50f1f
%install
0e50f1f
set -e
0e50f1f
rm -fr $RPM_BUILD_ROOT
95e479d
95e479d
%ifarch %{efi}
95e479d
cd grub-efi-%{filever}
95e479d
make DESTDIR=$RPM_BUILD_ROOT install
95e479d
95e479d
# Ghost config file
95e479d
install -d $RPM_BUILD_ROOT/boot/%{name}-efi
95e479d
touch $RPM_BUILD_ROOT/boot/%{name}-efi/grub.cfg
95e479d
ln -s ../boot/%{name}-efi/grub.cfg $RPM_BUILD_ROOT%{_sysconfdir}/%{name}-efi.cfg
95e479d
95e479d
# Install ELF files modules and images were created from into
95e479d
# the shadow root, where debuginfo generator will grab them from
95e479d
find $RPM_BUILD_ROOT -name '*.mod' -o -name '*.img' |
95e479d
while read MODULE
95e479d
do
95e479d
        BASE=$(echo $MODULE |sed -r "s,.*/([^/]*)\.(mod|img),\1,")
95e479d
        # Symbols from .img files are in .exec files, while .mod
95e479d
        # modules store symbols in .elf. This is just because we
95e479d
        # have both boot.img and boot.mod ...
95e479d
        EXT=$(echo $MODULE |grep -q '.mod' && echo '.elf' || echo '.exec')
95e479d
        TGT=$(echo $MODULE |sed "s,$RPM_BUILD_ROOT,.debugroot,")
95e479d
#        install -m 755 -D $BASE$EXT $TGT
95e479d
done
95e479d
cd ..
95e479d
%endif
95e479d
95e479d
cd grub-%{filever}
0e50f1f
make DESTDIR=$RPM_BUILD_ROOT install
0e50f1f
0e50f1f
# Script that makes part of grub.cfg persist across updates
0e50f1f
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/grub.d/
0e50f1f
0e50f1f
# Ghost config file
0e50f1f
install -d $RPM_BUILD_ROOT/boot/%{name}
0e50f1f
touch $RPM_BUILD_ROOT/boot/%{name}/grub.cfg
0e50f1f
ln -s ../boot/%{name}/grub.cfg $RPM_BUILD_ROOT%{_sysconfdir}/%{name}.cfg
0e50f1f
0e50f1f
# Install ELF files modules and images were created from into
0e50f1f
# the shadow root, where debuginfo generator will grab them from
0e50f1f
find $RPM_BUILD_ROOT -name '*.mod' -o -name '*.img' |
0e50f1f
while read MODULE
0e50f1f
do
0e50f1f
        BASE=$(echo $MODULE |sed -r "s,.*/([^/]*)\.(mod|img),\1,")
0e50f1f
        # Symbols from .img files are in .exec files, while .mod
0e50f1f
        # modules store symbols in .elf. This is just because we
0e50f1f
        # have both boot.img and boot.mod ...
0e50f1f
        EXT=$(echo $MODULE |grep -q '.mod' && echo '.elf' || echo '.exec')
0e50f1f
        TGT=$(echo $MODULE |sed "s,$RPM_BUILD_ROOT,.debugroot,")
e046631
#        install -m 755 -D $BASE$EXT $TGT
0e50f1f
done
0e50f1f
1fcd613
mv $RPM_BUILD_ROOT%{_infodir}/grub.info $RPM_BUILD_ROOT%{_infodir}/grub2.info
1fcd613
rm $RPM_BUILD_ROOT%{_infodir}/dir
1fcd613
0e50f1f
# Defaults
0e50f1f
install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/default/grub
0e50f1f
0e50f1f
%clean    
0e50f1f
rm -rf $RPM_BUILD_ROOT
0e50f1f
0e50f1f
%post
0e50f1f
exec >/dev/null 2>&1
0e50f1f
# Create device.map or reuse one from GRUB Legacy
0e50f1f
cp -u /boot/grub/device.map /boot/%{name}/device.map 2>/dev/null ||
0e50f1f
        %{name}-mkdevicemap
0e50f1f
# Determine the partition with /boot
0e50f1f
BOOT_PARTITION=$(df -h /boot |(read; awk '{print $1; exit}'))
0e50f1f
# Generate core.img, but don't let it be installed in boot sector
0e50f1f
%{name}-install --grub-setup=/bin/true $BOOT_PARTITION
0e50f1f
# Remove stale menu.lst entries
0e50f1f
/sbin/grubby --remove-kernel=/boot/%{name}/core.img
0e50f1f
# Add core.img as multiboot kernel to GRUB Legacy menu
0e50f1f
/sbin/grubby --add-kernel=/boot/%{name}/core.img --title="GNU GRUB 2, (%{version})"
1fcd613
if [ "$1" = 1 ]; then
1fcd613
	/sbin/install-info --info-dir=%{_infodir} %{_infodir}/grub2.info.gz || :
1fcd613
fi
0e50f1f
0e50f1f
0e50f1f
%preun
1fcd613
if [ "$1" = 0 ]; then
1fcd613
	/sbin/install-info --delete --info-dir=%{_infodir} %{_infodir}/grub2.info.gz || :
1fcd613
fi
0e50f1f
exec >/dev/null
0e50f1f
/sbin/grubby --remove-kernel=/boot/%{name}/core.img
0e50f1f
# XXX Ugly
0e50f1f
rm -f /boot/%{name}/*.mod
0e50f1f
rm -f /boot/%{name}/*.img
0e50f1f
rm -f /boot/%{name}/*.lst
0e50f1f
rm -f /boot/%{name}/device.map
0e50f1f
1fcd613
%files
0e50f1f
%defattr(-,root,root,-)
1fcd613
/etc/bash_completion.d/grub
0e50f1f
%{_libdir}/%{name}
e046631
%{_libdir}/grub/
1fcd613
%{_sbindir}/%{name}-mkconfig
0e50f1f
%{_sbindir}/%{name}-mkdevicemap
1fcd613
%{_sbindir}/%{name}-mknetdir
0e50f1f
%{_sbindir}/%{name}-install
0e50f1f
%{_sbindir}/%{name}-probe
692a778
%{_sbindir}/%{name}-reboot
692a778
%{_sbindir}/%{name}-set-default
1fcd613
%{_sbindir}/%{name}-setup
1fcd613
%{_bindir}/%{name}-bin2h
0e50f1f
%{_bindir}/%{name}-editenv
a72f2be
%{_bindir}/%{name}-fstest
1fcd613
%{_bindir}/%{name}-kbdcomp
1fcd613
%{_bindir}/%{name}-menulst2cfg
1fcd613
# %{_bindir}/%{name}-mkelfimage
a72f2be
%{_bindir}/%{name}-mkfont
1fcd613
%{_bindir}/%{name}-mklayout
1fcd613
%{_bindir}/%{name}-mkimage
1fcd613
# %{_bindir}/%{name}-mkisofs
692a778
%{_bindir}/%{name}-mkpasswd-pbkdf2
692a778
%{_bindir}/%{name}-mkrelpath
34399bb
%ifnarch %{sparc}
a72f2be
%{_bindir}/%{name}-mkrescue
34399bb
%endif
34399bb
%ifarch %{sparc}
34399bb
%{_sbindir}/%{name}-ofpathname
34399bb
%endif
1fcd613
%{_bindir}/%{name}-script-check
0e50f1f
%dir %{_sysconfdir}/grub.d
0e50f1f
%config %{_sysconfdir}/grub.d/??_*
0e50f1f
%{_sysconfdir}/grub.d/README
0e50f1f
%{_sysconfdir}/%{name}.cfg
0e50f1f
%{_sysconfdir}/default/grub
0e50f1f
%dir /boot/%{name}
0e50f1f
# Actually, this is replaced by update-grub from scriptlets,
0e50f1f
# but it takes care of modified persistent part
0e50f1f
%config(noreplace) /boot/%{name}/grub.cfg
95e479d
%doc grub-%{filever}/COPYING grub-%{filever}/INSTALL grub-%{filever}/NEWS
95e479d
%doc grub-%{filever}/README grub-%{filever}/THANKS grub-%{filever}/TODO
95e479d
%doc grub-%{filever}/ChangeLog grub-%{filever}/README.Fedora
0e50f1f
%exclude %{_mandir}
1fcd613
%{_infodir}/grub2*
0e50f1f
95e479d
%ifarch %{efi}
95e479d
%files efi
95e479d
%defattr(-,root,root,-)
95e479d
/etc/bash_completion.d/grub
95e479d
%{_libdir}/grub2-efi
95e479d
%{_libdir}/grub/
95e479d
%{_sbindir}/grub2-efi-mkconfig
95e479d
%{_sbindir}/grub2-efi-mkdevicemap
95e479d
%{_sbindir}/grub2-efi-mknetdir
95e479d
%{_sbindir}/grub2-efi-install
95e479d
%{_sbindir}/grub2-efi-probe
95e479d
%{_sbindir}/grub2-efi-reboot
95e479d
%{_sbindir}/grub2-efi-set-default
95e479d
#%{_sbindir}/grub2-efi-setup
95e479d
%{_bindir}/grub2-efi-bin2h
95e479d
%{_bindir}/grub2-efi-editenv
95e479d
%{_bindir}/grub2-efi-fstest
95e479d
%{_bindir}/grub2-efi-kbdcomp
95e479d
%{_bindir}/grub2-efi-menulst2cfg
95e479d
# %{_bindir}/grub2-efi-mkelfimage
95e479d
%{_bindir}/grub2-efi-mkfont
95e479d
%{_bindir}/grub2-efi-mklayout
95e479d
%{_bindir}/grub2-efi-mkimage
95e479d
# %{_bindir}/grub2-efi-mkisofs
95e479d
%{_bindir}/grub2-efi-mkpasswd-pbkdf2
95e479d
%{_bindir}/grub2-efi-mkrelpath
95e479d
%ifnarch %{sparc}
95e479d
%{_bindir}/grub2-efi-mkrescue
95e479d
%endif
95e479d
%ifarch %{sparc}
95e479d
%{_sbindir}/grub2-efi-ofpathname
95e479d
%endif
95e479d
%{_bindir}/grub2-efi-script-check
95e479d
%dir %{_sysconfdir}/grub.d
95e479d
%config %{_sysconfdir}/grub.d/??_*
95e479d
%{_sysconfdir}/grub.d/README
95e479d
%{_sysconfdir}/grub2-efi.cfg
95e479d
%{_sysconfdir}/default/grub
95e479d
%dir /boot/grub2-efi
95e479d
# Actually, this is replaced by update-grub from scriptlets,
95e479d
# but it takes care of modified persistent part
95e479d
%config(noreplace) /boot/grub2-efi/grub.cfg
95e479d
%doc grub-%{filever}/COPYING grub-%{filever}/INSTALL grub-%{filever}/NEWS
95e479d
%doc grub-%{filever}/README grub-%{filever}/THANKS grub-%{filever}/TODO
95e479d
%doc grub-%{filever}/ChangeLog grub-%{filever}/README.Fedora
95e479d
%exclude %{_mandir}
95e479d
%{_infodir}/grub2*
95e479d
%endif
95e479d
0e50f1f
%changelog
6233068
* Wed Feb 09 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1:1.98-4
6233068
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
6233068
7eb1bde
* Sat Jul 17 2010 Dennis Gilmore <dennis@ausil.us> - 1:1.98-3
7eb1bde
- correctly generate a grub.cfg on kernel update
7eb1bde
692a778
* Fri May 28 2010 Dennis Gilmore <dennis@ausil.us> - 1:1.98-2
692a778
- add patch so grub2-probe works with lvm to detect devices correctly
692a778
692a778
* Wed Apr 21 2010 Dennis Gilmore <dennis@ausil.us> - 1:1.98-1
692a778
- update to 1.98
692a778
7c607f1
* Fri Feb 12 2010 Dennis Gilmore <dennis@ausil.us> - 1:1.97.2-1
7c607f1
- update to 1.97.2
7c607f1
a736a84
* Wed Jan 20 2010 Dennis Gilmore <dennis@ausil.us> - 1:1.97.1-5
a736a84
- drop requires on mkinitrd
a736a84
ce2cd08
* Tue Dec 01 2009 Dennis Gilmore <dennis@ausil.us> - 1:1.97.1-4
ce2cd08
- add patch so that grub2 finds fedora's initramfs
ce2cd08
34399bb
* Tue Nov 10 2009 Dennis Gilmore <dennis@ausil.us> - 1:1.97.1-3
34399bb
- no mkrescue on sparc arches
34399bb
- ofpathname on sparc arches
34399bb
- Requires dracut, not sure if we should just drop mkinitrd for dracut
34399bb
a72f2be
* Tue Nov 10 2009 Dennis Gilmore <dennis@ausil.us> - 1:1.97.1-2
a72f2be
- update filelists
a72f2be
e98789b
* Tue Nov 10 2009 Dennis Gilmore <dennis@ausil.us> - 1:1.97.1-1
e98789b
- update to 1.97.1 release
e98789b
- introduce epoch for upgrades
e98789b
5e0037e
* Tue Nov 10 2009 Dennis Gilmore <dennis@ausil.us> - 1.98-0.7.20090911svn
5e0037e
- fix BR
5e0037e
5e0037e
* Fri Sep 11 2009 Dennis Gilmore <dennis@ausil.us> - 1.98-0.6.20090911svn
e046631
- update to new svn snapshot
e046631
- add sparc support
e046631
b08b867
* Fri Jul 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.98-0.6.20080827svn
b08b867
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
b08b867
b95f802
* Sun Mar 01 2009 Lubomir Rintel <lkundrak@v3.sk> - 1.98-0.4.20080827svn
b95f802
- Add missing BR
b95f802
0ad9c2a
* Tue Feb 24 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.98-0.4.20080827svn
0ad9c2a
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
0ad9c2a
ca74990
* Wed Aug 27 2008 Lubomir Rintel <lkundrak@v3.sk> - 1.98-0.3.20080827svn
ca74990
- Updated SVN snapshot
ca74990
- Added huge fat warnings
ca74990
0e50f1f
* Fri Aug 08 2008 Lubomir Rintel <lkundrak@v3.sk> - 1.98-0.2.20080807svn
0e50f1f
- Correct scriptlet dependencies, trigger on kernel-PAE (thanks to Till Maas)
0e50f1f
- Fix build on x86_64 (thanks to Marek Mahut)
0e50f1f
0e50f1f
* Thu Aug 07 2008 Lubomir Rintel <lkundrak@v3.sk> 1.98-0.1.20080807svn
0e50f1f
- Another snapshot
0e50f1f
- And much more!
0e50f1f
0e50f1f
* Mon May 12 2008 Lubomir Kundrak <lkundrak@redhat.com> 1.97-0.1.20080512cvs
0e50f1f
- CVS snapshot
0e50f1f
- buildid patch upstreamed
0e50f1f
0e50f1f
* Sat Apr 12 2008 Lubomir Kundrak <lkundrak@redhat.com> 1.96-2
0e50f1f
- Pull in 32 bit glibc
0e50f1f
- Fix builds on 64 bit
0e50f1f
0e50f1f
* Sun Mar 16 2008 Lubomir Kundrak <lkundrak@redhat.com> 1.96-1
0e50f1f
- New upstream release
0e50f1f
- More transformation fixes
0e50f1f
- Generate -debuginfo from modules again. This time for real.
0e50f1f
- grubby stub
0e50f1f
- Make it possible to do configuration changes directly in grub.cfg
0e50f1f
- grub.cfg symlink in /etc
0e50f1f
0e50f1f
* Thu Feb 14 2008 Lubomir Kundrak <lkundrak@redhat.com> 1.95.cvs20080214-3
0e50f1f
- Update to latest trunk
0e50f1f
- Manual pages
0e50f1f
- Add pci.c to DISTLIST
0e50f1f
0e50f1f
* Mon Nov 26 2007 Lubomir Kundrak <lkundrak@redhat.com> 1.95.cvs20071119-2
0e50f1f
- Fix program name transformation in utils
0e50f1f
- Moved the modules to /lib
0e50f1f
- Generate -debuginfo from modules again
0e50f1f
0e50f1f
* Sun Nov 18 2007 Lubomir Kundrak <lkundrak@redhat.com> 1.95.cvs20071119-1
0e50f1f
- Synchronized with CVS, major specfile cleanup
0e50f1f
0e50f1f
* Mon Jan 30 2007 Lubomir Kundrak <lkundrak@skosi.org> 1.95-lkundrak1
0e50f1f
- Removed redundant filelist entries
0e50f1f
0e50f1f
* Mon Jan 29 2007 Lubomir Kundrak <lkundrak@skosi.org> 1.95-lkundrak0
0e50f1f
- Program name transformation
0e50f1f
- Bump to 1.95
0e50f1f
- grub-probefs -> grub-probe
0e50f1f
- Add modules to -debuginfo
0e50f1f
0e50f1f
* Tue Sep 12 2006 Lubomir Kundrak <lkundrak@skosi.org> 1.94-lkundrak0
0e50f1f
- built the package