freebsd-ports/databases/postgresql90-server
Eygene Ryabinkin d335e2960e 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)
2011-09-25 18:09:06 +00:00
..
files Revert previous commit -- appears to cause rc problems as I missed some subs 2011-08-15 14:52:31 +00:00
distinfo Update PostgreSQL to 9.0.4, 8.4.8, 8.3.15 and 8.2.21. 2011-04-18 23:34:27 +00:00
Makefile PostgreSQL: unbreak GSSAPI support 2011-09-25 18:09:06 +00:00
pkg-descr
pkg-plist
pkg-plist-client
pkg-plist-contrib Fix @dirrmtry since it already filter stderr and return true. 2011-01-30 09:28:38 +00:00
pkg-plist-plperl
pkg-plist-plpython
pkg-plist-pltcl
pkg-plist-server Revert previous commit -- appears to cause rc problems as I missed some subs 2011-08-15 14:52:31 +00:00