Re: [PATCHES] msvc, build and install with cygwin in the PATH - Mailing list pgsql-hackers

From Magnus Hagander
Subject Re: [PATCHES] msvc, build and install with cygwin in the PATH
Date
Msg-id 469D0568.1080702@hagander.net
Whole thread Raw
In response to Re: [PATCHES] msvc, build and install with cygwin in the PATH  (Bruce Momjian <bruce@momjian.us>)
Responses Re: [PATCHES] msvc, build and install with cygwin in the PATH  (Andrew Dunstan <andrew@dunslane.net>)
Re: [PATCHES] msvc, build and install with cygwin in the PATH  (Hannes Eder <Hannes@HannesEder.net>)
List pgsql-hackers
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
>


pgsql-hackers by date:

Previous
From: Paul Silveira
Date:
Subject: Re: SSPI authentication
Next
From: Bruce Momjian
Date:
Subject: Re: Updated tsearch documentation