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/\..*//'`
29 PKGROOT=$CURDIR/pkgroot
31 if [ $majorvers -ge 7 ]; then
33 package=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
34 if [ ! -x $package ]; then
35 echo "PackageMaker does not exist. Please run this script on a MacOS X system"
36 echo "with the DeveloperTools package installed"
41 package=/usr/bin/package
42 if [ ! -f $package ]; then
43 echo "$package does not exist. Please run this script on a MacOS X system"
44 echo "with the BSD subsystem installed"
47 if grep -q 'set resDir = ""' $package ; then
48 echo $package is buggy.
49 echo remove the line \''set resDir = ""'\' from $package and try again
54 if [ $firstpass = yes ]; then
55 if [ -x /usr/bin/curl ]; then
56 /usr/bin/curl -f -O http://dl.central.org/dl/cellservdb/CellServDB
59 if [ ! -f CellServDB ]; then
60 echo "A CellServDB file must be placed in the working directory"
63 if grep -q 'GCO Public CellServDB' CellServDB ; then
66 echo "A proper CellServDB file must be placed in the working directory"
70 FILES="ReadMe.rtf License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl 2.0.txt"
72 if [ ! -f $RESSRC/$f ]; then
73 echo "file missing: " $RESSRC/$f
78 echo "Correct above errors; then retry"
81 if [ ! -f $BINDEST/bin/translate_et ]; then
84 if [ ! -f $BINDEST/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs ]; then
88 echo $BINDEST " is not a valid binary dir. it should be the result of"
96 mkdir -p $PKGROOT/Library
97 chown root${SEP}admin $PKGROOT
98 chmod 775 $PKGROOT $PKGROOT/Library
99 mkdir -p $PKGROOT/Library/OpenAFS/Tools
100 (cd $BINDEST && pax -rw * $PKGROOT/Library/OpenAFS/Tools)
102 mkdir -p $PKGROOT/Library/StartupItems/OpenAFS
103 cp $BINDEST/root.client/usr/vice/etc/afs.rc $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
104 chmod a+x $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
105 cp $BINDEST/root.client/usr/vice/etc/StartupParameters.plist $PKGROOT/Library/StartupItems/OpenAFS/StartupParameters.plist
106 chown -R root${SEP}admin $PKGROOT/Library
107 chmod -R o-w $PKGROOT/Library
108 chmod -R g+w $PKGROOT/Library
109 chown -R root${SEP}wheel $PKGROOT/Library/StartupItems
110 chmod -R og-w $PKGROOT/Library/StartupItems
111 chown -R root${SEP}wheel $PKGROOT/Library/OpenAFS/Tools
112 chmod -R og-w $PKGROOT/Library/OpenAFS/Tools
114 mkdir -p $PKGROOT/private/var/db/openafs/cache
115 mkdir -p $PKGROOT/private/var/db/openafs/etc/config
116 cp $CURDIR/CellServDB $PKGROOT/private/var/db/openafs/etc/CellServDB.master
117 echo grand.central.org > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
118 if [ $majorvers -ge 7 ]; then
119 echo /afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
120 cp -RP $PKGROOT/Library/OpenAFS/Tools/etc/afssettings $PKGROOT/private/var/db/openafs/etc/config
121 cp settings.plist $PKGROOT/private/var/db/openafs/etc/config/settings.plist.orig
123 echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
125 if [ $majorvers -ge 9 ]; then
126 echo '-memcache -afsdb -stat 2000 -dcache 800 -daemons 3 -volumes 70 -dynroot -fakestat-all' > $PKGROOT/private/var/db/openafs/etc/config/afsd.options.sample
128 echo '-afsdb -stat 2000 -dcache 800 -daemons 3 -volumes 70 -dynroot -fakestat-all' > $PKGROOT/private/var/db/openafs/etc/config/afsd.options.sample
131 strip -X -S $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs
133 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext $PKGROOT/private/var/db/openafs/etc
134 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/C $PKGROOT/private/var/db/openafs/etc
136 chown -R root${SEP}wheel $PKGROOT/private
137 chmod -R og-w $PKGROOT/private
138 chmod og-rx $PKGROOT/private/var/db/openafs/cache
140 mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/sbin
142 BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
145 # Should these be linked into /usr too?
146 OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
147 OTHER_ETCLIST="rxdebug"
149 for f in $BINLIST; do
150 ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
152 for f in $ETCLIST; do
153 ln -s ../../Library/OpenAFS/Tools/etc/$f $PKGROOT/usr/sbin/$f
156 ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
158 ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
160 # mkdir -p $PKGROOT/Library/Kerberos\ Plug-Ins
161 # ln -s ../../Library/OpenAFS/Tools/root.client/Library/Kerberos\ Plug-Ins/aklog.loginLogout $PKGROOT/Library/Kerberos\ Plug-Ins/
163 chown -R root${SEP}wheel $PKGROOT/usr
164 chmod -R og-w $PKGROOT/usr
167 if [ $secondpass = yes ]; then
172 if [ $majorvers -ge 7 ]; then
173 cp OpenAFS.post_install $PKGRES/postinstall
174 cp OpenAFS.pre_upgrade $PKGRES/preupgrade
175 cp OpenAFS.post_install $PKGRES/postupgrade
176 cp background.jpg $PKGRES/background.jpg
177 if [ $majorvers -ge 8 ]; then
178 cp InstallationCheck.$majorvers $PKGRES/InstallationCheck
179 mkdir -p $PKGRES/English.lproj
180 cp InstallationCheck.$majorvers $PKGRES/English.lproj/InstallationCheck
181 chmod a+x $PKGRES/InstallationCheck
183 chmod a+x $PKGRES/postinstall $PKGRES/postupgrade $PKGRES/preupgrade
185 cp OpenAFS.post_install OpenAFS.pre_upgrade $PKGRES
186 cp OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade
187 chmod a+x $PKGRES/OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade $PKGRES/OpenAFS.pre_upgrade
189 cp License.rtf ReadMe.rtf $PKGRES
190 cp csrvdbmerge.pl $PKGRES
191 chmod a+x $PKGRES/csrvdbmerge.pl
192 cp CellServDB.list $PKGRES
193 chown -R root${SEP}wheel $PKGRES
194 rm -rf $CURDIR/OpenAFS.pkg
195 if [ $majorvers -ge 7 ]; then
196 echo $package -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
197 -i OpenAFS.Info.plist -d OpenAFS.Description.plist
198 $package -build -p $CURDIR/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
199 -i OpenAFS.Info.plist -d OpenAFS.Description.plist
201 echo $package $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES
202 (cd $CURDIR && $package $PKGROOT $RESSRC/OpenAFS.info -r $PKGRES)
203 #old versions of package didn't handle this properly
204 if [ ! -r $CURDIR/OpenAFS.pkg/Contents ]; then
205 mkdir -p $CURDIR/OpenAFS.pkg/Contents/Resources
206 mv $CURDIR/OpenAFS.pkg/OpenAFS.* $CURDIR/OpenAFS.pkg/Contents/Resources
207 mv $CURDIR/OpenAFS.pkg/*.rtf $CURDIR/OpenAFS.pkg/Contents/Resources
208 mv $CURDIR/OpenAFS.pkg/csrvdbmerge.pl $CURDIR/OpenAFS.pkg/Contents/Resources
209 mv $CURDIR/OpenAFS.pkg/CellServDB* $CURDIR/OpenAFS.pkg/Contents/Resources
213 rm -rf $PKGROOT $PKGRES
215 mv $CURDIR/OpenAFS.pkg $CURDIR/dmg
216 rm -rf $CURDIR/OpenAFS.dmg
217 cp Uninstall $CURDIR/dmg/Uninstall.command
218 cp DS_Store $CURDIR/dmg/.DS_Store
219 mkdir $CURDIR/dmg/.background
220 cp afslogo.jpg $CURDIR/dmg/.background
221 # hdiutil create -srcfolder $CURDIR/dmg -volname OpenAFS -anyowners $CURDIR/OpenAFS.dmg
222 hdiutil makehybrid -hfs -hfs-volume-name OpenAFS -hfs-openfolder $CURDIR/dmg $CURDIR/dmg -o $CURDIR/TMP.dmg
223 hdiutil convert -format UDZO $CURDIR/TMP.dmg -o $CURDIR/OpenAFS.dmg
226 # Unfortunately, sudo sets $USER to root, so I can't chown the
227 #.pkg dir back to myself
228 #chown -R $USER $CURDIR/OpenAFS.pkg
230 echo "First pass completed. Customize pkgroot and then run:"
231 echo " $0 -secondpass"