[Patch] Add missing libraries to Libs.private of libpq.pc

Lists: pgsql-hackers
From: Sandro Mani <manisandro(at)gmail(dot)com>
To: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: [Patch] Add missing libraries to Libs.private of libpq.pc
Date: 2020-04-08 09:38:50
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-hackers

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


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Sandro Mani <manisandro(at)gmail(dot)com>
Cc: PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [Patch] Add missing libraries to Libs.private of libpq.pc
Date: 2020-07-01 20:54:29
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-hackers

Sandro Mani <manisandro(at)gmail(dot)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


From: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
To: Sandro Mani <manisandro(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [Patch] Add missing libraries to Libs.private of libpq.pc
Date: 2020-07-10 19:47:54
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-hackers

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


From: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
To: Sandro Mani <manisandro(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [Patch] Add missing libraries to Libs.private of libpq.pc
Date: 2020-09-04 20:07:00
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-hackers

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 Content-Type Size
0001-Add-libpq-s-openssl-dependencies-to-pkg-config-file.patch text/plain 1.0 KB

From: Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
To: Sandro Mani <manisandro(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: [Patch] Add missing libraries to Libs.private of libpq.pc
Date: 2020-09-10 13:56:31
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-hackers

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