X-Git-Url: https://code.delx.au/refind/blobdiff_plain/e623f368c6089696dc99c507834a668fee159fed..c63e9bd427f945b881d337b9fd5d3ff8612f103f:/refind.spec diff --git a/refind.spec b/refind.spec index 4a3afef..c3849cd 100644 --- a/refind.spec +++ b/refind.spec @@ -1,12 +1,12 @@ Summary: EFI boot manager software Name: refind -Version: 0.6.6 +Version: 0.10.3 Release: 1%{?dist} Summary: EFI boot manager software License: GPLv3 URL: http://www.rodsbooks.com/refind/ Group: System Environment/Base -Source: refind-src-%version.zip +Source: refind-src-%version.tar.gz Requires: efibootmgr BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) @@ -36,20 +36,21 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) A graphical boot manager for EFI- and UEFI-based computers, such as all Intel-based Macs and recent (most 2011 and later) PCs. rEFInd presents a boot menu showing all the EFI boot loaders on the EFI-accessible -partitions, and optionally BIOS-bootable partitions on Macs. EFI-compatbile -OSes, including Linux, provide boot loaders that rEFInd can detect and -launch. rEFInd can launch Linux EFI boot loaders such as ELILO, GRUB -Legacy, GRUB 2, and 3.3.0 and later kernels with EFI stub support. EFI -filesystem drivers for ext2/3/4fs, ReiserFS, HFS+, and ISO-9660 enable -rEFInd to read boot loaders from these filesystems, too. rEFInd's ability -to detect boot loaders at runtime makes it very easy to use, particularly -when paired with Linux kernels that provide EFI stub support. +partitions, and optionally BIOS-bootable partitions on Macs and BIOS boot +entries on UEFI PCs with CSMs. EFI-compatible OSes, including Linux, +provide boot loaders that rEFInd can detect and launch. rEFInd can launch +Linux EFI boot loaders such as ELILO, GRUB Legacy, GRUB 2, and 3.3.0 and +later kernels with EFI stub support. EFI filesystem drivers for ext2/3/4fs, +ReiserFS, Btrfs, NTFS, HFS+, and ISO-9660 enable rEFInd to read boot +loaders from these filesystems, too. rEFInd's ability to detect boot +loaders at runtime makes it very easy to use, particularly when paired with +Linux kernels that provide EFI stub support. %prep %setup -q %build -if [[ -d /usr/local/UDK2010 ]] ; then +if [[ -d /usr/local/UDK2014 ]] ; then make make fs else @@ -71,30 +72,45 @@ if [[ -f %{keydir}/refind.key && -x $SBSign ]] ; then for File in `ls drivers_%{efiarch}/*_x64.efi` ; do $SBSign --key %{keydir}/refind.key --cert %{keydir}/refind.crt --output $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/$File $File done + mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch} + $SBSign --key %{keydir}/refind.key --cert %{keydir}/refind.crt --output $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch}/gptsync_%{efiarch}.efi gptsync/gptsync_%{efiarch}.efi else install -Dp -m0644 refind/refind*.efi $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/ mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/drivers_%{efiarch} cp -a drivers_%{efiarch}/* $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/drivers_%{efiarch}/ + mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch} + install -Dp -m0644 gptsync/gptsync_%{efiarch}.efi $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/tools_%{efiarch}/gptsync_%{efiarch}.efi fi # Copy configuration and support files to /usr/share/refind-%{version} install -Dp -m0644 refind.conf-sample $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/ cp -a icons $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/ -install -Dp -m0755 install.sh $RPM_BUILD_ROOT/usr/share/refind-%{version}/ +rm -rf $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/icons/svg +install -Dp -m0755 refind-install $RPM_BUILD_ROOT/usr/share/refind-%{version}/ # Copy documentation to /usr/share/doc/refind-%{version} mkdir -p $RPM_BUILD_ROOT/usr/share/doc/refind-%{version} -cp -a docs/* $RPM_BUILD_ROOT/usr/share/doc/refind-%{version}/ +cp -a docs/Styles $RPM_BUILD_ROOT/usr/share/doc/refind-%{version}/ +cp -a docs/refind $RPM_BUILD_ROOT/usr/share/doc/refind-%{version}/ install -Dp -m0644 NEWS.txt COPYING.txt LICENSE.txt README.txt CREDITS.txt $RPM_BUILD_ROOT/usr/share/doc/refind-%{version} +# Copy man pages to /usr/share/man/man8 +mkdir -p $RPM_BUILD_ROOT/usr/share/man/man8 +install -Dp -m0644 docs/man/mvrefind.8 $RPM_BUILD_ROOT/usr/share/man/man8 +install -Dp -m0644 docs/man/mkrlconf.8 $RPM_BUILD_ROOT/usr/share/man/man8 +install -Dp -m0644 docs/man/refind-install.8 $RPM_BUILD_ROOT/usr/share/man/man8 +install -Dp -m0644 docs/man/refind-mkdefault.8 $RPM_BUILD_ROOT/usr/share/man/man8 + # Copy keys to /etc/refind.d/keys mkdir -p $RPM_BUILD_ROOT/etc/refind.d/keys install -Dp -m0644 keys/* $RPM_BUILD_ROOT/etc/refind.d/keys # Copy scripts to /usr/sbin mkdir -p $RPM_BUILD_ROOT/usr/sbin -install -Dp -m0755 mkrlconf.sh $RPM_BUILD_ROOT/usr/sbin/ -install -Dp -m0755 mvrefind.sh $RPM_BUILD_ROOT/usr/sbin/ +install -Dp -m0755 mkrlconf $RPM_BUILD_ROOT/usr/sbin/ +install -Dp -m0755 mvrefind $RPM_BUILD_ROOT/usr/sbin/ +install -Dp -m0755 refind-mkdefault $RPM_BUILD_ROOT/usr/sbin/ +ln -sr $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind-install $RPM_BUILD_ROOT/usr/sbin # Copy banners and fonts to /usr/share/refind-%{version} cp -a banners $RPM_BUILD_ROOT/usr/share/refind-%{version}/ @@ -106,8 +122,11 @@ cp -a fonts $RPM_BUILD_ROOT/usr/share/refind-%{version}/ %files %defattr(-,root,root -) %doc /usr/share/doc/refind-%{version} -/usr/sbin/mkrlconf.sh -/usr/sbin/mvrefind.sh +%doc /usr/share/man/man8 +/usr/sbin/mkrlconf +/usr/sbin/mvrefind +/usr/sbin/refind-install +/usr/sbin/refind-mkdefault /usr/share/refind-%{version} /etc/refind.d/ @@ -116,39 +135,81 @@ PATH=$PATH:/usr/local/bin # Remove any existing NVRAM entry for rEFInd, to avoid creating a duplicate. ExistingEntry=`efibootmgr | grep "rEFInd Boot Manager" | cut -c 5-8` if [[ -n $ExistingEntry ]] ; then - efibootmgr --bootnum $ExistingEntry --delete-bootnum + efibootmgr --bootnum $ExistingEntry --delete-bootnum &> /dev/null fi cd /usr/share/refind-%{version} -declare VarFile=`ls -d /sys/firmware/efi/vars/SecureBoot* 2> /dev/null` -declare ShimFile=`find /boot -name shim\.efi 2> /dev/null | head -n 1` +if [[ -f /sys/firmware/efi/vars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c/data ]] ; then + IsSecureBoot=`od -An -t u1 /sys/firmware/efi/vars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c/data | tr -d '[[:space:]]'` +else + IsSecureBoot="0" +fi +# Note: Two find operations for ShimFile favors shim over PreLoader -- if both are +# present, the script uses shim rather than PreLoader. +declare ShimFile=`find /boot -name shim\.efi -o -name shimx64\.efi -o -name PreLoader\.efi 2> /dev/null | head -n 1` +if [[ ! -n $ShimFile ]] ; then + declare ShimFile=`find /boot -name PreLoader\.efi 2> /dev/null | head -n 1` +fi declare SBSign=`which sbsign 2> /dev/null` declare OpenSSL=`which openssl 2> /dev/null` # Run the rEFInd installation script. Do so with the --shim option # if Secure Boot mode is suspected and if a shim program can be -# found, or without it if not. If a shim installation is attempted -# and the sbsign and openssl programs can be found, do the install -# using a local signing key. Note that this option is undesirable -# for a distribution, since it would then require the user to -# enroll an extra MOK. I'm including it here because I'm NOT a -# distribution maintainer, and I want to encourage users to use -# their own local keys. -if [[ -n $VarFile && -n $ShimFile ]] ; then +# found, or without it if not. If the sbsign and openssl programs +# can be found, do the install using a local signing key. Note that +# this option is undesirable for a distribution, since it would +# then require the user to enroll an extra MOK. I'm including it +# here because I'm NOT a distribution maintainer, and I want to +# encourage users to use their own local keys. +if [[ $IsSecureBoot == "1" && -n $ShimFile ]] ; then if [[ -n $SBSign && -n $OpenSSL ]] ; then - ./install.sh --shim $ShimFile --localkeys --yes + ./refind-install --shim $ShimFile --localkeys --yes else - ./install.sh --shim $ShimFile --yes + ./refind-install --shim $ShimFile --yes fi else - ./install.sh --yes + ./refind-install --yes fi # CAUTION: Don't create a %preun or a %postun script that deletes the files -# installed by install.sh, since that script will run after an update, thus -# wiping out the just-updated files. +# installed by refind-install, since that script will run after an update, +# thus wiping out the just-updated files. %changelog -* Sat Jan 26 2013 R Smith - 0.6.6 -- Created spec file for 0.6.6 release +* Sun Apr 24 2016 R Smith - 0.10.3 +- Updated spec file for 0.10.3 +* Tue Jan 26 2016 R Smith - 0.10.2 +- Updated spec file for 0.10.2 +* Sat Dec 12 2015 R Smith - 0.10.1 +- Updated spec file for 0.10.1 +* Sun Nov 8 2015 R Smith - 0.10.0 +- Updated spec file for 0.10.0 +* Sat Sep 19 2015 R Smith - 0.9.2 +- Updated spec file for 0.9.2 +* Sun Sep 13 2015 R Smith - 0.9.1 +- Updated spec file for 0.9.1 +* Sun Jul 26 2015 R Smith - 0.9.0 +- Updated spec file for 0.9.0 +* Sun Mar 1 2015 R Smith - 0.8.7 +- Updated spec file for 0.8.7 +* Sun Feb 8 2015 R Smith - 0.8.6 +- Updated spec file for 0.8.6 +* Sun Feb 1 2015 R Smith - 0.8.5 +- Updated spec file for 0.8.5 +* Mon Dec 8 2014 R Smith - 0.8.4 +- Updated spec file for 0.8.4 +* Sun Jul 6 2014 R Smith - 0.8.3 +- Updated spec file for 0.8.3 +* Sun Jun 8 2014 R Smith - 0.8.2 +- Updated spec file for 0.8.2 +* Thu May 15 2014 R Smith - 0.8.1 +- Updated spec file for 0.8.1 +* Sun May 4 2014 R Smith - 0.8.0 +- Updated spec file for 0.8.0 +* Sun Apr 20 2014 R Smith - 0.7.9 +- Updated spec file for 0.7.9 +* Sun Mar 9 2014 R Smith - 0.7.8 +- Updated spec file for 0.7.8 +* Fri Jan 3 2014 R Smith - 0.7.7 +- Created spec file for 0.7.7 release