@@ -3,13 +3,14 @@ package Install;
3
3
#
4
4
# Package that provides 'make install' functionality for msvc builds
5
5
#
6
- # $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.19 2007/09/12 13:58:23 mha Exp $
6
+ # $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.20 2007/09/22 20:38:10 adunstan Exp $
7
7
#
8
8
use strict;
9
9
use warnings;
10
10
use Carp;
11
11
use File::Basename;
12
12
use File::Copy;
13
+ use File::Find ();
13
14
14
15
use Exporter;
15
16
our (@ISA ,@EXPORT_OK );
@@ -43,20 +44,31 @@ sub Install
43
44
44
45
CopySolutionOutput($conf ,$target );
45
46
copy($target .' /lib/libpq.dll' ,$target .' /bin/libpq.dll' );
46
- CopySetOfFiles(' config files' ," *.sample" ,$target .' /share/' );
47
+ my $sample_files = [];
48
+ File::Find::find({wanted =>
49
+ sub {/ ^.*\. sample\z /s &&
50
+ push (@$sample_files ,$File::Find::name );
51
+ }
52
+ },
53
+ " ../.." );
54
+ CopySetOfFiles(' config files' ,$sample_files ,$target .' /share/' );
47
55
CopyFiles(
48
56
' Import libraries' ,
49
57
$target .' /lib/' ,
50
58
" $conf \\ " ," postgres\\ postgres.lib" ," libpq\\ libpq.lib" ," libecpg\\ libecpg.lib" ," libpgport\\ libpgport.lib"
51
59
);
52
- CopySetOfFiles(' timezone names' ,' src\timezone\tznames\*.txt' ,$target .' /share/timezonesets/' );
60
+ CopySetOfFiles(' timezone names' ,
61
+ [glob (' src\timezone\tznames\*.txt' ) ] ,
62
+ $target .' /share/timezonesets/' );
53
63
CopyFiles(
54
64
' timezone sets' ,
55
65
$target .' /share/timezonesets/' ,
56
66
' src/timezone/tznames/' ,' Default' ,' Australia' ,' India'
57
67
);
58
- CopySetOfFiles(' BKI files' ," src\\ backend\\ catalog\\ postgres.*" ,$target .' /share/' );
59
- CopySetOfFiles(' SQL files' ," src\\ backend\\ catalog\\ *.sql" ,$target .' /share/' );
68
+ CopySetOfFiles(' BKI files' , [glob (" src\\ backend\\ catalog\\ postgres.*" ) ],
69
+ $target .' /share/' );
70
+ CopySetOfFiles(' SQL files' , [glob (" src\\ backend\\ catalog\\ *.sql" ) ],
71
+ $target .' /share/' );
60
72
CopyFiles(
61
73
' Information schema data' ,
62
74
$target .' /share/' ,
@@ -65,8 +77,12 @@ sub Install
65
77
GenerateConversionScript($target );
66
78
GenerateTimezoneFiles($target ,$conf );
67
79
GenerateTsearchFiles($target );
68
- CopySetOfFiles(' Stopword files' ," src\\ backend\\ snowball\\ stopwords\\ *.stop" ,$target .' /share/tsearch_data/' );
69
- CopySetOfFiles(' Dictionaries sample files' ," src\\ backend\\ tsearch\\\* _sample.*" ,$target .' /share/tsearch_data/' );
80
+ CopySetOfFiles(' Stopword files' ,
81
+ [glob (" src\\ backend\\ snowball\\ stopwords\\ *.stop" ) ],
82
+ $target .' /share/tsearch_data/' );
83
+ CopySetOfFiles(' Dictionaries sample files' ,
84
+ [glob (" src\\ backend\\ tsearch\\\* _sample.*" ) ],
85
+ $target .' /share/tsearch_data/' );
70
86
CopyContribFiles($config ,$target );
71
87
CopyIncludeFiles($target );
72
88
@@ -106,26 +122,17 @@ sub CopyFiles
106
122
sub CopySetOfFiles
107
123
{
108
124
my $what =shift ;
109
- my $spec =shift ;
125
+ my $flist =shift ;
110
126
my $target =shift ;
111
- my $silent =shift ;
112
- my $norecurse =shift ;
113
- my $D ;
114
-
115
- my $subdirs =$norecurse ?' ' :' /s' ;
116
- print " Copying$what " unless ($silent );
117
- open ($D ," dir /b$subdirs $spec |" ) || croak" Could not list$spec \n " ;
118
- while (<$D >)
127
+ print " Copying$what " if $what ;
128
+ foreach (@$flist )
119
129
{
120
- chomp ;
121
130
next if / regress/ ;# Skip temporary install in regression subdir
122
131
next if / ecpg.test/ ;# Skip temporary install in regression subdir
123
132
my $tgt =$target . basename($_ );
124
133
print " ." ;
125
- my $src =$norecurse ?(dirname($spec ) .' /' .$_ ):$_ ;
126
- copy($src ,$tgt ) || croak" Could not copy$src :$! \n " ;
134
+ copy($_ ,$tgt ) || croak" Could not copy$_ :$! \n " ;
127
135
}
128
- close ($D );
129
136
print " \n " ;
130
137
}
131
138
@@ -375,7 +382,9 @@ sub CopyIncludeFiles
375
382
$target .' /include/server/' ,
376
383
' src/include/' ,' pg_config.h' ,' pg_config_os.h'
377
384
);
378
- CopySetOfFiles(' ' ," src\\ include\\ *.h" ,$target .' /include/server/' , 1, 1);
385
+ CopySetOfFiles(' ' ,
386
+ [glob (" src\\ include\\ *.h" ) ],
387
+ $target .' /include/server/' );
379
388
my $D ;
380
389
opendir ($D ,' src/include' ) || croak" Could not opendir on src/include!\n " ;
381
390
@@ -419,21 +428,21 @@ sub GenerateNLSFiles
419
428
420
429
print " Installing NLS files..." ;
421
430
EnsureDirectories($target ," share/locale" );
422
- open ($D ," dir /b /s nls.mk|" ) || croak" Could not list nls.mk\n " ;
423
- while (<$D >)
431
+ my @flist ;
432
+ File::Find::find({wanted =>
433
+ sub {/ ^nls\. mk\z /s &&
434
+ !push (@flist ,$File::Find::name );
435
+ }
436
+ }," ." );
437
+ foreach (@flist )
424
438
{
425
- chomp ;
426
439
s / nls.mk/ po/ ;
427
440
my $dir =$_ ;
428
441
next unless ($dir =~/ ([^\\ ]+)\\ po$ / );
429
442
my $prgm =$1 ;
430
443
$prgm =' postgres' if ($prgm eq ' backend' );
431
- my $E ;
432
- open ($E ," dir /b$dir \\ *.po|" ) || croak" Could not list contents of$_ \n " ;
433
-
434
- while (<$E >)
444
+ foreach (glob (" $dir /*.po" ))
435
445
{
436
- chomp ;
437
446
my $lang ;
438
447
next unless / ^(.*)\. po/ ;
439
448
$lang =$1 ;
@@ -445,9 +454,7 @@ sub GenerateNLSFiles
445
454
&& croak(" Could not run msgfmt on$dir \\ $_ " );
446
455
print " ." ;
447
456
}
448
- close ($E );
449
457
}
450
- close ($D );
451
458
print " \n " ;
452
459
}
453
460