]> code.delx.au - refind/blobdiff - mkdistrib
Improved submenu and information menu appearance over a full-screen
[refind] / mkdistrib
index bc24003b9e3f76eef828cfc77985bb5aecd84f3b..af3ed1dba2ac26c608ba2644af39164c7d4490b0 100755 (executable)
--- a/mkdistrib
+++ b/mkdistrib
 #
 # Script to prepare source code and binary distribution files of rEFInd.
 # By Rod Smith, 3/11/2012
+# Updated 11/8/2012 to do more things automatically
+# Updated 12/6/2012 to sign binaries with the rEFInd MOK
 #
-# Usage: ./mkdistrib version
+# Usage: ./mkdistrib version [--nosign]
 # where "version" is a version number
-# MUST be run from an x86-64 system, on which the current IA32 build
-# (refind_ia32.efi) is already present in the same directory as this script
+# MUST be run from an x86-64 system, on which the TianoCore build
+# includes both X64 and IA32 build support ("TARGET_ARCH = IA32 X64"
+# in Conf/target.txt). The MOK files must be available from a disk
+# partition to be mounted via /etc/fstab at /mnt/refind.
 
 
+if [[ $2 == "--nosign" ]] ; then
+   SignIt=0
+else
+   SignIt=1
+fi
+
 StartDir=`pwd`
+SBSign=`which sbsign 2> /dev/null`
+KeysDir=/mnt/refind
+
+KeysInfo=`df $KeysDir 2> /dev/null | grep $KeysDir`
+
+if [[ ! -n $SBSign && $SignIt == 1 ]] ; then
+   echo "Can't find sbsign binary! Aborting!"
+   exit 1
+fi
+
+if [[ ! -n $KeysInfo && $SignIt == 1 ]] ; then
+   mount /mnt/refind
+   if [[ $? -ne 0 ]] ; then
+      echo "Error mounting $KeysDir! Aborting!"
+      echo ""
+      exit 1
+   fi
+fi
+
+# From here on, if there's an error, abort immediately.
+set -e
 
 make clean
 
 # Prepare a place and copy files there....
 mkdir -p ../snapshots/$1/refind-$1/icons
-cp --preserve=timestamps icons/*icns ../snapshots/$1/refind-$1/icons/
-cp -a docs images include EfiLib libeg refind filesystems install.sh CREDITS.txt NEWS.txt BUILDING.txt COPYING.txt LICENSE.txt README.txt refind.inf Make.tiano Make.common Makefile refind.conf-sample ../snapshots/$1/refind-$1
+cp --preserve=timestamps icons/*.icns icons/*.png ../snapshots/$1/refind-$1/icons/
+cp -a docs images keys include EfiLib libeg mok refind filesystems refind.spec install.sh mkrlconf.sh mvrefind.sh CREDITS.txt NEWS.txt BUILDING.txt COPYING.txt LICENSE.txt README.txt refind.inf Make.tiano Make.common Makefile refind.conf-sample ../snapshots/$1/refind-$1
 
 # Go there and prepare a souce code zip file....
 cd ../snapshots/$1/
 zip -9r refind-src-$1.zip refind-$1
 
-# Build the source code into binaries
+# Build the IA32 binaries
 cd refind-$1
-make
+ARCH=ia32 make -j4
+ARCH=ia32 make fs
+mkdir -p refind-bin-$1/refind/drivers_ia32
+cp --preserve=timestamps drivers_ia32/*_ia32.efi refind-bin-$1/refind/drivers_ia32/
+cp --preserve=timestamps filesystems/LICENSE*txt refind-bin-$1/refind/drivers_ia32/
+cp refind/refind_ia32.efi refind-bin-$1/refind/refind_ia32.efi
+cp refind/refind_ia32.efi $StartDir/
+
+# Build the X64 binaries
+make clean
+make -j4
 make fs
 mkdir -p refind-bin-$1/refind/drivers_x64
-mkdir -p refind-bin-$1/refind/drivers_ia32
 cp -a icons refind-bin-$1/refind/
-cp --preserve=timestamps drivers/*_x64.efi refind-bin-$1/refind/drivers_x64/
+if [[ $SignIt == 1 ]] ; then
+   for File in `ls drivers_x64/*_x64.efi` ; do
+      $SBSign --key $KeysDir/refind.key --cert $KeysDir/refind.crt --output refind-bin-$1/refind/$File $File
+   done
+else
+   cp --preserve=timestamps drivers_x64/*_x64.efi refind-bin-$1/refind/drivers_x64/
+fi
 cp --preserve=timestamps filesystems/LICENSE*txt refind-bin-$1/refind/drivers_x64/
-cp --preserve=timestamps filesystems/LICENSE*txt refind-bin-$1/refind/drivers_ia32/
 cp --preserve=timestamps refind.conf-sample refind-bin-$1/refind/
-cp refind/refind_x64.efi refind-bin-$1/refind/refind_x64.efi
-cp $StartDir/refind_ia32.efi refind-bin-$1/refind/
-cp $StartDir/drivers/*_ia32.efi refind-bin-$1/refind/drivers_ia32/
-cp -a COPYING.txt LICENSE.txt README.txt docs CREDITS.txt install.sh refind-bin-$1
+if [[ $SignIt == 1 ]] ; then
+   $SBSign --key $KeysDir/refind.key --cert $KeysDir/refind.crt --output refind-bin-$1/refind/refind_x64.efi refind/refind_x64.efi
+else
+   cp refind/refind_x64.efi refind-bin-$1/refind/refind_x64.efi
+fi
+cp refind-bin-$1/refind/refind_x64.efi $StartDir
+cp -a docs keys COPYING.txt LICENSE.txt README.txt CREDITS.txt NEWS.txt install.sh mkrlconf.sh mvrefind.sh refind-bin-$1
+
+# Prepare the final .zip file
 zip -9r ../refind-bin-$1.zip refind-bin-$1
 cd ..
 rm -r refind-$1
+
+# Prepare the RPM & Debian package files
+cp refind-src-$1.zip ~/rpmbuild/SOURCES/
+rpmbuild -ba $StartDir/refind.spec
+mv ~/rpmbuild/RPMS/*/refind-$1* ./
+mv ~/rpmbuild/SRPMS/refind-$1* ./
+sudo alien --to-deb -k -c refind-$1*x86_64.rpm
+sudo chown rodsmith: refind*deb
+rm ~/rpmbuild/SOURCES/refind-src-$1.zip
+
+# Clean up
+if [[ $SignIt == 1 ]] ; then
+   umount $KeysDir
+fi
+
+# Finish
 cd $StartDir