comparison Xcode/package @ 3331:d44a0a913aa2

Eric Wing to Sam Lots of fixes. Fixed missing power management building. Added template icons to the project templates. DocSet stuff Documentation fixes.. Fixed all the SDLtests. (Lots of tedious work.) It now depends on the static library target for convenience so I am not going to remove it from the SDL xcode project.
author Sam Lantinga <slouken@libsdl.org>
date Thu, 01 Oct 2009 15:30:26 +0000
parents d63e9f5944ae
children
comparison
equal deleted inserted replaced
3330:e15bcb04c9b4 3331:d44a0a913aa2
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