From f402a003c4df8934fb0e42656efa4093848192bb29075a601b22ddeff6b0b929 Mon Sep 17 00:00:00 2001 From: Gary Ching-Pang Lin Date: Fri, 25 Jan 2019 09:28:34 +0000 Subject: [PATCH] Accepting request 668546 from home:gary_lin:branches:devel:openSUSE:Factory - Move 'efi'-executables to '/usr/share/efi' (FATE#326960) (preparing the move to 'noarch' for this package) OBS-URL: https://build.opensuse.org/request/show/668546 OBS-URL: https://build.opensuse.org/package/show/devel:openSUSE:Factory/shim?expand=0&rev=146 --- shim-install | 13 +++++++--- shim.changes | 6 +++++ shim.spec | 69 +++++++++++++++++++++++++++++++++++++--------------- 3 files changed, 65 insertions(+), 23 deletions(-) diff --git a/shim-install b/shim-install index aa90ff6..6e038a7 100644 --- a/shim-install +++ b/shim-install @@ -1,5 +1,6 @@ #! /bin/bash -e +arch=`uname -m` rootdir= bootdir= efidir= @@ -10,8 +11,9 @@ no_nvram=no removable=no clean=no sysconfdir="/etc" -libdir="/usr/lib64" -source_dir="$libdir/efi" +libdir="/usr/lib64" # Beware, this is arch dependent! +datadir="/usr/share" +source_dir="${data_dir}/efi/${arch}" grub_probe="/usr/sbin/grub2-probe" grub_mkrelpath="/usr/bin/grub2-mkrelpath" grub_install="/usr/sbin/grub2-install" @@ -22,7 +24,6 @@ update_boot=no def_grub_efi="${source_dir}/grub.efi" def_boot_efi= -arch=`uname -m` if [ x${arch} = xx86_64 ] ; then grub_install_target="x86_64-efi" def_boot_efi="bootx64.efi" @@ -34,6 +35,12 @@ else exit 1 fi +if [ ! -d "${source_dir}" -o ! -e "${def_grub_efi}" ] ; then + # for outdated packages fall back to previous behavior + source_dir="$libdir/efi" + def_grub_efi="${source_dir}/grub.efi" +fi + # Get GRUB_DISTRIBUTOR. if test -f "${sysconfdir}/default/grub" ; then . "${sysconfdir}/default/grub" diff --git a/shim.changes b/shim.changes index cac8034..3343abc 100644 --- a/shim.changes +++ b/shim.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Thu Jan 17 17:12:14 UTC 2019 - rw@suse.com + +- Move 'efi'-executables to '/usr/share/efi' (FATE#326960) + (preparing the move to 'noarch' for this package) + ------------------------------------------------------------------- Mon Jan 14 09:48:59 UTC 2019 - Gary Ching-Pang Lin diff --git a/shim.spec b/shim.spec index b02ee63..4a79752 100644 --- a/shim.spec +++ b/shim.spec @@ -19,6 +19,17 @@ %undefine _debuginfo_subpackages %undefine _build_create_debug +%ifarch aarch64 +%define grubplatform arm64-efi +%else +%define grubplatform %{_target_cpu}-efi +%endif +%if 0%{?suse_version} > 1500 +%define sysefibasedir %{_datadir}/efi +%define sysefidir %{sysefibasedir}/%{_target_cpu} +%else +%define sysefidir /usr/lib64/efi +%endif Name: shim Version: 15+git47 @@ -71,7 +82,7 @@ Requires: perl-Bootloader %endif BuildRoot: %{_tmppath}/%{name}-%{version}-build # For shim-install script -Requires: grub2-efi +Requires: grub2-%{grubplatform} ExclusiveArch: x86_64 aarch64 %description @@ -103,6 +114,7 @@ The source code of UEFI shim loader %if 0%{?is_opensuse} == 1 %patch100 -p1 %endif + %build # first, build MokManager and fallback as they don't depend on a # specific certificate @@ -211,12 +223,12 @@ find . \( -name "*.c" -o -name "*.h" \) -type f -exec cp --parents -a {} ../sour mv ../source . %install -export BRP_PESIGN_FILES='%{_libdir}/efi/shim*.efi %{_libdir}/efi/MokManager.efi %{_libdir}/efi/fallback.efi' -install -d %{buildroot}/%{_libdir}/efi -cp -a shim*.efi %{buildroot}/%{_libdir}/efi -install -m 444 shim-*.der %{buildroot}/%{_libdir}/efi -install -m 644 MokManager.efi %{buildroot}/%{_libdir}/efi/MokManager.efi -install -m 644 fallback.efi %{buildroot}/%{_libdir}/efi/fallback.efi +export BRP_PESIGN_FILES='%{sysefidir}/shim*.efi %{sysefidir}/MokManager.efi %{sysefidir}/fallback.efi' +install -d %{buildroot}/%{sysefidir} +cp -a shim*.efi %{buildroot}/%{sysefidir} +install -m 444 shim-*.der %{buildroot}/%{sysefidir} +install -m 644 MokManager.efi %{buildroot}/%{sysefidir}/MokManager.efi +install -m 644 fallback.efi %{buildroot}/%{sysefidir}/fallback.efi install -d %{buildroot}/%{_sbindir} install -m 755 %{SOURCE3} %{buildroot}/%{_sbindir}/ # install SUSE certificate @@ -225,12 +237,21 @@ for file in shim-*.der; do fpr=$(openssl x509 -sha1 -fingerprint -inform DER -noout -in $file | cut -c 18- | cut -d ":" -f 1,2,3,4 | sed 's/://g') install -m 644 $file %{buildroot}/%{_sysconfdir}/uefi/certs/${fpr}-shim.crt done +%if 0%{?suse_version} > 1500 && 0%{?suse_version} < 1600 +%ifarch x86_64 +if [ "%{sysefidir}" != "/usr/lib64/efi" ]; then + # provide compatibility sym-link for previous kiwi, etc. + install -d $RPM_BUILD_ROOT/usr/lib64/efi + ln -srf $RPM_BUILD_ROOT%{sysefidir}/*.efi $RPM_BUILD_ROOT/usr/lib64/efi/ +fi +%endif +%endif # install the debug symbols -install -d %{buildroot}/usr/lib/debug/%{_libdir}/efi -install -m 644 shim.debug %{buildroot}/usr/lib/debug/%{_libdir}/efi -install -m 644 MokManager.efi.debug %{buildroot}/usr/lib/debug/%{_libdir}/efi/MokManager.debug -install -m 644 fallback.efi.debug %{buildroot}/usr/lib/debug/%{_libdir}/efi/fallback.debug +install -d %{buildroot}/usr/lib/debug/%{sysefidir} +install -m 644 shim.debug %{buildroot}/usr/lib/debug/%{sysefidir} +install -m 644 MokManager.efi.debug %{buildroot}/usr/lib/debug/%{sysefidir}/MokManager.debug +install -m 644 fallback.efi.debug %{buildroot}/usr/lib/debug/%{sysefidir}/fallback.debug # install the debug source install -d %{buildroot}/usr/src/debug/%{name}-%{version} @@ -252,22 +273,30 @@ cp -r source/* %{buildroot}/usr/src/debug/%{name}-%{version} %files %defattr(-,root,root) %doc COPYRIGHT -%dir %{_libdir}/efi -%{_libdir}/efi/shim.efi -%{_libdir}/efi/shim-*.efi -%{_libdir}/efi/shim-*.der -%{_libdir}/efi/MokManager.efi -%{_libdir}/efi/fallback.efi +%dir %{?sysefibasedir} +%dir %{sysefidir} +%{sysefidir}/shim.efi +%{sysefidir}/shim-*.efi +%{sysefidir}/shim-*.der +%{sysefidir}/MokManager.efi +%{sysefidir}/fallback.efi %{_sbindir}/shim-install %dir %{_sysconfdir}/uefi/ %dir %{_sysconfdir}/uefi/certs/ %{_sysconfdir}/uefi/certs/*.crt +%if 0%{?suse_version} > 1500 && 0%{?suse_version} < 1600 +%ifarch x86_64 +# provide compatibility sym-link for previous kiwi, etc. +%dir /usr/lib64/efi +/usr/lib64/efi/*.efi +%endif +%endif %files -n shim-debuginfo %defattr(-,root,root,-) -/usr/lib/debug/%{_libdir}/efi/shim.debug -/usr/lib/debug/%{_libdir}/efi/MokManager.debug -/usr/lib/debug/%{_libdir}/efi/fallback.debug +/usr/lib/debug%{sysefidir}/shim.debug +/usr/lib/debug%{sysefidir}/MokManager.debug +/usr/lib/debug%{sysefidir}/fallback.debug %files -n shim-debugsource %defattr(-,root,root,-)