Version: (using KDE KDE 3.2.92) Installed from: RedHat RPMs Compiler: gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-34) OS: Linux kdelibs-3.2.92 fails to compile on RHEL3 (gcc 3.2.3, qt-3.3.2). Tried both --enable-final and --disable-final, compilation stops in the same place: make[4]: Entering directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave/http' /bin/sh ../../libtool --silent --mode=compile --tag=CXX g++ -DHAVE_CONFIG_H -I.-I. -I../.. -I../../dcop -I../../kio/kssl -I../../interfaces -I../../kio/httpfilter -I../../dcop -I../../libltdl -I../../kdefx -I../../kdecore -I../../kdeui -I../../kio -I../../kio/kio -I../../kio/kfile -I../.. -I/usr/lib/qt-3.3/include -I/usr/X11R6/include -I/usr/include/kde -I/usr/kerberos/include -DQT_THREAD_SUPPORT -I/usr/kerberos/include -D_REENTRANT -DNDEBUG -DNO_DEBUG -O2 -O2 -g -pipe -march=i386 -mcpu=i686 -D_GNU_SOURCE -I/usr/kerberos/include -fno-exceptions -fno-check-new -fno-common -DQT_CLEAN_NAMESPACE -DQT_NO_ASCII_CAST -DQT_NO_STL -DQT_NO_COMPAT -DQT_NO_TRANSLATION -c -o http.lo `test -f 'http.cc' || echo './'`http.cc http.cc: In member function `QString HTTPProtocol::createNegotiateAuth()': http.cc:5222: `GSS_C_NT_HOSTBASED_SERVICE' undeclared (first use this function) http.cc:5222: (Each undeclared identifier is reported only once for each function it appears in.) make[4]: *** [http.lo] Error 1 make[4]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave/http' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave/http' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92/kioslave' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/usr/local/tmp/BUILD/kdelibs-3.2.92' make: *** [all] Error 2
Tracked it down to gssapi support. RHEL3 has krb5-libs-1.2.7 It appears to me from perusing the gssapi.h header file that GSS_C_NT_HOSTBASED_SERVICE does not get defined (and only does get set if GSS_RFC_COMPLIANT_OIDS is 1). The same header also includes: #if defined(macintosh) || (defined(__MACH__) && defined(__APPLE__)) #include <TargetConditionals.h> ... /* This is an API divergence in 1.2.3. This will be reconciled in 1.3, when all platforms will have RFC-compliant OID declarations. */ #define GSS_RFC_COMPLIANT_OIDS 1 #else #define GSS_RFC_COMPLIANT_OIDS 0 #endif Not knowing much more about krb5/gssapi support makes me guess that either gssapi support should be rewritten not to require the possibly missing symbol GSS_C_NT_HOSTBASED_SERVICE or configure might need to check for a newer krb5 (at least 1.3?). I'll get to building with --without-gssapi for now.
CVS commit by waba: Catch incompatible GSS API (BR86019) Rex: Can you check that this indeed compiles for you? CCMAIL: 86019-done@bugs.kde.org M +19 -0 http.cc 1.620 M +0 -2 http.h 1.162 --- kdelibs/kioslave/http/http.cc #1.619:1.620 @@ -76,4 +76,10 @@ #include <gssapi.h> #endif /* GSSAPI_MIT */ + +// Catch uncompatible crap (BR86019) +#if defined(GSS_RFC_COMPLIANT_OIDS) && (GSS_RFC_COMPLIANT_OIDS == 0) +#undef HAVE_LIBGSSAPI +#endif + #endif /* HAVE_LIBGSSAPI */ @@ -5263,4 +5269,17 @@ QString HTTPProtocol::createNegotiateAut return auth; } +#else + +// Dummy +QCString HTTPProtocol::gssError( int, int ) +{ + return ""; +} + +// Dummy +QString HTTPProtocol::createNegotiateAuth() +{ + return QString::null; +} #endif --- kdelibs/kioslave/http/http.h #1.161:1.162 @@ -434,5 +434,4 @@ protected: QString createDigestAuth( bool isForProxy = false ); -#ifdef HAVE_LIBGSSAPI /** * Creates the entity-header for Negotiate authentication. @@ -444,5 +443,4 @@ protected: */ QCString gssError( int major_status, int minor_status ); -#endif /**
Thanks, the provided patch seems to do the trick (at least it compiles now).
CVS commit by waba: Make negotiate authentication work with MIT Kerberos 1.2.8 Patch by Karsten K