Re: Why do we have perl and sed versions of Gen_dummy_probes?

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: Why do we have perl and sed versions of Gen_dummy_probes?
Дата
Msg-id 41a3267b-731e-3dfc-d42e-369cf6bc6270@dunslane.net
обсуждение исходный текст
Ответ на Re: Why do we have perl and sed versions of Gen_dummy_probes?  (Andrew Dunstan <andrew@dunslane.net>)
Ответы Re: Why do we have perl and sed versions of Gen_dummy_probes?  (Andrew Dunstan <andrew@dunslane.net>)
Список 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 по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: [Patch] ALTER SYSTEM READ ONLY
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Reducing opr_sanity test's runtime under CLOBBER_CACHE_ALWAYS