Skip to content

Commit a1dcd0d

Browse files
author
jef
committedApr 21, 2011
add options to creatensis.pl
git-svn-id: http://svn.osgeo.org/qgis/trunk@15797 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 1336dfd commit a1dcd0d

File tree

1 file changed

+110
-26
lines changed

1 file changed

+110
-26
lines changed
 

‎ms-windows/osgeo4w/creatensis.pl

Lines changed: 110 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,56 @@
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+
1648
unless(-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

2153
mkdir "packages", 0755 unless -d "packages";
2254
chdir "packages";
2355

2456
my $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

2961
my %dep;
3062
my %file;
63+
my $package;
3164

32-
system "wget -q -c $root/setup.ini";
65+
system "wget $wgetopt -c $root/setup.ini";
3366
open F, "setup.ini" || die "setup.ini not found";
3467
while(<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

62101
if(-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

67106
if(-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-
73111
foreach 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

85123
chdir "..";
@@ -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

96142
unless(-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

173223
close F;
174224

175-
my($major, $minor, $patch, $release, $revision);
225+
my($major, $minor, $patch);
176226

177227
open F, "../../CMakeLists.txt";
178228
while(<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
}
190240
close 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

199253
system "unzip packages/Untgz.zip" unless -d "untgz";
200254

201255
chdir "..";
202256

257+
$packagename = "Quantum GIS" unless defined $packagename;
258+
$shortname = "qgis" unless defined $shortname;
259+
203260
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'";
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

215274
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

Comments
 (0)
Please sign in to comment.