aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2021-05-07 14:27:18 -0400
committerAndrew Dunstan <andrew@dunslane.net>2021-05-07 14:30:36 -0400
commit8292c0675a793a5afd0a8eedbeb0db7abfb844f3 (patch)
tree8537082725de2cb1c7e6f759b8d50663df8857eb
parent9f989a8581cc37879d493a5a78b0f01ec0e3245a (diff)
downloadpostgresql-8292c0675a793a5afd0a8eedbeb0db7abfb844f3.tar.gz
postgresql-8292c0675a793a5afd0a8eedbeb0db7abfb844f3.zip
Add a README and Makefile recipe for Gen_dummy_probes.pl
Discussion: https://postgr.es/m/20210506035602.3akutfvvojngj3nb@alap3.anarazel.de
-rw-r--r--src/backend/utils/Makefile10
-rw-r--r--src/backend/utils/README.Gen_dummy_probes25
2 files changed, 35 insertions, 0 deletions
diff --git a/src/backend/utils/Makefile b/src/backend/utils/Makefile
index 59b22552606..bcf9dd41adf 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 00000000000..90fec37bce4
--- /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`