PostgreSQL 8.4, 9.0 and 9.1 are currently marked as BROKEN for 9-CURRENT. The breakage comes from the fact that a. configure script detects gssapi_krb5 as the GSSAPI library; b. configure instructs ld to use flag '--as-needed', so when we're linking to the bare GSSAPI libraries and no Kerberos gssapi_krb5 will be thrown away from linking, because no symbols are used from there. Fix: The patch is available at http://codelabs.ru/fbsd/ports/postgresql/unbreak-GSSAPI-support.diff It was tested on my Tinderbox. Here are the QA pages: * http://codelabs.ru/fbsd/ports/qa/databases/postgresql84/8.4.8_1 * http://codelabs.ru/fbsd/ports/qa/databases/postgresql90/9.0.4_2 * http://codelabs.ru/fbsd/ports/qa/databases/postgresql91/9.1.b3 I had also tested the patched version for postgresql90 at our local LXR instance that indexes around 20 distinct versions of FreeBSD, Linux and XNU kernel sources -- no regressions found yet. It will be good to have PostgreSQL 8.4 (as being the currently-default version) to be buildable before 9.0 will come out. How-To-Repeat: Look at * http://www.freebsd.org/cgi/cvsweb.cgi/ports/databases/postgresql84-server/Makefile * http://www.freebsd.org/cgi/cvsweb.cgi/ports/databases/postgresql90-server/Makefile Try to compile postgresql91-server with GSSAPI set to 'yes' and no Kerberos.
Responsible Changed From-To: freebsd-ports-bugs->girgen Over to maintainer (via the GNATS Auto Assign Tool)
Responsible Changed From-To: girgen->rea Taking my own PR due to maintainer timeout.
rea 2011-09-25 18:09:06 UTC FreeBSD ports repository Modified files: databases/postgresql84-server Makefile databases/postgresql90-server Makefile databases/postgresql91-server Makefile Log: 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) Revision Changes Path 1.230 +8 -4 ports/databases/postgresql84-server/Makefile 1.224 +8 -4 ports/databases/postgresql90-server/Makefile 1.226 +7 -0 ports/databases/postgresql91-server/Makefile _______________________________________________ cvs-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/cvs-all To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
State Changed From-To: open->closed Fixes were committed.