X-Git-Url: https://code.delx.au/refind/blobdiff_plain/fe53e20674a0f3dff46aa42d5676a5304dac92bf..7b006609c81e23ca1c7597776b7ea485932bbe0c:/mkdistrib diff --git a/mkdistrib b/mkdistrib index bc24003..2f894ed 100755 --- a/mkdistrib +++ b/mkdistrib @@ -2,14 +2,40 @@ # # 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 # 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. StartDir=`pwd` +SBSign=`which sbsign 2> /dev/null` +KeysDir=/mnt/refind + +KeysInfo=`df $KeysDir 2> /dev/null | grep $KeysDir` + +if [[ ! -n $SBSign ]] ; then + echo "Can't find sbsign binary! Aborting!" + exit 1 +fi + +if [[ ! -n $KeysInfo ]] ; then + mount /mnt/refind +fi + +if [[ $? -ne 0 ]] ; then + echo "Error mounting $KeysDir! Aborting!" + echo "" + exit 1 +fi + +# From here on, if there's an error, abort immediately. +set -e make clean @@ -17,27 +43,42 @@ make clean 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 $KeysDir/refind.cer $KeysDir/refind.crt ../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 +ARCH=ia32 make +ARCH=ia32 make fs +mkdir -p refind-bin-$1/refind/drivers_ia32 +cp --preserve=timestamps drivers/*_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 make fs -mkdir -p refind-bin-$1/refind/drivers_x64 -mkdir -p refind-bin-$1/refind/drivers_ia32 +mkdir -p refind-bin-$1/refind/drivers cp -a icons refind-bin-$1/refind/ -cp --preserve=timestamps drivers/*_x64.efi refind-bin-$1/refind/drivers_x64/ +for File in `ls drivers/*_x64.efi` ; do + $SBSign --key $KeysDir/refind.key --cert $KeysDir/refind.crt --output refind-bin-$1/refind/$File $File +done +mv refind-bin-$1/refind/drivers refind-bin-$1/refind/drivers_x64 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/ +$SBSign --key $KeysDir/refind.key --cert $KeysDir/refind.crt --output refind-bin-$1/refind/refind_x64.efi refind/refind_x64.efi +cp refind-bin-$1/refind/refind_x64.efi $StartDir cp -a COPYING.txt LICENSE.txt README.txt docs CREDITS.txt install.sh refind-bin-$1 + +# Prepare the final .zip file and clean up +cp $KeysDir/refind.cer $KeysDir/refind.crt refind-bin-$1/ zip -9r ../refind-bin-$1.zip refind-bin-$1 cd .. rm -r refind-$1 cd $StartDir +umount $KeysDir \ No newline at end of file