MSVC: Future-proof installation file skip logic.
authorNoah Misch <noah@leadboat.com>
Thu, 30 Jul 2015 02:48:25 +0000 (22:48 -0400)
committerNoah Misch <noah@leadboat.com>
Thu, 30 Jul 2015 02:51:26 +0000 (22:51 -0400)
This code relied on knowing exactly where in the source tree temporary
installations might appear.  A reasonable hacker may not think to update
this code when adding use of a temporary installation, making it
fragile.  Observe that commit 9fa8b0ee90c44c0f97d16bf65e94322988c94864
broke it unnoticed, and commit dcae5faccab64776376d354decda0017c648bb53
fixed it unnoticed.  Back-patch to 9.5 only; use of temporary
installations is unlikely to change in released versions.

src/tools/msvc/Install.pm

index b592f997f6cf9863c77a906f915fdc506b63b0db..f9557254a4b2b1c481b89f8d33c527415dfb0c06 100644 (file)
@@ -98,6 +98,9 @@ sub Install
        {   wanted => sub {
                /^.*\.sample\z/s
                  && push(@$sample_files, $File::Find::name);
+
+               # Don't find files of in-tree temporary installations.
+               $_ eq 'share' and $File::Find::prune = 1;
              }
        },
        @top_dir);
@@ -152,6 +155,9 @@ sub Install
            {   wanted => sub {
                    /^(.*--.*\.sql|.*\.control)\z/s
                      && push(@$pl_extension_files, $File::Find::name);
+
+                   # Don't find files of in-tree temporary installations.
+                   $_ eq 'share' and $File::Find::prune = 1;
                  }
            },
            @pldirs);
@@ -199,8 +205,6 @@ sub CopySetOfFiles
    print "Copying $what" if $what;
    foreach (@$flist)
    {
-       next if /regress/;      # Skip temporary install in regression subdir
-       next if /ecpg.test/;    # Skip temporary install in regression subdir
        my $tgt = $target . basename($_);
        print ".";
        lcopy($_, $tgt) || croak "Could not copy $_: $!\n";