Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdddfc4c

Browse files
committed
Prevent accidental linking of system-supplied copies of libpq.so etc.
We were being careless in some places about the order of -L switches inlink command lines, such that -L switches referring to external directoriescould come before those referring to directories within the build tree.This made it possible to accidentally link a system-supplied library, forexample /usr/lib/libpq.so, in place of the one built in the build tree.Hilarity ensued, the more so the older the system-supplied library is.To fix, break LDFLAGS into two parts, a sub-variable LDFLAGS_INTERNALand the main LDFLAGS variable, both of which are "recursively expanded"so that they can be incrementally adjusted by different makefiles.Establish a policy that -L switches for directories in the build treemust always be added to LDFLAGS_INTERNAL, while -L switches for externaldirectories must always be added to LDFLAGS. This is sufficient toensure a safe search order. For simplicity, we typically also put -lswitches for the respective libraries into those same variables.(Traditional make usage would have us put -l switches into LIBS, butcleaning that up is a project for another day, as there's no clearneed for it.)This turns out to also require separating SHLIB_LINK into two variables,SHLIB_LINK and SHLIB_LINK_INTERNAL, with a similar rule about whichswitches go into which variable. And likewise for PG_LIBS.Although this change might appear to affect external users of pgxs.mk,I think it doesn't; they shouldn't have any need to touch the _INTERNALvariables.In passing, tweak src/common/Makefile so that the value of CPPFLAGSrecorded in pg_config lacks "-DFRONTEND" and the recorded value ofLDFLAGS lacks "-L../../../src/common". Both of those things aremistakes, apparently introduced during prior code rearrangements,as old versions of pg_config don't print them. In general we don'twant anything that's specific to the src/common subdirectory toappear in those outputs.This is certainly a bug fix, but in view of the lack of fieldcomplaints, I'm unsure whether it's worth the risk of back-patching.In any case it seems wise to see what the buildfarm makes of it first.Discussion:https://postgr.es/m/25214.1522604295@sss.pgh.pa.us
1 parentd4a4c3d commitdddfc4c

File tree

32 files changed

+66
-49
lines changed

32 files changed

+66
-49
lines changed

‎contrib/dblink/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
MODULE_big = dblink
44
OBJS= dblink.o$(WIN32RES)
55
PG_CPPFLAGS = -I$(libpq_srcdir)
6-
SHLIB_LINK =$(libpq)
6+
SHLIB_LINK_INTERNAL =$(libpq)
77

88
EXTENSION = dblink
99
DATA = dblink--1.2.sql dblink--1.1--1.2.sql dblink--1.0--1.1.sql\

‎contrib/hstore_plperl/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ ifeq ($(PORTNAME), win32)
2828
# these settings are the same as for plperl
2929
overrideCPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment
3030
# ... see silliness in plperl Makefile ...
31-
SHLIB_LINK +=$(sort$(wildcard ../../src/pl/plperl/libperl*.a))
31+
SHLIB_LINK_INTERNAL +=$(sort$(wildcard ../../src/pl/plperl/libperl*.a))
3232
else
3333
rpathdir =$(perl_archlibexp)/CORE
3434
SHLIB_LINK +=$(perl_embed_ldflags)

‎contrib/hstore_plpython/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ endif
2626
# We must link libpython explicitly
2727
ifeq ($(PORTNAME), win32)
2828
# ... see silliness in plpython Makefile ...
29-
SHLIB_LINK +=$(sort$(wildcard ../../src/pl/plpython/libpython*.a))
29+
SHLIB_LINK_INTERNAL +=$(sort$(wildcard ../../src/pl/plpython/libpython*.a))
3030
else
3131
rpathdir =$(python_libdir)
3232
SHLIB_LINK +=$(python_libspec)$(python_additional_libs)

‎contrib/jsonb_plperl/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ ifeq ($(PORTNAME), win32)
2727
# these settings are the same as for plperl
2828
overrideCPPFLAGS += -DPLPERL_HAVE_UID_GID -Wno-comment
2929
# ... see silliness in plperl Makefile ...
30-
SHLIB_LINK +=$(sort$(wildcard ../../src/pl/plperl/libperl*.a))
30+
SHLIB_LINK_INTERNAL +=$(sort$(wildcard ../../src/pl/plperl/libperl*.a))
3131
else
3232
rpathdir =$(perl_archlibexp)/CORE
3333
SHLIB_LINK +=$(perl_embed_ldflags)

‎contrib/jsonb_plpython/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ endif
2626
# We must link libpython explicitly
2727
ifeq ($(PORTNAME), win32)
2828
# ... see silliness in plpython Makefile ...
29-
SHLIB_LINK +=$(sort$(wildcard ../../src/pl/plpython/libpython*.a))
29+
SHLIB_LINK_INTERNAL +=$(sort$(wildcard ../../src/pl/plpython/libpython*.a))
3030
else
3131
rpathdir =$(python_libdir)
3232
SHLIB_LINK +=$(python_libspec)$(python_additional_libs)

‎contrib/ltree_plpython/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ endif
2626
# We must link libpython explicitly
2727
ifeq ($(PORTNAME), win32)
2828
# ... see silliness in plpython Makefile ...
29-
SHLIB_LINK +=$(sort$(wildcard ../../src/pl/plpython/libpython*.a))
29+
SHLIB_LINK_INTERNAL +=$(sort$(wildcard ../../src/pl/plpython/libpython*.a))
3030
else
3131
rpathdir =$(python_libdir)
3232
SHLIB_LINK +=$(python_libspec)$(python_additional_libs)

‎contrib/oid2name/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ PROGRAM = oid2name
77
OBJS= oid2name.o$(WIN32RES)
88

99
PG_CPPFLAGS = -I$(libpq_srcdir)
10-
PG_LIBS =$(libpq_pgport)
10+
PG_LIBS_INTERNAL =$(libpq_pgport)
1111

1212
ifdefUSE_PGXS
1313
PG_CONFIG = pg_config

‎contrib/postgres_fdw/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ OBJS = postgres_fdw.o option.o deparse.o connection.o shippable.o $(WIN32RES)
55
PGFILEDESC = "postgres_fdw - foreign data wrapper for PostgreSQL"
66

77
PG_CPPFLAGS = -I$(libpq_srcdir)
8-
SHLIB_LINK =$(libpq)
8+
SHLIB_LINK_INTERNAL =$(libpq)
99

1010
EXTENSION = postgres_fdw
1111
DATA = postgres_fdw--1.0.sql

‎contrib/spi/Makefile‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ DOCS = $(addsuffix .example, $(MODULES))
1717
# comment out if you want a quieter refint package for other uses
1818
PG_CPPFLAGS = -DREFINT_VERBOSE
1919

20-
LDFLAGS_SL += -L$(top_builddir)/src/port -lpgport
21-
2220
ifdefUSE_PGXS
2321
PG_CONFIG = pg_config
2422
PGXS :=$(shell$(PG_CONFIG) --pgxs)

‎contrib/vacuumlo/Makefile‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ PROGRAM = vacuumlo
77
OBJS= vacuumlo.o$(WIN32RES)
88

99
PG_CPPFLAGS = -I$(libpq_srcdir)
10-
PG_LIBS =$(libpq_pgport)
10+
PG_LIBS_INTERNAL =$(libpq_pgport)
1111

1212
ifdefUSE_PGXS
1313
PG_CONFIG = pg_config

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp