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

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

From
Sandro Mani
Date:
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




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

From
Tom Lane
Date:
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



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

From
Peter Eisentraut
Date:
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



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

From
Peter Eisentraut
Date:
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

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

From
Peter Eisentraut
Date:
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