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
50 PKGROOT=$CURDIR/pkgroot
52 DPKGROOT=$CURDIR/dpkgroot
53 DPKGRES=$CURDIR/dpkgres
55 if [ -e "/Developer/usr/bin/packagemaker" ]; then
56 PACKAGEMAKER="/Developer/usr/bin/packagemaker"
58 while IFS= read -d $'\0' -r file ; do
59 if [ -e "$file/Contents/MacOS/PackageMaker" ]; then
60 PACKAGEMAKER="$file/Contents/MacOS/PackageMaker"
62 done < <(mdfind -0 "(kMDItemCFBundleIdentifier == 'com.apple.PackageMaker')")
64 if [ -z "$PACKAGEMAKER" ]; then
65 echo "packagemaker not found"
69 if [ $firstpass = yes ]; then
70 if [ -x /usr/bin/curl ]; then
71 /usr/bin/curl -f -O http://dl.central.org/dl/cellservdb/CellServDB
74 if [ ! -f CellServDB ]; then
75 echo "A CellServDB file must be placed in the working directory"
78 if grep -q 'GCO Public CellServDB' CellServDB ; then
81 echo "A proper CellServDB file must be placed in the working directory"
85 FILES="ReadMe.rtf.$majorvers License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl 2.0.txt"
87 if [ ! -f $RESSRC/$f ]; then
88 echo "file missing: " $RESSRC/$f
93 echo "Correct above errors; then retry"
96 if [ ! -f $BINDEST/bin/translate_et ]; then
99 if [ ! -f $BINDEST/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs ]; then
103 echo $BINDEST " is not a valid binary dir. it should be the result of"
113 mkdir -p $PKGROOT/Library
114 mkdir -p $PKGROOT/Library/PreferencePanes
115 mkdir -p $PKGROOT/Library/Security/SecurityAgentPlugins
116 chown root${SEP}admin $PKGROOT
117 chmod 755 $PKGROOT $PKGROOT/Library $PKGROOT/Library/PreferencePanes $PKGROOT/Library/Security/SecurityAgentPlugins
118 (cd $BINDEST/tools && pax -rw OpenAFS.prefPane $PKGROOT/Library/PreferencePanes)
119 (cd $BINDEST/tools && pax -rw aklog.bundle $PKGROOT/Library/Security/SecurityAgentPlugins)
120 mkdir -p $PKGROOT/Library/OpenAFS/Tools
121 (cd $BINDEST && pax -rw * $PKGROOT/Library/OpenAFS/Tools)
123 mkdir -p $PKGROOT/Library/LaunchDaemons
124 chmod -R o-w $PKGROOT/Library
125 chmod -R g-w $PKGROOT/Library
126 cp openafs.launchd.plist $PKGROOT/Library/LaunchDaemons/org.openafs.filesystems.afs.plist
127 chmod 644 $PKGROOT/Library/LaunchDaemons/org.openafs.filesystems.afs.plist
128 chown root${SEP}admin $PKGROOT/Library
129 chown -R root${SEP}wheel $PKGROOT/Library/LaunchDaemons
130 chown -R root${SEP}wheel $PKGROOT/Library/OpenAFS/Tools
131 chmod -R og-w $PKGROOT/Library/OpenAFS/Tools
133 mkdir -p $PKGROOT/private/var/db/openafs/cache
134 mkdir -p $PKGROOT/private/var/db/openafs/etc/config
135 cp openafs.launchdaemon $PKGROOT/private/var/db/openafs/etc/launchafs.sh
136 chmod 755 $PKGROOT/private/var/db/openafs/etc/launchafs.sh
137 cp $CURDIR/CellServDB $PKGROOT/private/var/db/openafs/etc/CellServDB.master
138 echo grand.central.org > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
139 if [ $majorvers -ge 7 ]; then
140 echo /afs:/var/db/openafs/cache:100000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
141 cp -RP $PKGROOT/Library/OpenAFS/Tools/etc/afssettings $PKGROOT/private/var/db/openafs/etc/config
142 cp settings.plist $PKGROOT/private/var/db/openafs/etc/config/settings.plist.orig
144 echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
146 cp afs.conf $PKGROOT/private/var/db/openafs/etc/config/afs.conf.sample
147 cp krb5-weak.conf $PKGROOT/private/var/db/openafs/etc/krb5-weak.conf
149 cp decode-panic $PKGROOT/Library/OpenAFS/Tools/tools
150 chmod a+x $PKGROOT/Library/OpenAFS/Tools/tools/decode-panic
152 if [ $majorvers -ge 9 ]; then
155 mkdir -p $DPKGROOT/Library/OpenAFS/Debug
156 mv $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext.dSYM $DPKGROOT/Library/OpenAFS/Debug
157 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext $DPKGROOT/Library/OpenAFS/Debug
158 chown -R root${SEP}wheel $DPKGROOT/Library/OpenAFS/Debug
159 chmod -R og-w $DPKGROOT/Library/OpenAFS/Debug
162 strip -X -S $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs
164 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext $PKGROOT/private/var/db/openafs/etc
165 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/C $PKGROOT/private/var/db/openafs/etc
167 chown -R root${SEP}wheel $PKGROOT/private
168 chmod -R og-w $PKGROOT/private
169 chmod og-rx $PKGROOT/private/var/db/openafs/cache
171 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
173 BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
175 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"
177 # Should these be linked into /usr too?
178 OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
179 OTHER_ETCLIST="rxdebug"
181 for f in $BINLIST; do
182 ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
184 for f in $ETCLIST; do
185 ln -s ../../Library/OpenAFS/Tools/etc/$f $PKGROOT/usr/sbin/$f
187 for f in $SHLIBLIST; do
188 ln -s ../../Library/OpenAFS/Tools/lib/$f $PKGROOT/usr/lib/$f
190 for f in `ls $PKGROOT/Library/OpenAFS/Tools/man/man1`; do
191 gzip -9 $PKGROOT/Library/OpenAFS/Tools/man/man1/$f
192 ln -s ../../../../Library/OpenAFS/Tools/man/man1/$f.gz $PKGROOT/usr/share/man/man1/$f.gz
194 for f in `ls $PKGROOT/Library/OpenAFS/Tools/man/man5`; do
195 gzip -9 $PKGROOT/Library/OpenAFS/Tools/man/man5/$f
196 ln -s ../../../../Library/OpenAFS/Tools/man/man5/$f.gz $PKGROOT/usr/share/man/man5/$f.gz
198 for f in `ls $PKGROOT/Library/OpenAFS/Tools/man/man8`; do
199 gzip -9 $PKGROOT/Library/OpenAFS/Tools/man/man8/$f
200 ln -s ../../../../Library/OpenAFS/Tools/man/man8/$f.gz $PKGROOT/usr/share/man/man8/$f.gz
203 ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
205 ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
207 # mkdir -p $PKGROOT/Library/Kerberos\ Plug-Ins
208 # ln -s ../../Library/OpenAFS/Tools/root.client/Library/Kerberos\ Plug-Ins/aklog.loginLogout $PKGROOT/Library/Kerberos\ Plug-Ins/
210 chown -R root${SEP}wheel $PKGROOT/usr
211 chmod -R og-w $PKGROOT/usr
214 if [ $secondpass = yes ]; then
218 if [ $majorvers -ge 9 ]; then
221 cp License.rtf $DPKGRES
222 cp InstallationCheck.$majorvers $DPKGRES/InstallationCheck
223 chmod a+x $DPKGRES/InstallationCheck
224 mkdir -p $DPKGRES/English.lproj
225 cp InstallationCheck.strings.$majorvers \
226 $DPKGRES/English.lproj/InstallationCheck.strings
227 cp background.jpg $DPKGRES/background.jpg
228 chown -R root${SEP}wheel $DPKGRES
229 rm -rf $CURDIR/OpenAFS-debug-extension.pkg
230 echo $PACKAGEMAKER -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
231 -i OpenAFS-debug.Info.plist -d OpenAFS-debug.Description.plist
232 "$PACKAGEMAKER" -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
233 -i OpenAFS-debug.Info.plist -d OpenAFS-debug.Description.plist
237 if [ $majorvers -ge 7 ]; then
238 cp OpenAFS.post_install $PKGRES/postinstall
239 cp OpenAFS.pre_upgrade $PKGRES/preupgrade
240 cp OpenAFS.post_install $PKGRES/postupgrade
241 cp background.jpg $PKGRES/background.jpg
242 if [ $majorvers -ge 8 ]; then
243 cp InstallationCheck.$majorvers $PKGRES/InstallationCheck
244 mkdir -p $PKGRES/English.lproj
245 cp InstallationCheck.strings.$majorvers $PKGRES/English.lproj/InstallationCheck.strings
246 chmod a+x $PKGRES/InstallationCheck
248 chmod a+x $PKGRES/postinstall $PKGRES/postupgrade $PKGRES/preupgrade
250 cp OpenAFS.post_install OpenAFS.pre_upgrade $PKGRES
251 cp OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade
252 chmod a+x $PKGRES/OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade $PKGRES/OpenAFS.pre_upgrade
254 cp License.rtf $PKGRES
255 cp ReadMe.rtf.$majorvers $PKGRES/ReadMe.rtf
256 cp csrvdbmerge.pl $PKGRES
257 chmod a+x $PKGRES/csrvdbmerge.pl
258 cp CellServDB.list $PKGRES
259 chown -R root${SEP}wheel $PKGRES
260 rm -rf $CURDIR/OpenAFS.pkg
261 if [ $majorvers -ge 7 ]; then
262 echo $PACKAGEMAKER -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
263 -i OpenAFS.Info.plist -d OpenAFS.Description.plist
264 "$PACKAGEMAKER" -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
265 -i OpenAFS.Info.plist -d OpenAFS.Description.plist
267 echo $PACKAGEMAKER $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES
268 (cd $CURDIR && "$PACKAGEMAKER" $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES)
269 #old versions of package didn't handle this properly
270 if [ ! -r $CURDIR/OpenAFS.pkg/Contents ]; then
271 mkdir -p $CURDIR/OpenAFS.pkg/Contents/Resources
272 mv $CURDIR/OpenAFS.pkg/OpenAFS.* $CURDIR/OpenAFS.pkg/Contents/Resources
273 mv $CURDIR/OpenAFS.pkg/*.rtf $CURDIR/OpenAFS.pkg/Contents/Resources
274 mv $CURDIR/OpenAFS.pkg/csrvdbmerge.pl $CURDIR/OpenAFS.pkg/Contents/Resources
275 mv $CURDIR/OpenAFS.pkg/CellServDB* $CURDIR/OpenAFS.pkg/Contents/Resources
279 rm -rf $PKGROOT $PKGRES
280 rm -rf $DPKGROOT $DPKGRES
281 # here we want to build installer plugin and install
282 # for Tiger and later only
283 if [ $majorvers -ge 8 ]; then
284 AFSCELLBUNDLE=$BINDEST/installer/afscell.bundle
286 if [ -d $AFSCELLBUNDLE -a -f $BINDEST/installer/InstallerSections.plist ]; then
287 mkdir -p $CURDIR/OpenAFS.pkg/Contents/Plugins
288 cp -R $AFSCELLBUNDLE $CURDIR/OpenAFS.pkg/Contents/Plugins
289 cp $BINDEST/installer/InstallerSections.plist $CURDIR/OpenAFS.pkg/Contents/Plugins
291 echo "afscell.bundle not built successfully"
292 echo "... or InstallerSections.plist file not found"
298 mv $CURDIR/OpenAFS.pkg $CURDIR/dmg
299 if [ $majorvers -ge 8 ]; then
300 mv $CURDIR/OpenAFS-debug-extension.pkg $CURDIR/dmg
302 rm -rf $CURDIR/OpenAFS-@VERSION@-$RELNAME.dmg
303 cp $RESSRC/Uninstall $CURDIR/dmg/Uninstall.command
304 cp $RESSRC/DS_Store $CURDIR/dmg/.DS_Store
305 mkdir $CURDIR/dmg/.background
306 cp $RESSRC/afslogo.jpg $CURDIR/dmg/.background
307 # hdiutil create -srcfolder $CURDIR/dmg -volname OpenAFS -anyowners $CURDIR/OpenAFS.dmg
308 hdiutil makehybrid -hfs -hfs-volume-name OpenAFS -hfs-openfolder $CURDIR/dmg $CURDIR/dmg -o $CURDIR/TMP.dmg
309 hdiutil convert -format UDZO $CURDIR/TMP.dmg -o $CURDIR/OpenAFS-@VERSION@-$RELNAME.dmg
312 # Unfortunately, sudo sets $USER to root, so I can't chown the
313 #.pkg dir back to myself
314 #chown -R $USER $CURDIR/OpenAFS.pkg
316 echo "First pass completed. Customize pkgroot and then run:"
317 echo " $0 -secondpass"