diff options
author | rea <rea@FreeBSD.org> | 2011-09-26 02:09:06 +0800 |
---|---|---|
committer | rea <rea@FreeBSD.org> | 2011-09-26 02:09:06 +0800 |
commit | ae658bbc751c1881ca936b1fe9d825d9446d1ddd (patch) | |
tree | 8b7f69705ac55f1df3aa45a9ccbbc5762cf774ca /databases/postgresql91-server | |
parent | cd22f20a0f8cf7cd0d0ae9539b5568b19fc3e555 (diff) | |
download | freebsd-ports-gnome-ae658bbc751c1881ca936b1fe9d825d9446d1ddd.tar.gz freebsd-ports-gnome-ae658bbc751c1881ca936b1fe9d825d9446d1ddd.tar.zst freebsd-ports-gnome-ae658bbc751c1881ca936b1fe9d825d9446d1ddd.zip |
PostgreSQL: unbreak GSSAPI support
The problem with GSSAPI without Kerberos is that configure.in has
very funny logics of choosing GSSAPI libraries:
{{{
if test "$with_gssapi" = yes ; then
if test "$PORTNAME" != "win32"; then
AC_SEARCH_LIBS(gss_init_sec_context, [gssapi_krb5 gss 'gssapi -lkrb5 -lcrypto'], [],
[AC_MSG_ERROR([could not find function 'gss_init_sec_context' required for GSSAPI])])
else
LIBS="$LIBS -lgssapi32"
fi
fi
}}}
This makes configure to happily choose -lgssapi_krb5 when the system
has Kerberos support (NO_KERBEROS is absent), but ld's '--as-needed'
will throw this library away when no Kerberos functions are used and
linker won't produce 'postgres' binary whining about unresolved
symbols:
{{{
cc -O2 -pipe -fno-strict-aliasing -Wall -Wmissing-prototypes \
-Wpointer-arith -Wdeclaration-after-statement -Wendif-labels \
-fno-strict-aliasing -fwrapv -L../../src/port -L/usr/local/lib \
-rpath=/usr/lib:/usr/local/lib -L/usr/local/lib -L/usr/local/lib \
-Wl,--as-needed -Wl,-R'/usr/local/lib' -Wl,-export-dynamic \
[... a bunch of *.o files was stripped ...]
../../src/timezone/pgtz.o ../../src/port/libpgport_srv.a -lintl -lssl \
-lcrypto -lgssapi_krb5 -lcrypt -lm -o postgres
libpq/auth.o: In function `pg_GSS_error':
auth.c:(.text+0x6e): undefined reference to `gss_display_status'
auth.c:(.text+0x8e): undefined reference to `gss_release_buffer'
auth.c:(.text+0xc5): undefined reference to `gss_display_status'
auth.c:(.text+0xe5): undefined reference to `gss_release_buffer'
libpq/auth.o: In function `ClientAuthentication':
auth.c:(.text+0x82d): undefined reference to `gss_delete_sec_context'
auth.c:(.text+0x941): undefined reference to `gss_accept_sec_context'
auth.c:(.text+0x9f1): undefined reference to `gss_release_buffer'
auth.c:(.text+0xaf3): undefined reference to `gss_release_cred'
auth.c:(.text+0xb10): undefined reference to `gss_display_name'
auth.c:(.text+0xbc8): undefined reference to `gss_release_buffer'
auth.c:(.text+0x10b0): undefined reference to `gss_release_buffer'
auth.c:(.text+0x111e): undefined reference to `gss_release_buffer'
libpq/pqcomm.o: In function `pq_close':
pqcomm.c:(.text+0x105a): undefined reference to `gss_delete_sec_context'
pqcomm.c:(.text+0x107d): undefined reference to `gss_release_cred'
gmake: *** [postgres] Error 1
}}}
Also, ports for PostgreSQL 8.4 and 9.0 had their <bsd.port.pre.mk>
misplaced: OPTIONS came after it, so WITH_/WITHOUT_ knobs will not
be really activated.
PR: 160050
Feature safe: yes
Approved by: maintainer timeout (1 month)
Diffstat (limited to 'databases/postgresql91-server')
-rw-r--r-- | databases/postgresql91-server/Makefile | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/databases/postgresql91-server/Makefile b/databases/postgresql91-server/Makefile index deaf9a186029..b0de91e02921 100644 --- a/databases/postgresql91-server/Makefile +++ b/databases/postgresql91-server/Makefile @@ -178,6 +178,13 @@ INSTALL_TARGET= install-strip .if (${OSVERSION} >= 700000) && !defined(WITHOUT_GSSAPI) CONFIGURE_ARGS+=--with-gssapi +.if !defined(WITH_MIT_KRB5) && !defined(WITH_HEIMDAL_KRB5) +# Kerberos libraries will pull the proper GSSAPI library +# via linker dependencies, but otherwise we must specify +# it explicitely: ld --as-needed is used for compilation, +# so configure's -lgssapi_krb5 won't go. +LDFLAGS+= -lgssapi +.endif .endif . if defined(WITH_MIT_KRB5) |