4404. [misc] Allow krb5-config to be used when configuring gssapi.
[RT #42580]
This commit is contained in:
3
CHANGES
3
CHANGES
@@ -1,3 +1,6 @@
|
||||
4404. [misc] Allow krb5-config to be used when configuring gssapi.
|
||||
[RT #42580]
|
||||
|
||||
4403. [bug] Rename variables and arguments that shadow: basename,
|
||||
clone and gai_error.
|
||||
|
||||
|
||||
144
configure
vendored
144
configure
vendored
@@ -826,6 +826,7 @@ ISC_PLATFORM_KRB5HEADER
|
||||
ISC_PLATFORM_GSSAPI_KRB5_HEADER
|
||||
ISC_PLATFORM_GSSAPIHEADER
|
||||
ISC_PLATFORM_HAVEGSSAPI
|
||||
KRB5_CONFIG
|
||||
PKCS11_PROVIDER
|
||||
PKCS11_TOOLS
|
||||
USE_PKCS11
|
||||
@@ -1708,7 +1709,7 @@ Optional Packages:
|
||||
--with-gost OpenSSL GOST
|
||||
--with-pkcs11=PATH Build with PKCS11 support yes|no|path
|
||||
(PATH is for the PKCS11 provider)
|
||||
--with-gssapi=PATH Specify path for system-supplied GSSAPI [default=yes]
|
||||
--with-gssapi=[PATH|[/path/]krb5-config] Specify path for system-supplied GSSAPI [default=yes]
|
||||
--with-randomdev=PATH Specify path for random device
|
||||
--with-libxml2=PATH Build with libxml2 library yes|no|path
|
||||
--with-purify=PATH use Rational purify
|
||||
@@ -11645,7 +11646,7 @@ else
|
||||
fi
|
||||
|
||||
|
||||
python="python python3 python3.4 python3.3 python3.2 python3.1 python3.0 python2 python2.7 python2.6 python2.5 python2.4"
|
||||
python="python python3 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2 python2.7 python2.6 python2.5 python2.4"
|
||||
|
||||
testargparse='try: import argparse
|
||||
except: exit(1)'
|
||||
@@ -14212,6 +14213,140 @@ else
|
||||
fi
|
||||
|
||||
|
||||
# first try using krb5-config, if that does not work then fall back to "yes" method.
|
||||
|
||||
case "$use_gssapi" in
|
||||
*/krb5-config|krb5-config)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: trying $use_gssapi" >&5
|
||||
$as_echo "trying $use_gssapi" >&6; }
|
||||
if test "$use_gssapi" = krb5-config
|
||||
then
|
||||
# Extract the first word of "$use_gssapi", so it can be a program name with args.
|
||||
set dummy $use_gssapi; ac_word=$2
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
|
||||
$as_echo_n "checking for $ac_word... " >&6; }
|
||||
if ${ac_cv_path_KRB5_CONFIG+:} false; then :
|
||||
$as_echo_n "(cached) " >&6
|
||||
else
|
||||
case $KRB5_CONFIG in
|
||||
[\\/]* | ?:[\\/]*)
|
||||
ac_cv_path_KRB5_CONFIG="$KRB5_CONFIG" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
|
||||
for as_dir in $PATH
|
||||
do
|
||||
IFS=$as_save_IFS
|
||||
test -z "$as_dir" && as_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
|
||||
ac_cv_path_KRB5_CONFIG="$as_dir/$ac_word$ac_exec_ext"
|
||||
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS=$as_save_IFS
|
||||
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
KRB5_CONFIG=$ac_cv_path_KRB5_CONFIG
|
||||
if test -n "$KRB5_CONFIG"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $KRB5_CONFIG" >&5
|
||||
$as_echo "$KRB5_CONFIG" >&6; }
|
||||
else
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
$as_echo "no" >&6; }
|
||||
fi
|
||||
|
||||
|
||||
else
|
||||
KRB5_CONFIG="$use_gssapi"
|
||||
fi
|
||||
gssapi_cflags=`$KRB5_CONFIG --cflags gssapi`
|
||||
gssapi_libs=`$KRB5_CONFIG --libs gssapi`
|
||||
saved_cppflags="$CPPFLAGS"
|
||||
CPPFLAGS="$gssapi_cflags $CPPFLAGS"
|
||||
for ac_header in gssapi.h gssapi/gssapi.h
|
||||
do :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
||||
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: krb5-config: gssapi.h not found" >&5
|
||||
$as_echo "krb5-config: gssapi.h not found" >&6; }
|
||||
CPPFLAGS="$saved_cppflags"
|
||||
use_gssapi="yes"
|
||||
else
|
||||
for ac_header in krb5/krb5.h krb5.h
|
||||
do :
|
||||
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
|
||||
ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
|
||||
if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
|
||||
cat >>confdefs.h <<_ACEOF
|
||||
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
|
||||
_ACEOF
|
||||
ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
if test "$ISC_PLATFORM_KRB5HEADER" = ""; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: krb5-config: krb5.h not found" >&5
|
||||
$as_echo "krb5-config: krb5.h not found" >&6; }
|
||||
CPPFLAGS="$saved_cppflags"
|
||||
use_gssapi="yes"
|
||||
else
|
||||
CPPFLAGS="$saved_cppflags"
|
||||
saved_libs="$LIBS"
|
||||
LIBS=$gssapi_libs
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking krb5-config linking as $LIBS" >&5
|
||||
$as_echo_n "checking krb5-config linking as $LIBS... " >&6; }
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
/* end confdefs.h. */
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
gss_acquire_cred();krb5_init_context()
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
if ac_fn_c_try_link "$LINENO"; then :
|
||||
gssapi_linked=yes
|
||||
else
|
||||
gssapi_linked=no
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext \
|
||||
conftest$ac_exeext conftest.$ac_ext
|
||||
case $gssapi_linked in
|
||||
yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: krb5-config: linked" >&5
|
||||
$as_echo "krb5-config: linked" >&6; };;
|
||||
no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: krb5-config: could not determine proper GSSAPI linkage" >&5
|
||||
$as_echo "krb5-config: could not determine proper GSSAPI linkage" >&6; }
|
||||
use_gssapi="yes"
|
||||
;;
|
||||
esac
|
||||
LIBS=$saved_libs
|
||||
fi
|
||||
fi
|
||||
if test "$use_gssapi" = "yes"; then
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GSSAPI library, non krb5-config method" >&5
|
||||
$as_echo_n "checking for GSSAPI library, non krb5-config method... " >&6; }
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# gssapi is just the framework, we really require kerberos v5, so
|
||||
# look for those headers (the gssapi headers must be there, too)
|
||||
# The problem with this implementation is that it doesn't allow
|
||||
@@ -14256,6 +14391,11 @@ $as_echo "disabled" >&6; }
|
||||
yes)
|
||||
as_fn_error $? "--with-gssapi must specify a path" "$LINENO" 5
|
||||
;;
|
||||
*/krb5-config|krb5-config)
|
||||
USE_GSSAPI='-DGSSAPI'
|
||||
DST_GSSAPI_INC="$gssapi_cflags"
|
||||
DNS_GSSAPI_LIBS="$gssapi_libs"
|
||||
;;
|
||||
*)
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: looking in $use_gssapi/lib" >&5
|
||||
$as_echo "looking in $use_gssapi/lib" >&6; }
|
||||
|
||||
57
configure.in
57
configure.in
@@ -1088,9 +1088,59 @@ AC_SUBST(PKCS11_PROVIDER)
|
||||
|
||||
AC_MSG_CHECKING(for GSSAPI library)
|
||||
AC_ARG_WITH(gssapi,
|
||||
[ --with-gssapi=PATH Specify path for system-supplied GSSAPI [[default=yes]]],
|
||||
[ --with-gssapi=[[PATH|[/path/]krb5-config]] Specify path for system-supplied GSSAPI [[default=yes]]],
|
||||
use_gssapi="$withval", use_gssapi="yes")
|
||||
|
||||
# first try using krb5-config, if that does not work then fall back to "yes" method.
|
||||
|
||||
case "$use_gssapi" in
|
||||
*/krb5-config|krb5-config)
|
||||
AC_MSG_RESULT(trying $use_gssapi)
|
||||
if test "$use_gssapi" = krb5-config
|
||||
then
|
||||
AC_PATH_PROG(KRB5_CONFIG, $use_gssapi)
|
||||
else
|
||||
KRB5_CONFIG="$use_gssapi"
|
||||
fi
|
||||
gssapi_cflags=`$KRB5_CONFIG --cflags gssapi`
|
||||
gssapi_libs=`$KRB5_CONFIG --libs gssapi`
|
||||
saved_cppflags="$CPPFLAGS"
|
||||
CPPFLAGS="$gssapi_cflags $CPPFLAGS"
|
||||
AC_CHECK_HEADERS(gssapi.h gssapi/gssapi.h,
|
||||
[ISC_PLATFORM_GSSAPIHEADER="#define ISC_PLATFORM_GSSAPIHEADER <$ac_header>"])
|
||||
if test "$ISC_PLATFORM_GSSAPIHEADER" = ""; then
|
||||
AC_MSG_RESULT([krb5-config: gssapi.h not found])
|
||||
CPPFLAGS="$saved_cppflags"
|
||||
use_gssapi="yes"
|
||||
else
|
||||
AC_CHECK_HEADERS(krb5/krb5.h krb5.h,
|
||||
[ISC_PLATFORM_KRB5HEADER="#define ISC_PLATFORM_KRB5HEADER <$ac_header>"])
|
||||
if test "$ISC_PLATFORM_KRB5HEADER" = ""; then
|
||||
AC_MSG_RESULT([krb5-config: krb5.h not found])
|
||||
CPPFLAGS="$saved_cppflags"
|
||||
use_gssapi="yes"
|
||||
else
|
||||
CPPFLAGS="$saved_cppflags"
|
||||
saved_libs="$LIBS"
|
||||
LIBS=$gssapi_libs
|
||||
AC_MSG_CHECKING([krb5-config linking as $LIBS])
|
||||
AC_TRY_LINK( , [gss_acquire_cred();krb5_init_context()],
|
||||
gssapi_linked=yes, gssapi_linked=no)
|
||||
case $gssapi_linked in
|
||||
yes) AC_MSG_RESULT([krb5-config: linked]);;
|
||||
no) AC_MSG_RESULT([krb5-config: could not determine proper GSSAPI linkage])
|
||||
use_gssapi="yes"
|
||||
;;
|
||||
esac
|
||||
LIBS=$saved_libs
|
||||
fi
|
||||
fi
|
||||
if test "$use_gssapi" = "yes"; then
|
||||
AC_MSG_CHECKING([for GSSAPI library, non krb5-config method])
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# gssapi is just the framework, we really require kerberos v5, so
|
||||
# look for those headers (the gssapi headers must be there, too)
|
||||
# The problem with this implementation is that it doesn't allow
|
||||
@@ -1134,6 +1184,11 @@ case "$use_gssapi" in
|
||||
yes)
|
||||
AC_MSG_ERROR([--with-gssapi must specify a path])
|
||||
;;
|
||||
*/krb5-config|krb5-config)
|
||||
USE_GSSAPI='-DGSSAPI'
|
||||
DST_GSSAPI_INC="$gssapi_cflags"
|
||||
DNS_GSSAPI_LIBS="$gssapi_libs"
|
||||
;;
|
||||
*)
|
||||
AC_MSG_RESULT(looking in $use_gssapi/lib)
|
||||
USE_GSSAPI='-DGSSAPI'
|
||||
|
||||
Reference in New Issue
Block a user