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

2007-09-23 Thread Magnus Hagander
Andrew Dunstan wrote:
 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.


 
 I have committed a fix that is somewhat similar to this. The Install.pm
 module needs some love, but that will have to wait till the next cycle.

Thanks, Andrew!

//Magnus


---(end of broadcast)---
TIP 4: Have you searched our list archives?

   http://archives.postgresql.org


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

2007-09-22 Thread Andrew Dunstan



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.




I have committed a fix that is somewhat similar to this. The Install.pm 
module needs some love, but that will have to wait till the next cycle.


cheers

andrew

---(end of broadcast)---
TIP 4: Have you searched our list archives?

  http://archives.postgresql.org


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

2007-06-06 Thread Hannes Eder

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 4: Have you searched our list archives?

   http://archives.postgresql.org


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

2007-05-30 Thread Hannes Eder

Andrew Dunstan schrieb:

Hannes Eder wrote:
-open($D, dir /b $subdirs $spec |) || croak Could not list 
$spec\n;
+open($D, cmd /c dir /b $subdirs $spec |) || croak Could not 
list $spec\n;
 


What the heck are we doing here anyway? We should be doing this a la 
Perl - calling out to dir /b is surely not the best way to do this. 
If we need to recurse we should use File::Find.
I think since the code in src/tools/msvc is specific to MSVC and 
therefor, at least currently, specific to Windows. Calling out to dir 
/b /s or cmd /c dir /b /s works on WinNT and higher. On Win9x/ME 
command.com should be called instead of cmd.exe. In order to be more 
portable maybe we should use the environment variable COMSPEC, which 
should always point to an appropriate command processor.


Is it worth doing this the Perl-way and using File::Find? If so, I can 
work an a patch for that.


Hannes.


---(end of broadcast)---
TIP 3: Have you checked our extensive FAQ?

  http://www.postgresql.org/docs/faq


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

2007-05-30 Thread Magnus Hagander
On Wed, May 30, 2007 at 12:09:05PM +0200, Hannes Eder wrote:
 Andrew Dunstan schrieb:
 Hannes Eder wrote:
 -open($D, dir /b $subdirs $spec |) || croak Could not list 
 $spec\n;
 +open($D, cmd /c dir /b $subdirs $spec |) || croak Could not 
 list $spec\n;
  
 
 What the heck are we doing here anyway? We should be doing this a la 
 Perl - calling out to dir /b is surely not the best way to do this. 
 If we need to recurse we should use File::Find.
 I think since the code in src/tools/msvc is specific to MSVC and 
 therefor, at least currently, specific to Windows. Calling out to dir 
 /b /s or cmd /c dir /b /s works on WinNT and higher. On Win9x/ME 
 command.com should be called instead of cmd.exe. In order to be more 
 portable maybe we should use the environment variable COMSPEC, which 
 should always point to an appropriate command processor.

We only support NT based OSes anyway, so I don't see COMSPEC as being a
problem. The reason it is the way it is is because that part was originally
just a .bat-file and I just copy/pasted the commands...

Are you actually *running* the script from inside cygwin? How else does it
pick up the wrong command processor?


 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.

//Magnus


---(end of broadcast)---
TIP 2: Don't 'kill -9' the postmaster


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

2007-05-30 Thread Hannes Eder

Magnus Hagander schrieb:

Are you actually *running* the script from inside cygwin? How else does it
pick up the wrong command processor?
  
I run the script within cmd.exe, but cygwin´s /usr/bin directory is in 
my PATH, therefor cygwin dir executable is in the PATH (/usr/bin/dir). 
Instead of running cmd.exe´s dir command, cygwin´s /usr/bin/dir is 
invoked, when calling


open($D, dir /b $subdirs $spec |) || croak Could not list $spec\n;

but they do not work in the same way.

So my original patch just solves the issue to run 
src/tools/msvc/install.(bat¦pl¦pm) while leaving the cygwin´s /usr/bin 
in the PATH.
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.
  

Time permitting I´ll provide a patch.

Hannes.

---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

   http://www.postgresql.org/about/donate


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

2007-05-30 Thread Magnus Hagander
On Wed, May 30, 2007 at 01:56:24PM +0200, Hannes Eder wrote:
 Magnus Hagander schrieb:
 Are you actually *running* the script from inside cygwin? How else does it
 pick up the wrong command processor?
   
 I run the script within cmd.exe, but cygwin´s /usr/bin directory is in 
 my PATH, therefor cygwin dir executable is in the PATH (/usr/bin/dir). 
 Instead of running cmd.exe´s dir command, cygwin´s /usr/bin/dir is 
 invoked, when calling

They actually *put* that in there? Wow. That's yet another reason never to
let cygwni touch your global path :-)

 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.
   
 Time permitting I´ll provide a patch.

Thanks.

//Magnus


---(end of broadcast)---
TIP 7: You can help support the PostgreSQL project by donating at

http://www.postgresql.org/about/donate


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

2007-05-23 Thread Andrew Dunstan



Hannes Eder wrote:

-open($D, dir /b $subdirs $spec |) || croak Could not list $spec\n;
+open($D, cmd /c dir /b $subdirs $spec |) || croak Could not list 
$spec\n;
  



What the heck are we doing here anyway? We should be doing this a la 
Perl - calling out to dir /b is surely not the best way to do this. If 
we need to recurse we should use File::Find.


cheers

andrew

---(end of broadcast)---
TIP 9: In versions below 8.0, the planner will ignore your desire to
  choose an index scan if your joining column's datatypes do not
  match