Re: Why do we have perl and sed versions of Gen_dummy_probes? - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: Why do we have perl and sed versions of Gen_dummy_probes?
Date
Msg-id 41a3267b-731e-3dfc-d42e-369cf6bc6270@dunslane.net
Whole thread Raw
In response to Re: Why do we have perl and sed versions of Gen_dummy_probes?  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: Why do we have perl and sed versions of Gen_dummy_probes?
List pgsql-hackers
On 5/11/21 1:21 PM, Andres Freund wrote:
> Hi,
>
> On 2021-05-11 10:52:22 -0400, Tom Lane wrote:
>> Works for me.  One other thought --- do we care whether this works
>> in a VPATH build, and if so does it?  The $< and $@ references should
>> be OK, but I'm betting you need $(srcdir)/Gen_dummy_probes.pl.prolog
>> or the like.
> It doesn't work in a VPATH build right now, FWIW. $@, $< will point to a
> local file in the build directory, right now. And the path to perltidyrc
> doesn't work either. It seems to work after the following modifications
>
> diff --git i/src/backend/utils/Makefile w/src/backend/utils/Makefile
> index bcf9dd41adf..ca733d12dce 100644
> --- i/src/backend/utils/Makefile
> +++ w/src/backend/utils/Makefile
> @@ -92,10 +92,10 @@ $(top_builddir)/src/include/utils/probes.h: probes.h
>  # Nothing depends on it, so it will never be called unless explicitly requested
>  # The last two lines of the recipe format the script according to  our
>  # standard and put back some blank lines for improved readability.
> -Gen_dummy_probes.pl: Gen_dummy_probes.sed
> +$(top_srcdir)/src/backend/utils/Gen_dummy_probes.pl: $(top_srcdir)/src/backend/utils/Gen_dummy_probes.sed
>      perl -ni -e ' print; exit if /^\$$0/;' $@
>      s2p -f $<  | sed -e 1,4d -e '/# #/d' -e '$$d' >> $@
> -    perltidy --profile=../../tools/pgindent/perltidyrc $@
> +    perltidy --profile=$(top_srcdir)/src/tools/pgindent/perltidyrc $@
>      perl -pi -e '!$$lb && ( /^\t+#/  || /^# prototypes/ ) && print qq{\n};'\
>          -e '$$lb = m/^\n/; ' $@
>  


Yeah, but this will create the perl file in the vpath directory where it
won't ever be used anyway. You really want this back in the source
directory where you can check it in etc.

I came up with this:


Gen_dummy_probes.pl: $(top_srcdir)/$(subdir)/Gen_dummy_probes.sed $(top_srcdir)/$(subdir)/Gen_dummy_probes.pl.prolog
    cp $(top_srcdir)/$(subdir)/Gen_dummy_probes.pl.prolog $(top_srcdir)/$(subdir)/$@
    s2p -f $<  | sed -e 1,3d -e '/# #/ d' -e '$$d' >> $(top_srcdir)/$(subdir)/$@
    perltidy --profile=$(top_srcdir)/$(subdir)/../../tools/pgindent/perltidyrc $(top_srcdir)/$(subdir)/$@
    perl -pi -e '!$$lb && ( /^\t+#/  || /^# prototypes/ ) && print qq{\n};'\
        -e '$$lb = m/^\n/; ' $(top_srcdir)/$(subdir)/$@


I'm not aware of any other case where we generate an in-tree file from a
vpath, which is why it feels strange.


cheers


andrew





pgsql-hackers by date:

Previous
From: Robert Haas
Date:
Subject: Re: [Patch] ALTER SYSTEM READ ONLY
Next
From: Tom Lane
Date:
Subject: Re: Reducing opr_sanity test's runtime under CLOBBER_CACHE_ALWAYS