diff options
| author | Tom Lane | 2018-07-09 21:23:31 +0000 |
|---|---|---|
| committer | Tom Lane | 2018-07-09 21:23:31 +0000 |
| commit | ccc286da1d35b5d57a1e3322027905c00507d38f (patch) | |
| tree | 5d17712252780e0be4d0bb1b021ff4e3fd8444de /contrib | |
| parent | 619dea4678c345d119036311c503b55b974695d3 (diff) | |
Prevent accidental linking of system-supplied copies of libpq.so etc.
Back-patch commit dddfc4cb2, which broke LDFLAGS and related Makefile
variables into two parts, one for within-build-tree library references and
one for external libraries, to ensure that the order of -L flags has all
of the former before all of the latter. This turns out to fix a problem
recently noted on buildfarm member peripatus, that we attempted to
incorporate code from libpgport.a into a shared library. That will fail on
platforms that are sticky about putting non-PIC code into shared libraries.
(It's quite surprising we hadn't seen such failures before, since the code
in question has been like that for a long time.)
I think that peripatus' problem could have been fixed with just a subset
of this patch; but since the previous issue of accidentally linking to the
wrong copy of a Postgres shlib seems likely to bite people in the field,
let's just back-patch the whole change. Now that commit dddfc4cb2 has
survived some beta testing, I'm less afraid to back-patch it than I was
at the time.
This also fixes undesired inclusion of "-DFRONTEND" in pg_config's CPPFLAGS
output (in 9.6 and up) and undesired inclusion of "-L../../src/common" in
its LDFLAGS output (in all supported branches).
Back-patch to v10 and older branches; this is already in v11.
Discussion: https://postgr.es/m/20180704234304.bq2dxispefl65odz@ler-imac.local
Diffstat (limited to 'contrib')
| -rw-r--r-- | contrib/dblink/Makefile | 2 | ||||
| -rw-r--r-- | contrib/hstore_plperl/Makefile | 8 | ||||
| -rw-r--r-- | contrib/hstore_plpython/Makefile | 10 | ||||
| -rw-r--r-- | contrib/ltree_plpython/Makefile | 10 | ||||
| -rw-r--r-- | contrib/oid2name/Makefile | 2 | ||||
| -rw-r--r-- | contrib/postgres_fdw/Makefile | 2 | ||||
| -rw-r--r-- | contrib/spi/Makefile | 2 | ||||
| -rw-r--r-- | contrib/vacuumlo/Makefile | 2 |
8 files changed, 21 insertions, 17 deletions
diff --git a/contrib/dblink/Makefile b/contrib/dblink/Makefile index 5189758dabf..b1a5e063837 100644 --- a/contrib/dblink/Makefile +++ b/contrib/dblink/Makefile @@ -3,7 +3,7 @@ MODULE_big = dblink OBJS = dblink.o $(WIN32RES) PG_CPPFLAGS = -I$(libpq_srcdir) -SHLIB_LINK = $(libpq) +SHLIB_LINK_INTERNAL = $(libpq) EXTENSION = dblink DATA = dblink--1.2.sql dblink--1.1--1.2.sql dblink--1.0--1.1.sql \ diff --git a/contrib/hstore_plperl/Makefile b/contrib/hstore_plperl/Makefile index 8fdca04bfb9..857578ec92b 100644 --- a/contrib/hstore_plperl/Makefile +++ b/contrib/hstore_plperl/Makefile @@ -27,16 +27,18 @@ endif # dependency. This does preclude pgxs builds. ifeq ($(PORTNAME), aix) rpathdir = $(pkglibdir):$(perl_archlibexp)/CORE -SHLIB_LINK += ../hstore/libhstore.exp $(perl_embed_ldflags) +SHLIB_LINK_INTERNAL += ../hstore/libhstore.exp +SHLIB_LINK += $(perl_embed_ldflags) endif ifeq ($(PORTNAME), win32) # these settings are the same as for plperl override CPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment -SHLIB_LINK += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plperl/libperl*.a)) +SHLIB_LINK_INTERNAL += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plperl/libperl*.a)) endif ifeq ($(PORTNAME), cygwin) -SHLIB_LINK += -L../hstore -l hstore $(perl_embed_ldflags) +SHLIB_LINK_INTERNAL += -L../hstore -l hstore +SHLIB_LINK += $(perl_embed_ldflags) endif # As with plperl we need to make sure that the CORE directory is included diff --git a/contrib/hstore_plpython/Makefile b/contrib/hstore_plpython/Makefile index c4dad6f1119..b0482f3da76 100644 --- a/contrib/hstore_plpython/Makefile +++ b/contrib/hstore_plpython/Makefile @@ -27,15 +27,17 @@ endif # dependency. This does preclude pgxs builds. ifeq ($(PORTNAME), aix) rpathdir = $(pkglibdir):$(python_libdir) -SHLIB_LINK += ../hstore/libhstore.exp $(python_libspec) $(python_additional_libs) $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp)) +SHLIB_LINK_INTERNAL += ../hstore/libhstore.exp $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp)) +SHLIB_LINK += $(python_libspec) $(python_additional_libs) endif ifeq ($(PORTNAME), win32) -SHLIB_LINK += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plpython/libpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) +SHLIB_LINK_INTERNAL += ../hstore/libhstore.a $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libpython*.a)) endif ifeq ($(PORTNAME), cygwin) -SHLIB_LINK += -L../hstore -lhstore -L../../src/pl/plpython \ - -lplpython$(python_majorversion) $(python_libspec) +SHLIB_LINK_INTERNAL += -L../hstore -lhstore -L../../src/pl/plpython \ + -lplpython$(python_majorversion) +SHLIB_LINK += $(python_libspec) endif REGRESS_OPTS += --load-extension=hstore diff --git a/contrib/ltree_plpython/Makefile b/contrib/ltree_plpython/Makefile index 08186f19a13..b7e2a926c61 100644 --- a/contrib/ltree_plpython/Makefile +++ b/contrib/ltree_plpython/Makefile @@ -27,15 +27,17 @@ endif # dependency. This does preclude pgxs builds. ifeq ($(PORTNAME), aix) rpathdir = $(pkglibdir):$(python_libdir) -SHLIB_LINK += $(python_libspec) $(python_additional_libs) $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp)) +SHLIB_LINK_INTERNAL += $(sort $(wildcard ../../src/pl/plpython/libplpython*.exp)) +SHLIB_LINK += $(python_libspec) $(python_additional_libs) endif ifeq ($(PORTNAME), win32) -SHLIB_LINK += $(sort $(wildcard ../../src/pl/plpython/libpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) +SHLIB_LINK_INTERNAL += $(sort $(wildcard ../../src/pl/plpython/libplpython*.a)) $(sort $(wildcard ../../src/pl/plpython/libpython*.a)) endif ifeq ($(PORTNAME), cygwin) -SHLIB_LINK += -L../ltree -lltree -L../../src/pl/plpython \ - -lplpython$(python_majorversion) $(python_libspec) +SHLIB_LINK_INTERNAL += -L../ltree -lltree -L../../src/pl/plpython \ + -lplpython$(python_majorversion) +SHLIB_LINK += $(python_libspec) endif REGRESS_OPTS += --load-extension=ltree diff --git a/contrib/oid2name/Makefile b/contrib/oid2name/Makefile index 3414b4a5cca..3eef8f60bea 100644 --- a/contrib/oid2name/Makefile +++ b/contrib/oid2name/Makefile @@ -7,7 +7,7 @@ PROGRAM = oid2name OBJS = oid2name.o $(WIN32RES) PG_CPPFLAGS = -I$(libpq_srcdir) -PG_LIBS = $(libpq_pgport) +PG_LIBS_INTERNAL = $(libpq_pgport) ifdef USE_PGXS PG_CONFIG = pg_config diff --git a/contrib/postgres_fdw/Makefile b/contrib/postgres_fdw/Makefile index 354331247a8..85394b4f1f0 100644 --- a/contrib/postgres_fdw/Makefile +++ b/contrib/postgres_fdw/Makefile @@ -5,7 +5,7 @@ OBJS = postgres_fdw.o option.o deparse.o connection.o shippable.o $(WIN32RES) PGFILEDESC = "postgres_fdw - foreign data wrapper for PostgreSQL" PG_CPPFLAGS = -I$(libpq_srcdir) -SHLIB_LINK = $(libpq) +SHLIB_LINK_INTERNAL = $(libpq) EXTENSION = postgres_fdw DATA = postgres_fdw--1.0.sql diff --git a/contrib/spi/Makefile b/contrib/spi/Makefile index 10ab5bb5fef..42aa3740c42 100644 --- a/contrib/spi/Makefile +++ b/contrib/spi/Makefile @@ -17,8 +17,6 @@ DOCS = $(addsuffix .example, $(MODULES)) # comment out if you want a quieter refint package for other uses PG_CPPFLAGS = -DREFINT_VERBOSE -LDFLAGS_SL += -L$(top_builddir)/src/port -lpgport - ifdef USE_PGXS PG_CONFIG = pg_config PGXS := $(shell $(PG_CONFIG) --pgxs) diff --git a/contrib/vacuumlo/Makefile b/contrib/vacuumlo/Makefile index b4ba896fba9..71106ff69c6 100644 --- a/contrib/vacuumlo/Makefile +++ b/contrib/vacuumlo/Makefile @@ -7,7 +7,7 @@ PROGRAM = vacuumlo OBJS = vacuumlo.o $(WIN32RES) PG_CPPFLAGS = -I$(libpq_srcdir) -PG_LIBS = $(libpq_pgport) +PG_LIBS_INTERNAL = $(libpq_pgport) ifdef USE_PGXS PG_CONFIG = pg_config |
