Re: automatically generating node support functions - Mailing list pgsql-hackers
| From | Tom Lane |
|---|---|
| Subject | Re: automatically generating node support functions |
| Date | |
| Msg-id | 243301.1659883752@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 Wed, Aug 3, 2022 at 7:16 PM Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> More likely, we need to add something explicit to Mkvcbuild.pm
>> for this. I recall that it has stanzas to deal with updating
>> other autogenerated files; I bet we either missed that or
>> fat-fingered it for node-support-stamp.
> I see below logic added by commit which seems to help regenerate the
> required files.
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?
regards, tom lane
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index caacb965bb..40c962d43c 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -800,36 +800,29 @@ 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;
+ 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: