X-Git-Url: https://code.delx.au/refind/blobdiff_plain/32a568bce8db689a5428ebf2257bb04b9d66958e..736c70a6538be987692668a9570d01d00c43331f:/refind.spec diff --git a/refind.spec b/refind.spec index 4938cfc..429e22b 100644 --- a/refind.spec +++ b/refind.spec @@ -1,7 +1,8 @@ Summary: EFI boot manager software Name: refind -Version: 0.6.2 +Version: 0.6.6.6 Release: 1%{?dist} +Summary: EFI boot manager software License: GPLv3 URL: http://www.rodsbooks.com/refind/ Group: System Environment/Base @@ -9,6 +10,27 @@ Source: refind-src-%version.zip Requires: efibootmgr BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) +%define efiarch unknown +%ifarch i386 +%define efiarch ia32 +%endif +%ifarch i486 +%define efiarch ia32 +%endif +%ifarch i586 +%define efiarch ia32 +%endif +%ifarch i686 +%define efiarch ia32 +%endif +%ifarch x86_64 +%define efiarch x64 +%endif + +# Directory in which refind.key and refind.crt files are found for +# signing of binaries. If absent, binaries are copied unsigned. +%define keydir /mnt/refind + %description A graphical boot manager for EFI- and UEFI-based computers, such as all @@ -27,53 +49,106 @@ when paired with Linux kernels that provide EFI stub support. %setup -q %build -make gnuefi -make fs_gnuefi -rm filesystems/ext2*.efi +if [[ -d /usr/local/UDK2010 ]] ; then + make + make fs +else + make gnuefi + make fs_gnuefi +fi %install rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT/boot/efi/EFI/refind -cp -a refind/refind*.efi $RPM_BUILD_ROOT/boot/efi/EFI/refind/refind.efi -cp -a refind.conf-sample $RPM_BUILD_ROOT/boot/efi/EFI/refind/refind.conf -mkdir -p $RPM_BUILD_ROOT/boot/efi/EFI/refind/drivers/ -cp -a filesystems/*.efi $RPM_BUILD_ROOT/boot/efi/EFI/refind/drivers/ -cp -a icons $RPM_BUILD_ROOT/boot/efi/EFI/refind/ -cp -a keys $RPM_BUILD_ROOT/boot/efi/EFI/refind/ +mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/ + +# Copy the rEFInd binaries (rEFInd proper and drivers) to /usr/share/refind-%{version}, +# including signing the binaries if sbsign is installed and a %{keydir}/refind.key file +# is available +declare SBSign=`which sbsign 2> /dev/null` +if [[ -f %{keydir}/refind.key && -x $SBSign ]] ; then + $SBSign --key %{keydir}/refind.key --cert %{keydir}/refind.crt --output $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/refind_%{efiarch}.efi refind/refind_%{efiarch}.efi + mkdir -p $RPM_BUILD_ROOT/usr/share/refind-%{version}/refind/drivers_%{efiarch} + 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 +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}/ +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}/ + +# 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 NEWS.txt COPYING.txt LICENSE.txt README.txt CREDITS.txt $RPM_BUILD_ROOT/usr/share/doc/refind-%{version} -mkdir -p $RPM_BUILD_ROOT/usr/share/refind -cp -a install.sh $RPM_BUILD_ROOT/usr/share/refind/ +install -Dp -m0644 NEWS.txt COPYING.txt LICENSE.txt README.txt CREDITS.txt $RPM_BUILD_ROOT/usr/share/doc/refind-%{version} + +# 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 -cp -a mkrlconf.sh $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/ + +# Copy banners and fonts to /usr/share/refind-%{version} +cp -a banners $RPM_BUILD_ROOT/usr/share/refind-%{version}/ +cp -a fonts $RPM_BUILD_ROOT/usr/share/refind-%{version}/ %clean -rm -rf $RPM_BUILD_ROOT +#rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root -) -%doc /usr/share/doc/refind-%{version}/*.txt -%doc /usr/share/doc/refind-%{version}/Styles/styles.css -%doc /usr/share/doc/refind-%{version}/refind/* -/usr/share/refind/install.sh +%doc /usr/share/doc/refind-%{version} /usr/sbin/mkrlconf.sh -/boot/efi/EFI/refind/refind.efi -/boot/efi/EFI/refind/drivers/* -/boot/efi/EFI/refind/icons/* -/boot/efi/EFI/refind/keys/* -/boot/efi/EFI/refind/keys -/boot/efi/EFI/refind/icons -/boot/efi/EFI/refind/drivers -/boot/efi/EFI/refind -%config /boot/efi/EFI/refind/refind.conf +/usr/sbin/mvrefind.sh +/usr/share/refind-%{version} +/etc/refind.d/ %post -InstallDisk=`grep /boot/efi /etc/mtab | cut -d " " -f 1 | cut -c 1-8` -PartNum=`grep /boot/efi /etc/mtab | cut -d " " -f 1 | cut -c 9-10` -efibootmgr -c -d $InstallDisk -p $PartNum -l \\EFI\\refind\\refind.efi -L "rEFInd Boot Manager" -/usr/sbin/mkrlconf.sh +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 +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` +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 + if [[ -n $SBSign && -n $OpenSSL ]] ; then + ./install.sh --shim $ShimFile --localkeys --yes + else + ./install.sh --shim $ShimFile --yes + fi +else + ./install.sh --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. %changelog -* Sun Dec 30 2012 R Smith - 0.6.2 -- Created spec file for 0.6.2 release +* Sat Jan 26 2013 R Smith - 0.6.6 +- Created spec file for 0.6.6 release