ecac8f86f6
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
408 lines
12 KiB
RPMSpec
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
|