From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: pgsql-hackers <pgsql-hackers@postgresql.org>
Subject: where EXEC_BACKEND is defined
Date: Fri, 20 Mar 2020 16:24:39 +0100
Message-ID: <b7053ba8-b008-5335-31de-2fe4fe41ef0f@2ndquadrant.com> (raw)
I noticed that when you want to define EXEC_BACKEND, perhaps to do some
non-Windows testing of that option, it's not clear how to do that. I
would have expected it in pg_config_manual.h, but it's actually in
configure.in and in MSBuildProject.pm. So if you want to define it
yourself, you kind of have to make up your own way to do it.
I don't see why this should be like that. I propose the attached patch
to move the thing to pg_config_manual.h.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:0001-Define-EXEC_BACKEND-in-pg_config_manual.h.patch (text/plain, 3.6K) download
From c7d574d3b9f363cc44daf45c543ab4addfa25afd Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter@eisentraut.org>
Date: Thu, 19 Mar 2020 16:32:02 +0100
Subject: [PATCH] Define EXEC_BACKEND in pg_config_manual.h
It was for unclear reasons defined in a separate location, which makes
it more cumbersome to override for testing, and it also did not have
any prominent documentation. Move to pg_config_manual.h, where
similar things are already collected.
---
configure | 2 +-
configure.in | 2 +-
src/include/pg_config_manual.h | 13 +++++++++++++
src/tools/msvc/MSBuildProject.pm | 2 +-
4 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/configure b/configureindex a7cf71b3f1..899116517c 100755--- a/configure+++ b/configure@@ -6906,7 +6906,7 @@ fi
# We already have this in Makefile.win32, but configure needs it too
if test "$PORTNAME" = "win32"; then
- CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND"+ CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32"
fi
# Now that we're done automatically adding stuff to C[XX]FLAGS, put back the
diff --git a/configure.in b/configure.inindex d36a7e94b3..ecdf172396 100644--- a/configure.in+++ b/configure.in@@ -600,7 +600,7 @@ fi
# We already have this in Makefile.win32, but configure needs it too
if test "$PORTNAME" = "win32"; then
- CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32 -DEXEC_BACKEND"+ CPPFLAGS="$CPPFLAGS -I$srcdir/src/include/port/win32"
fi
# Now that we're done automatically adding stuff to C[XX]FLAGS, put back the
diff --git a/src/include/pg_config_manual.h b/src/include/pg_config_manual.hindex d74a8dd808..b7410ff51e 100644--- a/src/include/pg_config_manual.h+++ b/src/include/pg_config_manual.h@@ -122,6 +122,19 @@
*/
#define ALIGNOF_BUFFER 32
+/*+ * If EXEC_BACKEND is defined, the postmaster uses an alternative method for+ * starting subprocesses: Instead of simply using fork(), as is standard on+ * Unix platforms, it uses fork()+exec() or something equivalent on Windows,+ * as well as lots of extra code to bring the required global state to those+ * new processes. This must be enabled on Windows (because there is no+ * fork()). On other platforms, it's only useful for verifying those+ * otherwise Windows-specific code paths.+ */+#if defined(WIN32) && !defined(__CYGWIN__)+#define EXEC_BACKEND+#endif+
/*
* Disable UNIX sockets for certain operating systems.
*/
diff --git a/src/tools/msvc/MSBuildProject.pm b/src/tools/msvc/MSBuildProject.pmindex 823357c023..ebb169e201 100644--- a/src/tools/msvc/MSBuildProject.pm+++ b/src/tools/msvc/MSBuildProject.pm@@ -320,7 +320,7 @@ sub WriteItemDefinitionGroup
<ClCompile>
<Optimization>$p->{opt}</Optimization>
<AdditionalIncludeDirectories>$self->{prefixincludes}src/include;src/include/port/win32;src/include/port/win32_msvc;$includes\%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>WIN32;_WINDOWS;__WINDOWS__;__WIN32__;EXEC_BACKEND;WIN32_STACK_RLIMIT=4194304;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE$self->{defines}$p->{defs}\%(PreprocessorDefinitions)</PreprocessorDefinitions>+ <PreprocessorDefinitions>WIN32;_WINDOWS;__WINDOWS__;__WIN32__;WIN32_STACK_RLIMIT=4194304;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE$self->{defines}$p->{defs}\%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>$p->{strpool}</StringPooling>
<RuntimeLibrary>$p->{runtime}</RuntimeLibrary>
<DisableSpecificWarnings>$self->{disablewarnings};\%(DisableSpecificWarnings)</DisableSpecificWarnings>
--
2.25.0
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: peter.eisentraut@2ndquadrant.com
Subject: Re: where EXEC_BACKEND is defined
In-Reply-To: <b7053ba8-b008-5335-31de-2fe4fe41ef0f@2ndquadrant.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox