Thread: Ecpg dependency

Ecpg dependency

From
Filip Janus
Date:
Hello,
After upgrade from 11.2 to 12.2 I found, that build of ecpg component depends on pgcommon_shlib and pgport_shlib.  But build of ecpg doesn't include build of pgcommon_shlib and pgport_shlib. That means, if I want to build ecpg, first I need to build  pgcommon_shlib and pgport_shlib and after that I am able to build ecpg.

I would like to ask if this behavior is expected or not ? Because previous version doesn't require this separate builds.

Thanks 
Filip Januš

Re: Ecpg dependency

From
Bruce Momjian
Date:
On Tue, Mar 10, 2020 at 01:47:14PM +0100, Filip Janus wrote:
> Hello,
> After upgrade from 11.2 to 12.2 I found, that build of ecpg component depends
> on pgcommon_shlib and pgport_shlib.  But build of ecpg doesn't include build
> of pgcommon_shlib and pgport_shlib. That means, if I want to build ecpg, first
> I need to build  pgcommon_shlib and pgport_shlib and after that I am able to
> build ecpg.
> 
> I would like to ask if this behavior is expected or not ? Because previous
> version doesn't require this separate builds.

Ah, I see the problem, and this is a new bug in PG 12.  The attached
patch fixes PG 12 and master.
   
-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +

Attachment

Re: Ecpg dependency

From
Bruce Momjian
Date:
On Sat, Mar 21, 2020 at 02:14:44PM -0400, Bruce Momjian wrote:
> On Tue, Mar 10, 2020 at 01:47:14PM +0100, Filip Janus wrote:
> > Hello,
> > After upgrade from 11.2 to 12.2 I found, that build of ecpg component depends
> > on pgcommon_shlib and pgport_shlib.  But build of ecpg doesn't include build
> > of pgcommon_shlib and pgport_shlib. That means, if I want to build ecpg, first
> > I need to build  pgcommon_shlib and pgport_shlib and after that I am able to
> > build ecpg.
> > 
> > I would like to ask if this behavior is expected or not ? Because previous
> > version doesn't require this separate builds.
> 
> Ah, I see the problem, and this is a new bug in PG 12.  The attached
> patch fixes PG 12 and master.

> + all-lib: | submake-libpgport

Oh, I forgot to mention I got this line from
src/interfaces/libpq/Makefile:

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +



Re: Ecpg dependency

From
ilmari@ilmari.org (Dagfinn Ilmari Mannsåker)
Date:
Bruce Momjian <bruce@momjian.us> writes:

> On Sat, Mar 21, 2020 at 02:14:44PM -0400, Bruce Momjian wrote:
>> On Tue, Mar 10, 2020 at 01:47:14PM +0100, Filip Janus wrote:
>> > Hello,
>> > After upgrade from 11.2 to 12.2 I found, that build of ecpg component depends
>> > on pgcommon_shlib and pgport_shlib.  But build of ecpg doesn't include build
>> > of pgcommon_shlib and pgport_shlib. That means, if I want to build ecpg, first
>> > I need to build  pgcommon_shlib and pgport_shlib and after that I am able to
>> > build ecpg.
>> > 
>> > I would like to ask if this behavior is expected or not ? Because previous
>> > version doesn't require this separate builds.
>> 
>> Ah, I see the problem, and this is a new bug in PG 12.  The attached
>> patch fixes PG 12 and master.
>
>> + all-lib: | submake-libpgport
>
> Oh, I forgot to mention I got this line from
> src/interfaces/libpq/Makefile:

And that line is wrong, but my patch to fix it¹ seems to have fallen
between the cracks.

[1] https://www.postgresql.org/message-id/flat/871rsa13ae.fsf%40wibble.ilmari.org 

Adding the dependency to `all-lib` only fixes it for serial builds. To
fix it properly, so it works with parallel builds (e.g. 'make -j4 -C
src/interfaces/ecpg', the dependency needs to be declared via
SHLIB_PREREQS, as attached

- ilmari
-- 
- Twitter seems more influential [than blogs] in the 'gets reported in
  the mainstream press' sense at least.               - Matt McLeod
- That'd be because the content of a tweet is easier to condense down
  to a mainstream media article.                      - Calle Dybedahl

From fb9e077308433970588505604d79ab21e7b1404a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <ilmari@ilmari.org>
Date: Sat, 21 Mar 2020 19:29:51 +0000
Subject: [PATCH] Add missing libpgport prereq in ecpg's pgtypeslib

---
 src/interfaces/ecpg/pgtypeslib/Makefile | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/interfaces/ecpg/pgtypeslib/Makefile b/src/interfaces/ecpg/pgtypeslib/Makefile
index 530b580d7c..6094a8d08a 100644
--- a/src/interfaces/ecpg/pgtypeslib/Makefile
+++ b/src/interfaces/ecpg/pgtypeslib/Makefile
@@ -25,6 +25,8 @@ override CFLAGS += $(PTHREAD_CFLAGS)
 SHLIB_LINK_INTERNAL = -lpgcommon_shlib -lpgport_shlib
 SHLIB_LINK += $(filter -lintl -lm, $(LIBS))
 
+SHLIB_PREREQS = submake-libpgport
+
 SHLIB_EXPORTS = exports.txt
 
 OBJS = \
-- 
2.20.1


Re: Ecpg dependency

From
Bruce Momjian
Date:
On Sat, Mar 21, 2020 at 07:30:48PM +0000, Dagfinn Ilmari Mannsåker wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> 
> > On Sat, Mar 21, 2020 at 02:14:44PM -0400, Bruce Momjian wrote:
> >> On Tue, Mar 10, 2020 at 01:47:14PM +0100, Filip Janus wrote:
> >> > Hello,
> >> > After upgrade from 11.2 to 12.2 I found, that build of ecpg component depends
> >> > on pgcommon_shlib and pgport_shlib.  But build of ecpg doesn't include build
> >> > of pgcommon_shlib and pgport_shlib. That means, if I want to build ecpg, first
> >> > I need to build  pgcommon_shlib and pgport_shlib and after that I am able to
> >> > build ecpg.
> >> > 
> >> > I would like to ask if this behavior is expected or not ? Because previous
> >> > version doesn't require this separate builds.
> >> 
> >> Ah, I see the problem, and this is a new bug in PG 12.  The attached
> >> patch fixes PG 12 and master.
> >
> >> + all-lib: | submake-libpgport
> >
> > Oh, I forgot to mention I got this line from
> > src/interfaces/libpq/Makefile:
> 
> And that line is wrong, but my patch to fix it¹ seems to have fallen
> between the cracks.
> 
> [1] https://www.postgresql.org/message-id/flat/871rsa13ae.fsf%40wibble.ilmari.org 
> 
> Adding the dependency to `all-lib` only fixes it for serial builds. To
> fix it properly, so it works with parallel builds (e.g. 'make -j4 -C
> src/interfaces/ecpg', the dependency needs to be declared via
> SHLIB_PREREQS, as attached

Oh, good catch.  I did not notice that patch before.  Adding that change
to src/interfaces/ecpg/pgtypeslib/Makefile fixes the stand-alone
compile.

The attached patch does this, and changes libpq to use it too, so
parallel Make works there too.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +

Attachment

Re: Ecpg dependency

From
Bruce Momjian
Date:
On Sat, Mar 21, 2020 at 06:13:03PM -0400, Bruce Momjian wrote:
> On Sat, Mar 21, 2020 at 07:30:48PM +0000, Dagfinn Ilmari Mannsåker wrote:
> > Bruce Momjian <bruce@momjian.us> writes:
> > > On Sat, Mar 21, 2020 at 02:14:44PM -0400, Bruce Momjian wrote:
> > > Oh, I forgot to mention I got this line from
> > > src/interfaces/libpq/Makefile:
> > 
> > And that line is wrong, but my patch to fix it¹ seems to have fallen
> > between the cracks.
> > 
> > [1] https://www.postgresql.org/message-id/flat/871rsa13ae.fsf%40wibble.ilmari.org 
> > 
> > Adding the dependency to `all-lib` only fixes it for serial builds. To
> > fix it properly, so it works with parallel builds (e.g. 'make -j4 -C
> > src/interfaces/ecpg', the dependency needs to be declared via
> > SHLIB_PREREQS, as attached
> 
> Oh, good catch.  I did not notice that patch before.  Adding that change
> to src/interfaces/ecpg/pgtypeslib/Makefile fixes the stand-alone
> compile.

Patch applied and backpatched to PG 12.  Thanks.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EnterpriseDB                             https://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +