Mercurial > sdl-ios-xcode
comparison Xcode/package @ 2207:d63e9f5944ae
Unpacked project archives to get individual file history in subversion
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 21 Jul 2007 17:09:01 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
2206:ca7d2227d630 | 2207:d63e9f5944ae |
---|---|
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 |