pgxs: build infrastructure for extensions v4

From: Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr>
To: PostgreSQL Patches <pgsql-patches(at)postgresql(dot)org>
Subject: pgxs: build infrastructure for extensions v4
Date: 2004-07-16 14:34:36
Message-ID: Pine.LNX.4.58.0407161625040.6161@sablons.cri.ensmp.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers 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(at)cri(dot)ensmp(dot)fr

Attachment Content-Type Size
install_build.patch text/plain 52.2 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2004-07-16 14:44:12 Re: [pgsql-hackers-win32] Weird new time zone
Previous Message Bruce Momjian 2004-07-16 14:27:43 Re: Point in Time Recovery

Browse pgsql-patches by date

  From Date Subject
Next Message Bruce Momjian 2004-07-16 14:49:57 Re: plperl win32
Previous Message Tom Lane 2004-07-16 14:10:58 Re: [subxact] Proof-of-concept: report nest level to client