Re: [HACKERS] msvc, build and install with cygwin in the PATH - Mailing list pgsql-patches
From | Bruce Momjian |
---|---|
Subject | Re: [HACKERS] msvc, build and install with cygwin in the PATH |
Date | |
Msg-id | 200707170245.l6H2jkE07624@momjian.us Whole thread Raw |
In response to | Re: [HACKERS] msvc, build and install with cygwin in the PATH (Hannes Eder <Hannes@HannesEder.net>) |
Responses |
Re: [HACKERS] msvc, build and install with cygwin in the
PATH
|
List | pgsql-patches |
Magnus, what is your reaction to this patch? --------------------------------------------------------------------------- Hannes Eder wrote: > Magnus Hagander wrote: > >Hannes Eder wrote: > >> Is it worth doing this the "Perl-way" and using File::Find? If so, I > can > >> work an a patch for that. > >> > > It's certainly cleaner that way, but I don't find it a major issue. > But I'd > > rather see that fix than the other one. > > Here we go. See attached patch. Your comments are welcome. > > Hannes. > > *** ..\pgsql-cvshead\src\tools\msvc\Install.pm Mo Mai 14 16:36:10 2007 > --- src\tools\msvc\Install.pm Mi Jun 6 20:39:47 2007 > *************** > *** 10,15 **** > --- 10,18 ---- > use Carp; > use File::Basename; > use File::Copy; > + use File::Find; > + use File::Glob; > + use File::Spec; > > use Exporter; > our (@ISA,@EXPORT_OK); > *************** > *** 99,104 **** > --- 102,142 ---- > print "\n"; > } > > + sub FindFiles > + { > + my $spec = shift; > + my $nonrecursive = shift; > + my $pat = basename($spec); > + my $dir = dirname($spec); > + > + if ($dir eq '') { $dir = '.'; } > + > + -d $dir || croak "Could not list directory $dir: $!\n"; > + > + if ($nonrecursive) > + { > + return glob($spec); > + } > + > + # borrowed from File::DosGlob > + # escape regex metachars but not glob chars > + $pat =~ s:([].+^\-\${}[|]):\\$1:g; > + # and convert DOS-style wildcards to regex > + $pat =~ s/\*/.*/g; > + $pat =~ s/\?/.?/g; > + > + $pat = '^' . $pat . '\z'; > + > + my @res; > + find( > + { > + wanted => sub { /$pat/s && push (@res, File::Spec->canonpath($File::Find::name)); } > + }, > + $dir > + ); > + return @res; > + } > + > sub CopySetOfFiles > { > my $what = shift; > *************** > *** 106,126 **** > my $target = shift; > my $silent = shift; > my $norecurse = shift; > - 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 > ! my $tgt = $target . basename($_); > print "."; > ! my $src = $norecurse?(dirname($spec) . '/' . $_):$_; > ! copy($src, $tgt) || croak "Could not copy $src: $!\n"; > } > ! close($D); > print "\n"; > } > > --- 144,161 ---- > my $target = shift; > my $silent = shift; > my $norecurse = shift; > > print "Copying $what" unless ($silent); > ! > ! foreach (FindFiles($spec, $norecurse)) > { > next if /regress/; # Skip temporary install in regression subdir > ! my $src = $_; > ! my $tgt = $target . basename($src); > print "."; > ! copy($src, $tgt) || croak "Could not copy $src to $tgt: $!\n"; > } > ! > print "\n"; > } > > *************** > *** 371,395 **** > { > my $target = shift; > my $nlspath = shift; > - my $D; > > print "Installing NLS files..."; > EnsureDirectories($target, "share/locale"); > ! open($D,"dir /b /s nls.mk|") || croak "Could not list nls.mk\n"; > ! while (<$D>) > { > - chomp; > s/nls.mk/po/; > my $dir = $_; > next unless ($dir =~ /([^\\]+)\\po$/); > my $prgm = $1; > $prgm = 'postgres' if ($prgm eq 'backend'); > - my $E; > - open($E,"dir /b $dir\\*.po|") || croak "Could not list contents of $_\n"; > > ! while (<$E>) > { > - chomp; > my $lang; > next unless /^(.*)\.po/; > $lang = $1; > --- 406,425 ---- > { > my $target = shift; > my $nlspath = shift; > > print "Installing NLS files..."; > EnsureDirectories($target, "share/locale"); > ! > ! foreach (FindFiles("nls.mk")) > { > s/nls.mk/po/; > my $dir = $_; > next unless ($dir =~ /([^\\]+)\\po$/); > my $prgm = $1; > $prgm = 'postgres' if ($prgm eq 'backend'); > > ! foreach (FindFiles("$dir\\*.po", 1)) > { > my $lang; > next unless /^(.*)\.po/; > $lang = $1; > *************** > *** 401,409 **** > && croak("Could not run msgfmt on $dir\\$_"); > print "."; > } > - close($E); > } > ! close($D); > print "\n"; > } > > --- 431,438 ---- > && croak("Could not run msgfmt on $dir\\$_"); > print "."; > } > } > ! > print "\n"; > } > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: explain analyze is your friend -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://www.enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
pgsql-patches by date: