Thread: [Patch] Add missing libraries to Libs.private of libpq.pc
Hello The following patch, which we added to build mingw-postgresql on Fedora, adds some missing libraries to Libs.private of libpq.pc, discovered when attempting to statically link with libpq: -lz: is required by -lcrypto -liconv: is required by -lintl (though possibly depends on whether gettext was compiled with iconv support) Thanks Sandro diff -rupN postgresql-11.5/src/interfaces/libpq/Makefile postgresql-11.5-new/src/interfaces/libpq/Makefile --- postgresql-11.5/src/interfaces/libpq/Makefile 2019-08-05 23:14:59.000000000 +0200 +++ postgresql-11.5-new/src/interfaces/libpq/Makefile 2020-04-07 13:49:00.801203610 +0200 @@ -80,10 +80,10 @@ endif ifneq ($(PORTNAME), win32) SHLIB_LINK += $(filter -lcrypt -ldes -lcom_err -lcrypto -lk5crypto -lkrb5 -lgssapi_krb5 -lgss -lgssapi -lssl -lsocket -lnsl -lresolv -lintl, $(LIBS)) $(LDAP_LIBS_FE) $(PTHREAD_LIBS) else -SHLIB_LINK += $(filter -lcrypt -ldes -lcom_err -lcrypto -lk5crypto -lkrb5 -lgssapi32 -lssl -lsocket -lnsl -lresolv -lintl $(PTHREAD_LIBS), $(LIBS)) $(LDAP_LIBS_FE) +SHLIB_LINK += $(filter -lcrypt -ldes -lcom_err -lcrypto -lz -lk5crypto -lkrb5 -lgssapi32 -lssl -lsocket -lnsl -lresolv -lintl $(PTHREAD_LIBS), $(LIBS)) $(LDAP_LIBS_FE) endif ifeq ($(PORTNAME), win32) -SHLIB_LINK += -lshell32 -lws2_32 -lsecur32 $(filter -leay32 -lssleay32 -lcomerr32 -lkrb5_32, $(LIBS)) +SHLIB_LINK += -lshell32 -lws2_32 -lsecur32 -liconv $(filter -leay32 -lssleay32 -lcomerr32 -lkrb5_32, $(LIBS)) endif SHLIB_EXPORTS = exports.txt
Sandro Mani <manisandro@gmail.com> writes: > The following patch, which we added to build mingw-postgresql on Fedora, > adds some missing libraries to Libs.private of libpq.pc, discovered when > attempting to statically link with libpq: TBH, I think we should just reject this patch. We do not encourage or support statically linking libpq (and I thought that was against distro-level policies in Fedora, as well --- such policies certainly existed when I worked for Red Hat). Moreover, the proposed patch requires us to absorb assumptions about the dependencies of external libraries that we really shouldn't be making. I fear that it risks causing new problems on other platforms, or at the very least unnecessarily bloating libpq's dependency footprint. In particular, creating a hard dependency on -liconv regardless of build options seems right out. regards, tom lane
On 2020-04-08 11:38, Sandro Mani wrote: > The following patch, which we added to build mingw-postgresql on Fedora, > adds some missing libraries to Libs.private of libpq.pc, discovered when > attempting to statically link with libpq: > > -lz: is required by -lcrypto I think the correct fix for that would be to add libssl to libpq's Requires.private. > -liconv: is required by -lintl (though possibly depends on whether > gettext was compiled with iconv support) Yeah, in both of these cases it depends on what libssl or libintl variant you actually got. It could be the OS one or a separately installed one, it could be one with or without pkg-config support. I'm not sure what a robust solution would be. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
On 2020-07-10 21:47, Peter Eisentraut wrote: > On 2020-04-08 11:38, Sandro Mani wrote: >> The following patch, which we added to build mingw-postgresql on Fedora, >> adds some missing libraries to Libs.private of libpq.pc, discovered when >> attempting to statically link with libpq: >> >> -lz: is required by -lcrypto > > I think the correct fix for that would be to add libssl to libpq's > Requires.private. For that, I propose the attached patch. >> -liconv: is required by -lintl (though possibly depends on whether >> gettext was compiled with iconv support) I think the solution here would be to have gettext provide a pkg-config file. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachment
On 2020-09-04 22:07, Peter Eisentraut wrote: > On 2020-07-10 21:47, Peter Eisentraut wrote: >> On 2020-04-08 11:38, Sandro Mani wrote: >>> The following patch, which we added to build mingw-postgresql on Fedora, >>> adds some missing libraries to Libs.private of libpq.pc, discovered when >>> attempting to statically link with libpq: >>> >>> -lz: is required by -lcrypto >> >> I think the correct fix for that would be to add libssl to libpq's >> Requires.private. > > For that, I propose the attached patch. committed -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services