Re: [HACKERS] msvc, build and install with cygwin in the PATH

From: Magnus Hagander <magnus(at)hagander(dot)net>
To: Bruce Momjian <bruce(at)momjian(dot)us>
Cc: Hannes Eder <Hannes(at)HannesEder(dot)net>, Andrew Dunstan <andrew(at)dunslane(dot)net>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>, pgsql-patches <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [HACKERS] msvc, build and install with cygwin in the PATH
Date: 2007-07-17 18:07:36
Message-ID: 469D0568.1080702@hagander.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches

I used to have a different patch from Andrew that did part of this, and
more, and conflicted rather badly with it. However, I never got around
to applying that one, and I can't seem to find it anymore.

Andrew -do you recall if you had all this in yours, and is it still
something you want in, or should we just go with this one?

//Magnus

Bruce Momjian wrote:
> 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
>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2007-07-17 21:24:09 Re: Updated tsearch documentation
Previous Message Paul Silveira 2007-07-17 18:00:35 Re: SSPI authentication

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2007-07-17 18:15:13 Re: WIP: rewrite numeric division
Previous Message Tom Lane 2007-07-17 16:26:06 Re: Deferred RI trigger for non-key UPDATEs and subxacts