Blame gtkmm-osx/package

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