Re: pgxs: build infrastructure for extensions v2 - Mailing list pgsql-patches

From Fabien COELHO
Subject Re: pgxs: build infrastructure for extensions v2
Date
Msg-id Pine.LNX.4.58.0407021703370.27076@sablons.cri.ensmp.fr
Whole thread Raw
In response to Re: pgxs: build infrastructure for extensions v2  (Peter Eisentraut <peter_e@gmx.net>)
List pgsql-patches
Dear Peter,

> > If you cannot compile extensions before postgresql is already installed,
>
> That assumption is wrong.  The contrib modules can be built at the same
> time as the rest of the tree, before any installation takes place.
> This is essential for packaging: When a package is built, the tree is
> never really installed.

The model I have in mind is the one of apache, where you use "apxs -c -i
... mod_foo.c" to install a new module AFTER apache has been compiled and
installed, and it's not a problem to anyone there.

So I must admit I'm not sure I understand the package building issue.

The whole point of PGXS is to enable the ability to install a contrib
or external module whenever one needs it, but not necessary at "initial"
build time.

As a side effect, because it relies on "pg_contrib" and other files being
installed, then it suggests that the "make" in contrib can only be made
after postgresql is installed, as it is with apache.


> > > - In Makefile.global: -L$(pkglibdir) is not necessary.  There are not
> > > libraries to link at build time in there.
> >
> > It is done only "ifdef PGXS", in which case it seems to me that
> > this is really needed, as it is at extension-building time.
>
> There are by definition never any build-time linkable files in $(pkglibdir).

PGXS is by definition to be used AFTER the postgresql installation.  Thus
the "build-time" when using is necessary AFTER postgresql has been
installed. So I think that the libraries are expected to be in
$(pkglibdir)? Or am I completly misunderstanding you?

> >  - maybe more files should be copied? if so which ones?
>
> Actually you might copy less files.  You don't need to copy everything under
> src/makefiles/.  It is enough to copy Makefile.port, since you already know
> the platform.

Ok. I can look at that. "Makefile.port" is a symbolic link, so it may
depends whether the "install.sh" copies the link as a file or as a link.

Thanks for your comments,

--
Fabien Coelho - coelho@cri.ensmp.fr

pgsql-patches by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: Translation updates for 7.4/7.5: postgres-ru.po
Next
From: Joe Conway
Date:
Subject: Re: pg_tablespace_databases