Stephen Frost <sfrost@snowman.net> writes:
> What is the next step to allow an extension pulled down from pgxn to be
> installed, unchanged, into a given database?
An extension packaging system.
Unchanged is not a goal, and not possible even today.
PGXN is a *source based* packaging system. You can't just install what's
in PGXN on the server's file system then CREATE EXTENSION, you have this
extra step called the “build”.
Whether you're targetting a file system template or a catalog template,
PGXN is not a complete solution, you still need to build the extension.
As I already mentionned in this thread, that's even true for SQL only
extensions today, have a look at this example:
http://api.pgxn.org/src/mimeo/mimeo-1.0.1/ http://api.pgxn.org/src/mimeo/mimeo-1.0.1/Makefile
So even as of today, given file based extension templates and PGXN,
there's something missing. You can find different client tools to help
you there, such as pgxn_client and pex:
http://pgxnclient.projects.pgfoundry.org/ https://github.com/petere/pex
What I want to build is an “extension distribution” software that knows
how to prepare anything from PGXN (and other places) so that it's fully
ready for being used in the database. Then the main client would run as
a CREATE EXTENSION "ddl_command_start" Event Trigger and would fetch the
prepared extension for you and make it available, then leaving the main
command operate as intended.
Which is what I think the pex extension is doing, and that's not
coincidental, but it runs the build step on the PostgreSQL server itself
and needs to have a non-trivial set of file-system privileges to be
doing so, and even needs to get root privileges with sudo for some of
its operations.
Regards,
--
Dimitri Fontaine
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support