636 lines
20 KiB
Diff
636 lines
20 KiB
Diff
From: Antonio Torres <antorres@redhat.com>
|
|
Date: Mon, 06 Nov 2023
|
|
Subject: Fix Python3.8+ library name suffix
|
|
|
|
Python 3.8 has removed the "m" suffix in the library name, add a check for it.
|
|
|
|
Backport of https://github.com/FreeRADIUS/freeradius-server/commit/fa837465493158257e600f28bca009ba890db863
|
|
|
|
Resolves: https://issues.redhat.com/browse/RHEL-15503
|
|
Signed-off-by: Antonio Torres <antorres@redhat.com>
|
|
---
|
|
diff --git a/src/modules/rlm_python3/configure b/src/modules/rlm_python3/configure
|
|
index f421558ac0c0..05907f12c359 100755
|
|
--- a/src/modules/rlm_python3/configure
|
|
+++ b/src/modules/rlm_python3/configure
|
|
@@ -588,7 +588,17 @@ LIBOBJS
|
|
targetname
|
|
mod_cflags
|
|
mod_ldflags
|
|
+AWK
|
|
PYTHON3_CONFIG_BIN
|
|
+pkgpyexecdir
|
|
+pyexecdir
|
|
+pkgpythondir
|
|
+pythondir
|
|
+PYTHON_PLATFORM
|
|
+PYTHON_EXEC_PREFIX
|
|
+PYTHON_PREFIX
|
|
+PYTHON_VERSION
|
|
+PYTHON
|
|
CPP
|
|
OBJEXT
|
|
EXEEXT
|
|
@@ -648,7 +658,8 @@ CFLAGS
|
|
LDFLAGS
|
|
LIBS
|
|
CPPFLAGS
|
|
-CPP'
|
|
+CPP
|
|
+PYTHON'
|
|
|
|
|
|
# Initialize some variables set by options.
|
|
@@ -1266,6 +1277,7 @@ Some influential environment variables:
|
|
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
|
|
you have headers in a nonstandard directory <include dir>
|
|
CPP C preprocessor
|
|
+ PYTHON the Python interpreter
|
|
|
|
Use these variables to override the choices made by `configure' or to help
|
|
it to find libraries and programs with nonstandard names/locations.
|
|
@@ -1421,6 +1433,119 @@ fi
|
|
as_fn_set_status $ac_retval
|
|
|
|
} # ac_fn_c_try_cpp
|
|
+
|
|
+# ac_fn_c_try_link LINENO
|
|
+# -----------------------
|
|
+# Try to link conftest.$ac_ext, and return whether this succeeded.
|
|
+ac_fn_c_try_link ()
|
|
+{
|
|
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
+ rm -f conftest.$ac_objext conftest$ac_exeext
|
|
+ if { { ac_try="$ac_link"
|
|
+case "(($ac_try" in
|
|
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
|
|
+ *) ac_try_echo=$ac_try;;
|
|
+esac
|
|
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
|
|
+$as_echo "$ac_try_echo"; } >&5
|
|
+ (eval "$ac_link") 2>conftest.err
|
|
+ ac_status=$?
|
|
+ if test -s conftest.err; then
|
|
+ grep -v '^ *+' conftest.err >conftest.er1
|
|
+ cat conftest.er1 >&5
|
|
+ mv -f conftest.er1 conftest.err
|
|
+ fi
|
|
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
|
+ test $ac_status = 0; } && {
|
|
+ test -z "$ac_c_werror_flag" ||
|
|
+ test ! -s conftest.err
|
|
+ } && test -s conftest$ac_exeext && {
|
|
+ test "$cross_compiling" = yes ||
|
|
+ test -x conftest$ac_exeext
|
|
+ }; then :
|
|
+ ac_retval=0
|
|
+else
|
|
+ $as_echo "$as_me: failed program was:" >&5
|
|
+sed 's/^/| /' conftest.$ac_ext >&5
|
|
+
|
|
+ ac_retval=1
|
|
+fi
|
|
+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
|
|
+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
|
|
+ # interfere with the next link command; also delete a directory that is
|
|
+ # left behind by Apple's compiler. We do this before executing the actions.
|
|
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
|
|
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
|
|
+ as_fn_set_status $ac_retval
|
|
+
|
|
+} # ac_fn_c_try_link
|
|
+
|
|
+# ac_fn_c_check_func LINENO FUNC VAR
|
|
+# ----------------------------------
|
|
+# Tests whether FUNC exists, setting the cache variable VAR accordingly
|
|
+ac_fn_c_check_func ()
|
|
+{
|
|
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
|
|
+$as_echo_n "checking for $2... " >&6; }
|
|
+if eval \${$3+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
+/* end confdefs.h. */
|
|
+/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
|
|
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
|
|
+#define $2 innocuous_$2
|
|
+
|
|
+/* System header to define __stub macros and hopefully few prototypes,
|
|
+ which can conflict with char $2 (); below.
|
|
+ Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
|
|
+ <limits.h> exists even on freestanding compilers. */
|
|
+
|
|
+#ifdef __STDC__
|
|
+# include <limits.h>
|
|
+#else
|
|
+# include <assert.h>
|
|
+#endif
|
|
+
|
|
+#undef $2
|
|
+
|
|
+/* Override any GCC internal prototype to avoid an error.
|
|
+ Use char because int might match the return type of a GCC
|
|
+ builtin and then its argument prototype would still apply. */
|
|
+#ifdef __cplusplus
|
|
+extern "C"
|
|
+#endif
|
|
+char $2 ();
|
|
+/* The GNU C library defines this for functions which it implements
|
|
+ to always fail with ENOSYS. Some functions are actually named
|
|
+ something starting with __ and the normal name is an alias. */
|
|
+#if defined __stub_$2 || defined __stub___$2
|
|
+choke me
|
|
+#endif
|
|
+
|
|
+int
|
|
+main ()
|
|
+{
|
|
+return $2 ();
|
|
+ ;
|
|
+ return 0;
|
|
+}
|
|
+_ACEOF
|
|
+if ac_fn_c_try_link "$LINENO"; then :
|
|
+ eval "$3=yes"
|
|
+else
|
|
+ eval "$3=no"
|
|
+fi
|
|
+rm -f core conftest.err conftest.$ac_objext \
|
|
+ conftest$ac_exeext conftest.$ac_ext
|
|
+fi
|
|
+eval ac_res=\$$3
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
|
|
+$as_echo "$ac_res" >&6; }
|
|
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
|
|
+
|
|
+} # ac_fn_c_check_func
|
|
cat >config.log <<_ACEOF
|
|
This file contains any messages produced by compilers while
|
|
running configure, to aid debugging if configure makes a mistake.
|
|
@@ -2705,6 +2830,267 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
|
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
|
|
|
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+ if test -n "$PYTHON"; then
|
|
+ # If the user set $PYTHON, use it and don't search something else.
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3.0" >&5
|
|
+$as_echo_n "checking whether $PYTHON version is >= 3.0... " >&6; }
|
|
+ prog="import sys
|
|
+# split strings by '.' and convert to numeric. Append some zeros
|
|
+# because we need at least 4 digits for the hex conversion.
|
|
+# map returns an iterator in Python 3.0 and a list in 2.x
|
|
+minver = list(map(int, '3.0'.split('.'))) + [0, 0, 0]
|
|
+minverhex = 0
|
|
+# xrange is not present in Python 3.0 and range returns an iterator
|
|
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
|
|
+sys.exit(sys.hexversion < minverhex)"
|
|
+ if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5
|
|
+ ($PYTHON -c "$prog") >&5 2>&5
|
|
+ ac_status=$?
|
|
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
|
+ (exit $ac_status); }; then :
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
|
+$as_echo "yes" >&6; }
|
|
+else
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
|
+$as_echo "no" >&6; }
|
|
+ as_fn_error $? "Python interpreter is too old" "$LINENO" 5
|
|
+fi
|
|
+ am_display_PYTHON=$PYTHON
|
|
+ else
|
|
+ # Otherwise, try each interpreter until we find one that satisfies
|
|
+ # VERSION.
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3.0" >&5
|
|
+$as_echo_n "checking for a Python interpreter with version >= 3.0... " >&6; }
|
|
+if ${am_cv_pathless_PYTHON+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+
|
|
+ for am_cv_pathless_PYTHON in python python2 python3 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
|
|
+ test "$am_cv_pathless_PYTHON" = none && break
|
|
+ prog="import sys
|
|
+# split strings by '.' and convert to numeric. Append some zeros
|
|
+# because we need at least 4 digits for the hex conversion.
|
|
+# map returns an iterator in Python 3.0 and a list in 2.x
|
|
+minver = list(map(int, '3.0'.split('.'))) + [0, 0, 0]
|
|
+minverhex = 0
|
|
+# xrange is not present in Python 3.0 and range returns an iterator
|
|
+for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
|
|
+sys.exit(sys.hexversion < minverhex)"
|
|
+ if { echo "$as_me:$LINENO: $am_cv_pathless_PYTHON -c "$prog"" >&5
|
|
+ ($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
|
|
+ ac_status=$?
|
|
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
|
|
+ (exit $ac_status); }; then :
|
|
+ break
|
|
+fi
|
|
+ done
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
|
|
+$as_echo "$am_cv_pathless_PYTHON" >&6; }
|
|
+ # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
|
|
+ if test "$am_cv_pathless_PYTHON" = none; then
|
|
+ PYTHON=:
|
|
+ else
|
|
+ # Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
|
|
+set dummy $am_cv_pathless_PYTHON; 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_PYTHON+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ case $PYTHON in
|
|
+ [\\/]* | ?:[\\/]*)
|
|
+ ac_cv_path_PYTHON="$PYTHON" # 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_PYTHON="$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
|
|
+PYTHON=$ac_cv_path_PYTHON
|
|
+if test -n "$PYTHON"; then
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
|
|
+$as_echo "$PYTHON" >&6; }
|
|
+else
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
|
+$as_echo "no" >&6; }
|
|
+fi
|
|
+
|
|
+
|
|
+ fi
|
|
+ am_display_PYTHON=$am_cv_pathless_PYTHON
|
|
+ fi
|
|
+
|
|
+
|
|
+ if test "$PYTHON" = :; then
|
|
+ :
|
|
+ else
|
|
+
|
|
+
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
|
|
+$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
|
|
+if ${am_cv_python_version+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
|
|
+$as_echo "$am_cv_python_version" >&6; }
|
|
+ PYTHON_VERSION=$am_cv_python_version
|
|
+
|
|
+
|
|
+
|
|
+ PYTHON_PREFIX='${prefix}'
|
|
+
|
|
+ PYTHON_EXEC_PREFIX='${exec_prefix}'
|
|
+
|
|
+
|
|
+
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
|
|
+$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
|
|
+if ${am_cv_python_platform+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
|
|
+$as_echo "$am_cv_python_platform" >&6; }
|
|
+ PYTHON_PLATFORM=$am_cv_python_platform
|
|
+
|
|
+
|
|
+ # Just factor out some code duplication.
|
|
+ am_python_setup_sysconfig="\
|
|
+import sys
|
|
+# Prefer sysconfig over distutils.sysconfig, for better compatibility
|
|
+# with python 3.x. See automake bug#10227.
|
|
+try:
|
|
+ import sysconfig
|
|
+except ImportError:
|
|
+ can_use_sysconfig = 0
|
|
+else:
|
|
+ can_use_sysconfig = 1
|
|
+# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
|
|
+# <https://github.com/pypa/virtualenv/issues/118>
|
|
+try:
|
|
+ from platform import python_implementation
|
|
+ if python_implementation() == 'CPython' and sys.version[:3] == '2.7':
|
|
+ can_use_sysconfig = 0
|
|
+except ImportError:
|
|
+ pass"
|
|
+
|
|
+
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
|
|
+$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
|
|
+if ${am_cv_python_pythondir+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ if test "x$prefix" = xNONE
|
|
+ then
|
|
+ am_py_prefix=$ac_default_prefix
|
|
+ else
|
|
+ am_py_prefix=$prefix
|
|
+ fi
|
|
+ am_cv_python_pythondir=`$PYTHON -c "
|
|
+$am_python_setup_sysconfig
|
|
+if can_use_sysconfig:
|
|
+ sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
|
+else:
|
|
+ from distutils import sysconfig
|
|
+ sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
|
+sys.stdout.write(sitedir)"`
|
|
+ case $am_cv_python_pythondir in
|
|
+ $am_py_prefix*)
|
|
+ am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
|
+ am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"`
|
|
+ ;;
|
|
+ *)
|
|
+ case $am_py_prefix in
|
|
+ /usr|/System*) ;;
|
|
+ *)
|
|
+ am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
|
+ ;;
|
|
+ esac
|
|
+ ;;
|
|
+ esac
|
|
+
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
|
|
+$as_echo "$am_cv_python_pythondir" >&6; }
|
|
+ pythondir=$am_cv_python_pythondir
|
|
+
|
|
+
|
|
+
|
|
+ pkgpythondir=\${pythondir}/$PACKAGE
|
|
+
|
|
+
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
|
|
+$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
|
|
+if ${am_cv_python_pyexecdir+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ if test "x$exec_prefix" = xNONE
|
|
+ then
|
|
+ am_py_exec_prefix=$am_py_prefix
|
|
+ else
|
|
+ am_py_exec_prefix=$exec_prefix
|
|
+ fi
|
|
+ am_cv_python_pyexecdir=`$PYTHON -c "
|
|
+$am_python_setup_sysconfig
|
|
+if can_use_sysconfig:
|
|
+ sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
|
|
+else:
|
|
+ from distutils import sysconfig
|
|
+ sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
|
|
+sys.stdout.write(sitedir)"`
|
|
+ case $am_cv_python_pyexecdir in
|
|
+ $am_py_exec_prefix*)
|
|
+ am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
|
+ am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"`
|
|
+ ;;
|
|
+ *)
|
|
+ case $am_py_exec_prefix in
|
|
+ /usr|/System*) ;;
|
|
+ *)
|
|
+ am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages
|
|
+ ;;
|
|
+ esac
|
|
+ ;;
|
|
+ esac
|
|
+
|
|
+fi
|
|
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
|
|
+$as_echo "$am_cv_python_pyexecdir" >&6; }
|
|
+ pyexecdir=$am_cv_python_pyexecdir
|
|
+
|
|
+
|
|
+
|
|
+ pkgpyexecdir=\${pyexecdir}/$PACKAGE
|
|
+
|
|
+
|
|
+
|
|
+ fi
|
|
+
|
|
+
|
|
+
|
|
PYTHON3_CONFIG_BIN=
|
|
|
|
# Check whether --with-rlm-python3-config-bin was given.
|
|
@@ -2771,8 +3157,6 @@ test -n "$PYTHON3_CONFIG_BIN" || PYTHON3_CONFIG_BIN="not-found"
|
|
fi
|
|
|
|
if test "x$PYTHON3_CONFIG_BIN" = xnot-found; then
|
|
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: python3-config not found" >&5
|
|
-$as_echo "$as_me: WARNING: python3-config not found" >&2;}
|
|
fail="$fail python3-config"
|
|
else
|
|
old_CFLAGS="$CFLAGS"
|
|
@@ -2794,7 +3178,85 @@ $as_echo "$as_me: ${PYTHON3_CONFIG_BIN}'s cflags were \"${python3_cflags}\"" >&6
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: Sanitized cflags were \"${mod_cflags}\"" >&5
|
|
$as_echo "$as_me: Sanitized cflags were \"${mod_cflags}\"" >&6;}
|
|
|
|
- python3_ldflags=`${PYTHON3_CONFIG_BIN} --ldflags`
|
|
+ for ac_prog in gawk mawk nawk awk
|
|
+do
|
|
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
|
|
+set dummy $ac_prog; 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_prog_AWK+:} false; then :
|
|
+ $as_echo_n "(cached) " >&6
|
|
+else
|
|
+ if test -n "$AWK"; then
|
|
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
|
|
+else
|
|
+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_prog_AWK="$ac_prog"
|
|
+ $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
|
|
+
|
|
+fi
|
|
+fi
|
|
+AWK=$ac_cv_prog_AWK
|
|
+if test -n "$AWK"; then
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
|
|
+$as_echo "$AWK" >&6; }
|
|
+else
|
|
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
|
+$as_echo "no" >&6; }
|
|
+fi
|
|
+
|
|
+
|
|
+ test -n "$AWK" && break
|
|
+done
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+ # Used to indicate true or false condition
|
|
+ ax_compare_version=false
|
|
+
|
|
+ # Convert the two version strings to be compared into a format that
|
|
+ # allows a simple string comparison. The end result is that a version
|
|
+ # string of the form 1.12.5-r617 will be converted to the form
|
|
+ # 0001001200050617. In other words, each number is zero padded to four
|
|
+ # digits, and non digits are removed.
|
|
+
|
|
+ ax_compare_version_A=`echo "${PYTHON_VERSION}" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
|
|
+ -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
|
|
+ -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
|
|
+ -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
|
|
+ -e 's/[^0-9]//g'`
|
|
+
|
|
+
|
|
+ ax_compare_version_B=`echo "3.8" | sed -e 's/\([0-9]*\)/Z\1Z/g' \
|
|
+ -e 's/Z\([0-9]\)Z/Z0\1Z/g' \
|
|
+ -e 's/Z\([0-9][0-9]\)Z/Z0\1Z/g' \
|
|
+ -e 's/Z\([0-9][0-9][0-9]\)Z/Z0\1Z/g' \
|
|
+ -e 's/[^0-9]//g'`
|
|
+
|
|
+
|
|
+ ax_compare_version=`echo "x$ax_compare_version_A
|
|
+x$ax_compare_version_B" | sed 's/^ *//' | sort -r | sed "s/x${ax_compare_version_A}/true/;s/x${ax_compare_version_B}/false/;1q"`
|
|
+
|
|
+
|
|
+
|
|
+ if test "$ax_compare_version" = "true" ; then
|
|
+ EMBED="--embed"
|
|
+ fi
|
|
+
|
|
+
|
|
+ python3_ldflags=`${PYTHON3_CONFIG_BIN} --ldflags $EMBED`
|
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: ${PYTHON3_CONFIG_BIN}'s ldflags were \"$python3_ldflags}\"" >&5
|
|
$as_echo "$as_me: ${PYTHON3_CONFIG_BIN}'s ldflags were \"$python3_ldflags}\"" >&6;}
|
|
|
|
@@ -2811,6 +3273,18 @@ $as_echo "$as_me: Sanitized ldflags were \"${mod_ldflags}\"" >&6;}
|
|
|
|
targetname="rlm_python3"
|
|
fi
|
|
+
|
|
+for ac_func in dl_iterate_phdr
|
|
+do :
|
|
+ ac_fn_c_check_func "$LINENO" "dl_iterate_phdr" "ac_cv_func_dl_iterate_phdr"
|
|
+if test "x$ac_cv_func_dl_iterate_phdr" = xyes; then :
|
|
+ cat >>confdefs.h <<_ACEOF
|
|
+#define HAVE_DL_ITERATE_PHDR 1
|
|
+_ACEOF
|
|
+
|
|
+fi
|
|
+done
|
|
+
|
|
else
|
|
targetname=
|
|
echo \*\*\* module rlm_python3 is disabled.
|
|
@@ -2833,11 +3307,7 @@ ac_config_headers="$ac_config_headers config.h"
|
|
|
|
|
|
|
|
-
|
|
- unset ac_cv_env_LIBS_set
|
|
- unset ac_cv_env_LIBS_value
|
|
-
|
|
- ac_config_files="$ac_config_files all.mk"
|
|
+ac_config_files="$ac_config_files all.mk"
|
|
|
|
cat >confcache <<\_ACEOF
|
|
# This file is a shell script that caches the results of configure
|
|
@@ -3417,6 +3887,7 @@ gives unlimited permission to copy, distribute and modify it."
|
|
|
|
ac_pwd='$ac_pwd'
|
|
srcdir='$srcdir'
|
|
+AWK='$AWK'
|
|
test -n "\$AWK" || AWK=awk
|
|
_ACEOF
|
|
|
|
@@ -4111,4 +4582,3 @@ if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
|
|
$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
|
|
fi
|
|
|
|
-
|
|
diff --git a/src/modules/rlm_python3/configure.ac b/src/modules/rlm_python3/configure.ac
|
|
index 295a2486d2ac..698a8c1d1874 100644
|
|
--- a/src/modules/rlm_python3/configure.ac
|
|
+++ b/src/modules/rlm_python3/configure.ac
|
|
@@ -7,6 +7,7 @@ if test x$with_[]modname != xno; then
|
|
|
|
AC_PROG_CC
|
|
AC_PROG_CPP
|
|
+ AM_PATH_PYTHON([3.0],, [:])
|
|
|
|
dnl extra argument: --with-rlm-python3-config-bin
|
|
PYTHON3_CONFIG_BIN=
|
|
@@ -58,7 +59,11 @@ if test x$with_[]modname != xno; then
|
|
'`
|
|
AC_MSG_NOTICE([Sanitized cflags were \"${mod_cflags}\"])
|
|
|
|
- python3_ldflags=`${PYTHON3_CONFIG_BIN} --ldflags`
|
|
+ dnl # From python 3.8, --embed is required
|
|
+ dnl # https://bugs.python.org/issue36721
|
|
+ AX_COMPARE_VERSION(${PYTHON_VERSION}, [ge], [3.8], [EMBED="--embed"], [])
|
|
+
|
|
+ python3_ldflags=`${PYTHON3_CONFIG_BIN} --ldflags $EMBED`
|
|
AC_MSG_NOTICE([${PYTHON3_CONFIG_BIN}'s ldflags were \"$python3_ldflags}\"])
|
|
|
|
dnl # Strip -Wl,-O1... Is -O even a valid linker flag??
|
|
@@ -77,6 +82,7 @@ if test x$with_[]modname != xno; then
|
|
|
|
targetname="rlm_python3"
|
|
fi
|
|
+ AC_CHECK_FUNCS([dl_iterate_phdr])
|
|
else
|
|
targetname=
|
|
echo \*\*\* module modname is disabled.
|
|
diff --git a/src/modules/rlm_python3/rlm_python3.c b/src/modules/rlm_python3/rlm_python3.c
|
|
index df223f0f401b..5da23f4d7116 100644
|
|
--- a/src/modules/rlm_python3/rlm_python3.c
|
|
+++ b/src/modules/rlm_python3/rlm_python3.c
|
|
@@ -41,8 +41,17 @@ RCSID("$Id$")
|
|
#include <link.h>
|
|
#endif
|
|
|
|
+/*
|
|
+ * Since version 3.8, the "m" suffix is no longer available.
|
|
+ * https://bugs.python.org/issue36707
|
|
+ */
|
|
+#if PY_MINOR_VERSION >= 8
|
|
+#define LIBPYTHON_LINKER_NAME \
|
|
+ "libpython" STRINGIFY(PY_MAJOR_VERSION) "." STRINGIFY(PY_MINOR_VERSION) LT_SHREXT
|
|
+#else
|
|
#define LIBPYTHON_LINKER_NAME \
|
|
"libpython" STRINGIFY(PY_MAJOR_VERSION) "." STRINGIFY(PY_MINOR_VERSION) "m" LT_SHREXT
|
|
+#endif
|
|
|
|
static uint32_t python_instances = 0;
|
|
static void *python_dlhandle;
|