Replace calls to external dir program with perlish globs and File::Find
calls. Fixes complaint fron Hannes Eder, whose environment found a different dir program.
This commit is contained in:
parent
90c156f0d1
commit
576b8903f7
|
@ -3,13 +3,14 @@ package Install;
|
||||||
#
|
#
|
||||||
# Package that provides 'make install' functionality for msvc builds
|
# Package that provides 'make install' functionality for msvc builds
|
||||||
#
|
#
|
||||||
# $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.19 2007/09/12 13:58:23 mha Exp $
|
# $PostgreSQL: pgsql/src/tools/msvc/Install.pm,v 1.20 2007/09/22 20:38:10 adunstan Exp $
|
||||||
#
|
#
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use Carp;
|
use Carp;
|
||||||
use File::Basename;
|
use File::Basename;
|
||||||
use File::Copy;
|
use File::Copy;
|
||||||
|
use File::Find ();
|
||||||
|
|
||||||
use Exporter;
|
use Exporter;
|
||||||
our (@ISA,@EXPORT_OK);
|
our (@ISA,@EXPORT_OK);
|
||||||
|
@ -43,20 +44,31 @@ sub Install
|
||||||
|
|
||||||
CopySolutionOutput($conf, $target);
|
CopySolutionOutput($conf, $target);
|
||||||
copy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll');
|
copy($target . '/lib/libpq.dll', $target . '/bin/libpq.dll');
|
||||||
CopySetOfFiles('config files', "*.sample", $target . '/share/');
|
my $sample_files = [];
|
||||||
|
File::Find::find({wanted =>
|
||||||
|
sub { /^.*\.sample\z/s &&
|
||||||
|
push(@$sample_files, $File::Find::name);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"../.." );
|
||||||
|
CopySetOfFiles('config files', $sample_files , $target . '/share/');
|
||||||
CopyFiles(
|
CopyFiles(
|
||||||
'Import libraries',
|
'Import libraries',
|
||||||
$target .'/lib/',
|
$target .'/lib/',
|
||||||
"$conf\\", "postgres\\postgres.lib","libpq\\libpq.lib", "libecpg\\libecpg.lib", "libpgport\\libpgport.lib"
|
"$conf\\", "postgres\\postgres.lib","libpq\\libpq.lib", "libecpg\\libecpg.lib", "libpgport\\libpgport.lib"
|
||||||
);
|
);
|
||||||
CopySetOfFiles('timezone names', 'src\timezone\tznames\*.txt',$target . '/share/timezonesets/');
|
CopySetOfFiles('timezone names',
|
||||||
|
[ glob('src\timezone\tznames\*.txt') ] ,
|
||||||
|
$target . '/share/timezonesets/');
|
||||||
CopyFiles(
|
CopyFiles(
|
||||||
'timezone sets',
|
'timezone sets',
|
||||||
$target . '/share/timezonesets/',
|
$target . '/share/timezonesets/',
|
||||||
'src/timezone/tznames/', 'Default','Australia','India'
|
'src/timezone/tznames/', 'Default','Australia','India'
|
||||||
);
|
);
|
||||||
CopySetOfFiles('BKI files', "src\\backend\\catalog\\postgres.*", $target .'/share/');
|
CopySetOfFiles('BKI files', [ glob("src\\backend\\catalog\\postgres.*") ],
|
||||||
CopySetOfFiles('SQL files', "src\\backend\\catalog\\*.sql", $target . '/share/');
|
$target .'/share/');
|
||||||
|
CopySetOfFiles('SQL files', [ glob("src\\backend\\catalog\\*.sql") ],
|
||||||
|
$target . '/share/');
|
||||||
CopyFiles(
|
CopyFiles(
|
||||||
'Information schema data',
|
'Information schema data',
|
||||||
$target . '/share/',
|
$target . '/share/',
|
||||||
|
@ -65,8 +77,12 @@ sub Install
|
||||||
GenerateConversionScript($target);
|
GenerateConversionScript($target);
|
||||||
GenerateTimezoneFiles($target,$conf);
|
GenerateTimezoneFiles($target,$conf);
|
||||||
GenerateTsearchFiles($target);
|
GenerateTsearchFiles($target);
|
||||||
CopySetOfFiles('Stopword files', "src\\backend\\snowball\\stopwords\\*.stop", $target . '/share/tsearch_data/');
|
CopySetOfFiles('Stopword files',
|
||||||
CopySetOfFiles('Dictionaries sample files', "src\\backend\\tsearch\\\*_sample.*", $target . '/share/tsearch_data/');
|
[ glob ("src\\backend\\snowball\\stopwords\\*.stop") ],
|
||||||
|
$target . '/share/tsearch_data/');
|
||||||
|
CopySetOfFiles('Dictionaries sample files',
|
||||||
|
[ glob ("src\\backend\\tsearch\\\*_sample.*" ) ],
|
||||||
|
$target . '/share/tsearch_data/');
|
||||||
CopyContribFiles($config,$target);
|
CopyContribFiles($config,$target);
|
||||||
CopyIncludeFiles($target);
|
CopyIncludeFiles($target);
|
||||||
|
|
||||||
|
@ -106,26 +122,17 @@ sub CopyFiles
|
||||||
sub CopySetOfFiles
|
sub CopySetOfFiles
|
||||||
{
|
{
|
||||||
my $what = shift;
|
my $what = shift;
|
||||||
my $spec = shift;
|
my $flist = shift;
|
||||||
my $target = shift;
|
my $target = shift;
|
||||||
my $silent = shift;
|
print "Copying $what" if $what;
|
||||||
my $norecurse = shift;
|
foreach (@$flist)
|
||||||
my $D;
|
|
||||||
|
|
||||||
my $subdirs = $norecurse?'':'/s';
|
|
||||||
print "Copying $what" unless ($silent);
|
|
||||||
open($D, "dir /b $subdirs $spec |") || croak "Could not list $spec\n";
|
|
||||||
while (<$D>)
|
|
||||||
{
|
{
|
||||||
chomp;
|
|
||||||
next if /regress/; # Skip temporary install in regression subdir
|
next if /regress/; # Skip temporary install in regression subdir
|
||||||
next if /ecpg.test/; # Skip temporary install in regression subdir
|
next if /ecpg.test/; # Skip temporary install in regression subdir
|
||||||
my $tgt = $target . basename($_);
|
my $tgt = $target . basename($_);
|
||||||
print ".";
|
print ".";
|
||||||
my $src = $norecurse?(dirname($spec) . '/' . $_):$_;
|
copy($_, $tgt) || croak "Could not copy $_: $!\n";
|
||||||
copy($src, $tgt) || croak "Could not copy $src: $!\n";
|
|
||||||
}
|
}
|
||||||
close($D);
|
|
||||||
print "\n";
|
print "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,7 +382,9 @@ sub CopyIncludeFiles
|
||||||
$target . '/include/server/',
|
$target . '/include/server/',
|
||||||
'src/include/', 'pg_config.h', 'pg_config_os.h'
|
'src/include/', 'pg_config.h', 'pg_config_os.h'
|
||||||
);
|
);
|
||||||
CopySetOfFiles('', "src\\include\\*.h", $target . '/include/server/', 1, 1);
|
CopySetOfFiles('',
|
||||||
|
[ glob( "src\\include\\*.h" ) ],
|
||||||
|
$target . '/include/server/');
|
||||||
my $D;
|
my $D;
|
||||||
opendir($D, 'src/include') || croak "Could not opendir on src/include!\n";
|
opendir($D, 'src/include') || croak "Could not opendir on src/include!\n";
|
||||||
|
|
||||||
|
@ -419,21 +428,21 @@ sub GenerateNLSFiles
|
||||||
|
|
||||||
print "Installing NLS files...";
|
print "Installing NLS files...";
|
||||||
EnsureDirectories($target, "share/locale");
|
EnsureDirectories($target, "share/locale");
|
||||||
open($D,"dir /b /s nls.mk|") || croak "Could not list nls.mk\n";
|
my @flist;
|
||||||
while (<$D>)
|
File::Find::find({wanted =>
|
||||||
|
sub { /^nls\.mk\z/s &&
|
||||||
|
! push(@flist, $File::Find::name);
|
||||||
|
}
|
||||||
|
}, ".");
|
||||||
|
foreach (@flist)
|
||||||
{
|
{
|
||||||
chomp;
|
|
||||||
s/nls.mk/po/;
|
s/nls.mk/po/;
|
||||||
my $dir = $_;
|
my $dir = $_;
|
||||||
next unless ($dir =~ /([^\\]+)\\po$/);
|
next unless ($dir =~ /([^\\]+)\\po$/);
|
||||||
my $prgm = $1;
|
my $prgm = $1;
|
||||||
$prgm = 'postgres' if ($prgm eq 'backend');
|
$prgm = 'postgres' if ($prgm eq 'backend');
|
||||||
my $E;
|
foreach (glob("$dir/*.po"))
|
||||||
open($E,"dir /b $dir\\*.po|") || croak "Could not list contents of $_\n";
|
|
||||||
|
|
||||||
while (<$E>)
|
|
||||||
{
|
{
|
||||||
chomp;
|
|
||||||
my $lang;
|
my $lang;
|
||||||
next unless /^(.*)\.po/;
|
next unless /^(.*)\.po/;
|
||||||
$lang = $1;
|
$lang = $1;
|
||||||
|
@ -445,9 +454,7 @@ sub GenerateNLSFiles
|
||||||
&& croak("Could not run msgfmt on $dir\\$_");
|
&& croak("Could not run msgfmt on $dir\\$_");
|
||||||
print ".";
|
print ".";
|
||||||
}
|
}
|
||||||
close($E);
|
|
||||||
}
|
}
|
||||||
close($D);
|
|
||||||
print "\n";
|
print "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue