]> granicus.if.org Git - postgresql/commitdiff
MSVC: install src/test/modules together with contrib
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 16 Apr 2015 19:40:14 +0000 (16:40 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Thu, 16 Apr 2015 19:40:14 +0000 (16:40 -0300)
These modules have to be installed so that the testing module can access
them.  (We don't have that yet, but will soon have it.)

Author: Michael Paquier
Reviewed by: Andrew Dunstan

src/tools/msvc/Install.pm

index 93a672498ab5f3c34b88be25a8de19b6c83fa84e..bfcdf50e74abc591b96c6613c8179e55d152fcc5 100644 (file)
@@ -432,98 +432,110 @@ sub CopyContribFiles
        my $target = shift;
 
        print "Copying contrib data files...";
-       my $D;
-       opendir($D, 'contrib') || croak "Could not opendir on contrib!\n";
-       while (my $d = readdir($D))
+       foreach my $subdir ('contrib', 'src/test/modules')
        {
-               next if ($d =~ /^\./);
-               next unless (-f "contrib/$d/Makefile");
-               next
-                 if ($insttype eq "client" && !grep { $_ eq $d } @client_contribs);
+               my $D;
+               opendir($D, $subdir) || croak "Could not opendir on $subdir!\n";
+               while (my $d = readdir($D))
+               {
+                       # These configuration-based exclusions must match vcregress.pl
+                       next if ($d eq "uuid-ossp" && !defined($config->{uuid}));
+                       next if ($d eq "sslinfo"   && !defined($config->{openssl}));
+                       next if ($d eq "xml2"      && !defined($config->{xml}));
+                       next if ($d eq "sepgsql");
 
-               # these configuration-based exclusions must match vcregress.pl
-               next if ($d eq "uuid-ossp" && !defined($config->{uuid}));
-               next if ($d eq "sslinfo"   && !defined($config->{openssl}));
-               next if ($d eq "xml2"      && !defined($config->{xml}));
-               next if ($d eq "sepgsql");
+                       CopySubdirFiles($subdir, $d, $config, $target);
+               }
+       }
+       print "\n";
+}
 
-               my $mf = read_file("contrib/$d/Makefile");
-               $mf =~ s{\\\r?\n}{}g;
+sub CopySubdirFiles
+{
+       my $subdir = shift;
+       my $module = shift;
+       my $config = shift;
+       my $target = shift;
 
-               # Note: we currently don't support setting MODULEDIR in the makefile
-               my $moduledir = 'contrib';
+       return if ($module =~ /^\./);
+       return unless (-f "$subdir/$module/Makefile");
+       return
+                 if ($insttype eq "client" && !grep { $_ eq $module } @client_contribs);
 
-               my $flist = '';
-               if ($mf =~ /^EXTENSION\s*=\s*(.*)$/m) { $flist .= $1 }
-               if ($flist ne '')
-               {
-                       $moduledir = 'extension';
-                       $flist = ParseAndCleanRule($flist, $mf);
+       my $mf = read_file("$subdir/$module/Makefile");
+       $mf =~ s{\\\r?\n}{}g;
 
-                       foreach my $f (split /\s+/, $flist)
-                       {
-                               lcopy(
-                                       'contrib/' . $d . '/' . $f . '.control',
-                                       $target . '/share/extension/' . $f . '.control'
-                               ) || croak("Could not copy file $f.control in contrib $d");
-                               print '.';
-                       }
-               }
+       # Note: we currently don't support setting MODULEDIR in the makefile
+       my $moduledir = 'contrib';
 
-               $flist = '';
-               if ($mf =~ /^DATA_built\s*=\s*(.*)$/m) { $flist .= $1 }
-               if ($mf =~ /^DATA\s*=\s*(.*)$/m)       { $flist .= " $1" }
-               $flist =~ s/^\s*//;  # Remove leading spaces if we had only DATA_built
+       my $flist = '';
+       if ($mf =~ /^EXTENSION\s*=\s*(.*)$/m) { $flist .= $1 }
+       if ($flist ne '')
+       {
+               $moduledir = 'extension';
+               $flist = ParseAndCleanRule($flist, $mf);
 
-               if ($flist ne '')
+               foreach my $f (split /\s+/, $flist)
                {
-                       $flist = ParseAndCleanRule($flist, $mf);
-
-                       foreach my $f (split /\s+/, $flist)
-                       {
-                               lcopy('contrib/' . $d . '/' . $f,
-                                       $target . '/share/' . $moduledir . '/' . basename($f))
-                                 || croak("Could not copy file $f in contrib $d");
+                       lcopy(
+                                       "$subdir/$module/$f.control",
+                                       "$target/share/extension/$f.control"
+                               ) || croak("Could not copy file $f.control in contrib $module");
                                print '.';
-                       }
                }
+       }
 
-               $flist = '';
-               if ($mf =~ /^DATA_TSEARCH\s*=\s*(.*)$/m) { $flist .= $1 }
-               if ($flist ne '')
-               {
-                       $flist = ParseAndCleanRule($flist, $mf);
+       $flist = '';
+       if ($mf =~ /^DATA_built\s*=\s*(.*)$/m) { $flist .= $1 }
+       if ($mf =~ /^DATA\s*=\s*(.*)$/m)       { $flist .= " $1" }
+       $flist =~ s/^\s*//;  # Remove leading spaces if we had only DATA_built
 
-                       foreach my $f (split /\s+/, $flist)
-                       {
-                               lcopy('contrib/' . $d . '/' . $f,
-                                       $target . '/share/tsearch_data/' . basename($f))
-                                 || croak("Could not copy file $f in contrib $d");
+       if ($flist ne '')
+       {
+               $flist = ParseAndCleanRule($flist, $mf);
+
+               foreach my $f (split /\s+/, $flist)
+               {
+                       lcopy("$subdir/$module/$f",
+                                 "$target/share/$moduledir/" . basename($f))
+                                 || croak("Could not copy file $f in contrib $module");
                                print '.';
-                       }
                }
+       }
 
-               $flist = '';
-               if ($mf =~ /^DOCS\s*=\s*(.*)$/mg) { $flist .= $1 }
-               if ($flist ne '')
+       $flist = '';
+       if ($mf =~ /^DATA_TSEARCH\s*=\s*(.*)$/m) { $flist .= $1 }
+       if ($flist ne '')
+       {
+               $flist = ParseAndCleanRule($flist, $mf);
+
+               foreach my $f (split /\s+/, $flist)
                {
-                       $flist = ParseAndCleanRule($flist, $mf);
+                       lcopy("$subdir/$module/$f",
+                               "$target/share/tsearch_data/" . basename($f))
+                         || croak("Could not copy file $f in $subdir $module");
+                       print '.';
+               }
+       }
+
+       $flist = '';
+       if ($mf =~ /^DOCS\s*=\s*(.*)$/mg) { $flist .= $1 }
+       if ($flist ne '')
+       {
+               $flist = ParseAndCleanRule($flist, $mf);
 
-                       # Special case for contrib/spi
-                       $flist =
+               # Special case for contrib/spi
+               $flist =
 "autoinc.example insert_username.example moddatetime.example refint.example timetravel.example"
-                         if ($d eq 'spi');
-                       foreach my $f (split /\s+/, $flist)
-                       {
-                               lcopy('contrib/' . $d . '/' . $f,
-                                       $target . '/doc/' . $moduledir . '/' . $f)
-                                 || croak("Could not copy file $f in contrib $d");
-                               print '.';
-                       }
+                 if ($module eq 'spi');
+               foreach my $f (split /\s+/, $flist)
+               {
+                       lcopy("$subdir/$module/$f",
+                                 "$target/doc/$moduledir/$f")
+                         || croak("Could not copy file $f in contrib $module");
+                       print '.';
                }
        }
-       closedir($D);
-       print "\n";
 }
 
 sub ParseAndCleanRule