Re: automatically generating node support functions - Mailing list pgsql-hackers
From | Tom Lane |
---|---|
Subject | Re: automatically generating node support functions |
Date | |
Msg-id | 643912.1659981960@sss.pgh.pa.us Whole thread Raw |
In response to | Re: automatically generating node support functions (Amit Kapila <amit.kapila16@gmail.com>) |
Responses |
Re: automatically generating node support functions
|
List | pgsql-hackers |
Amit Kapila <amit.kapila16@gmail.com> writes: > On Sun, Aug 7, 2022 at 8:19 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: >> Meh ... it's not checking the data files themselves. Here's >> a patch based on the logic for invoking genbki. Completely >> untested, would somebody try it? > I tried it on commit a69959fab2 just before the commit (1349d2790b) > which was causing problems for me. On running "perl mkvcbuild.pl", I > got the below error: > wrong number of input files, expected 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 Ah. It'd help if that complaint said what the command input actually is :-(. But on looking closer, I missed stripping the empty strings that "split" will produce at the ends of the array. I think the attached will do the trick, and I really do want to get rid of this copy of the file list if possible. regards, tom lane diff --git a/src/backend/nodes/gen_node_support.pl b/src/backend/nodes/gen_node_support.pl index 86cf1b39d0..b707a09f56 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 383b8a7c62..cc82668457 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";
pgsql-hackers by date: