forked from pool/grub2
Accepting request 139364 from devel:openSUSE:Factory
build grub2-efi with grub2 transform and migrate configuration into /boot/grub2 (bnc#782891) (forwarded request 139330 from arvidjaar) OBS-URL: https://build.opensuse.org/request/show/139364 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/grub2?expand=0&rev=47
This commit is contained in:
committed by
Git OBS Bridge
parent
d0c09ba3d4
commit
85ed747869
178
grub2.spec
178
grub2.spec
@@ -58,6 +58,13 @@ BuildRequires: guile
|
||||
%else
|
||||
%define platform pc
|
||||
%endif
|
||||
|
||||
%ifarch %{ix86} x86_64
|
||||
%define grubcpu i386
|
||||
%else
|
||||
%define grubcpu %{_target_cpu}
|
||||
%endif
|
||||
|
||||
# build efi bootloader on some platforms only:
|
||||
%if ! 0%{?efi}
|
||||
%global efi %{ix86} x86_64 ia64
|
||||
@@ -97,7 +104,7 @@ Patch15: not-display-menu-when-boot-once.patch
|
||||
Patch16: grub2-fix-Grub2-with-SUSE-Xen-package-install.patch
|
||||
Patch17: grub2-pass-corret-root-for-nfsroot.patch
|
||||
Patch18: grub2-fix-locale-en.mo.gz-not-found-error-message.patch
|
||||
Patch99: use-grub2-efi-as-a-package-name.patch
|
||||
Patch19: grub2-fix-build-error-on-flex-2.5.37.patch
|
||||
PreReq: perl-Bootloader
|
||||
Requires: gettext-runtime
|
||||
Requires: os-prober
|
||||
@@ -166,15 +173,13 @@ cd grub-%{version}
|
||||
%patch16 -p1
|
||||
%patch17 -p1
|
||||
%patch18 -p1
|
||||
%patch19 -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
|
||||
@@ -190,7 +195,7 @@ export CFLAGS CXXFLAGS FFLAGS
|
||||
TARGET_LDFLAGS=-static \
|
||||
--target=%{_target_platform} \
|
||||
--with-platform=efi \
|
||||
--program-transform-name=s,grub,%{name}-efi,
|
||||
--program-transform-name=s,grub,%{name},
|
||||
make %{?_smp_mflags}
|
||||
%ifarch %{ix86}
|
||||
%define grubefiarch i386-efi
|
||||
@@ -237,17 +242,9 @@ make %{?_smp_mflags}
|
||||
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
|
||||
|
||||
@@ -268,6 +265,15 @@ touch $RPM_BUILD_ROOT/boot/%{name}/grub.cfg
|
||||
rm $RPM_BUILD_ROOT/%{_libdir}/%{name}/*/*.h
|
||||
rm $RPM_BUILD_ROOT%{_datadir}/%{name}/*.h
|
||||
|
||||
%ifarch %{efi}
|
||||
# grub2-efi compatibility links until other packages are fixed
|
||||
ln -sf %{name}-editenv $RPM_BUILD_ROOT%{_bindir}/%{name}-efi-editenv
|
||||
ln -sf %{name}-set-default $RPM_BUILD_ROOT%{_sbindir}/%{name}-efi-set-default
|
||||
ln -sf %{name}-mkconfig $RPM_BUILD_ROOT%{_sbindir}/%{name}-efi-mkconfig
|
||||
ln -sf %{name}-install $RPM_BUILD_ROOT%{_sbindir}/%{name}-efi-install
|
||||
ln -sf %{name} $RPM_BUILD_ROOT/boot/%{name}-efi
|
||||
%endif
|
||||
|
||||
# Defaults
|
||||
install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/default/grub
|
||||
install -m 755 -D %{SOURCE6} $RPM_BUILD_ROOT%{_sbindir}/grub2-once
|
||||
@@ -318,19 +324,69 @@ fi
|
||||
|
||||
%ifarch %{efi}
|
||||
|
||||
%triggerpostun -- %{name}-efi
|
||||
|
||||
# It is needed on update only
|
||||
if [ $2 -gt 0 ]; then
|
||||
|
||||
# Workaround for lost /boot/grub2/grub.cfg and possibly /boot/grub2-efi
|
||||
# after old grub2-efi deinstallation
|
||||
if [ -f /boot/%{name}/grub.cfg.migrated ]; then
|
||||
mv /boot/%{name}/grub.cfg.migrated /boot/%{name}/grub.cfg
|
||||
fi
|
||||
[ -h /boot/%{name}-efi ] || ln -sf %{name} /boot/%{name}-efi
|
||||
|
||||
fi
|
||||
exit 0
|
||||
|
||||
%post efi
|
||||
/sbin/install-info %{_infodir}/grub-dev.info %{_infodir}/dir || :
|
||||
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir || :
|
||||
|
||||
# To check by current loader settings
|
||||
if [ -f %{_sysconfdir}/sysconfig/bootloader ]; then
|
||||
. %{_sysconfdir}/etc/sysconfig/bootloader
|
||||
fi
|
||||
if [ "x${LOADER_TYPE}" = "xgrub2-efi" ]; then
|
||||
if [ $1 -eq 1 ]; then
|
||||
|
||||
# If this is new install, just create compatibility link
|
||||
ln -sf grub2 /boot/grub2-efi
|
||||
|
||||
else
|
||||
|
||||
# Always create compatibility link even if current loader is not grub2-efi
|
||||
if [ -h /boot/%{name}-efi ]; then
|
||||
migrate_grub2_efi=
|
||||
else
|
||||
migrate_grub2_efi=yes
|
||||
fi
|
||||
|
||||
# To check by current loader settings
|
||||
if [ -f %{_sysconfdir}/sysconfig/bootloader ]; then
|
||||
. %{_sysconfdir}/sysconfig/bootloader
|
||||
fi
|
||||
|
||||
if [ "x${LOADER_TYPE}" = "xgrub2-efi" ]; then
|
||||
|
||||
if [ "$migrate_grub2_efi" ]; then
|
||||
# Migrate settings to standard prefix /boot/grub2
|
||||
for i in custom.cfg device.map grub.cfg grubenv; do
|
||||
[ -f /boot/%{name}-efi/$i ] && cp -a /boot/%{name}-efi/$i /boot/%{name} || :
|
||||
done
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$migrate_grub2_efi" ]; then
|
||||
mv /boot/%{name}-efi /boot/%{name}-efi.rpmsave
|
||||
ln -sf %{name} /boot/%{name}-efi
|
||||
fi
|
||||
|
||||
if [ "x${LOADER_TYPE}" = "xgrub2-efi" ]; then
|
||||
# It's enough to call update-bootloader --refesh to install grub2 and update it's config
|
||||
/sbin/update-bootloader --refresh || true
|
||||
|
||||
# Uninstallation of previous grub2-efi versions will remove
|
||||
# /boot/grub2-efi/grub.cfg and possibly /boot/grub2-efi itself.
|
||||
# Preserve grub2.cfg and use it as migration flag in postun trigger
|
||||
[ "$migrate_grub2_efi" ] && mv /boot/%{name}/grub.cfg /boot/%{name}/grub.cfg.migrated
|
||||
fi
|
||||
|
||||
# It's enought to call update-bootloader --refesh to install grub2 and update it's config
|
||||
/sbin/update-bootloader --refresh || true
|
||||
fi
|
||||
exit 0
|
||||
%endif
|
||||
|
||||
%preun
|
||||
@@ -367,15 +423,6 @@ if [ $1 = 0 ]; then
|
||||
fi
|
||||
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
|
||||
@@ -412,21 +459,21 @@ fi
|
||||
%{_bindir}/%{name}-mount
|
||||
%{_bindir}/%{name}-script-check
|
||||
%dir %{_libdir}/%{name}/
|
||||
%dir %{_libdir}/%{name}/*/
|
||||
%dir %{_libdir}/%{name}/%{grubcpu}-%{platform}/
|
||||
%ifnarch ppc ppc64
|
||||
%{_libdir}/%{name}/*/*.image
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/*.image
|
||||
%endif
|
||||
%{_libdir}/%{name}/*/*.img
|
||||
%{_libdir}/%{name}/*/*.lst
|
||||
%{_libdir}/%{name}/*/*.mod
|
||||
%{_libdir}/%{name}/*/*.module
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/*.img
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/*.lst
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/*.mod
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/*.module
|
||||
%ifarch x86_64
|
||||
%{_libdir}/%{name}/*/efiemu*.o
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/efiemu*.o
|
||||
%endif
|
||||
%{_libdir}/%{name}/*/gdb_grub2
|
||||
%{_libdir}/%{name}/*/gmodule.pl
|
||||
%{_libdir}/%{name}/*/kernel.exec
|
||||
%{_libdir}/%{name}/*/modinfo.sh
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/gdb_grub2
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/gmodule.pl
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/kernel.exec
|
||||
%{_libdir}/%{name}/%{grubcpu}-%{platform}/modinfo.sh
|
||||
%dir %{_datadir}/%{name}
|
||||
%{_datadir}/%{name}/*.pf2
|
||||
%{_datadir}/%{name}/grub-mkconfig_lib
|
||||
@@ -435,51 +482,26 @@ fi
|
||||
|
||||
%ifarch %{efi}
|
||||
|
||||
%files efi -f grub-efi-%{version}/%{name}-efi.lang
|
||||
%files efi
|
||||
%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
|
||||
%ghost /boot/grub2-efi
|
||||
%{_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
|
||||
%dir %{_libdir}/%{name}/%{grubefiarch}/
|
||||
%{_libdir}/%{name}/%{grubefiarch}/*.img
|
||||
%{_libdir}/%{name}/%{grubefiarch}/*.lst
|
||||
%{_libdir}/%{name}/%{grubefiarch}/*.mod
|
||||
%{_libdir}/%{name}/%{grubefiarch}/*.module
|
||||
%{_libdir}/%{name}/%{grubefiarch}/gdb_grub2
|
||||
%{_libdir}/%{name}/%{grubefiarch}/gmodule.pl
|
||||
%{_libdir}/%{name}/%{grubefiarch}/kernel.exec
|
||||
%{_libdir}/%{name}/%{grubefiarch}/modinfo.sh
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
|
Reference in New Issue
Block a user