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 | e12cb8c7-5f8d-1676-bb63-5a38154c4a5d@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>) |
| List | pgsql-hackers |
On 5/11/21 2:30 PM, Andrew Dunstan wrote:
> 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.
Simplified version:
Gen_dummy_probes.pl: $(srcdir)/Gen_dummy_probes.sed $(srcdir)/Gen_dummy_probes.pl.prolog
cp $(srcdir)/Gen_dummy_probes.pl.prolog $(srcdir)/$@
s2p -f $< | sed -e 1,3d -e '/# #/ d' -e '$$d' >> $(srcdir)/$@
perltidy --profile=$(srcdir)/../../tools/pgindent/perltidyrc $(srcdir)/$@
perl -pi -e '!$$lb && ( /^\t+#/ || /^# prototypes/ ) && print qq{\n};'\
-e '$$lb = m/^\n/; ' $(srcdir)/$@
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
pgsql-hackers by date: