Michael Paquier <mich...@paquier.xyz> writes: > It looks like this commit has broken prairiedog as follows: > https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=prairiedog&dt=2020-09-28%2005%3A45%3A55 > ld: common symbols not allowed with MH_DYLIB output format with the > -multi_module option > ../../../src/common/libpgcommon_shlib.a(logging_shlib.o) definition of > common ___pg_log_level (size 4)
> Looking around, I have found a similar report from MacPorts and 10.4, > leading to the fact that it may be better to initialize > __pg_log_level: > https://trac.macports.org/ticket/19829 I experimented and confirmed that explicitly initializing __pg_log_level would suppress this build error on prairiedog. However, I'm not sure that doing so is a good idea, because it seems to me that this animal has accidentally saved us from a serious design error. IMO it is quite unacceptable for libpq to contain either a forced write to stderr or a forced exit(1). It should be reporting the failure back to the calling application, instead. So the error handling in this patch needs to be reconsidered. Since prairiedog is not likely to be around forever, I propose that we ought to enforce this going forward by arranging for common/logging.c to not get built into the libpgcommon_shlib library variant. regards, tom lane