home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3.4.17 [SPARC, PA-RISC] / nextstep33_risc.iso / NextAdmin / Installer.app / package < prev   
Text File  |  1994-05-05  |  4KB  |  191 lines

  1. #! /bin/csh -ef
  2.  
  3. set prog = `/usr/bin/basename $0`
  4. set usage = "Usage: $prog [-B] [-f] root-dir info-file [tiff-file] [-d dest-dir]"
  5. set noglob
  6. # Use Installer's tar by default
  7. set tar = /NextAdmin/Installer.app/installer_tar
  8.  
  9. # gather parameters
  10. if ($#argv == 0) then
  11.     echo $usage
  12.     exit(1)
  13. endif
  14.  
  15. while ( $#argv > 0 )
  16.     switch ( $argv[1] )
  17.     case -d:
  18.         if ( $?destDir ) then
  19.         echo ${prog}: dest-dir parameter already set to ${destDir}.
  20.         echo $usage
  21.         exit(1)
  22.         else if ( $#argv < 2 ) then
  23.         echo ${prog}: -d option requires destination directory.
  24.         echo $usage
  25.         exit(1)
  26.         else
  27.         set destDir = $argv[2]
  28.         shift; shift
  29.         breaksw
  30.         endif
  31.     case -f:
  32.         if ( $?rootDir ) then
  33.         echo ${prog}: root-dir parameter already set to ${rootDir}.
  34.         echo $usage
  35.         exit(1)
  36.         else if ( $#argv < 2 ) then
  37.         echo ${prog}: -f option requires package root directory.
  38.         echo $usage
  39.         exit(1)
  40.         else
  41.         set rootDir = $argv[2]
  42.         set fflag
  43.         shift; shift
  44.         breaksw
  45.         endif
  46.     case -B:
  47.         # We got long file names, better use bigtar instead
  48.         set tar = /NextAdmin/Installer.app/installer_bigtar
  49.         shift
  50.         breaksw
  51.     case -*:
  52.         echo ${prog}: Unknown option: $argv[1]
  53.         echo $usage
  54.         exit(1)
  55.     case *.info:
  56.         if ( $?info ) then
  57.         echo ${prog}: info-file parameter already set to ${info}.
  58.         echo $usage
  59.         exit(1)
  60.         else
  61.         set info = "$argv[1]"
  62.         shift
  63.         breaksw
  64.         endif
  65.     case *.tiff:
  66.         if ( $?tiff ) then
  67.         echo ${prog}: tiff-file parameter already set to ${tiff}.
  68.         echo $usage
  69.         exit(1)
  70.         else
  71.         set tiff = "$argv[1]"
  72.         shift
  73.         breaksw
  74.         endif
  75.     default:
  76.         if ( $?rootDir ) then
  77.         echo ${prog}: unrecognized parameter: $argv[1]
  78.         echo $usage
  79.         exit(1)
  80.         else
  81.         set rootDir = "$argv[1]"
  82.         shift
  83.         breaksw
  84.         endif
  85.     endsw
  86. end
  87.  
  88. # check for mandatory parameters
  89. if ( ! $?rootDir ) then
  90.     echo ${prog}: missing root-dir parameter.
  91.     echo $usage
  92.     exit(1)
  93. else if ( ! $?info) then
  94.     echo ${prog}: missing info-file parameter.
  95.     echo $usage
  96.     exit(1)
  97. endif
  98.  
  99. # destDir gets default value if unset on command line
  100. if ( $?destDir ) then
  101.     /bin/mkdirs $destDir
  102. else
  103.     set destDir = .
  104. endif
  105.  
  106. # derive the root name for the package from the root name of the info file
  107. set root = `/usr/bin/basename $info .info`
  108.  
  109. # create package directory
  110. set pkg = ${destDir}/${root}.pkg
  111. echo Generating Installer package $pkg ...
  112. if ( -e $pkg ) /bin/rm -rf $pkg
  113. /bin/mkdirs -m 755 $pkg
  114.  
  115. # tar and compress root directory to package archive
  116. set pkgArchive = $pkg/$root.tar.Z
  117. echo -n "    creating package archive ... "
  118. if ( $?fflag ) then
  119.     set pkgTop = ${rootDir:t}
  120.     set parent = ${rootDir:h}
  121.     if ( "$parent" == "$pkgTop" ) set parent = "."
  122. else
  123.     set parent = $rootDir
  124.     set pkgTop = .    
  125. endif
  126. (cd $parent; $tar cf - $pkgTop) | /usr/ucb/compress -f -c > $pkgArchive
  127. /bin/chmod 444 $pkgArchive
  128. echo done.
  129.  
  130. # copy info file to package
  131. set pkgInfo = $pkg/$root.info
  132. echo -n "    copying ${info:t} ... "
  133. /bin/cp $info $pkgInfo
  134. /bin/chmod 444 $pkgInfo
  135. echo done.
  136.  
  137. # copy tiff file to package
  138. if ( $?tiff ) then
  139.     set pkgTiff = $pkg/$root.tiff
  140.     echo -n "    copying ${tiff:t} ... "
  141.     /bin/cp $tiff $pkgTiff
  142.     /bin/chmod 444 $pkgTiff
  143.     echo done.
  144. endif
  145.  
  146. # generate bom file
  147. set pkgBom = $pkg/$root.bom
  148. echo -n "    generating bom file ... "
  149. /bin/rm -f $pkgBom
  150. if ( $?fflag ) then
  151.     /usr/etc/mkbom $parent $pkgBom >& /dev/null
  152. else
  153.     /usr/etc/mkbom $rootDir $pkgBom >& /dev/null
  154. endif
  155. /bin/chmod 444 $pkgArchive
  156. echo done.
  157.     
  158. # generate sizes file
  159. set pkgSizes = $pkg/$root.sizes
  160. echo -n "    generating sizes file ... "
  161.  
  162. # compute number of files in package
  163. set numFiles = `/usr/etc/lsbom -s $pkgBom | /usr/ucb/wc -l`
  164.  
  165. # compute package size when compressed
  166. @ compressedSize = `/bin/du -s $pkg | /bin/awk '{print $1}'`
  167. @ compressedSize += 3        # add 1KB each for sizes, location, status files
  168.  
  169. @ infoSize = `/bin/ls -s $pkgInfo | /bin/awk '{print $1}'`
  170. @ bomSize = `/bin/ls -s $pkgBom | /bin/awk '{print $1}'`
  171. if ( $?tiff ) then
  172.     @ tiffSize = `/bin/ls -s $pkgTiff | /bin/awk '{print $1}'`
  173. else
  174.     @ tiffSize = 0
  175. endif 
  176.  
  177. @ installedSize = `/bin/du -s $rootDir | /bin/awk '{print $1}'`
  178. @ installedSize += $infoSize + $bomSize + $tiffSize + 3
  179.  
  180. # echo size parameters to sizes file
  181. echo NumFiles $numFiles             >  $pkgSizes
  182. echo InstalledSize $installedSize   >> $pkgSizes
  183. echo CompressedSize $compressedSize >> $pkgSizes
  184. echo done.
  185. echo " ... finished generating $pkg."
  186.  
  187. exit(0)
  188.  
  189. # end package
  190.     
  191.