mirror of
https://github.com/postgres/postgres.git
synced 2025-07-02 09:02:37 +03:00
Prevent accidental linking of system-supplied copies of libpq.so etc.
Back-patch commitdddfc4cb2
, 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 commitdddfc4cb2
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
This commit is contained in:
@ -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.1.sql dblink--1.0--1.1.sql dblink--unpackaged--1.0.sql
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -5,7 +5,7 @@ OBJS = postgres_fdw.o option.o deparse.o connection.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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user