3 # Script to prepare source code and binary distribution files of rEFInd.
4 # By Rod Smith, 3/11/2012
5 # Updated 11/8/2012 to do more things automatically
6 # Updated 12/6/2012 to sign binaries with the rEFInd MOK
8 # Usage: ./mkdistrib version [--nosign]
9 # where "version" is a version number
10 # MUST be run from an x86-64 system, on which the TianoCore build
11 # includes both X64 and IA32 build support ("TARGET_ARCH = IA32 X64"
12 # in Conf/target.txt). The MOK files must be available from a disk
13 # partition to be mounted via /etc/fstab at /mnt/refind.
16 if [[ $2 == "--nosign" ]] ; then
23 SBSign
=`which sbsign 2> /dev/null`
26 KeysInfo
=`df $KeysDir 2> /dev/null | grep $KeysDir`
28 if [[ ! -n $SBSign && $SignIt == 1 ]] ; then
29 echo "Can't find sbsign binary! Aborting!"
33 if [[ ! -n $KeysInfo && $SignIt == 1 ]] ; then
35 if [[ $?
-ne 0 ]] ; then
36 echo "Error mounting $KeysDir! Aborting!"
42 # From here on, if there's an error, abort immediately.
47 # Remove temporary files from the "debian" subdirectory
48 rm -rf debian
/refind debian
/*.log
50 # Convert man pages to HTML form
51 man2html docs
/man
/mkrlconf
.8 > docs
/refind
/mkrlconf.html
52 man2html docs
/man
/mvrefind
.8 > docs
/refind
/mvrefind.html
53 man2html docs
/man
/refind-install
.8 > docs
/refind
/refind-install.html
55 # Prepare a place and copy files there....
56 mkdir
-p ..
/snapshots
/$1/refind-
$1/icons
/licenses ..
/snapshots
/$1/refind-
$1/icons
/svg
57 cp --preserve=timestamps icons
/*png icons
/README ..
/snapshots
/$1/refind-
$1/icons
/
58 cp --preserve=timestamps
-r icons
/licenses
/* ..
/snapshots
/$1/refind-
$1/icons
/licenses
/
59 cp --preserve=timestamps
-r icons
/svg
/* ..
/snapshots
/$1/refind-
$1/icons
/svg
/
60 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 Make.aarch64 Makefile refind.conf-sample ..
/snapshots
/$1/refind-
$1
62 # Go there and prepare a souce code tarball....
64 rm -f refind-src-
$1.
tar.gz
65 tar cvf refind-src-
$1.
tar refind-
$1
66 gzip -9 refind-src-
$1.
tar
68 # Remove SVG files, since they aren't needed for binary packages....
69 rm -rf refind-
$1/icons
/svg
71 # Build the ARM64 binaries
75 mkdir
-p refind-bin-
$1/refind
/drivers_aa64
76 cp --preserve=timestamps drivers_aa64
/*_aa64.efi refind-bin-
$1/refind
/drivers_aa64
/
77 cp --preserve=timestamps filesystems
/LICENSE
*txt refind-bin-
$1/refind
/drivers_aa64
/
78 cp refind
/refind_aa64.efi refind-bin-
$1/refind
/refind_aa64.efi
79 cp refind
/refind_aa64.efi
$StartDir/
80 mkdir
-p refind-bin-
$1/refind
/tools_aa64
81 # Don't copy gptsync_aa64.efi because it won't build in cross-compile environment
82 # and because it's likely to be useless on ARM64.
84 # Build the IA32 binaries
88 mkdir
-p refind-bin-
$1/refind
/drivers_ia32
89 cp --preserve=timestamps drivers_ia32
/*_ia32.efi refind-bin-
$1/refind
/drivers_ia32
/
90 cp --preserve=timestamps filesystems
/LICENSE
*txt refind-bin-
$1/refind
/drivers_ia32
/
91 cp refind
/refind_ia32.efi refind-bin-
$1/refind
/refind_ia32.efi
92 cp refind
/refind_ia32.efi
$StartDir/
93 mkdir
-p refind-bin-
$1/refind
/tools_ia32
94 cp --preserve=timestamps gptsync
/gptsync_ia32.efi refind-bin-
$1/refind
/tools_ia32
/
96 # Build the X64 binaries
100 mkdir
-p refind-bin-
$1/refind
/drivers_x64
101 cp -a icons refind-bin-
$1/refind
/
102 if [[ $SignIt == 1 ]] ; then
103 for File
in `ls drivers_x64/*_x64.efi` ; do
104 $SBSign --key $KeysDir/refind.key
--cert $KeysDir/refind.crt
--output refind-bin-
$1/refind
/$File $File
107 cp --preserve=timestamps drivers_x64
/*_x64.efi refind-bin-
$1/refind
/drivers_x64
/
109 cp --preserve=timestamps filesystems
/LICENSE
*txt refind-bin-
$1/refind
/drivers_x64
/
110 cp --preserve=timestamps refind.conf-sample refind-bin-
$1/refind
/
111 if [[ $SignIt == 1 ]] ; then
112 $SBSign --key $KeysDir/refind.key
--cert $KeysDir/refind.crt
--output refind-bin-
$1/refind
/refind_x64.efi refind
/refind_x64.efi
114 cp refind
/refind_x64.efi refind-bin-
$1/refind
/refind_x64.efi
116 mkdir
-p refind-bin-
$1/refind
/tools_x64
117 if [[ $SignIt == 1 ]] ; then
118 $SBSign --key $KeysDir/refind.key
--cert $KeysDir/refind.crt
--output refind-bin-
$1/refind
/tools_x64
/gptsync_x64.efi gptsync
/gptsync_x64.efi
120 cp --preserve=timestamps gptsync
/gptsync_x64.efi refind-bin-
$1/refind
/tools_x64
/
122 cp refind-bin-
$1/refind
/refind_x64.efi
$StartDir
123 cp -a docs keys banners fonts COPYING.txt LICENSE.txt README.txt CREDITS.txt NEWS.txt refind-install mkrlconf mvrefind mountesp refind-bin-
$1
125 # Prepare the final .zip file
126 zip -9r ..
/refind-bin-
$1.
zip refind-bin-
$1
128 # Prepare a variant with the x86-64 version built with GNU-EFI....
131 if [[ $SignIt == 1 ]] ; then
132 $SBSign --key $KeysDir/refind.key
--cert $KeysDir/refind.crt
--output refind-bin-
$1/refind
/refind_x64.efi refind
/refind_x64.efi
134 cp refind
/refind_x64.efi refind-bin-
$1/refind
/refind_x64.efi
136 zip -9r ..
/refind-bin-gnuefi-
$1.
zip refind-bin-
$1
142 # Prepare NATIVE Debian package files
143 tar xvfz refind-src-
$1.
tar.gz
144 ln -s refind-src-
$1.
tar.gz refind_
$1.orig.
tar.gz
146 debuild
-S -sa -rfakeroot -k'Rod Smith <rodsmith@rodsbooks.com>'
147 debuild
-sa -rfakeroot -k'Rod Smith <rodsmith@rodsbooks.com>'
149 #rm refind_$1.orig.tar.gz
154 # Prepare the RPM & alien-built Debian package files
155 cp refind-src-
$1.
tar.gz ~
/rpmbuild
/SOURCES
/
156 rpmbuild
-ba $StartDir/refind.spec
157 mv ~
/rpmbuild
/RPMS
/*/refind-
$1* .
/
158 mv ~
/rpmbuild
/SRPMS
/refind-
$1* .
/
159 sudo alien
--to-deb -k -c refind-
$1*x86_64.rpm
160 sudo chown rodsmith
: refind
*deb
161 rm ~
/rpmbuild
/SOURCES
/refind-src-
*
164 if [[ $SignIt == 1 ]] ; then