1313# Download OSGeo4W packages
1414#
1515
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+
1648unless (-f " nsis/System.dll" ) {
1749 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" ;
1951}
2052
2153mkdir " packages" , 0755 unless -d " packages" ;
2254chdir " packages" ;
2355
2456my $root = " http://download.osgeo.org/osgeo4w" ;
2557
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" ;
2860
2961my %dep ;
3062my %file ;
63+ my $package ;
3164
32- system " wget -q -c $root /setup.ini" ;
65+ system " wget $wgetopt -c $root /setup.ini" ;
3366open F, " setup.ini" || die " setup.ini not found" ;
3467while (<F>) {
3568 chop ;
@@ -50,36 +83,41 @@ sub getDeps {
5083
5184 return if exists $pkgs {$pkg };
5285
86+ print " Including package $pkg " if $verbose ;
5387 $pkgs {$pkg } = 1;
5488
5589 foreach my $p ( @{ $dep {$pkg } } ) {
5690 getDeps($p );
5791 }
5892}
5993
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 ;
61100
62101if (-f " ../addons/bin/NCSEcw4_RO.dll" ) {
63- print " Enabling ECW support...\n " ;
102+ print " Enabling ECW support...\n " if $verbose ;
64103 getDeps(" gdal17-ecw" )
65104}
66105
67106if (-f " ../addons/bin/lti_dsdk_dll.dll" ) {
68- print " Enabling MrSID support...\n " ;
107+ print " Enabling MrSID support...\n " if $verbose ;
69108 getDeps(" gdal17-mrsid" )
70109}
71110
72-
73111foreach my $p ( keys %pkgs ) {
74- $f = " $root /$file {$p }" ;
112+ my $f = " $root /$file {$p }" ;
75113 $f =~ s /\/\.\/ / \/ / g ;
76114
77115 my ($file ) = $f =~ / ([^\/ ]+)$ / ;
78116
79117 next if -f $file ;
80118
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 " ;
83121}
84122
85123chdir " .." ;
@@ -90,15 +128,24 @@ sub getDeps {
90128# Add addons
91129#
92130
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+ }
93139
94- system " rm -rf unpacked " if -d " unpacked " && ! grep ( / ^-k $ / , @ARGV ) ;
140+ my $taropt = " v " x $verbose ;
95141
96142unless (-d " unpacked" ) {
97143 mkdir " unpacked" , 0755;
98144
99145 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 " ;
102149 }
103150
104151 chdir " unpacked" ;
@@ -109,7 +156,10 @@ sub getDeps {
109156
110157 system " cd apps/nircmd; unzip ../../../packages/nircmd.zip && mv nircmd.exe ../../bin" ;
111158
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+ }
113163
114164 chdir " .." ;
115165}
@@ -172,7 +222,7 @@ sub getDeps {
172222
173223close F;
174224
175- my ($major , $minor , $patch , $release , $revision );
225+ my ($major , $minor , $patch );
176226
177227open F, " ../../CMakeLists.txt" ;
178228while (<F>) {
@@ -184,32 +234,66 @@ sub getDeps {
184234 } elsif (/ SET\( CPACK_PACKAGE_VERSION_PATCH "(\d +)"\) / ) {
185235 $patch = $1 ;
186236 } elsif (/ SET\( RELEASE_NAME "(.+)"\) / ) {
187- $release = $1 ;
237+ $releasename = $1 unless defined $releasename ;
188238 }
189239}
190240close F;
191241
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+ }
196250
197251$revision = 14615 unless $revision =~ / ^\d +$ / ;
198252
199253system " unzip packages/Untgz.zip" unless -d " untgz" ;
200254
201255chdir " .." ;
202256
257+ $packagename = " Quantum GIS" unless defined $packagename ;
258+ $shortname = " qgis" unless defined $shortname ;
259+
203260my $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 '" ;
206264$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 )'" ;
210268$cmd .= " -DBINARY_REVISION=1" ;
269+ $cmd .= " -DSHORTNAME='$shortname '" ;
211270$cmd .= " -DINSTALLER_TYPE=OSGeo4W" ;
212271$cmd .= " -DPACKAGE_FOLDER=osgeo4w/unpacked" ;
213272$cmd .= " QGIS-Installer.nsi" ;
214273
215274system $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