Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oKhan-0007Sv-Ep for pgsql-hackers@arkaria.postgresql.org; Sun, 07 Aug 2022 14:49:25 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oKhak-00030V-FJ for pgsql-hackers@arkaria.postgresql.org; Sun, 07 Aug 2022 14:49:22 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oKhak-00030L-5B for pgsql-hackers@lists.postgresql.org; Sun, 07 Aug 2022 14:49:22 +0000 Received: from sss.pgh.pa.us ([66.207.139.130]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oKhah-0001HA-Bo for pgsql-hackers@postgresql.org; Sun, 07 Aug 2022 14:49:21 +0000 Received: from sss1.sss.pgh.pa.us (localhost [127.0.0.1]) by sss.pgh.pa.us (8.15.2/8.15.2) with ESMTP id 277EnC5E243302; Sun, 7 Aug 2022 10:49:12 -0400 From: Tom Lane To: Amit Kapila cc: Peter Eisentraut , Andres Freund , David Rowley , pgsql-hackers Subject: Re: automatically generating node support functions In-reply-to: References: <1294462.1656875649@sss.pgh.pa.us> <57df9f30-d2cf-9126-28d4-ae40a2e733a9@enterprisedb.com> <1593978.1656953960@sss.pgh.pa.us> <2592455.1657140387@sss.pgh.pa.us> <3302658.1657288366@sss.pgh.pa.us> <3488143.1657310625@sss.pgh.pa.us> <11148777-fbe2-5188-195d-48f5083573c5@enterprisedb.com> <20220710214622.haiektrjzisob6rl@awork3.anarazel.de> <815831.1657494597@sss.pgh.pa.us> <45f508cb-e30b-c252-e081-4548deafa34c@enterprisedb.com> <1116889.1657553859@sss.pgh.pa.us> <1201553.1657562258@sss.pgh.pa.us> <101171fc-da4c-7799-991d-65ad84f53d7d@enterprisedb.com> <2963323.1659534404@sss.pgh.pa.us> Comments: In-reply-to Amit Kapila message dated "Fri, 05 Aug 2022 17:52:36 +0530" MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----- =_aaaaaaaaaa0" Content-ID: <243268.1659883716.0@sss.pgh.pa.us> Date: Sun, 07 Aug 2022 10:49:12 -0400 Message-ID: <243301.1659883752@sss.pgh.pa.us> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ------- =_aaaaaaaaaa0 Content-Type: text/plain; charset="us-ascii" Content-ID: <243268.1659883716.1@sss.pgh.pa.us> Amit Kapila writes: > On Wed, Aug 3, 2022 at 7:16 PM Tom Lane 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 ------- =_aaaaaaaaaa0 Content-Type: text/x-diff; name="msvc-check-for-obsolete-node-support-1.patch"; charset="us-ascii" Content-ID: <243268.1659883716.2@sss.pgh.pa.us> Content-Description: msvc-check-for-obsolete-node-support-1.patch Content-Transfer-Encoding: quoted-printable 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 =3D Project::read_file('src/backend/nodes/Makefile'); + $nmf =3D~ s{\\\r?\n}{}g; + $nmf =3D~ /^node_headers\s*:?=3D(.*)$/gm + || croak "Could not find node_headers in Makefile\n"; + my @node_headers =3D split /\s+/, $1; + my @node_files =3D map { "src/include/$_" } @node_headers; + + my $need_node_support =3D 0; + foreach my $nodefile (@node_files) { - # XXX duplicates node_headers list in src/backend/nodes/Makefile - my @node_headers =3D 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 =3D map { "src/include/$_" } @node_headers; + if (IsNewer('src/backend/nodes/node-support-stamp', $nodefile)) + { + $need_node_support =3D 1; + last; + } + } + $need_node_support =3D 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"; ------- =_aaaaaaaaaa0--