X-Git-Url: https://code.delx.au/refind/blobdiff_plain/5664ed3ea160466286aa2c5711f8094b0ec7003b..0240b648949d78c71d8da6ce5ba019a57f974dee:/mkdistrib diff --git a/mkdistrib b/mkdistrib index 73232af..18b3395 100755 --- a/mkdistrib +++ b/mkdistrib @@ -2,36 +2,143 @@ # # 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 +# Remove temporary files from the "debian" subdirectory +rm -rf debian/refind debian/*.log + +# Convert man pages to HTML form +man2html docs/man/mkrlconf.8 > docs/refind/mkrlconf.html +man2html docs/man/mvrefind.8 > docs/refind/mvrefind.html +man2html docs/man/refind-install.8 > docs/refind/refind-install.html + # 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 libeg refind CREDITS.txt NEWS.txt BUILDING.txt COPYING.txt LICENSE.txt README.txt Make.common Makefile refind.conf-sample ../snapshots/$1/refind-$1 +mkdir -p ../snapshots/$1/refind-$1/icons/licenses ../snapshots/$1/refind-$1/icons/svg +cp --preserve=timestamps icons/*png icons/README ../snapshots/$1/refind-$1/icons/ +cp --preserve=timestamps -r icons/licenses/* ../snapshots/$1/refind-$1/icons/licenses/ +cp --preserve=timestamps -r icons/svg/* ../snapshots/$1/refind-$1/icons/svg/ +cp -a debian docs images keys fonts banners include EfiLib libeg mok net refind filesystems gptsync refind.spec refind-install mkrlconf mvrefind mountesp 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 are prepare a souce code zip file.... +# Go there and prepare a souce code tarball.... cd ../snapshots/$1/ -zip -9r refind-src-$1.zip refind-$1 +rm -f refind-src-$1.tar.gz +tar cvf refind-src-$1.tar refind-$1 +gzip -9 refind-src-$1.tar -# Build the source code into a binary +# Remove SVG files, since they aren't needed for binary packages.... +rm -rf refind-$1/icons/svg + +# Build the IA32 binaries cd refind-$1 -make -mkdir -p refind-bin-$1/refind +ARCH=ia32 make -j1 +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/ +mkdir -p refind-bin-$1/refind/tools_ia32 +cp --preserve=timestamps gptsync/gptsync_ia32.efi refind-bin-$1/refind/tools_ia32/ + +# Build the X64 binaries +make clean +make -j1 +make fs +mkdir -p refind-bin-$1/refind/drivers_x64 cp -a icons refind-bin-$1/refind/ +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 refind.conf-sample refind-bin-$1/refind/ -cp refind/refind.efi refind-bin-$1/refind/refind_x64.efi -cp $StartDir/refind_ia32.efi refind-bin-$1/refind/ -cp -a COPYING.txt LICENSE.txt README.txt docs CREDITS.txt 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 +mkdir -p refind-bin-$1/refind/tools_x64 +if [[ $SignIt == 1 ]] ; then + $SBSign --key $KeysDir/refind.key --cert $KeysDir/refind.crt --output refind-bin-$1/refind/tools_x64/gptsync_x64.efi gptsync/gptsync_x64.efi +else + cp --preserve=timestamps gptsync/gptsync_x64.efi refind-bin-$1/refind/tools_x64/ +fi +cp refind-bin-$1/refind/refind_x64.efi $StartDir +cp -a docs keys banners fonts COPYING.txt LICENSE.txt README.txt CREDITS.txt NEWS.txt refind-install mkrlconf mvrefind mountesp refind-bin-$1 + +# Prepare the final .zip file zip -9r ../refind-bin-$1.zip refind-bin-$1 + +# Prepare a variant with the x86-64 version built with GNU-EFI.... +make clean +make -j1 gnuefi +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 +zip -9r ../refind-bin-gnuefi-$1.zip refind-bin-$1 + +# Clean up.... cd .. rm -r refind-$1 + +# Prepare the RPM & Debian package files +cp refind-src-$1.tar.gz ~/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.tar.gz + +# Clean up +if [[ $SignIt == 1 ]] ; then + umount $KeysDir +fi + +# Finish cd $StartDir