13
13
# Download OSGeo4W packages
14
14
#
15
15
16
+ use strict;
17
+ use warnings;
18
+ use Getopt::Long;
19
+ use Pod::Usage;
20
+
21
+ my $keep = 0;
22
+ my $verbose = 0;
23
+
24
+ my $packagename ;
25
+ my $releasename ;
26
+ my $shortname ;
27
+ my $version ;
28
+ my $revision ;
29
+ my $help ;
30
+
31
+ my $result = GetOptions(
32
+ " verbose+" => \$verbose ,
33
+ " keep" => \$keep ,
34
+ " releasename=s" => \$releasename ,
35
+ " version=s" => \$version ,
36
+ " revision=s" => \$revision ,
37
+ " packagename=s" => \$packagename ,
38
+ " shortname=s" => \$shortname ,
39
+ " help" => \$help
40
+ );
41
+
42
+ if ( $help ) {
43
+ pod2usage(1);
44
+ }
45
+
46
+ my $wgetopt = $verbose ? " " : " -q" ;
47
+
16
48
unless (-f " nsis/System.dll" ) {
17
49
mkdir " nsis" , 0755 unless -d " nsis" ;
18
- system " wget -q -Onsis/System.dll http://qgis.org/downloads/System.dll" ;
50
+ system " wget $wgetopt -Onsis/System.dll http://qgis.org/downloads/System.dll" ;
19
51
}
20
52
21
53
mkdir " packages" , 0755 unless -d " packages" ;
22
54
chdir " packages" ;
23
55
24
56
my $root = " http://download.osgeo.org/osgeo4w" ;
25
57
26
- system " wget -q -c http://nsis.sourceforge.net/mediawiki/images/9/9d/Untgz.zip" unless -f " Untgz.zip" ;
27
- system " wget -q -c http://www.nirsoft.net/utils/nircmd.zip" unless -f " nircmd.zip" ;
58
+ system " wget $wgetopt -c http://nsis.sourceforge.net/mediawiki/images/9/9d/Untgz.zip" unless -f " Untgz.zip" ;
59
+ system " wget $wgetopt -c http://www.nirsoft.net/utils/nircmd.zip" unless -f " nircmd.zip" ;
28
60
29
61
my %dep ;
30
62
my %file ;
63
+ my $package ;
31
64
32
- system " wget -q -c $root /setup.ini" ;
65
+ system " wget $wgetopt -c $root /setup.ini" ;
33
66
open F, " setup.ini" || die " setup.ini not found" ;
34
67
while (<F>) {
35
68
chop ;
@@ -50,36 +83,41 @@ sub getDeps {
50
83
51
84
return if exists $pkgs {$pkg };
52
85
86
+ print " Including package $pkg " if $verbose ;
53
87
$pkgs {$pkg } = 1;
54
88
55
89
foreach my $p ( @{ $dep {$pkg } } ) {
56
90
getDeps($p );
57
91
}
58
92
}
59
93
60
- getDeps(" qgis-full" );
94
+ unless (@ARGV ) {
95
+ print " Defaulting to qgis-full package...\n " if $verbose ;
96
+ push @ARGV , " qgis-full" ;
97
+ }
98
+
99
+ getDeps($_ ) for @ARGV ;
61
100
62
101
if (-f " ../addons/bin/NCSEcw4_RO.dll" ) {
63
- print " Enabling ECW support...\n " ;
102
+ print " Enabling ECW support...\n " if $verbose ;
64
103
getDeps(" gdal17-ecw" )
65
104
}
66
105
67
106
if (-f " ../addons/bin/lti_dsdk_dll.dll" ) {
68
- print " Enabling MrSID support...\n " ;
107
+ print " Enabling MrSID support...\n " if $verbose ;
69
108
getDeps(" gdal17-mrsid" )
70
109
}
71
110
72
-
73
111
foreach my $p ( keys %pkgs ) {
74
- $f = " $root /$file {$p }" ;
112
+ my $f = " $root /$file {$p }" ;
75
113
$f =~ s /\/\.\/ / \/ / g ;
76
114
77
115
my ($file ) = $f =~ / ([^\/ ]+)$ / ;
78
116
79
117
next if -f $file ;
80
118
81
- print " Downloading $file [$f ]...\n " ;
82
- system " wget -q -c $f " ;
119
+ print " Downloading $file [$f ]...\n " if $verbose ;
120
+ system " wget $wgetopt -c $f " ;
83
121
}
84
122
85
123
chdir " .." ;
@@ -90,15 +128,24 @@ sub getDeps {
90
128
# Add addons
91
129
#
92
130
131
+ if ( -d " unpacked" ) {
132
+ unless ( $keep ) {
133
+ print " Removing unpacked directory\n " if $verbose ;
134
+ system " rm -rf unpacked" ;
135
+ } else {
136
+ print " Keeping unpacked directory\n " if $verbose ;
137
+ }
138
+ }
93
139
94
- system " rm -rf unpacked " if -d " unpacked " && ! grep ( / ^-k $ / , @ARGV ) ;
140
+ my $taropt = " v " x $verbose ;
95
141
96
142
unless (-d " unpacked" ) {
97
143
mkdir " unpacked" , 0755;
98
144
99
145
for my $p (<packages/*.tar.bz2>) {
100
- print " Unpacking $p ...\n " ;
101
- system " tar -C unpacked -xjf $p " ;
146
+
147
+ print " Unpacking $p ...\n " if $verbose ;
148
+ system " tar $taropt -C unpacked -xjf $p " ;
102
149
}
103
150
104
151
chdir " unpacked" ;
@@ -109,7 +156,10 @@ sub getDeps {
109
156
110
157
system " cd apps/nircmd; unzip ../../../packages/nircmd.zip && mv nircmd.exe ../../bin" ;
111
158
112
- system " tar -C ../addons -cf - . | tar -xf -" if -d " ../addons" ;
159
+ if ( -d " ../addons" ) {
160
+ print " Including addons..." if $verbose ;
161
+ system " tar -C ../addons -cf - . | tar $taropt -xf -" ;
162
+ }
113
163
114
164
chdir " .." ;
115
165
}
@@ -172,7 +222,7 @@ sub getDeps {
172
222
173
223
close F;
174
224
175
- my ($major , $minor , $patch , $release , $revision );
225
+ my ($major , $minor , $patch );
176
226
177
227
open F, " ../../CMakeLists.txt" ;
178
228
while (<F>) {
@@ -184,32 +234,66 @@ sub getDeps {
184
234
} elsif (/ SET\( CPACK_PACKAGE_VERSION_PATCH "(\d +)"\) / ) {
185
235
$patch = $1 ;
186
236
} elsif (/ SET\( RELEASE_NAME "(.+)"\) / ) {
187
- $release = $1 ;
237
+ $releasename = $1 unless defined $releasename ;
188
238
}
189
239
}
190
240
close F;
191
241
192
- open F, " svnversion|" ;
193
- $revision = <F>;
194
- $revision =~ s /\D +$// g ;
195
- close F;
242
+ $version = " $major .$minor .$patch " unless defined $version ;
243
+
244
+ unless ( defined $revision ) {
245
+ open F, " svnversion|" ;
246
+ $revision = <F>;
247
+ $revision =~ s /\D +$// g ;
248
+ close F;
249
+ }
196
250
197
251
$revision = 14615 unless $revision =~ / ^\d +$ / ;
198
252
199
253
system " unzip packages/Untgz.zip" unless -d " untgz" ;
200
254
201
255
chdir " .." ;
202
256
257
+ $packagename = " Quantum GIS" unless defined $packagename ;
258
+ $shortname = " qgis" unless defined $shortname ;
259
+
203
260
my $cmd = " makensis" ;
204
- $cmd .= " -DVERSION_NUMBER='$major .$minor .$patch '" ;
205
- $cmd .= " -DVERSION_NAME='$release '" ;
261
+ $cmd .= " -V$verbose " ;
262
+ $cmd .= " -DVERSION_NUMBER='$version '" ;
263
+ $cmd .= " -DVERSION_NAME='$releasename '" ;
206
264
$cmd .= " -DSVN_REVISION='$revision '" ;
207
- $cmd .= " -DQGIS_BASE='Quantum GIS $release '" ;
208
- $cmd .= " -DINSTALLER_NAME='QGIS-OSGeo4W-$major . $minor . $patch -$revision -Setup.exe'" ;
209
- $cmd .= " -DDISPLAYED_NAME='Quantum GIS \' $release \' ($major . $minor . $patch )'" ;
265
+ $cmd .= " -DQGIS_BASE='$packagename $releasename '" ;
266
+ $cmd .= " -DINSTALLER_NAME='QGIS-OSGeo4W-$version -$revision -Setup.exe'" ;
267
+ $cmd .= " -DDISPLAYED_NAME='$packagename \' $releasename \' ($version )'" ;
210
268
$cmd .= " -DBINARY_REVISION=1" ;
269
+ $cmd .= " -DSHORTNAME='$shortname '" ;
211
270
$cmd .= " -DINSTALLER_TYPE=OSGeo4W" ;
212
271
$cmd .= " -DPACKAGE_FOLDER=osgeo4w/unpacked" ;
213
272
$cmd .= " QGIS-Installer.nsi" ;
214
273
215
274
system $cmd ;
275
+
276
+ __END__
277
+
278
+ =head1 NAME
279
+
280
+ creatensis.pl - create NSIS package from OSGeo4W packages
281
+
282
+ =head1 SYNOPSIS
283
+
284
+ creatensis.pl [options] [packages...]
285
+
286
+ Options:
287
+ -verbose increase verbosity
288
+ -releasename=name name of release (defaults to CMakeLists.txt setting)
289
+ -keep don't start with a fresh unpacked directory
290
+ -version=m.m.p package version (defaults to CMakeLists.txt setting)
291
+ -revision=rNNNNN svn revision of package (determined by svnversion if not given)
292
+ -packagename=s name of package (defaults to 'Quantum GIS'
293
+ -shortname=s shortname used for batch file (defaults to 'qgis')
294
+ -help this help
295
+
296
+ If no packages are given 'qgis-full' an it's dependencies will be retrieved
297
+ and packaged.
298
+
299
+ =cut
0 commit comments