pgxs: build infrastructure for extensions v4 - Mailing list pgsql-patches

From Fabien COELHO
Subject pgxs: build infrastructure for extensions v4
Date
Msg-id Pine.LNX.4.58.0407161625040.6161@sablons.cri.ensmp.fr
Whole thread Raw
Responses Re: pgxs: build infrastructure for extensions v4  (Bruce Momjian <pgman@candle.pha.pa.us>)
Re: pgxs: build infrastructure for extensions v4  (Peter Eisentraut <peter_e@gmx.net>)
Re: pgxs: build infrastructure for extensions v4  (Peter Eisentraut <peter_e@gmx.net>)
Re: pgxs: build infrastructure for extensions v4  (Bruce Momjian <pgman@candle.pha.pa.us>)
List pgsql-patches
Dear patchers,


Please find attached another new version of a patch which provides a
working infrastructure for pg extensions. I hope it addresses all of
Peter's comments. I'll be away for the next 3 weeks, so if minor changes
are required it would be best if you could proceed without me...

The infrastructure is a simple reworking of the already available internal
infrastructure for contrib, so that it can be used outside of the
postgresql source tree after installation, without gory details being in
sight of the user. The documentation is added as a new section in
"xfunc.sgml".

I updated all contrib makefiles so that they can be used either the
standard way after a configure, or the new way without needing a configure
but with an already installed postgreSQL. Just try them with

    "cd contrib/foo ; make USE_PGXS=1 install"

*AFTER* postgresql has been configure, compiled and installed.  It should
be compiled and installed wrt to the first "pg_config" which is found in
the path.


How it works:

 - necessary files (includes, scripts, makefiles...) are copied under
   $(pkglibdir)/pgxs on the initial "make install".

   due to gnu-make restriction on how its includes work, these files must
   be copied with the *same* directory structure as the pg source tree.
   The fact does not appear at all in the actual infrastructure from the
   user point of view, but it explains why subdirectories are necessary
   under pgxs, if you care to have a look.

 - the makefile of any extension is expected to set macro PGXS to
   "pg_config --pgxs", to include a special makefile, and to
   set some macros depending on what is to be built, just like in
   current contrib.

 - I've added two PGXS-triggered conditionnals in Makefile.global,
   so that includes and libraries are taken where needed.


Notes:

 - there is still a "light-install" target that matches the previous
   "install" behavior, as new "install" matches previous "server-install".

 - I'm not sure the sgml is ok. It looks ok, but is it enough.

 - It validates and works for me.


Have a nice day,

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

Attachment

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: [subxact] Proof-of-concept: report nest level to client
Next
From: Bruce Momjian
Date:
Subject: Re: plperl win32