Commit 60f6756f authored by Andrew Gierth's avatar Andrew Gierth

Fix out-of-tree build for transform modules.

Neither plperl nor plpython installed sufficient header files to
permit transform modules to be built out-of-tree using PGXS. Fix that
by installing all plperl and plpython header files (other than those
with special purposes such as generated data tables), and also install
plpython's special .mk file for mangling regression tests.

(This commit does not fix the windows install, which does not
currently install _any_ plperl or plpython headers.)

Also fix the existing transform modules for hstore and ltree so that
their cross-module #include directives work as anticipated by commit
df163230 et seq. This allows them to serve as working examples of
how to reference other modules when doing separate out-of-tree builds.

Discussion: https://postgr.es/m/87o9ej8bgl.fsf%40news-spur.riddles.org.uk
parent 3844adbf
...@@ -4,7 +4,6 @@ MODULE_big = hstore_plperl ...@@ -4,7 +4,6 @@ MODULE_big = hstore_plperl
OBJS = hstore_plperl.o $(WIN32RES) OBJS = hstore_plperl.o $(WIN32RES)
PGFILEDESC = "hstore_plperl - hstore transform for plperl" PGFILEDESC = "hstore_plperl - hstore transform for plperl"
PG_CPPFLAGS = -I$(top_srcdir)/src/pl/plperl -I$(top_srcdir)/contrib/hstore
EXTENSION = hstore_plperl hstore_plperlu EXTENSION = hstore_plperl hstore_plperlu
DATA = hstore_plperl--1.0.sql hstore_plperlu--1.0.sql DATA = hstore_plperl--1.0.sql hstore_plperlu--1.0.sql
...@@ -13,10 +12,12 @@ REGRESS = hstore_plperl hstore_plperlu create_transform ...@@ -13,10 +12,12 @@ REGRESS = hstore_plperl hstore_plperlu create_transform
EXTRA_INSTALL = contrib/hstore EXTRA_INSTALL = contrib/hstore
ifdef USE_PGXS ifdef USE_PGXS
PG_CPPFLAGS = -I$(includedir_server)/extension
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS) include $(PGXS)
else else
PG_CPPFLAGS = -I$(top_srcdir)/src/pl/plperl -I$(top_srcdir)/contrib
subdir = contrib/hstore_plperl subdir = contrib/hstore_plperl
top_builddir = ../.. top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include "fmgr.h" #include "fmgr.h"
#include "plperl.h" #include "plperl.h"
#include "plperl_helpers.h" #include "plperl_helpers.h"
#include "hstore.h" #include "hstore/hstore.h"
PG_MODULE_MAGIC; PG_MODULE_MAGIC;
......
...@@ -4,19 +4,21 @@ MODULE_big = hstore_plpython$(python_majorversion) ...@@ -4,19 +4,21 @@ MODULE_big = hstore_plpython$(python_majorversion)
OBJS = hstore_plpython.o $(WIN32RES) OBJS = hstore_plpython.o $(WIN32RES)
PGFILEDESC = "hstore_plpython - hstore transform for plpython" PGFILEDESC = "hstore_plpython - hstore transform for plpython"
PG_CPPFLAGS = -I$(top_srcdir)/src/pl/plpython $(python_includespec) -I$(top_srcdir)/contrib/hstore -DPLPYTHON_LIBNAME='"plpython$(python_majorversion)"'
EXTENSION = hstore_plpythonu hstore_plpython2u hstore_plpython3u EXTENSION = hstore_plpythonu hstore_plpython2u hstore_plpython3u
DATA = hstore_plpythonu--1.0.sql hstore_plpython2u--1.0.sql hstore_plpython3u--1.0.sql DATA = hstore_plpythonu--1.0.sql hstore_plpython2u--1.0.sql hstore_plpython3u--1.0.sql
REGRESS = hstore_plpython REGRESS = hstore_plpython
REGRESS_PLPYTHON3_MANGLE := $(REGRESS) REGRESS_PLPYTHON3_MANGLE := $(REGRESS)
PG_CPPFLAGS = $(python_includespec) -DPLPYTHON_LIBNAME='"plpython$(python_majorversion)"'
ifdef USE_PGXS ifdef USE_PGXS
PG_CPPFLAGS += -I$(includedir_server)/extension
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS) include $(PGXS)
else else
PG_CPPFLAGS += -I$(top_srcdir)/src/pl/plpython -I$(top_srcdir)/contrib
subdir = contrib/hstore_plpython subdir = contrib/hstore_plpython
top_builddir = ../.. top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
#include "fmgr.h" #include "fmgr.h"
#include "plpython.h" #include "plpython.h"
#include "plpy_typeio.h" #include "plpy_typeio.h"
#include "hstore.h" #include "hstore/hstore.h"
PG_MODULE_MAGIC; PG_MODULE_MAGIC;
......
...@@ -4,19 +4,21 @@ MODULE_big = ltree_plpython$(python_majorversion) ...@@ -4,19 +4,21 @@ MODULE_big = ltree_plpython$(python_majorversion)
OBJS = ltree_plpython.o $(WIN32RES) OBJS = ltree_plpython.o $(WIN32RES)
PGFILEDESC = "ltree_plpython - ltree transform for plpython" PGFILEDESC = "ltree_plpython - ltree transform for plpython"
PG_CPPFLAGS = -I$(top_srcdir)/src/pl/plpython $(python_includespec) -I$(top_srcdir)/contrib/ltree -DPLPYTHON_LIBNAME='"plpython$(python_majorversion)"'
EXTENSION = ltree_plpythonu ltree_plpython2u ltree_plpython3u EXTENSION = ltree_plpythonu ltree_plpython2u ltree_plpython3u
DATA = ltree_plpythonu--1.0.sql ltree_plpython2u--1.0.sql ltree_plpython3u--1.0.sql DATA = ltree_plpythonu--1.0.sql ltree_plpython2u--1.0.sql ltree_plpython3u--1.0.sql
REGRESS = ltree_plpython REGRESS = ltree_plpython
REGRESS_PLPYTHON3_MANGLE := $(REGRESS) REGRESS_PLPYTHON3_MANGLE := $(REGRESS)
PG_CPPFLAGS = $(python_includespec) -DPLPYTHON_LIBNAME='"plpython$(python_majorversion)"'
ifdef USE_PGXS ifdef USE_PGXS
PG_CPPFLAGS += -I$(includedir_server)/extension
PG_CONFIG = pg_config PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs) PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS) include $(PGXS)
else else
PG_CPPFLAGS += -I$(top_srcdir)/src/pl/plpython -I$(top_srcdir)/contrib
subdir = contrib/ltree_plpython subdir = contrib/ltree_plpython
top_builddir = ../.. top_builddir = ../..
include $(top_builddir)/src/Makefile.global include $(top_builddir)/src/Makefile.global
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
#include "fmgr.h" #include "fmgr.h"
#include "plpython.h" #include "plpython.h"
#include "ltree.h" #include "ltree/ltree.h"
PG_MODULE_MAGIC; PG_MODULE_MAGIC;
......
...@@ -100,7 +100,7 @@ uninstall: uninstall-lib uninstall-data ...@@ -100,7 +100,7 @@ uninstall: uninstall-lib uninstall-data
install-data: installdirs install-data: installdirs
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/' $(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/'
$(INSTALL_DATA) $(srcdir)/plperl.h $(srcdir)/ppport.h '$(DESTDIR)$(includedir_server)' $(INSTALL_DATA) $(srcdir)/plperl.h $(srcdir)/ppport.h $(srcdir)/plperl_helpers.h '$(DESTDIR)$(includedir_server)'
uninstall-data: uninstall-data:
rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA))) rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA)))
......
...@@ -39,6 +39,21 @@ ifeq ($(python_majorversion),2) ...@@ -39,6 +39,21 @@ ifeq ($(python_majorversion),2)
DATA += plpythonu.control plpythonu--1.0.sql plpythonu--unpackaged--1.0.sql DATA += plpythonu.control plpythonu--1.0.sql plpythonu--unpackaged--1.0.sql
endif endif
# header files to install - it's not clear which of these might be needed
# so install them all.
INCS = plpython.h \
plpy_cursorobject.h \
plpy_elog.h \
plpy_exec.h \
plpy_main.h \
plpy_planobject.h \
plpy_plpymodule.h \
plpy_procedure.h \
plpy_resultobject.h \
plpy_spi.h \
plpy_subxactobject.h \
plpy_typeio.h \
plpy_util.h
# Python on win32 ships with import libraries only for Microsoft Visual C++, # Python on win32 ships with import libraries only for Microsoft Visual C++,
# which are not compatible with mingw gcc. Therefore we need to build a # which are not compatible with mingw gcc. Therefore we need to build a
...@@ -105,13 +120,14 @@ $(OBJS): | submake-generated-headers ...@@ -105,13 +120,14 @@ $(OBJS): | submake-generated-headers
install: all install-lib install-data install: all install-lib install-data
installdirs: installdirs-lib installdirs: installdirs-lib
$(MKDIR_P) '$(DESTDIR)$(datadir)/extension' '$(DESTDIR)$(includedir_server)' $(MKDIR_P) '$(DESTDIR)$(datadir)/extension' '$(DESTDIR)$(includedir_server)' '$(DESTDIR)$(pgxsdir)/src/pl/plpython'
uninstall: uninstall-lib uninstall-data uninstall: uninstall-lib uninstall-data
install-data: installdirs install-data: installdirs
$(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/' $(INSTALL_DATA) $(addprefix $(srcdir)/, $(DATA)) '$(DESTDIR)$(datadir)/extension/'
$(INSTALL_DATA) $(srcdir)/plpython.h $(srcdir)/plpy_util.h '$(DESTDIR)$(includedir_server)' $(INSTALL_DATA) $(addprefix $(srcdir)/, $(INCS)) '$(DESTDIR)$(includedir_server)'
$(INSTALL_DATA) $(srcdir)/regress-python3-mangle.mk '$(DESTDIR)$(pgxsdir)/src/pl/plpython'
uninstall-data: uninstall-data:
rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA))) rm -f $(addprefix '$(DESTDIR)$(datadir)/extension'/, $(notdir $(DATA)))
......
...@@ -506,7 +506,7 @@ sub mkvcbuild ...@@ -506,7 +506,7 @@ sub mkvcbuild
my $hstore_plpython = AddTransformModule( my $hstore_plpython = AddTransformModule(
'hstore_plpython' . $pymajorver, 'contrib/hstore_plpython', 'hstore_plpython' . $pymajorver, 'contrib/hstore_plpython',
'plpython' . $pymajorver, 'src/pl/plpython', 'plpython' . $pymajorver, 'src/pl/plpython',
'hstore', 'contrib/hstore'); 'hstore', 'contrib');
$hstore_plpython->AddDefine( $hstore_plpython->AddDefine(
'PLPYTHON_LIBNAME="plpython' . $pymajorver . '"'); 'PLPYTHON_LIBNAME="plpython' . $pymajorver . '"');
my $jsonb_plpython = AddTransformModule( my $jsonb_plpython = AddTransformModule(
...@@ -517,7 +517,7 @@ sub mkvcbuild ...@@ -517,7 +517,7 @@ sub mkvcbuild
my $ltree_plpython = AddTransformModule( my $ltree_plpython = AddTransformModule(
'ltree_plpython' . $pymajorver, 'contrib/ltree_plpython', 'ltree_plpython' . $pymajorver, 'contrib/ltree_plpython',
'plpython' . $pymajorver, 'src/pl/plpython', 'plpython' . $pymajorver, 'src/pl/plpython',
'ltree', 'contrib/ltree'); 'ltree', 'contrib');
$ltree_plpython->AddDefine( $ltree_plpython->AddDefine(
'PLPYTHON_LIBNAME="plpython' . $pymajorver . '"'); 'PLPYTHON_LIBNAME="plpython' . $pymajorver . '"');
} }
...@@ -753,7 +753,7 @@ sub mkvcbuild ...@@ -753,7 +753,7 @@ sub mkvcbuild
my $hstore_plperl = AddTransformModule( my $hstore_plperl = AddTransformModule(
'hstore_plperl', 'contrib/hstore_plperl', 'hstore_plperl', 'contrib/hstore_plperl',
'plperl', 'src/pl/plperl', 'plperl', 'src/pl/plperl',
'hstore', 'contrib/hstore'); 'hstore', 'contrib');
my $jsonb_plperl = AddTransformModule( my $jsonb_plperl = AddTransformModule(
'jsonb_plperl', 'contrib/jsonb_plperl', 'jsonb_plperl', 'contrib/jsonb_plperl',
'plperl', 'src/pl/plperl'); 'plperl', 'src/pl/plperl');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment