Skip site navigation (1) Skip section navigation (2)

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

From: Andrew Dunstan <andrew(at)dunslane(dot)net>
To: Magnus Hagander <magnus(at)hagander(dot)net>
Cc: Bruce Momjian <bruce(at)momjian(dot)us>, Hannes Eder <Hannes(at)HannesEder(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-18 00:19:44
Message-ID: 469D5CA0.9030101@dunslane.net (view raw or flat)
Thread:
Lists: pgsql-hackerspgsql-patches
I am fighting some fires in my day job.

My pesonal TODO list for pg up to beta is:

. fix chunking muddle (see recent emails)
. complete CSV logs patch
. harden MSVC builds

I'll get to this when I can.  I can dig up the patch I did if you want 
it again.

cheers

andrew


Magnus Hagander wrote:
> 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

pgsql-hackers by date

Next:From: Bruce MomjianDate: 2007-07-18 00:31:21
Subject: Re: Should we bump libpq major version for 8.3?
Previous:From: Bruce MomjianDate: 2007-07-18 00:16:09
Subject: Re: what is difference between LOCAL and GLOBAL TEMP TABLES in PostgreSQL

pgsql-patches by date

Next:From: Bruce MomjianDate: 2007-07-18 00:40:36
Subject: Re: BUG #3431: age() gets the days wrong
Previous:From: Bruce MomjianDate: 2007-07-17 22:02:59
Subject: Re: bitmapscan changes patch review

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group