+++ /dev/null
-#! /bin/csh -ef
-# this file was orignally distributed by Apple in the Developer Tools package
-#it is distributed under the Apple Open Source License
-set version=0.2
-set prog = `/usr/bin/basename $0`
-set usage = "Usage: $prog [-f] root-dir info-file [tiff-file] [-d dest-dir] [-r resource-dir] [-traditional | -gnutar] [-bzip]"
-set noglob
-
-if (-x /usr/bin/mkbom) then
- set mkbom=/usr/bin/mkbom
- set lsbom=/usr/bin/lsbom
-else
- set mkbom=/usr/etc/mkbom
- set lsbom=/usr/etc/lsbom
-endif
-
-if (-x /usr/bin/awk) then
- set awk=/usr/bin/awk
-else
- set awk=/bin/awk
-endif
-set bzip2=`which bzip2`
-set gnutar=/usr/bin/gnutar
-set tar=/usr/bin/tar
-set pax=/bin/pax
-
-# gather parameters
-if ($#argv == 0) then
- echo $usage
- exit(1)
-endif
-unset usebzip
-while ( $#argv > 0 )
- switch ( $argv[1] )
- case -d:
- if ( $?destDir ) then
- echo ${prog}: dest-dir parameter already set to ${destDir}.
- echo $usage
- exit(1)
- else if ( $#argv < 2 ) then
- echo ${prog}: -d option requires destination directory.
- echo $usage
- exit(1)
- else
- set destDir = $argv[2]
- shift; shift
- breaksw
- endif
- case -f:
- if ( $?rootDir ) then
- echo ${prog}: root-dir parameter already set to ${rootDir}.
- echo $usage
- exit(1)
- else if ( $#argv < 2 ) then
- echo ${prog}: -f option requires package root directory.
- echo $usage
- exit(1)
- else
- set rootDir = $argv[2]
- set fflag
- shift; shift
- breaksw
- endif
- case -r:
- if ( $?resDir ) then
- echo ${prog}: resource-dir parameter already set to ${resDir}.
- echo $usage
- exit(1)
- else if ( $#argv < 2 ) then
- echo ${prog}: -r option requires package resource directory.
- echo $usage
- exit(1)
- else
- set resDir = $argv[2]
- shift; shift
- breaksw
- endif
- case -traditional:
- echo useing standard tar
- set usetar
- unset usegnutar
- unset usepax
- breaksw
- case -gnutar:
- echo using gnutar
- set usegnutar
- unset usepax
- unset usetar
- shift
- case -bzip:
- if (-x $bzip2) then
- set usebzip
- echo using bzip compression
- else
- echo COMPRESSION ERROR: You can not use BZIP2 you do not have it installed
- exit(1)
- endif
- shift
- breaksw
- case -*:
- echo ${prog}: Unknown option: $argv[1]
- echo $usage
- exit(1)
- case *.info:
- if ( $?info ) then
- echo ${prog}: info-file parameter already set to ${info}.
- echo $usage
- exit(1)
- else
- set info = "$argv[1]"
- shift
- breaksw
- endif
- case *.tiff:
- if ( $?tiff ) then
- echo ${prog}: tiff-file parameter already set to ${tiff}.
- echo $usage
- exit(1)
- else
- set tiff = "$argv[1]"
- shift
- breaksw
- endif
- default:
- if ( $?rootDir ) then
- echo ${prog}: unrecognized parameter: $argv[1]
- echo $usage
- exit(1)
- else
- set rootDir = "$argv[1]"
- shift
- breaksw
- endif
- endsw
-end
-
-# check for mandatory parameters
-if ( ! $?rootDir ) then
- echo ${prog}: missing root-dir parameter.
- echo $usage
- exit(1)
-else if ( ! $?info) then
- echo ${prog}: missing info-file parameter.
- echo $usage
- exit(1)
-endif
-
-# destDir gets default value if unset on command line
-if ( $?destDir ) then
- /bin/mkdir -p $destDir
-else
- set destDir = .
-endif
-
-# derive the root name for the package from the root name of the info file
-set root = `/usr/bin/basename $info .info`
-
-# create package directory
-set pkg = ${destDir}/${root}.pkg
-echo Generating Installer package $pkg ...
-if ( -e $pkg ) /bin/rm -rf $pkg
-/bin/mkdir -p -m 755 $pkg
-/bin/mkdir -p -m 755 $pkg/Contents
-/bin/mkdir -p -m 755 $pkg/Contents/Resources
-/bin/mkdir -p -m 755 $pkg/Contents/Resources/English.lproj/
-echo "gxpmpkg2" >$pkg/Contents/PkgInfo
-chmod 755 $pkg/Contents/PkgInfo
-# (gnu)tar/pax and compress root directory to package archive
-echo -n " creating package archive ... "
-if ( $?fflag ) then
- set pkgTop = ${rootDir:t}
- set parent = ${rootDir:h}
- if ( "$parent" == "$pkgTop" ) set parent = "."
-else
- set parent = $rootDir
- set pkgTop = .
-endif
-if ( $?usetar ) then
- set pkgArchive = $pkg/Contents/Resources/$root.tar.Z
- (cd $parent; $tar -w $pkgTop) | /usr/bin/tar -f -c > $pkgArchive
-else if ( $?usegnutar ) then
- if ( $?usebzip ) then
- set pkgArchive = $pkg/Contents/Resources/$root.tar.bz2
- (cd $parent; $gnutar c $pkgTop) | $bzip2 -f -c > $pkgArchive
- else
- set pkgArchive = $pkg/Contents/Resources/$root.tar.gz
- (cd $parent; $gnutar zcf $pkgArchive $pkgTop)
- endif
-else
- set pkgArchive = $pkg/Contents/Resources/$root.pax.gz
- (cd $parent; $pax -w -z -x cpio $pkgTop) > $pkgArchive
-endif
-/bin/chmod 755 $pkgArchive
-echo done.
-
-# copy info file to package
-set pkgInfo = $pkg/Contents/Resources/English.lproj/$root.info
-echo -n " copying ${info:t} ... "
-/bin/cp $info $pkgInfo
-/bin/chmod 755 $pkgInfo
-echo done.
-
-# copy tiff file to package
-if ( $?tiff ) then
- set pkgTiff = $pkg/$root.tiff
- echo -n " copying ${tiff:t} ... "
- /bin/cp $tiff $pkgTiff
- /bin/chmod 444 $pkgTiff
- echo done.
-endif
-
-# copy resources to package
-if ( $?resDir ) then
- echo -n " copying ${resDir:t} ... "
-
- # don't want to see push/pop output
- pushd $resDir > /dev/null
- # get lists of resources. We'll want to change
- # permissions on just these things later.
- set directoriesInResDir = `find . -type d | grep -v -e .svn -e CVS`
- set filesInResDir = `find . -type f`
- popd > /dev/null
-
- # copy the resource directory contents into the package directory
- foreach resFile (`cd $resDir && find . | grep -v -e .svn -e CVS`)
- cp -r "$resDir/$resFile" "$pkg/Contents/Resources"
- end
-
- pushd $pkg/Contents/Resources > /dev/null
- # Change all directories to +r+x, except the package
- # directory itself
- foreach resFileItem ($directoriesInResDir)
- if ( $resFileItem != "." ) then
- chmod 755 "$resFileItem"
- endif
- end
- # change all flat files to read only
- foreach resFileItem ($filesInResDir)
- if ( $resFileItem != "./.DS_Store" ) then
- chmod 755 "$resFileItem"
- endif
- end
- popd > /dev/null
-
- echo done.
-endif
-
-# generate bom file
-set pkgBom = $pkg/Contents/Resources/$root.bom
-echo -n " generating bom file ... "
-/bin/rm -f $pkgBom
-if ( $?fflag ) then
- $mkbom $parent $pkgBom >& /dev/null
-else
- $mkbom $rootDir $pkgBom >& /dev/null
-endif
-/bin/chmod 444 $pkgArchive
-echo done.
-
-# generate sizes file
-set pkgSizes = $pkg/Contents/Resources/$root.sizes
-echo -n " generating sizes file ... "
-
-# compute number of files in package
-set numFiles = `$lsbom -s $pkgBom | /usr/bin/wc -l`
-
-# compute package size when compressed
-@ compressedSize = `/usr/bin/du -k -s $pkg | $awk '{print $1}'`
-@ compressedSize += 3 # add 1KB each for sizes, location, status files
-
-@ infoSize = `/bin/ls -s $pkgInfo | $awk '{print $1}'`
-@ bomSize = `/bin/ls -s $pkgBom | $awk '{print $1}'`
-if ( $?tiff ) then
- @ tiffSize = `/bin/ls -s $pkgTiff | $awk '{print $1}'`
-else
- @ tiffSize = 0
-endif
-
-@ installedSize = `/usr/bin/du -k -s $rootDir | $awk '{print $1}'`
-@ installedSize += $infoSize + $bomSize + $tiffSize + 3
-
-# echo size parameters to sizes file
-echo NumFiles $numFiles > $pkgSizes
-echo InstalledSize $installedSize >> $pkgSizes
-echo CompressedSize $compressedSize >> $pkgSizes
-echo done.
-echo " ... finished generating $pkg."
-
-exit(0)
-
-# end package
-