40aed38697c6983e784221bfbfc894d20b395436
[openafs.git] / src / packaging / MacOS / buildpkg.sh
1 #!/bin/sh
2 # Portions Copyright (c) 2003 Apple Computer, Inc.  All rights reserved.
3
4 if [ -z "$1" ]; then
5    echo Usage: buildpkg binary-dir
6   exit 1
7 fi
8 BINDEST=$1
9 RESSRC=`pwd`
10 majorvers=`uname -r | sed 's/\..*//'`
11 if [ $majorvers -ge 7 ]; then
12     SEP=:
13     package=/Developer/Applications/Utilities/PackageMaker.app/Contents/MacOS/PackageMaker
14     if [ ! -x $package ]; then
15        echo "PackageMaker does not exist. Please run this script on a MacOS X system"
16       echo "with the DeveloperTools package installed"
17       exit 1
18     fi
19 else
20     SEP=.
21     package=/usr/bin/package
22     if [ ! -f $package ]; then
23        echo "$package does not exist. Please run this script on a MacOS X system"
24       echo "with the BSD subsystem installed"
25       exit 1
26     fi
27     if grep -q 'set resDir = ""' $package ; then
28        echo $package is buggy.
29        echo remove the line \''set resDir = ""'\' from $package and try again
30        exit 1
31     fi
32 fi
33
34 if [ -x /usr/bin/curl ]; then
35 #    /usr/bin/curl -f -O http://www.central.org/dl/cellservdb/CellServDB
36     /usr/bin/curl -f -O http://dl.central.org/dl/cellservdb/CellServDB
37 fi
38
39 if [ ! -f CellServDB ]; then
40    echo "A CellServDB file must be placed in the working directory"
41    die=1
42 fi
43 FILES="ReadMe.rtf License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl 2.0.txt"
44 for f in $FILES; do
45    if [ ! -f $f ]; then
46      echo "file missing: " $f
47      die=1
48    fi
49 done
50 if [ "$die" ]; then
51   echo "Correct above errors; then retry"
52   exit 1
53 fi
54 if [ ! -f $BINDEST/bin/translate_et ]; then
55   die=1
56 fi
57 if [ ! -f $BINDEST/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs ]; then
58   die=1
59 fi
60 if [ "$die" ]; then
61    echo $BINDEST " is not a valid binary dir. it should be the result of"
62    echo "make dest"
63    exit 1
64 fi
65
66 PKGROOT=$RESSRC/pkgroot
67 PKGRES=$RESSRC/pkgres
68 rm -rf pkgroot pkgres
69 mkdir -p $PKGROOT $PKGRES
70
71 mkdir $PKGROOT/Library
72 chown -R root${SEP}admin $PKGROOT
73 chmod -R 775 $PKGROOT
74 mkdir $PKGROOT/Library/OpenAFS $PKGROOT/Library/OpenAFS/Tools
75 cd $BINDEST
76 pax -rw * $PKGROOT/Library/OpenAFS/Tools
77 cd $RESSRC
78 mkdir $PKGROOT/Library/StartupItems 
79 mkdir $PKGROOT/Library/StartupItems/OpenAFS
80 cp $BINDEST/root.client/usr/vice/etc/afs.rc  $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
81 chmod a+x $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
82 cp $BINDEST/root.client/usr/vice/etc/StartupParameters.plist  $PKGROOT/Library/StartupItems/OpenAFS/StartupParameters.plist
83 chown -R root${SEP}admin $PKGROOT/Library
84 chmod -R o-w $PKGROOT/Library
85 chmod -R g+w $PKGROOT/Library
86 chown -R root${SEP}wheel $PKGROOT/Library/StartupItems
87 chmod -R og-w $PKGROOT/Library/StartupItems
88 chown -R root${SEP}wheel $PKGROOT/Library/OpenAFS/Tools
89 chmod -R og-w $PKGROOT/Library/OpenAFS/Tools
90
91 mkdir $PKGROOT/private $PKGROOT/private/var $PKGROOT/private/var/db
92 mkdir $PKGROOT/private/var/db/openafs $PKGROOT/private/var/db/openafs/cache
93 mkdir $PKGROOT/private/var/db/openafs/etc $PKGROOT/private/var/db/openafs/etc/config
94 cp $RESSRC/CellServDB $PKGROOT/private/var/db/openafs/etc/CellServDB.master
95 echo openafs.org > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
96 if [ $majorvers -ge 7 ]; then
97     echo /afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
98     make AFSINCLUDE=$BINDEST/include
99     cp afssettings $PKGROOT/private/var/db/openafs/etc/config
100     cp settings.plist $PKGROOT/private/var/db/openafs/etc/config/settings.plist.orig
101     make clean
102 else
103     echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
104 fi
105 echo '-afsdb -stat 2000 -dcache 800 -daemons 3 -volumes 70 -dynroot -fakestat-all' > $PKGROOT/private/var/db/openafs/etc/config/afsd.options.sample
106
107 strip -X -S $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs
108
109 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext $PKGROOT/private/var/db/openafs/etc
110 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/C $PKGROOT/private/var/db/openafs/etc
111
112 chown -R root${SEP}wheel $PKGROOT/private
113 chmod -R og-w $PKGROOT/private
114 chmod  og-rx $PKGROOT/private/var/db/openafs/cache
115
116 mkdir $PKGROOT/usr $PKGROOT/usr/bin $PKGROOT/usr/sbin
117
118 BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
119
120 # Should these be linked into /usr too?
121 OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
122 OTHER_ETCLIST="vos rxdebug"
123
124 for f in $BINLIST; do
125    ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
126 done
127 ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
128
129 ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
130
131 chown -R root${SEP}wheel $PKGROOT/usr
132 chmod -R og-w $PKGROOT/usr
133
134 if [ $majorvers -ge 7 ]; then
135     cp OpenAFS.post_install $PKGRES/postinstall
136     cp OpenAFS.pre_upgrade $PKGRES/preupgrade
137     cp OpenAFS.post_install $PKGRES/postupgrade
138     if [ $majorvers -ge 8 ]; then
139         cp InstallationCheck $PKGRES
140         mkdir $PKGRES/English.lproj
141         cp InstallationCheck $PKGRES/English.lproj
142         chmod a+x $PKGRES/InstallationCheck
143     fi
144     chmod a+x $PKGRES/postinstall $PKGRES/postupgrade $PKGRES/preupgrade
145 else
146     cp OpenAFS.post_install OpenAFS.pre_upgrade $PKGRES
147     cp OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade
148     chmod a+x $PKGRES/OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade $PKGRES/OpenAFS.pre_upgrade
149 fi
150 cp License.rtf ReadMe.rtf $PKGRES
151 cp csrvdbmerge.pl $PKGRES
152 chmod a+x $PKGRES/csrvdbmerge.pl
153 cp CellServDB.list $PKGRES
154 chown -R root${SEP}wheel $PKGRES
155 rm -rf OpenAFS.pkg
156 if [ $majorvers -ge 7 ]; then
157     echo $package -build -p $RESSRC/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
158         -i OpenAFS.Info.plist -d OpenAFS.Description.plist
159     $package -build -p $RESSRC/OpenAFS.pkg -f $PKGROOT -r $PKGRES \
160         -i OpenAFS.Info.plist -d OpenAFS.Description.plist
161 else
162     echo $package $PKGROOT OpenAFS.info -r $PKGRES
163     $package $PKGROOT OpenAFS.info -r $PKGRES
164     #old versions of package didn't handle this properly
165     if [ ! -r OpenAFS.pkg/Contents ]; then
166             mkdir OpenAFS.pkg/Contents OpenAFS.pkg/Contents/Resources
167             mv OpenAFS.pkg/OpenAFS.* OpenAFS.pkg/Contents/Resources
168             mv OpenAFS.pkg/*.rtf OpenAFS.pkg/Contents/Resources
169             mv OpenAFS.pkg/csrvdbmerge.pl OpenAFS.pkg/Contents/Resources
170             mv OpenAFS.pkg/CellServDB* OpenAFS.pkg/Contents/Resources
171     fi
172 fi
173
174 rm -rf pkgroot pkgres
175 mkdir dmg
176 mv OpenAFS.pkg dmg
177 rm -rf OpenAFS.dmg
178 hdiutil create -srcfolder dmg -volname OpenAFS -anyowners OpenAFS.dmg
179 rm -rf dmg
180 # Unfortunately, sudo sets $USER to root, so I can't chown the 
181 #.pkg dir back to myself
182 #chown -R $USER OpenAFS.pkg