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: