Xcode/package
author Michael Sartain <mikesart@valvesoftware.com>
Thu, 11 Oct 2012 09:41:43 -0700
changeset 6570 45855398762c
parent 2207 d63e9f5944ae
permissions -rwxr-xr-x
Add GLX_X_VISUAL_TYPE_EXT so created window will use DirectColor if available (instead of TrueColor).
Our new X11 window was being created with the TrueColor attribute, and trying to set the gamma
on that would fail. This change checks for the visual_info extension, and uses that to ask for
DirectColor if available.
     1 #! /bin/csh -ef
     2 
     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]"
     5 set noglob
     6 
     7 if (-x /usr/bin/mkbom) then
     8     set mkbom=/usr/bin/mkbom
     9     set lsbom=/usr/bin/lsbom
    10 else
    11     set mkbom=/usr/etc/mkbom
    12     set lsbom=/usr/etc/lsbom
    13 endif
    14 
    15 if (-x /usr/bin/awk) then
    16     set awk=/usr/bin/awk
    17 else
    18     set awk=/bin/awk
    19 endif
    20 
    21 set gnutar=/usr/bin/gnutar
    22 set tar=/usr/bin/tar
    23 set pax=/bin/pax
    24 
    25 # gather parameters
    26 if ($#argv == 0) then
    27     echo $usage
    28     exit(1)
    29 endif
    30 
    31 while ( $#argv > 0 )
    32     switch ( $argv[1] )
    33 	case -d:
    34 	    if ( $?destDir ) then
    35 		echo ${prog}: dest-dir parameter already set to ${destDir}.
    36 		echo $usage
    37 		exit(1)
    38 	    else if ( $#argv < 2 ) then
    39 		echo ${prog}: -d option requires destination directory.
    40 		echo $usage
    41 		exit(1)
    42 	    else
    43 		set destDir = $argv[2]
    44 		shift; shift
    45 		breaksw
    46 	    endif
    47 	case -f:
    48 	    if ( $?rootDir ) then
    49 		echo ${prog}: root-dir parameter already set to ${rootDir}.
    50 		echo $usage
    51 		exit(1)
    52 	    else if ( $#argv < 2 ) then
    53 		echo ${prog}: -f option requires package root directory.
    54 		echo $usage
    55 		exit(1)
    56 	    else
    57 		set rootDir = $argv[2]
    58 		set fflag
    59 		shift; shift
    60 		breaksw
    61 	    endif
    62 	case -r:
    63 	    if ( $?resDir ) then
    64 		echo ${prog}: resource-dir parameter already set to ${resDir}.
    65 		echo $usage
    66 		exit(1)
    67 	    else if ( $#argv < 2 ) then
    68 		echo ${prog}: -r option requires package resource directory.
    69 		echo $usage
    70 		exit(1)
    71 	    else
    72 		set resDir = $argv[2]
    73 		shift; shift
    74 		breaksw
    75 	    endif
    76 	case -traditional:
    77 	    set usetar
    78             unset usegnutar
    79 	    unset usepax
    80 	    breaksw
    81         case -gnutar:
    82 	    set usegnutar
    83             unset usepax
    84 	    unset usetar
    85 	case -B:
    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.
    89 	    shift
    90 	    breaksw
    91 	case -*:
    92 	    echo ${prog}: Unknown option: $argv[1]
    93 	    echo $usage
    94 	    exit(1)
    95 	case *.info:
    96 	    if ( $?info ) then
    97 		echo ${prog}: info-file parameter already set to ${info}.
    98 		echo $usage
    99 		exit(1)
   100 	    else
   101 		set info = "$argv[1]"
   102 		shift
   103 		breaksw
   104 	    endif
   105 	case *.tiff:
   106 	    if ( $?tiff ) then
   107 		echo ${prog}: tiff-file parameter already set to ${tiff}.
   108 		echo $usage
   109 		exit(1)
   110 	    else
   111 		set tiff = "$argv[1]"
   112 		shift
   113 		breaksw
   114 	    endif
   115 	default:
   116 	    if ( $?rootDir ) then
   117 		echo ${prog}: unrecognized parameter: $argv[1]
   118 		echo $usage
   119 		exit(1)
   120 	    else
   121 		set rootDir = "$argv[1]"
   122 		shift
   123 		breaksw
   124 	    endif
   125     endsw
   126 end
   127 
   128 # check for mandatory parameters
   129 if ( ! $?rootDir ) then
   130     echo ${prog}: missing root-dir parameter.
   131     echo $usage
   132     exit(1)
   133 else if ( ! $?info) then
   134     echo ${prog}: missing info-file parameter.
   135     echo $usage
   136     exit(1)
   137 endif
   138 
   139 # destDir gets default value if unset on command line
   140 if ( $?destDir ) then
   141     /bin/mkdir -p $destDir
   142 else
   143     set destDir = .
   144 endif
   145 
   146 # derive the root name for the package from the root name of the info file
   147 set root = `/usr/bin/basename $info .info`
   148 
   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
   154 
   155 # (gnu)tar/pax and compress root directory to package archive
   156 echo -n "	creating package archive ... "
   157 if ( $?fflag ) then
   158     set pkgTop = ${rootDir:t}
   159     set parent = ${rootDir:h}
   160     if ( "$parent" == "$pkgTop" ) set parent = "."
   161 else
   162     set parent = $rootDir
   163     set pkgTop = .    
   164 endif
   165 if ( $?usetar ) then
   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)
   171 else
   172     set pkgArchive = $pkg/$root.pax.gz
   173     (cd $parent; $pax -w -z -x cpio $pkgTop) > $pkgArchive
   174 endif
   175 /bin/chmod 444 $pkgArchive
   176 echo done.
   177 
   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
   183 echo done.
   184 
   185 # copy tiff file to package
   186 if ( $?tiff ) then
   187     set pkgTiff = $pkg/$root.tiff
   188     echo -n "	copying ${tiff:t} ... "
   189     /bin/cp $tiff $pkgTiff
   190     /bin/chmod 444 $pkgTiff
   191     echo done.
   192 endif
   193 
   194 # copy resources to package
   195 if ( $?resDir ) then
   196     echo -n "	copying ${resDir:t} ... "
   197 
   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`
   204     popd > /dev/null
   205 
   206     # copy the resource directory contents into the package directory
   207     foreach resFile (`ls $resDir`)
   208 	cp -r $resDir/$resFile $pkg
   209     end
   210 
   211     pushd $pkg > /dev/null
   212 	# Change all directories to +r+x, except the package
   213 	# directory itself
   214         foreach resFileItem ($directoriesInResDir)
   215             if ( $resFileItem != "." ) then
   216                 chmod 555 $resFileItem
   217             endif
   218         end
   219 	# change all flat files to read only
   220         foreach resFileItem ($filesInResDir)
   221             chmod 444 $resFileItem
   222         end
   223     popd > /dev/null
   224 
   225     echo done.
   226 endif
   227 
   228 # generate bom file
   229 set pkgBom = $pkg/$root.bom
   230 echo -n "	generating bom file ... "
   231 /bin/rm -f $pkgBom
   232 if ( $?fflag ) then
   233     $mkbom $parent $pkgBom >& /dev/null
   234 else
   235     $mkbom $rootDir $pkgBom >& /dev/null
   236 endif
   237 /bin/chmod 444 $pkgArchive
   238 echo done.
   239 	
   240 # generate sizes file
   241 set pkgSizes = $pkg/$root.sizes
   242 echo -n "	generating sizes file ... "
   243 
   244 # compute number of files in package
   245 set numFiles = `$lsbom -s $pkgBom | /usr/bin/wc -l`
   246 
   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
   250 
   251 @ infoSize = `/bin/ls -s $pkgInfo | $awk '{print $1}'`
   252 @ bomSize = `/bin/ls -s $pkgBom | $awk '{print $1}'`
   253 if ( $?tiff ) then
   254     @ tiffSize = `/bin/ls -s $pkgTiff | $awk '{print $1}'`
   255 else
   256     @ tiffSize = 0
   257 endif 
   258 
   259 @ installedSize = `/usr/bin/du -k -s $rootDir | $awk '{print $1}'`
   260 @ installedSize += $infoSize + $bomSize + $tiffSize + 3
   261 
   262 # echo size parameters to sizes file
   263 echo NumFiles $numFiles             >  $pkgSizes
   264 echo InstalledSize $installedSize   >> $pkgSizes
   265 echo CompressedSize $compressedSize >> $pkgSizes
   266 echo done.
   267 echo " ... finished generating $pkg."
   268 
   269 exit(0)
   270 
   271 # end package
   272