28
28
my $binary ;
29
29
my $root = " http://download.osgeo.org/osgeo4w" ;
30
30
my $ininame = " setup.ini" ;
31
+ my $arch = " " ;
31
32
my $help ;
32
33
33
34
my $result = GetOptions(
40
41
" shortname=s" => \$shortname ,
41
42
" ininame=s" => \$ininame ,
42
43
" mirror=s" => \$root ,
44
+ " arch=s" => \$arch ,
43
45
" help" => \$help
44
46
);
45
47
53
55
die " download of System.dll failed" if $? ;
54
56
}
55
57
56
- mkdir " packages" , 0755 unless -d " packages" ;
57
- chdir " packages" ;
58
+ my $archpath = $arch eq " " ? " " : " /$arch " ;
59
+ my $archpostfix = $arch eq " " ? " " : " -$arch " ;
60
+ my $unpacked = " unpacked" . ($arch eq " " ? " " : " -$arch " );
61
+ my $packages = " packages" . ($arch eq " " ? " " : " -$arch " );
58
62
63
+ mkdir $packages , 0755 unless -d $packages ;
64
+ chdir $packages ;
59
65
60
66
system " wget $wgetopt -c http://nsis.sourceforge.net/mediawiki/images/9/9d/Untgz.zip" unless -f " Untgz.zip" ;
61
67
die " download of Untgz.zip failed" if $? ;
66
72
my %sdesc ;
67
73
my $package ;
68
74
69
- system " wget $wgetopt -O setup.ini -c $root /$ininame " ;
75
+ system " wget $wgetopt -O setup.ini -c $root$archpath /$ininame " ;
70
76
die " download of setup.ini failed" if $? ;
71
77
open F, " setup.ini" || die " setup.ini not found" ;
72
78
while (<F>) {
@@ -146,42 +152,42 @@ sub getDeps {
146
152
# Add addons
147
153
#
148
154
149
- if ( -d " unpacked" ) {
155
+ if ( -d $ unpacked ) {
150
156
unless ( $keep ) {
151
- print " Removing unpacked directory\n " if $verbose ;
152
- system " rm -rf unpacked" ;
157
+ print " Removing $ unpacked directory\n " if $verbose ;
158
+ system " echo rm -rf $ unpacked" ;
153
159
} else {
154
- print " Keeping unpacked directory\n " if $verbose ;
160
+ print " Keeping $ unpacked directory\n " if $verbose ;
155
161
}
156
162
}
157
163
158
164
my $taropt = " v" x $verbose ;
159
165
160
- unless (-d " unpacked" ) {
161
- mkdir " unpacked" , 0755;
166
+ unless (-d $ unpacked ) {
167
+ mkdir $ unpacked , 0755;
162
168
163
169
foreach my $p ( keys %pkgs ) {
164
170
$p = $file {$p };
165
- $p =~ s # ^.*/# packages/# ;
171
+ $p =~ s # ^.*/# $ packages /# ;
166
172
167
173
print " Unpacking $p ...\n " if $verbose ;
168
- system " tar $taropt -C unpacked -xjf $p " ;
174
+ system " tar $taropt -C $ unpacked -xjf $p " ;
169
175
die " unpacking of $p failed" if $? ;
170
176
}
171
177
172
- chdir " unpacked" ;
178
+ chdir $ unpacked ;
173
179
174
180
mkdir " bin" , 0755;
175
181
176
182
unless ( -f " bin/nircmd.exe" ) {
177
- unless ( -f " ../packages/nircmd.zip" ) {
178
- system " cd ../packages; wget $wgetopt -c http://www.nirsoft.net/utils/nircmd.zip" ;
183
+ unless ( -f " ../$ packages /nircmd.zip" ) {
184
+ system " cd ../$ packages ; wget $wgetopt -c http://www.nirsoft.net/utils/nircmd.zip" ;
179
185
die " download of nircmd.zip failed" if $? ;
180
186
}
181
187
182
188
mkdir " apps" , 0755;
183
189
mkdir " apps/nircmd" , 0755;
184
- system " cd apps/nircmd; unzip ../../../packages/nircmd.zip && mv nircmd.exe nircmdc.exe ../../bin" ;
190
+ system " cd apps/nircmd; unzip ../../../$ packages /nircmd.zip && mv nircmd.exe nircmdc.exe ../../bin" ;
185
191
die " unpacking of nircmd failed" if $? ;
186
192
}
187
193
@@ -210,7 +216,7 @@ sub getDeps {
210
216
print F " PATH %OSGEO4W_ROOT %\\ bin;%PATH %>>postinstall.log 2>&1\r\n " ;
211
217
print F " cd %OSGEO4W_ROOT %>>postinstall.log 2>&1\r\n " ;
212
218
213
- chdir " unpacked" ;
219
+ chdir $ unpacked ;
214
220
for my $p (<etc/postinstall/*.bat>) {
215
221
$p =~ s /\/ / \\ / g ;
216
222
my ($dir ,$file ) = $p =~ / ^(.+)\\ ([^\\ ]+)$ / ;
@@ -237,7 +243,7 @@ sub getDeps {
237
243
print F " PATH %OSGEO4W_ROOT %\\ bin;%PATH %>>preremove.log 2>&1\r\n " ;
238
244
print F " cd %OSGEO4W_ROOT %>>preremove.log 2>&1\r\n " ;
239
245
240
- chdir " unpacked" ;
246
+ chdir $ unpacked ;
241
247
for my $p (<etc/preremove/*.bat>) {
242
248
$p =~ s /\/ / \\ / g ;
243
249
my ($dir ,$file ) = $p =~ / ^(.+)\\ ([^\\ ]+)$ / ;
@@ -282,7 +288,7 @@ sub getDeps {
282
288
}
283
289
284
290
unless (-d " untgz" ) {
285
- system " unzip packages/Untgz.zip" ;
291
+ system " unzip $ packages /Untgz.zip" ;
286
292
die " unpacking Untgz.zip failed" if $? ;
287
293
}
288
294
@@ -292,7 +298,7 @@ sub getDeps {
292
298
print " Creating license file\n " if $verbose ;
293
299
open O, " >license.tmp" ;
294
300
my $lic ;
295
- for my $l ( ( " osgeo4w/unpacked/apps/$shortname /doc/LICENSE" , " ../COPYING" , " ./Installer-Files/LICENSE.txt" ) ) {
301
+ for my $l ( ( " osgeo4w/$ unpacked /apps/$shortname /doc/LICENSE" , " ../COPYING" , " ./Installer-Files/LICENSE.txt" ) ) {
296
302
next unless -f $l ;
297
303
$lic = $l ;
298
304
last ;
@@ -304,6 +310,7 @@ sub getDeps {
304
310
if ( @lic ) {
305
311
print O " License overview:\n " ;
306
312
print O " 1. QGIS\n " ;
313
+ $i = 1;
307
314
for my $l ( @desc ) {
308
315
print O ++$i . " . $l \n " ;
309
316
}
@@ -322,7 +329,7 @@ sub getDeps {
322
329
for my $l (@lic ) {
323
330
print " Including license $l \n " if $verbose ;
324
331
325
- open I, " osgeo4w/packages/$l " or die " License $l not found." ;
332
+ open I, " osgeo4w/$ packages /$l " or die " License $l not found." ;
326
333
print O " \n\n ----------\n\n " . ++$i . " . License of '" . shift (@desc ) . " '\n\n " ;
327
334
while (<I>) {
328
335
s /\s *$/ \n / ;
@@ -334,16 +341,16 @@ sub getDeps {
334
341
close O;
335
342
336
343
my $license = " license.tmp" ;
337
- if ( -f " osgeo4w/unpacked/apps/$shortname /doc/LICENSE" ) {
338
- open O, " >osgeo4w/unpacked/apps/$shortname /doc/LICENSE" ;
344
+ if ( -f " osgeo4w/$ unpacked /apps/$shortname /doc/LICENSE" ) {
345
+ open O, " >osgeo4w/$ unpacked /apps/$shortname /doc/LICENSE" ;
339
346
open I, $license ;
340
347
while (<I>) {
341
348
print O;
342
349
}
343
350
close O;
344
351
close I;
345
352
346
- $license = " osgeo4w/unpacked/apps/$shortname /doc/LICENSE" ;
353
+ $license = " osgeo4w/$ unpacked /apps/$shortname /doc/LICENSE" ;
347
354
}
348
355
349
356
@@ -356,11 +363,11 @@ sub getDeps {
356
363
$cmd .= " -DBINARY_REVISION=$binary " ;
357
364
$cmd .= sprintf ( " -DVERSION_INT='%d %02d%02d%02d'" , $major , $minor , $patch , $binary );
358
365
$cmd .= " -DQGIS_BASE='$packagename $releasename '" ;
359
- $cmd .= " -DINSTALLER_NAME='QGIS-OSGeo4W-$version -$binary -Setup.exe'" ;
366
+ $cmd .= " -DINSTALLER_NAME='QGIS-OSGeo4W-$version -$binary -Setup$archpostfix .exe'" ;
360
367
$cmd .= " -DDISPLAYED_NAME='$packagename \' $releasename \' ($version )'" ;
361
368
$cmd .= " -DSHORTNAME='$shortname '" ;
362
369
$cmd .= " -DINSTALLER_TYPE=OSGeo4W" ;
363
- $cmd .= " -DPACKAGE_FOLDER=osgeo4w/unpacked" ;
370
+ $cmd .= " -DPACKAGE_FOLDER=osgeo4w/$ unpacked" ;
364
371
$cmd .= " -DLICENSE_FILE='$license '" ;
365
372
$cmd .= " QGIS-Installer.nsi" ;
366
373
@@ -392,6 +399,7 @@ =head1 SYNOPSIS
392
399
-packagename=s name of package (defaults to 'QGIS')
393
400
-shortname=s shortname used for batch file (defaults to 'qgis')
394
401
-mirror=s default mirror (defaults to 'http://download.osgeo.org/osgeo4w')
402
+ -arch=s architecture (x86 or x86_64; defaults to '')
395
403
-help this help
396
404
397
405
If no packages are given 'qgis-full' and it's dependencies will be retrieved
0 commit comments