2 # Portions Copyright (c) 2003, 2006 Apple Computer, Inc. All rights reserved.
5 echo Usage
: buildpkg binary-dir
7 echo 'Usage: buildpkg [-firstpass] binary-dir'
8 echo ' (customize pkgroot)'
9 echo ' buildpkg [-secondpass]'
15 if [ "$1" = "-firstpass" ]; then
18 elif [ "$1" = "-secondpass" ]; then
23 BINDEST
=`cd $1 && pwd`
26 RESSRC
=`cd $RESSRC && pwd`
27 majorvers
=`uname -r | sed 's/\..*//'`
28 if [ $majorvers -eq 7 ]; then
31 if [ $majorvers -eq 8 ]; then
34 if [ $majorvers -eq 9 ]; then
37 if [ $majorvers -eq 10 ]; then
40 if [ $majorvers -eq 11 ]; then
43 if [ $majorvers -eq 12 ]; then
44 RELNAME
="MountainLion"
46 if [ $majorvers -eq 13 ]; then
49 if [ $majorvers -eq 14 ]; then
52 if [ $majorvers -eq 15 ]; then
57 PKGROOT
=$CURDIR/pkgroot
59 DPKGROOT
=$CURDIR/dpkgroot
60 DPKGRES
=$CURDIR/dpkgres
62 if [ -e "/Developer/usr/bin/packagemaker" ]; then
63 PACKAGEMAKER
="/Developer/usr/bin/packagemaker"
65 while IFS
= read -d $
'\0' -r file ; do
66 if [ -e "$file/Contents/MacOS/PackageMaker" ]; then
67 PACKAGEMAKER
="$file/Contents/MacOS/PackageMaker"
69 done < <(mdfind
-0 "(kMDItemCFBundleIdentifier == 'com.apple.PackageMaker')")
71 if [ -z "$PACKAGEMAKER" ]; then
72 echo "packagemaker not found"
76 if [ $firstpass = yes ]; then
77 if [ -x /usr
/bin
/curl
]; then
78 /usr
/bin
/curl
-f -O http
://dl.central.org
/dl
/cellservdb
/CellServDB
81 if [ ! -f CellServDB
]; then
82 echo "A CellServDB file must be placed in the working directory"
85 if grep -q 'GCO Public CellServDB' CellServDB
; then
88 echo "A proper CellServDB file must be placed in the working directory"
92 FILES
="ReadMe.rtf.$majorvers License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl 2.0.txt"
94 if [ ! -f $RESSRC/$f ]; then
95 echo "file missing: " $RESSRC/$f
100 echo "Correct above errors; then retry"
103 if [ ! -f $BINDEST/bin
/translate_et
]; then
106 if [ ! -f $BINDEST/root.client
/usr
/vice
/etc
/afs.kext
/Contents
/MacOS
/afs
]; then
110 echo $BINDEST " is not a valid binary dir. it should be the result of"
120 mkdir
-p $PKGROOT/Library
121 mkdir
-p $PKGROOT/Library
/PreferencePanes
122 mkdir
-p $PKGROOT/Library
/Security
/SecurityAgentPlugins
123 chown root
${SEP}admin
$PKGROOT
124 chmod 755 $PKGROOT $PKGROOT/Library
$PKGROOT/Library
/PreferencePanes
$PKGROOT/Library
/Security
/SecurityAgentPlugins
125 (cd $BINDEST/tools
&& pax
-rw OpenAFS.prefPane
$PKGROOT/Library
/PreferencePanes
)
126 (cd $BINDEST/tools
&& pax
-rw aklog.bundle
$PKGROOT/Library
/Security
/SecurityAgentPlugins
)
127 mkdir
-p $PKGROOT/Library
/OpenAFS
/Tools
128 (cd $BINDEST && pax
-rw * $PKGROOT/Library
/OpenAFS
/Tools
)
130 mkdir
-p $PKGROOT/Library
/LaunchDaemons
131 chmod -R o-w
$PKGROOT/Library
132 chmod -R g-w
$PKGROOT/Library
133 cp openafs.launchd.plist
$PKGROOT/Library
/LaunchDaemons
/org.openafs.filesystems.afs.plist
134 chmod 644 $PKGROOT/Library
/LaunchDaemons
/org.openafs.filesystems.afs.plist
135 chown root
${SEP}admin
$PKGROOT/Library
136 chown
-R root
${SEP}wheel
$PKGROOT/Library
/LaunchDaemons
137 chown
-R root
${SEP}wheel
$PKGROOT/Library
/OpenAFS
/Tools
138 chmod -R og-w
$PKGROOT/Library
/OpenAFS
/Tools
140 mkdir
-p $PKGROOT/private
/var
/db
/openafs
/cache
141 mkdir
-p $PKGROOT/private
/var
/db
/openafs
/etc
/config
142 cp openafs.launchdaemon
$PKGROOT/private
/var
/db
/openafs
/etc
/launchafs.sh
143 chmod 755 $PKGROOT/private
/var
/db
/openafs
/etc
/launchafs.sh
144 cp $CURDIR/CellServDB
$PKGROOT/private
/var
/db
/openafs
/etc
/CellServDB.master
145 echo grand.central.org
> $PKGROOT/private
/var
/db
/openafs
/etc
/ThisCell.sample
146 if [ $majorvers -ge 7 ]; then
147 echo /afs
:/var
/db
/openafs
/cache
:100000 > $PKGROOT/private
/var
/db
/openafs
/etc
/cacheinfo.sample
148 cp -RP $PKGROOT/Library
/OpenAFS
/Tools
/etc
/afssettings
$PKGROOT/private
/var
/db
/openafs
/etc
/config
149 cp settings.plist
$PKGROOT/private
/var
/db
/openafs
/etc
/config
/settings.plist.orig
151 echo /Network
/afs
:/var
/db
/openafs
/cache
:30000 > $PKGROOT/private
/var
/db
/openafs
/etc
/cacheinfo.sample
153 cp afs.conf
$PKGROOT/private
/var
/db
/openafs
/etc
/config
/afs.conf.sample
154 cp krb5-weak.conf
$PKGROOT/private
/var
/db
/openafs
/etc
/krb5-weak.conf
156 cp decode-panic
$PKGROOT/Library
/OpenAFS
/Tools
/tools
157 chmod a
+x
$PKGROOT/Library
/OpenAFS
/Tools
/tools
/decode-panic
159 if [ $majorvers -ge 9 ]; then
162 mkdir
-p $DPKGROOT/Library
/OpenAFS
/Debug
163 mv $PKGROOT/Library
/OpenAFS
/Tools
/root.client
/usr
/vice
/etc
/afs.kext.dSYM
$DPKGROOT/Library
/OpenAFS
/Debug
164 cp -RP $PKGROOT/Library
/OpenAFS
/Tools
/root.client
/usr
/vice
/etc
/afs.kext
$DPKGROOT/Library
/OpenAFS
/Debug
165 chown
-R root
${SEP}wheel
$DPKGROOT/Library
/OpenAFS
/Debug
166 chmod -R og-w
$DPKGROOT/Library
/OpenAFS
/Debug
169 strip
-X -S $PKGROOT/Library
/OpenAFS
/Tools
/root.client
/usr
/vice
/etc
/afs.kext
/Contents
/MacOS
/afs
171 cp -RP $PKGROOT/Library
/OpenAFS
/Tools
/root.client
/usr
/vice
/etc
/afs.kext
$PKGROOT/private
/var
/db
/openafs
/etc
172 cp -RP $PKGROOT/Library
/OpenAFS
/Tools
/root.client
/usr
/vice
/etc
/C
$PKGROOT/private
/var
/db
/openafs
/etc
174 chown
-R root
${SEP}wheel
$PKGROOT/private
175 chmod -R og-w
$PKGROOT/private
176 chmod og-rx
$PKGROOT/private
/var
/db
/openafs
/cache
178 mkdir
-p $PKGROOT/usr
/bin
$PKGROOT/usr
/lib
$PKGROOT/usr
/sbin
$PKGROOT/usr
/share
/man
/man1
$PKGROOT/usr
/share
/man
/man5
$PKGROOT/usr
/share
/man
/man8
180 BINLIST
="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
182 SHLIBLIST
="libafsauthent.dylib libafsauthent.dylib.1 libafsauthent.dylib.1.1 libafshcrypto.dylib libafshcrypto.dylib.1 libafshcrypto.dylib.1.1 libafsrpc.dylib libafsrpc.dylib.1 libafsrpc.dylib.1.4 libkopenafs.dylib libkopenafs.dylib.1 libkopenafs.dylib.1.1 librokenafs.dylib librokenafs.dylib.1 librokenafs.dylib.1.1"
184 # Should these be linked into /usr too?
185 OTHER_BINLIST
="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
186 OTHER_ETCLIST
="rxdebug"
188 for f
in $BINLIST; do
189 ln -s ..
/..
/Library
/OpenAFS
/Tools
/bin
/$f $PKGROOT/usr
/bin
/$f
191 for f
in $ETCLIST; do
192 ln -s ..
/..
/Library
/OpenAFS
/Tools
/etc
/$f $PKGROOT/usr
/sbin
/$f
194 for f
in $SHLIBLIST; do
195 ln -s ..
/..
/Library
/OpenAFS
/Tools
/lib
/$f $PKGROOT/usr
/lib
/$f
197 for f
in `ls $PKGROOT/Library/OpenAFS/Tools/man/man1`; do
198 gzip -9 $PKGROOT/Library
/OpenAFS
/Tools
/man
/man
1/$f
199 ln -s ..
/..
/..
/..
/Library
/OpenAFS
/Tools
/man
/man
1/$f.gz
$PKGROOT/usr
/share
/man
/man
1/$f.gz
201 for f
in `ls $PKGROOT/Library/OpenAFS/Tools/man/man5`; do
202 gzip -9 $PKGROOT/Library
/OpenAFS
/Tools
/man
/man
5/$f
203 ln -s ..
/..
/..
/..
/Library
/OpenAFS
/Tools
/man
/man
5/$f.gz
$PKGROOT/usr
/share
/man
/man
5/$f.gz
205 for f
in `ls $PKGROOT/Library/OpenAFS/Tools/man/man8`; do
206 gzip -9 $PKGROOT/Library
/OpenAFS
/Tools
/man
/man
8/$f
207 ln -s ..
/..
/..
/..
/Library
/OpenAFS
/Tools
/man
/man
8/$f.gz
$PKGROOT/usr
/share
/man
/man
8/$f.gz
210 ln -s ..
/..
/Library
/OpenAFS
/Tools
/bin
/kpasswd
$PKGROOT/usr
/bin
/kpasswd.afs
212 ln -s ..
/..
/Library
/OpenAFS
/Tools
/root.client
/usr
/vice
/etc
/afsd
$PKGROOT/usr
/sbin
/afsd
214 # mkdir -p $PKGROOT/Library/Kerberos\ Plug-Ins
215 # ln -s ../../Library/OpenAFS/Tools/root.client/Library/Kerberos\ Plug-Ins/aklog.loginLogout $PKGROOT/Library/Kerberos\ Plug-Ins/
217 chown
-R root
${SEP}wheel
$PKGROOT/usr
218 chmod -R og-w
$PKGROOT/usr
221 if [ $secondpass = yes ]; then
225 if [ $majorvers -ge 9 ]; then
228 cp License.rtf
$DPKGRES
229 cp InstallationCheck.
$majorvers $DPKGRES/InstallationCheck
230 chmod a
+x
$DPKGRES/InstallationCheck
231 mkdir
-p $DPKGRES/English.lproj
232 cp InstallationCheck.
strings.
$majorvers \
233 $DPKGRES/English.lproj
/InstallationCheck.
strings
234 cp background.jpg
$DPKGRES/background.jpg
235 chown
-R root
${SEP}wheel
$DPKGRES
236 rm -rf $CURDIR/OpenAFS-debug-extension.pkg
237 echo $PACKAGEMAKER -build -p $CURDIR/OpenAFS-debug-extension.pkg
-f $DPKGROOT -r $DPKGRES \
238 -i OpenAFS-debug.Info.plist
-d OpenAFS-debug.Description.plist
239 "$PACKAGEMAKER" -build -p $CURDIR/OpenAFS-debug-extension.pkg
-f $DPKGROOT -r $DPKGRES \
240 -i OpenAFS-debug.Info.plist
-d OpenAFS-debug.Description.plist
244 if [ $majorvers -ge 7 ]; then
245 cp OpenAFS.post_install
$PKGRES/postinstall
246 cp OpenAFS.pre_upgrade
$PKGRES/preupgrade
247 cp OpenAFS.post_install
$PKGRES/postupgrade
248 cp background.jpg
$PKGRES/background.jpg
249 if [ $majorvers -ge 8 ]; then
250 cp InstallationCheck.
$majorvers $PKGRES/InstallationCheck
251 mkdir
-p $PKGRES/English.lproj
252 cp InstallationCheck.
strings.
$majorvers $PKGRES/English.lproj
/InstallationCheck.
strings
253 chmod a
+x
$PKGRES/InstallationCheck
255 chmod a
+x
$PKGRES/postinstall
$PKGRES/postupgrade
$PKGRES/preupgrade
257 cp OpenAFS.post_install OpenAFS.pre_upgrade
$PKGRES
258 cp OpenAFS.post_install
$PKGRES/OpenAFS.post_upgrade
259 chmod a
+x
$PKGRES/OpenAFS.post_install
$PKGRES/OpenAFS.post_upgrade
$PKGRES/OpenAFS.pre_upgrade
261 cp License.rtf
$PKGRES
262 cp ReadMe.rtf.
$majorvers $PKGRES/ReadMe.rtf
263 cp csrvdbmerge.pl
$PKGRES
264 chmod a
+x
$PKGRES/csrvdbmerge.pl
265 cp CellServDB.list
$PKGRES
266 chown
-R root
${SEP}wheel
$PKGRES
267 rm -rf $CURDIR/OpenAFS.pkg
268 if [ $majorvers -ge 7 ]; then
269 echo $PACKAGEMAKER -build -p $CURDIR/OpenAFS.pkg
-f $PKGROOT -r $PKGRES \
270 -i OpenAFS.Info.plist
-d OpenAFS.Description.plist
271 "$PACKAGEMAKER" -build -p $CURDIR/OpenAFS.pkg
-f $PKGROOT -r $PKGRES \
272 -i OpenAFS.Info.plist
-d OpenAFS.Description.plist
274 echo $PACKAGEMAKER $PKGROOT $RESSRC/OpenAFS.info
-r $PKGRES
275 (cd $CURDIR && "$PACKAGEMAKER" $PKGROOT $RESSRC/OpenAFS.info
-r $PKGRES)
276 #old versions of package didn't handle this properly
277 if [ ! -r $CURDIR/OpenAFS.pkg
/Contents
]; then
278 mkdir
-p $CURDIR/OpenAFS.pkg
/Contents
/Resources
279 mv $CURDIR/OpenAFS.pkg
/OpenAFS.
* $CURDIR/OpenAFS.pkg
/Contents
/Resources
280 mv $CURDIR/OpenAFS.pkg
/*.rtf
$CURDIR/OpenAFS.pkg
/Contents
/Resources
281 mv $CURDIR/OpenAFS.pkg
/csrvdbmerge.pl
$CURDIR/OpenAFS.pkg
/Contents
/Resources
282 mv $CURDIR/OpenAFS.pkg
/CellServDB
* $CURDIR/OpenAFS.pkg
/Contents
/Resources
286 rm -rf $PKGROOT $PKGRES
287 rm -rf $DPKGROOT $DPKGRES
288 # here we want to build installer plugin and install
289 # for Tiger and later only
290 if [ $majorvers -ge 8 ]; then
291 AFSCELLBUNDLE
=$BINDEST/installer
/afscell.bundle
293 if [ -d $AFSCELLBUNDLE -a -f $BINDEST/installer
/InstallerSections.plist
]; then
294 mkdir
-p $CURDIR/OpenAFS.pkg
/Contents
/Plugins
295 cp -R $AFSCELLBUNDLE $CURDIR/OpenAFS.pkg
/Contents
/Plugins
296 cp $BINDEST/installer
/InstallerSections.plist
$CURDIR/OpenAFS.pkg
/Contents
/Plugins
298 echo "afscell.bundle not built successfully"
299 echo "... or InstallerSections.plist file not found"
305 mv $CURDIR/OpenAFS.pkg
$CURDIR/dmg
306 if [ $majorvers -ge 8 ]; then
307 mv $CURDIR/OpenAFS-debug-extension.pkg
$CURDIR/dmg
309 rm -rf $CURDIR/OpenAFS-@PACKAGE_VERSION@
-$RELNAME.dmg
310 cp $RESSRC/Uninstall
$CURDIR/dmg
/Uninstall.
command
311 cp $RESSRC/DS_Store
$CURDIR/dmg
/.DS_Store
312 mkdir
$CURDIR/dmg
/.background
313 cp $RESSRC/afslogo.jpg
$CURDIR/dmg
/.background
314 # hdiutil create -srcfolder $CURDIR/dmg -volname OpenAFS -anyowners $CURDIR/OpenAFS.dmg
315 hdiutil makehybrid
-hfs -hfs-volume-name OpenAFS
-hfs-openfolder $CURDIR/dmg
$CURDIR/dmg
-o $CURDIR/TMP.dmg
316 hdiutil convert
-format UDZO
$CURDIR/TMP.dmg
-o $CURDIR/OpenAFS-@PACKAGE_VERSION@
-$RELNAME.dmg
319 # Unfortunately, sudo sets $USER to root, so I can't chown the
320 #.pkg dir back to myself
321 #chown -R $USER $CURDIR/OpenAFS.pkg
323 echo "First pass completed. Customize pkgroot and then run:"
324 echo " $0 -secondpass"