3 set prog = `/usr/bin/basename $0`
4 set usage = "Usage: $prog [-f] root-dir info-file [tiff-file] [-d dest-dir] [-r resource-dir] [-traditional | -gnutar]"
7 if (-x /usr/bin/mkbom) then
8 set mkbom=/usr/bin/mkbom
9 set lsbom=/usr/bin/lsbom
11 set mkbom=/usr/etc/mkbom
12 set lsbom=/usr/etc/lsbom
15 if (-x /usr/bin/awk) then
21 set gnutar=/usr/bin/gnutar
35 echo ${prog}: dest-dir parameter already set to ${destDir}.
38 else if ( $#argv < 2 ) then
39 echo ${prog}: -d option requires destination directory.
43 set destDir = $argv[2]
49 echo ${prog}: root-dir parameter already set to ${rootDir}.
52 else if ( $#argv < 2 ) then
53 echo ${prog}: -f option requires package root directory.
57 set rootDir = $argv[2]
64 echo ${prog}: resource-dir parameter already set to ${resDir}.
67 else if ( $#argv < 2 ) then
68 echo ${prog}: -r option requires package resource directory.
86 # We got long file names, better use bigtar instead
87 #set archiver = /NextAdmin/Installer.app/Resources/installer_bigtar
88 echo 2>&1 ${prog}: -B flag is no longer relevant.
92 echo ${prog}: Unknown option: $argv[1]
97 echo ${prog}: info-file parameter already set to ${info}.
101 set info = "$argv[1]"
107 echo ${prog}: tiff-file parameter already set to ${tiff}.
111 set tiff = "$argv[1]"
116 if ( $?rootDir ) then
117 echo ${prog}: unrecognized parameter: $argv[1]
121 set rootDir = "$argv[1]"
128 # check for mandatory parameters
129 if ( ! $?rootDir ) then
130 echo ${prog}: missing root-dir parameter.
133 else if ( ! $?info) then
134 echo ${prog}: missing info-file parameter.
139 # destDir gets default value if unset on command line
140 if ( $?destDir ) then
141 /bin/mkdir -p $destDir
146 # derive the root name for the package from the root name of the info file
147 set root = `/usr/bin/basename $info .info`
149 # create package directory
150 set pkg = ${destDir}/${root}.pkg
151 echo Generating Installer package $pkg ...
152 if ( -e $pkg ) /bin/rm -rf $pkg
153 /bin/mkdir -p -m 755 $pkg
155 # (gnu)tar/pax and compress root directory to package archive
156 echo -n " creating package archive ... "
158 set pkgTop = ${rootDir:t}
159 set parent = ${rootDir:h}
160 if ( "$parent" == "$pkgTop" ) set parent = "."
162 set parent = $rootDir
166 set pkgArchive = $pkg/$root.tar.Z
167 (cd $parent; $tar -w $pkgTop) | /usr/bin/compress -f -c > $pkgArchive
168 else if ( $?usegnutar ) then
169 set pkgArchive = $pkg/$root.tar.gz
170 (cd $parent; $gnutar zcf $pkgArchive $pkgTop)
172 set pkgArchive = $pkg/$root.pax.gz
173 (cd $parent; $pax -w -z -x cpio $pkgTop) > $pkgArchive
175 /bin/chmod 444 $pkgArchive
178 # copy info file to package
179 set pkgInfo = $pkg/$root.info
180 echo -n " copying ${info:t} ... "
181 /bin/cp $info $pkgInfo
182 /bin/chmod 444 $pkgInfo
185 # copy tiff file to package
187 set pkgTiff = $pkg/$root.tiff
188 echo -n " copying ${tiff:t} ... "
189 /bin/cp $tiff $pkgTiff
190 /bin/chmod 444 $pkgTiff
194 # copy resources to package
196 echo -n " copying ${resDir:t} ... "
198 # don't want to see push/pop output
199 pushd $resDir > /dev/null
200 # get lists of resources. We'll want to change
201 # permissions on just these things later.
202 set directoriesInResDir = `find . -type d`
203 set filesInResDir = `find . -type f`
206 # copy the resource directory contents into the package directory
207 foreach resFile (`ls $resDir`)
208 cp -r $resDir/$resFile $pkg
211 pushd $pkg > /dev/null
212 # Change all directories to +r+x, except the package
214 foreach resFileItem ($directoriesInResDir)
215 if ( $resFileItem != "." ) then
216 chmod 555 $resFileItem
219 # change all flat files to read only
220 foreach resFileItem ($filesInResDir)
221 chmod 444 $resFileItem
229 set pkgBom = $pkg/$root.bom
230 echo -n " generating bom file ... "
233 $mkbom $parent $pkgBom >& /dev/null
235 $mkbom $rootDir $pkgBom >& /dev/null
237 /bin/chmod 444 $pkgArchive
240 # generate sizes file
241 set pkgSizes = $pkg/$root.sizes
242 echo -n " generating sizes file ... "
244 # compute number of files in package
245 set numFiles = `$lsbom -s $pkgBom | /usr/bin/wc -l`
247 # compute package size when compressed
248 @ compressedSize = `/usr/bin/du -k -s $pkg | $awk '{print $1}'`
249 @ compressedSize += 3 # add 1KB each for sizes, location, status files
251 @ infoSize = `/bin/ls -s $pkgInfo | $awk '{print $1}'`
252 @ bomSize = `/bin/ls -s $pkgBom | $awk '{print $1}'`
254 @ tiffSize = `/bin/ls -s $pkgTiff | $awk '{print $1}'`
259 @ installedSize = `/usr/bin/du -k -s $rootDir | $awk '{print $1}'`
260 @ installedSize += $infoSize + $bomSize + $tiffSize + 3
262 # echo size parameters to sizes file
263 echo NumFiles $numFiles > $pkgSizes
264 echo InstalledSize $installedSize >> $pkgSizes
265 echo CompressedSize $compressedSize >> $pkgSizes
267 echo " ... finished generating $pkg."