summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane2022-08-08 18:43:35 +0000
committerTom Lane2022-08-08 18:43:35 +0000
commit9a9f25e217428cdf4119ff08b77f9f5bd45f563c (patch)
tree8f8b501416e55869aad50fa6fcd846fb0d80c5a1 /src
parent71cac850d02f2ad46aca00d3852574bd48fb581a (diff)
Fix MSVC build script's check for obsolete node support functions.
Commit 964d01ae9 was a few bricks shy of a load here: the script checked whether gen_node_support.pl itself had been updated since it was last run, but not whether any of its input files had been updated. Fix that. While here, scrape the list of input files from the Makefiles rather than having a duplicate copy, as we do for most other lists of source files. In passing, improve gen_node_support.pl's error report for an incorrect file list. Per gripe from Amit Kapila. Discussion: https://postgr.es/m/CAA4eK1KQk4vP-3mTAz26h-PRUZaGu8Fc=q-ZKSajsAthH0A15w@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r--src/backend/nodes/gen_node_support.pl2
-rw-r--r--src/tools/msvc/Solution.pm50
2 files changed, 23 insertions, 29 deletions
diff --git a/src/backend/nodes/gen_node_support.pl b/src/backend/nodes/gen_node_support.pl
index 86cf1b39d07..b707a09f565 100644
--- a/src/backend/nodes/gen_node_support.pl
+++ b/src/backend/nodes/gen_node_support.pl
@@ -174,7 +174,7 @@ push @scalar_types, qw(QualCost);
## check that we have the expected number of files on the command line
-die "wrong number of input files, expected @all_input_files\n"
+die "wrong number of input files, expected:\n@all_input_files\ngot:\n@ARGV\n"
if ($#ARGV != $#all_input_files);
## read input
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 383b8a7c629..cc82668457f 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -797,36 +797,30 @@ EOF
close($chs);
}
- if (IsNewer(
- 'src/backend/nodes/node-support-stamp',
- 'src/backend/nodes/gen_node_support.pl'))
+ my $nmf = Project::read_file('src/backend/nodes/Makefile');
+ $nmf =~ s{\\\r?\n}{}g;
+ $nmf =~ /^node_headers\s*:?=(.*)$/gm
+ || croak "Could not find node_headers in Makefile\n";
+ my @node_headers = split /\s+/, $1;
+ @node_headers = grep { $_ ne '' } @node_headers;
+ my @node_files = map { "src/include/$_" } @node_headers;
+
+ my $need_node_support = 0;
+ foreach my $nodefile (@node_files)
{
- # XXX duplicates node_headers list in src/backend/nodes/Makefile
- my @node_headers = qw(
- nodes/nodes.h
- nodes/primnodes.h
- nodes/parsenodes.h
- nodes/pathnodes.h
- nodes/plannodes.h
- nodes/execnodes.h
- access/amapi.h
- access/sdir.h
- access/tableam.h
- access/tsmapi.h
- commands/event_trigger.h
- commands/trigger.h
- executor/tuptable.h
- foreign/fdwapi.h
- nodes/extensible.h
- nodes/lockoptions.h
- nodes/replnodes.h
- nodes/supportnodes.h
- nodes/value.h
- utils/rel.h
- );
-
- my @node_files = map { "src/include/$_" } @node_headers;
+ if (IsNewer('src/backend/nodes/node-support-stamp', $nodefile))
+ {
+ $need_node_support = 1;
+ last;
+ }
+ }
+ $need_node_support = 1
+ if IsNewer(
+ 'src/backend/nodes/node-support-stamp',
+ 'src/backend/nodes/gen_node_support.pl');
+ if ($need_node_support)
+ {
system("perl src/backend/nodes/gen_node_support.pl --outdir src/backend/nodes @node_files");
open(my $f, '>', 'src/backend/nodes/node-support-stamp')
|| confess "Could not touch node-support-stamp";