grub2/grub2.spec
Stephan Kulow ecac8f86f6 Accepting request 128513 from devel:openSUSE:Factory
Hi,
Please help to review the patches. Thanks. (forwarded request 128468 from michael-chang)

OBS-URL: https://build.opensuse.org/request/show/128513
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/grub2?expand=0&rev=41
2012-07-23 08:00:52 +00:00

408 lines
12 KiB
RPMSpec

#
# spec file for package grub2
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: grub2
%ifarch x86_64 ppc64
BuildRequires: freetype2-devel-32bit
BuildRequires: gcc-32bit
BuildRequires: glibc-32bit
BuildRequires: glibc-devel-32bit
BuildRequires: libncurses5-32bit
BuildRequires: libusb-1_0-devel-32bit
BuildRequires: ncurses-devel-32bit
%else
BuildRequires: freetype2-devel
BuildRequires: gcc
BuildRequires: glibc-devel
BuildRequires: libncurses5
BuildRequires: libusb-1_0-devel
BuildRequires: ncurses-devel
%endif
BuildRequires: autogen
BuildRequires: automake
BuildRequires: bison
BuildRequires: device-mapper-devel
BuildRequires: fdupes
BuildRequires: flex
BuildRequires: fuse-devel
BuildRequires: gnu-unifont
BuildRequires: lzma
BuildRequires: makeinfo
BuildRequires: python
BuildRequires: ruby
BuildRequires: xz-devel
%if 0%{?suse_version} == 1210
BuildRequires: guile
%endif
# Modules always contain just 32-bit code
%define _libdir %{_exec_prefix}/lib
%ifarch ppc ppc64
%define platform ieee1275
%else
%define platform pc
%endif
# build efi bootloader on some platforms only:
%if ! 0%{?efi}
%global efi %{ix86} x86_64 ia64
%endif
Version: 2.00
Release: 0
Summary: Bootloader with support for Linux, Multiboot and more
License: GPL-3.0+
Group: System/Boot
Url: http://www.gnu.org/software/grub/
%define rev 20120622
Source0: grub-%{version}.tar.xz
Source1: 90_persistent
Source2: grub.default
Source3: README.openSUSE
Source4: grub2.rpmlintrc
# rsync -Lrtvz translationproject.org::tp/latest/grub/ po
Source5: translations-20120622.tar.xz
Patch0: grub2-correct-font-path.patch
Patch1: rename-grub-info-file-to-grub2.patch
Patch2: grub2-linux.patch
Patch3: use-grub2-as-a-package-name.patch
Patch6: grub2-iterate-and-hook-for-extended-partition.patch
Patch7: grub2-install-opt-skip-fs-probe.patch
Patch8: grub2-ppc-terminfo.patch
Patch9: grub2-GRUB_CMDLINE_LINUX_RECOVERY-for-recovery-mode.patch
Patch10: grub2-fix-error-terminal-gfxterm-isn-t-found.patch
Patch11: grub2-fix-mo-not-copied-to-grubdir-locale.patch
Patch12: grub2-fix-menu-in-xen-host-server.patch
Patch99: use-grub2-efi-as-a-package-name.patch
PreReq: perl-Bootloader
Requires: gettext-runtime
Requires: os-prober
Requires(post): /sbin/install-info
Requires(preun):/sbin/install-info
BuildRoot: %{_tmppath}/%{name}-%{version}-build
ExclusiveArch: %{ix86} x86_64 ppc ppc64
%description
This is the second version of the GRUB (Grand Unified Bootloader),
a highly configurable and customizable bootloader with modular
architecture. It supports rich scale of kernel formats, file systems,
computer architectures and hardware devices.
PLEASE NOTE: This is a development snapshot, and as such will not
replace grub if you install it, but will be merely added as another
kernel to your existing GRUB menu. Do not replace GRUB (grub package)
with it unless you know what are you doing. Refer to README.openSUSE
file that is part of this package's documentation for more information.
%ifarch %{efi}
%package efi
Summary: GRUB2 for EFI systems
Group: System/Boot
%ifarch ia64 x86_64
#Package is available on ia64 and x86_64 only and not necessarily needed
Requires: efibootmgr
%endif
Requires: grub2
%description efi
The GRand Unified Bootloader (GRUB) is a highly configurable and customizable
bootloader with modular architecture. It supports rich variety of kernel formats,
file systems, computer architectures and hardware devices. This subpackage
provides support for EFI systems.
%endif
%prep
# We create (if we build for efi) two copies of the sources in the Builddir
%setup -q -T -c -n grub-%{version} -a 0 -a 5
cp -r po grub-%{version}/
cd grub-%{version}
(cd po && ls *.po | cut -d. -f1 | xargs) >po/LINGUAS
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch9 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
cd ..
# README.openSUSE
cp %{SOURCE3} grub-%{version}/
%ifarch %{efi}
(cp -a grub-%{version} grub-efi-%{version})
cd grub-efi-%{version}
%patch99 -p1
cd ..
%endif
%build
%ifarch %{efi}
cd grub-efi-%{version}
./autogen.sh
# we don't want to let rpm to override *FLAGS by bogus ones
CFLAGS="-fno-strict-aliasing "
CXXFLAGS=" "
FFLAGS=" "
export CFLAGS CXXFLAGS FFLAGS
%configure \
TARGET_LDFLAGS=-static \
--target=%{_target_platform} \
--with-platform=efi \
--program-transform-name=s,grub,%{name}-efi,
make %{?_smp_mflags}
%ifarch %{ix86}
%define grubefiarch i386-efi
%else
%define grubefiarch %{_arch}-efi
%endif
./grub-mkimage -O %{grubefiarch} -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
cd ..
%endif
cd grub-%{version}
./autogen.sh
# we don't want to let rpm to override *FLAGS by bogus ones
CFLAGS="-fno-strict-aliasing "
CXXFLAGS=" "
FFLAGS=" "
export CFLAGS CXXFLAGS FFLAGS
# 64-bit x86-64 machines use 32-bit boot loader
# (We cannot just redefine _target_cpu, as we'd get i386.rpm packages then)
%ifarch x86_64
%define _target_platform i386-%{_vendor}-%{_target_os}%{?_gnu}
%endif
%ifnarch ppc ppc64
%define extraconfigure --enable-grub-emu-usb
%endif
# -static is needed so that autoconf script is able to link
# test that looks for _start symbol on 64 bit platforms
%configure TARGET_LDFLAGS=-static \
--target=%{_target_platform} \
--with-platform=%{platform} \
%{extraconfigure} \
--program-transform-name=s,grub,%{name},
make %{?_smp_mflags}
%install
%ifarch %{efi}
cd grub-efi-%{version}
make DESTDIR=$RPM_BUILD_ROOT install
# Ghost config file
install -d $RPM_BUILD_ROOT/boot/%{name}-efi
touch $RPM_BUILD_ROOT/boot/%{name}-efi/grub.cfg
install -m 755 -d $RPM_BUILD_ROOT/boot/efi/EFI/opensuse/
install -m 755 grub.efi $RPM_BUILD_ROOT/boot/efi/EFI/opensuse/grub.efi
# Remove devel files
rm $RPM_BUILD_ROOT/%{_libdir}/%{name}-efi/*/*.h
rm $RPM_BUILD_ROOT%{_datadir}/%{name}-efi/*.h
%find_lang %{name}-efi
cd ..
%endif
cd grub-%{version}
make DESTDIR=$RPM_BUILD_ROOT install
# Script that makes part of grub.cfg persist across updates
install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_sysconfdir}/grub.d/
# Ghost config file
install -d $RPM_BUILD_ROOT/boot/%{name}
touch $RPM_BUILD_ROOT/boot/%{name}/grub.cfg
# Remove devel files
rm $RPM_BUILD_ROOT/%{_libdir}/%{name}/*/*.h
rm $RPM_BUILD_ROOT%{_datadir}/%{name}/*.h
# Defaults
install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/default/grub
%find_lang %{name}
%fdupes %buildroot%{_bindir}
%post
/sbin/install-info %{_infodir}/grub-dev.info %{_infodir}/dir || :
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
mkdir -p /boot/%{name}/ 2>/dev/null || true
# Determine the partition with /boot
BOOT_PARTITION=$(df -h /boot |(read; awk '{print $1; exit}'))
# Generate core.img, but don't let it be installed in boot sector
%{name}-install --grub-setup=/bin/true $BOOT_PARTITION || true
exec >/dev/null 2>&1
# Remove stale menu.lst entries
/sbin/update-bootloader --remove --image /boot/%{name}/core.img --name="GNU GRUB 2" || true
# Add core.img as multiboot kernel to GRUB Legacy menu
/sbin/update-bootloader --add --image /boot/%{name}/core.img --name="GNU GRUB 2" || true
/sbin/update-bootloader --refresh || true
%ifarch %{efi}
%post efi
/sbin/install-info %{_infodir}/grub-dev.info %{_infodir}/dir || :
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
%endif
%preun
if [ $1 = 0 ]; then
/sbin/install-info --delete %{_infodir}/grub-dev.info %{_infodir}/dir || :
/sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
exec >/dev/null
if [ -e /boot/%{name}/core.img ] ; then
/sbin/update-bootloader --remove --image /boot/%{name}/core.img --name="GNU GRUB 2" || :
/sbin/update-bootloader --refresh || :
fi
# Cleanup installed files
rm -f /boot/%{name}/*.mod
rm -f /boot/%{name}/*.img
rm -f /boot/%{name}/*.lst
rm -f /boot/%{name}/device.map
fi
%ifarch %{efi}
%preun efi
if [ $1 = 0 ]; then
/sbin/install-info --delete %{_infodir}/grub-dev.info %{_infodir}/dir || :
/sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir || :
fi
%endif
%files -f grub-%{version}/%{name}.lang
%defattr(-,root,root,-)
%doc grub-%{version}/COPYING grub-%{version}/NEWS grub-%{version}/README
%doc grub-%{version}/THANKS grub-%{version}/TODO grub-%{version}/ChangeLog
%doc grub-%{version}/README.openSUSE
%dir /boot/%{name}
%ghost /boot/%{name}/grub.cfg
%{_sysconfdir}/bash_completion.d/grub
%config(noreplace) %{_sysconfdir}/default/grub
%dir %{_sysconfdir}/grub.d
%{_sysconfdir}/grub.d/README
%config %{_sysconfdir}/grub.d/??_*
%{_sbindir}/%{name}-bios-setup
%{_sbindir}/%{name}-install
%{_sbindir}/%{name}-mkconfig
%{_sbindir}/%{name}-mknetdir
%{_sbindir}/%{name}-ofpathname
%{_sbindir}/%{name}-probe
%{_sbindir}/%{name}-reboot
%{_sbindir}/%{name}-set-default
%{_sbindir}/%{name}-sparc64-setup
%{_bindir}/%{name}-editenv
%{_bindir}/%{name}-fstest
%{_bindir}/%{name}-kbdcomp
%{_bindir}/%{name}-menulst2cfg
%{_bindir}/%{name}-mkfont
%{_bindir}/%{name}-mkimage
%{_bindir}/%{name}-mklayout
%{_bindir}/%{name}-mkpasswd-pbkdf2
%{_bindir}/%{name}-mkrelpath
%{_bindir}/%{name}-mkrescue
%{_bindir}/%{name}-mkstandalone
%{_bindir}/%{name}-mount
%{_bindir}/%{name}-script-check
%dir %{_libdir}/%{name}/
%dir %{_libdir}/%{name}/*/
%ifnarch ppc ppc64
%{_libdir}/%{name}/*/*.image
%endif
%{_libdir}/%{name}/*/*.img
%{_libdir}/%{name}/*/*.lst
%{_libdir}/%{name}/*/*.mod
%{_libdir}/%{name}/*/*.module
%ifarch x86_64
%{_libdir}/%{name}/*/efiemu*.o
%endif
%{_libdir}/%{name}/*/gdb_grub2
%{_libdir}/%{name}/*/gmodule.pl
%{_libdir}/%{name}/*/kernel.exec
%{_libdir}/%{name}/*/modinfo.sh
%dir %{_datadir}/%{name}
%{_datadir}/%{name}/*.pf2
%{_datadir}/%{name}/grub-mkconfig_lib
%{_infodir}/grub-dev.info*
%{_infodir}/%{name}.info*
%ifarch %{efi}
%files efi -f grub-efi-%{version}/%{name}-efi.lang
%defattr(-,root,root,-)
%dir /boot/efi
%dir /boot/efi/EFI
%dir /boot/efi/EFI/opensuse
%attr(0755,root,root)/boot/efi/EFI/opensuse/grub.efi
%dir /boot/grub2-efi
%ghost /boot/grub2-efi/grub.cfg
%{_sbindir}/grub2-efi-bios-setup
%{_sbindir}/grub2-efi-install
%{_sbindir}/grub2-efi-mkconfig
%{_sbindir}/grub2-efi-mknetdir
%{_sbindir}/grub2-efi-ofpathname
%{_sbindir}/grub2-efi-probe
%{_sbindir}/grub2-efi-reboot
%{_sbindir}/grub2-efi-set-default
%{_sbindir}/grub2-efi-sparc64-setup
%{_bindir}/grub2-efi-editenv
%{_bindir}/grub2-efi-fstest
%{_bindir}/grub2-efi-kbdcomp
%{_bindir}/grub2-efi-menulst2cfg
%{_bindir}/grub2-efi-mkstandalone
%{_bindir}/grub2-efi-mkfont
%{_bindir}/grub2-efi-mklayout
%{_bindir}/grub2-efi-mkimage
%{_bindir}/grub2-efi-mkpasswd-pbkdf2
%{_bindir}/grub2-efi-mkrelpath
%ifnarch %{sparc} ppc ppc64
%{_bindir}/grub2-efi-mkrescue
%endif
%{_bindir}/grub2-efi-mount
%{_bindir}/grub2-efi-script-check
%dir %{_libdir}/%{name}-efi/
%dir %{_libdir}/%{name}-efi/*/
%{_libdir}/%{name}-efi/*/*.img
%{_libdir}/%{name}-efi/*/*.lst
%{_libdir}/%{name}-efi/*/*.mod
%{_libdir}/%{name}-efi/*/*.module
%{_libdir}/%{name}-efi/*/gdb_grub2-efi
%{_libdir}/%{name}-efi/*/gmodule.pl
%{_libdir}/%{name}-efi/*/kernel.exec
%{_libdir}/%{name}-efi/*/modinfo.sh
%dir %{_datadir}/%{name}-efi
%{_datadir}/%{name}-efi/grub-mkconfig_lib
%{_datadir}/%{name}-efi/*.pf2
%endif
%changelog