openbsd-20030220
[openafs.git] / src / packaging / MacOS / buildpkg.sh
1 #!/bin/sh
2
3 if [ -z "$1" ]; then
4    echo Usage: buildpkg binary-dir
5   exit 1
6 fi
7 BINDEST=$1
8 RESSRC=`pwd`
9 if [ ! -f /usr/bin/package ]; then
10    echo "/usr/bin/package does not exist. Please run this script on a MacOS X system"
11   echo "with the BSD subsystem installed"
12   exit 1
13 fi
14 if grep -q 'set resDir = ""' /usr/bin/package ; then
15    echo /usr/bin/package is buggy.
16    echo remove the line \''set resDir = ""'\' from /usr/bin/package and try again
17    exit 1
18 fi
19
20 if [ ! -f CellServDB ]; then
21    echo "A CellServDB file must be placed in the working directory"
22    die=1
23 fi
24 FILES="ReadMe.rtf License.rtf CellServDB.list OpenAFS.info OpenAFS.post_install OpenAFS.pre_upgrade csrvdbmerge.pl"
25 for f in $FILES; do
26    if [ ! -f $f ]; then
27      echo "file missing: " $f
28      die=1
29    fi
30 done
31 if [ "$die" ]; then
32   echo "Correct above errors; then retry"
33   exit 1
34 fi
35 if [ ! -f $BINDEST/bin/translate_et ]; then
36   die=1
37 fi
38 if [ ! -f $BINDEST/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs ]; then
39   die=1
40 fi
41 if [ "$die" ]; then
42    echo $BINDEST " is not a valid binary dir. it should be the result of"
43    echo "make dest"
44    exit 1
45 fi
46
47 PKGROOT=$RESSRC/pkgroot
48 PKGRES=$RESSRC/pkgres
49 rm -rf pkgroot pkgres
50 mkdir -p $PKGROOT $PKGRES
51
52 mkdir $PKGROOT/Library
53 chown -R root.admin $PKGROOT
54 chmod -R 775 $PKGROOT
55 mkdir $PKGROOT/Library/OpenAFS $PKGROOT/Library/OpenAFS/Tools
56 cd $BINDEST
57 pax -rw * $PKGROOT/Library/OpenAFS/Tools
58 cd $RESSRC
59 mkdir $PKGROOT/Library
60 mkdir $PKGROOT/Library/StartupItems 
61 mkdir $PKGROOT/Library/StartupItems/OpenAFS
62 cp $BINDEST/root.client/usr/vice/etc/afs.rc  $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
63 chmod a+x $PKGROOT/Library/StartupItems/OpenAFS/OpenAFS
64 cp $BINDEST/root.client/usr/vice/etc/StartupParameters.plist  $PKGROOT/Library/StartupItems/OpenAFS/StartupParameters.plist
65 chown -R root.admin $PKGROOT/Library
66 chmod -R o-w $PKGROOT/Library
67 chmod -R g+w $PKGROOT/Library
68 chown -R root.wheel $PKGROOT/Library/OpenAFS/Tools
69 chmod -R og-w $PKGROOT/Library/OpenAFS/Tools
70
71 mkdir $PKGROOT/private $PKGROOT/private/var $PKGROOT/private/var/db
72 mkdir $PKGROOT/private/var/db/openafs $PKGROOT/private/var/db/openafs/cache
73 mkdir $PKGROOT/private/var/db/openafs/etc $PKGROOT/private/var/db/openafs/etc/config
74 cp $RESSRC/CellServDB $PKGROOT/private/var/db/openafs/etc/CellServDB.master
75 echo andrew.cmu.edu > $PKGROOT/private/var/db/openafs/etc/ThisCell.sample
76 echo /Network/afs:/var/db/openafs/cache:30000 > $PKGROOT/private/var/db/openafs/etc/cacheinfo.sample
77 #echo '-stat 2000 -dcache 800 -daemons 3 -volumes 70 -rootvol root.afs.local' > $PKGROOT/private/var/db/openafs/etc/config/afsd.options.sample
78
79 strip -X -S $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext/Contents/MacOS/afs
80
81 cp -RP $PKGROOT/Library/OpenAFS/Tools/root.client/usr/vice/etc/afs.kext $PKGROOT/private/var/db/openafs/etc
82
83 chown -R root.wheel $PKGROOT/private
84 chmod -R og-w $PKGROOT/private
85 chmod  og-rx $PKGROOT/private/var/db/openafs/cache
86
87 mkdir $PKGROOT/usr $PKGROOT/usr/bin $PKGROOT/usr/sbin
88
89 BINLIST="fs klog klog.krb kpasswd pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb"
90
91 # Should these be linked into /usr too?
92 OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
93 OTHER_ETCLIST="vos rxdebug"
94
95 for f in $BINLIST; do
96    ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
97 done
98
99 ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
100
101 chown -R root.wheel $PKGROOT/usr
102 chmod -R og-w $PKGROOT/usr
103
104 cp License.rtf ReadMe.rtf OpenAFS.post_install OpenAFS.pre_upgrade $PKGRES
105 cp OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade
106 chmod a+x $PKGRES/OpenAFS.post_install $PKGRES/OpenAFS.post_upgrade $PKGRES/OpenAFS.pre_upgrade
107 cp csrvdbmerge.pl $PKGRES
108 chmod a+x $PKGRES/csrvdbmerge.pl
109 cp CellServDB.list $PKGRES
110 chown -R root.wheel $PKGRES
111 rm -rf OpenAFS.pkg
112 echo /usr/bin/package $PKGROOT OpenAFS.info -r $PKGRES
113 /usr/bin/package $PKGROOT OpenAFS.info -r $PKGRES
114 #old versions of package didn't handle this properly
115 if [ ! -r OpenAFS.pkg/Contents ]; then
116         mkdir OpenAFS.pkg/Contents OpenAFS.pkg/Contents/Resources
117         mv OpenAFS.pkg/OpenAFS.* OpenAFS.pkg/Contents/Resources
118         mv OpenAFS.pkg/*.rtf OpenAFS.pkg/Contents/Resources
119         mv OpenAFS.pkg/csrvdbmerge.pl OpenAFS.pkg/Contents/Resources
120         mv OpenAFS.pkg/CellServDB* OpenAFS.pkg/Contents/Resources
121 fi
122
123 rm -rf pkgroot pkgres
124 # Unfortunately, sudo sets $USER to root, so I can't chown the 
125 #.pkg dir back to myself
126 #chown -R $USER OpenAFS.pkg