From 8292c0675a793a5afd0a8eedbeb0db7abfb844f3 Mon Sep 17 00:00:00 2001 From: Andrew Dunstan Date: Fri, 7 May 2021 14:27:18 -0400 Subject: [PATCH] Add a README and Makefile recipe for Gen_dummy_probes.pl Discussion: https://postgr.es/m/20210506035602.3akutfvvojngj3nb@alap3.anarazel.de --- src/backend/utils/Makefile | 10 +++++++++ src/backend/utils/README.Gen_dummy_probes | 25 +++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/backend/utils/README.Gen_dummy_probes diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile index 59b2255260..bcf9dd41ad 100644 --- a/src/backend/utils/Makefile +++ b/src/backend/utils/Makefile @@ -88,6 +88,16 @@ $(top_builddir)/src/include/utils/probes.h: probes.h cd '$(dir $@)' && rm -f $(notdir $@) && \ $(LN_S) "../../../$(subdir)/probes.h" . +# Recipe for rebuilding the Perl version of Gen_dummy_probes +# 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 + perl -ni -e ' print; exit if /^\$$0/;' $@ + s2p -f $< | sed -e 1,4d -e '/# #/d' -e '$$d' >> $@ + perltidy --profile=../../tools/pgindent/perltidyrc $@ + perl -pi -e '!$$lb && ( /^\t+#/ || /^# prototypes/ ) && print qq{\n};'\ + -e '$$lb = m/^\n/; ' $@ .PHONY: install-data install-data: errcodes.txt installdirs diff --git a/src/backend/utils/README.Gen_dummy_probes b/src/backend/utils/README.Gen_dummy_probes new file mode 100644 index 0000000000..90fec37bce --- /dev/null +++ b/src/backend/utils/README.Gen_dummy_probes @@ -0,0 +1,25 @@ +# Generating dummy probes + +If Postgres isn't configured with dtrace enabled, we need to generate +dummy probes for the entries in probes.d, that do nothing. + +This is accomplished in Unix via the sed script `Gen_dummy_probes.sed`. We +used to use this in MSVC builds using the perl utility `psed`, which mimicked +sed. However, that utility disappeared from Windows perl distributions and so +we converted the sed script to a perl script to be used in MSVC builds. + +We still keep the sed script as the authoritative source for generating +these dummy probes because except on Windows perl is not a hard requirement +when building from a tarball. + +So, if you need to change the way dummy probes are generated, first change +the sed script, and when it's working generate the perl script. This can +be accomplished by using the perl utility s2p. + +s2p is no longer part of the perl core, so it might not be on your system, +but it is available on CPAN and also in many package systems. e.g. +on Fedora it can be installed using `cpan App::s2p` or +`dnf install perl-App-s2p`. + +The Makefile contains a recipe for regenerating Gen_dummy_probes.pl, so all +you need to do is once you have s2p installed is `make Gen_dummy_probes.pl`