Remove logging.c from the shared library of src/common/
authorMichael Paquier <[email protected]>
Thu, 1 Oct 2020 01:37:34 +0000 (10:37 +0900)
committerMichael Paquier <[email protected]>
Thu, 1 Oct 2020 01:37:34 +0000 (10:37 +0900)
As fe0a1dc has proved, it is not a good concept to add to libpq
dependencies that would enforce the error output to a central logging
facility because it breaks the promise of reporting the error back to
an application in a consistent way, with the application to potentially
exit() suddenly if using pieces from for example jsonapi.c.  prairiedog
has allowed to report an actual design problem with fe0a1dc, but it will
not be around forever, so removing logging.c from libpgcommon_shlib is a
simple and much better long-term way to prevent any attempt to load the
central logging in libraries with general purposes.

Author: Michael Paquier
Reviewed-by: Tom Lane
Discussion: https://postgr.es/m/20200928073330[email protected]

src/common/Makefile

index f2817628851ea012d70e3df4faaa790b9c372235..25c55bd6423c3fd890b4cc99528eec5940494d75 100644 (file)
@@ -88,16 +88,21 @@ OBJS_COMMON += sha2.o
 endif
 
 # A few files are currently only built for frontend, not server
-# (Mkvcbuild.pm has a copy of this list, too)
-OBJS_FRONTEND = \
+# (Mkvcbuild.pm has a copy of this list, too).  logging.c is excluded
+# from OBJS_FRONTEND_SHLIB (shared library) as a matter of policy,
+# because it is not appropriate for general purpose libraries such
+# as libpq to report errors directly.
+OBJS_FRONTEND_SHLIB = \
    $(OBJS_COMMON) \
    fe_memutils.o \
-   logging.o \
    restricted_token.o \
    sprompt.o
+OBJS_FRONTEND = \
+   $(OBJS_FRONTEND_SHLIB) \
+   logging.o
 
 # foo.o, foo_shlib.o, and foo_srv.o are all built from foo.c
-OBJS_SHLIB = $(OBJS_FRONTEND:%.o=%_shlib.o)
+OBJS_SHLIB = $(OBJS_FRONTEND_SHLIB:%.o=%_shlib.o)
 OBJS_SRV = $(OBJS_COMMON:%.o=%_srv.o)
 
 # where to find gen_keywordlist.pl and subsidiary files