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
41 PKGROOT=$CURDIR/pkgroot
43 DPKGROOT=$CURDIR/dpkgroot
44 DPKGRES=$CURDIR/dpkgres
45 if [ $majorvers -ge 7 ]; then
47 package=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
48 if [ ! -x $package ]; then
49 echo "PackageMaker does not exist. Please run this script on a MacOS X system"
50 echo "with the DeveloperTools package installed"
55 package=/usr/bin/package
56 if [ ! -f $package ]; then
57 echo "$package does not exist. Please run this script on a MacOS X system"
58 echo "with the BSD subsystem installed"
61 if grep -q 'set resDir = ""' $package ; then
62 echo $package is buggy.
63 echo remove the line \''set resDir = ""'\' from $package and try again
68 if [ $firstpass = yes ]; then
69 if [ -x /usr/bin/curl ]; then
70 /usr/bin/curl -f -O http://dl.central.org/dl/cellservdb/CellServDB
73 if [ ! -f CellServDB ]; then
74 echo "A CellServDB file must be placed in the working directory"
77 if grep -q 'GCO Public CellServDB' CellServDB ; then
80 echo "A proper CellServDB file must be placed in the working directory"
84 FILES="ReadMe.rtf.$majorvers License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl 2.0.txt"
86 if [ ! -f $RESSRC/$f ]; then
87 echo "file missing: " $RESSRC/$f
92 echo "Correct above errors; then retry"
95 if [ ! -f $BINDEST/bin/translate_et ]; then
98 if [ ! -f $BINDEST/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs ]; then
102 echo $BINDEST " is not a valid binary dir. it should be the result of"
110 mkdir -p $PKGROOT/Library
111 mkdir -p $PKGROOT/Library/PreferencePanes
112 chown root${SEP}admin $PKGROOT
113 chmod 775 $PKGROOT $PKGROOT/Library $PKGROOT/Library/PreferencePanes
114 (cd $BINDEST/tools && pax -rw OpenAFS.prefPane $PKGROOT/Library/PreferencePanes)
115 mkdir -p $PKGROOT/Library/OpenAFS/Tools
116 (cd $BINDEST && pax -rw * $PKGROOT/Library/OpenAFS/Tools)
118 mkdir -p $PKGROOT/Library/LaunchDaemons
119 chmod -R o-w $PKGROOT/Library
120 chmod -R g-w $PKGROOT/Library
121 cp openafs.launchd.plist $PKGROOT/Library/LaunchDaemons/org.openafs.filesystems.afs.plist
122 chmod 644 $PKGROOT/Library/LaunchDaemons/org.openafs.filesystems.afs.plist
123 chown root${SEP}admin $PKGROOT/Library
124 chown -R root${SEP}wheel $PKGROOT/Library/LaunchDaemons
125 chown -R root${SEP}wheel $PKGROOT/Library/OpenAFS/Tools
126 chmod -R og-w $PKGROOT/Library/OpenAFS/Tools
128 mkdir -p $PKGROOT/private/var/db/openafs/cache
129 mkdir -p $PKGROOT/private/var/db/openafs/etc/config
130 cp openafs.launchdaemon $PKGROOT/private/var/db/openafs/etc/launchafs.sh
131 chmod 755 $PKGROOT/private/var/db/openafs/etc/launchafs.sh
132 cp $CURDIR/CellServDB $PKGROOT/private/var/db/openafs/etc/CellServDB.master
133 echo grand.central.org > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
134 if [ $majorvers -ge 7 ]; then
135 echo /afs:/var/db/openafs/cache:100000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
136 cp -RP $PKGROOT/Library/OpenAFS/Tools/etc/afssettings $PKGROOT/private/var/db/openafs/etc/config
137 cp settings.plist $PKGROOT/private/var/db/openafs/etc/config/settings.plist.orig
139 echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
141 cp afs.conf $PKGROOT/private/var/db/openafs/etc/config/afs.conf.sample
143 cp decode-panic $PKGROOT/Library/OpenAFS/Tools/tools
144 chmod a+x $PKGROOT/Library/OpenAFS/Tools/tools/decode-panic
146 if [ $majorvers -ge 9 ]; then
149 mkdir -p $DPKGROOT/Library/OpenAFS/Debug
150 mv $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext.dSYM $DPKGROOT/Library/OpenAFS/Debug
151 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext $DPKGROOT/Library/OpenAFS/Debug
152 chown -R root${SEP}wheel $DPKGROOT/Library/OpenAFS/Debug
153 chmod -R og-w $DPKGROOT/Library/OpenAFS/Debug
156 strip -X -S $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs
158 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext $PKGROOT/private/var/db/openafs/etc
159 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/C $PKGROOT/private/var/db/openafs/etc
161 chown -R root${SEP}wheel $PKGROOT/private
162 chmod -R og-w $PKGROOT/private
163 chmod og-rx $PKGROOT/private/var/db/openafs/cache
165 mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/sbin $PKGROOT/usr/share/man/man1 $PKGROOT/usr/share/man/man5 $PKGROOT/usr/share/man/man8
167 BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
170 # Should these be linked into /usr too?
171 OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
172 OTHER_ETCLIST="rxdebug"
174 for f in $BINLIST; do
175 ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
177 for f in $ETCLIST; do
178 ln -s ../../Library/OpenAFS/Tools/etc/$f $PKGROOT/usr/sbin/$f
180 for f in `ls $PKGROOT/Library/OpenAFS/Tools/man/man1`; do
181 gzip -9 $PKGROOT/Library/OpenAFS/Tools/man/man1/$f
182 ln -s ../../../../Library/OpenAFS/Tools/man/man1/$f.gz $PKGROOT/usr/share/man/man1/$f.gz
184 for f in `ls $PKGROOT/Library/OpenAFS/Tools/man/man5`; do
185 gzip -9 $PKGROOT/Library/OpenAFS/Tools/man/man5/$f
186 ln -s ../../../../Library/OpenAFS/Tools/man/man5/$f.gz $PKGROOT/usr/share/man/man5/$f.gz
188 for f in `ls $PKGROOT/Library/OpenAFS/Tools/man/man8`; do
189 gzip -9 $PKGROOT/Library/OpenAFS/Tools/man/man8/$f
190 ln -s ../../../../Library/OpenAFS/Tools/man/man8/$f.gz $PKGROOT/usr/share/man/man8/$f.gz
193 ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
195 ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
197 # mkdir -p $PKGROOT/Library/Kerberos\ Plug-Ins
198 # ln -s ../../Library/OpenAFS/Tools/root.client/Library/Kerberos\ Plug-Ins/aklog.loginLogout $PKGROOT/Library/Kerberos\ Plug-Ins/
200 chown -R root${SEP}wheel $PKGROOT/usr
201 chmod -R og-w $PKGROOT/usr
204 if [ $secondpass = yes ]; then
208 if [ $majorvers -ge 9 ]; then
211 cp License.rtf $DPKGRES
212 cp InstallationCheck.$majorvers $DPKGRES/InstallationCheck
213 chmod a+x $DPKGRES/InstallationCheck
214 mkdir -p $DPKGRES/English.lproj
215 cp InstallationCheck.strings.$majorvers \
216 $DPKGRES/English.lproj/InstallationCheck.strings
217 cp background.jpg $DPKGRES/background.jpg
218 chown -R root${SEP}wheel $DPKGRES
219 rm -rf $CURDIR/OpenAFS-debug-extension.pkg
220 echo $package -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
221 -i OpenAFS-debug.Info.plist -d OpenAFS-debug.Description.plist
222 $package -build -p $CURDIR/OpenAFS-debug-extension.pkg -f $DPKGROOT -r $DPKGRES \
223 -i OpenAFS-debug.Info.plist -d OpenAFS-debug.Description.plist
227 if [ $majorvers -ge 7 ]; then
228 cp OpenAFS.post_install $PKGRES/postinstall
229 cp OpenAFS.pre_upgrade $PKGRES/preupgrade
230 cp OpenAFS.post_install $PKGRES/postupgrade
231 cp background.jpg $PKGRES/background.jpg
232 if [ $majorvers -ge 8 ]; then
233 cp InstallationCheck.$majorvers $PKGRES/InstallationCheck
234 mkdir -p $PKGRES/English.lproj
235 cp InstallationCheck.strings.$majorvers $PKGRES/English.lproj/InstallationCheck.strings
236 chmod a+x $PKGRES/InstallationCheck
238 chmod a+x $PKGRES/postinstall $PKGRES/postupgrade $PKGRES/preupgrade
240 cp OpenAFS.post_install OpenAFS.pre_upgrade $PKGRES
241 cp OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade
242 chmod a+x $PKGRES/OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade $PKGRES/OpenAFS.pre_upgrade
244 cp License.rtf $PKGRES
245 cp ReadMe.rtf.$majorvers $PKGRES/ReadMe.rtf
246 cp csrvdbmerge.pl $PKGRES
247 chmod a+x $PKGRES/csrvdbmerge.pl
248 cp CellServDB.list $PKGRES
249 chown -R root${SEP}wheel $PKGRES
250 rm -rf $CURDIR/OpenAFS.pkg
251 if [ $majorvers -ge 7 ]; then
252 echo $package -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
253 -i OpenAFS.Info.plist -d OpenAFS.Description.plist
254 $package -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
255 -i OpenAFS.Info.plist -d OpenAFS.Description.plist
257 echo $package $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES
258 (cd $CURDIR && $package $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES)
259 #old versions of package didn't handle this properly
260 if [ ! -r $CURDIR/OpenAFS.pkg/Contents ]; then
261 mkdir -p $CURDIR/OpenAFS.pkg/Contents/Resources
262 mv $CURDIR/OpenAFS.pkg/OpenAFS.* $CURDIR/OpenAFS.pkg/Contents/Resources
263 mv $CURDIR/OpenAFS.pkg/*.rtf $CURDIR/OpenAFS.pkg/Contents/Resources
264 mv $CURDIR/OpenAFS.pkg/csrvdbmerge.pl $CURDIR/OpenAFS.pkg/Contents/Resources
265 mv $CURDIR/OpenAFS.pkg/CellServDB* $CURDIR/OpenAFS.pkg/Contents/Resources
269 rm -rf $PKGROOT $PKGRES
270 rm -rf $DPKGROOT $DPKGRES
271 # here we want to build installer plugin and install
272 # for Tiger and later only
273 if [ $majorvers -ge 8 ]; then
274 AFSCELLBUNDLE=$BINDEST/installer/afscell.bundle
276 if [ -d $AFSCELLBUNDLE -a -f $BINDEST/installer/InstallerSections.plist ]; then
277 mkdir -p $CURDIR/OpenAFS.pkg/Contents/Plugins
278 cp -R $AFSCELLBUNDLE $CURDIR/OpenAFS.pkg/Contents/Plugins
279 cp $BINDEST/installer/InstallerSections.plist $CURDIR/OpenAFS.pkg/Contents/Plugins
281 echo "afscell.bundle not built successfully"
282 echo "... or InstallerSections.plist file not found"
288 mv $CURDIR/OpenAFS.pkg $CURDIR/dmg
289 if [ $majorvers -ge 8 ]; then
290 mv $CURDIR/OpenAFS-debug-extension.pkg $CURDIR/dmg
292 rm -rf $CURDIR/OpenAFS-@VERSION@-$RELNAME.dmg
293 cp $RESSRC/Uninstall $CURDIR/dmg/Uninstall.command
294 cp $RESSRC/DS_Store $CURDIR/dmg/.DS_Store
295 mkdir $CURDIR/dmg/.background
296 cp $RESSRC/afslogo.jpg $CURDIR/dmg/.background
297 # hdiutil create -srcfolder $CURDIR/dmg -volname OpenAFS -anyowners $CURDIR/OpenAFS.dmg
298 hdiutil makehybrid -hfs -hfs-volume-name OpenAFS -hfs-openfolder $CURDIR/dmg $CURDIR/dmg -o $CURDIR/TMP.dmg
299 hdiutil convert -format UDZO $CURDIR/TMP.dmg -o $CURDIR/OpenAFS-@VERSION@-$RELNAME.dmg
302 # Unfortunately, sudo sets $USER to root, so I can't chown the
303 #.pkg dir back to myself
304 #chown -R $USER $CURDIR/OpenAFS.pkg
306 echo "First pass completed. Customize pkgroot and then run:"
307 echo " $0 -secondpass"