nut/m4/nut_check_python.m4
2022-06-29 12:37:36 +02:00

128 lines
5.9 KiB
Text

dnl Check for python binary program names per language version
dnl to embed into scripts and Make rules
AC_DEFUN([NUT_CHECK_PYTHON],
[
AS_IF([test -z "${nut_with_python}"], [
NUT_ARG_WITH([python], [Use a particular program name of the python interpeter], [auto])
PYTHON=""
AS_CASE([${nut_with_python}],
[auto|yes|""], [AC_CHECK_PROGS([PYTHON], [python python3 python2], [_python_runtime])],
[no], [PYTHON="no"],
[PYTHON="${nut_with_python}"]
)
dnl Default to calling a basename from PATH, only use a specific full pathname
dnl if provided by the caller:
AS_CASE([${PYTHON}],
[_python_runtime], [
PYTHON="/usr/bin/env python"
AC_MSG_WARN([A python program name was not detected during configuration, will default to '$PYTHON' (scripts will fail if that is not in PATH at run time)])],
[no], [],
[/*" "*" "*], [
AC_MSG_WARN([A python program name is not a single token (was specified with more than one argument?), so shebangs can be not reliable])
],
[/*], [],
[*" "*" "*], [
AC_MSG_WARN([A python program name is not a single token (was specified with more than one argument?), so shebangs can be not reliable])
PYTHON="/usr/bin/env ${PYTHON}"
],
[*" "*], [
AC_MSG_WARN([A python program name is not a single token (was specified with an argument?), so /usr/bin/env shebangs can be not reliable])
PYTHON="/usr/bin/env ${PYTHON}"
],
[*], [PYTHON="/usr/bin/env ${PYTHON}"]
)
AC_MSG_CHECKING([python interpeter to call])
AC_MSG_RESULT([${PYTHON}])
AC_SUBST([PYTHON], [${PYTHON}])
AM_CONDITIONAL([HAVE_PYTHON], [test "${PYTHON}" != "no"])
AS_IF([test -n "${PYTHON}"], [export PYTHON])
])
])
AC_DEFUN([NUT_CHECK_PYTHON2],
[
AS_IF([test -z "${nut_with_python2}"], [
NUT_ARG_WITH([python2], [Use a particular program name of the python2 interpeter for code that needs that version and is not compatible with python3], [auto])
PYTHON2=""
AS_CASE([${nut_with_python2}],
[auto|yes|""], [AC_CHECK_PROGS([PYTHON2], [python2 python2.7 python-2.7 python], [_python2_runtime])],
[no], [PYTHON2="no"],
[PYTHON2="${nut_with_python2}"]
)
dnl Default to calling a basename from PATH, only use a specific full pathname
dnl if provided by the caller:
AS_CASE([${PYTHON2}],
[_python2_runtime], [
PYTHON2="/usr/bin/env python2"
AC_MSG_WARN([A python2 program name was not detected during configuration, will default to '$PYTHON2' (scripts will fail if that is not in PATH at run time)])],
[no], [],
[/*" "*" "*], [
AC_MSG_WARN([A python2 program name is not a single token (was specified with more than one argument?), so shebangs can be not reliable])
],
[/*], [],
[*" "*" "*], [
AC_MSG_WARN([A python2 program name is not a single token (was specified with more than one argument?), so shebangs can be not reliable])
PYTHON2="/usr/bin/env ${PYTHON2}"
],
[*" "*], [
AC_MSG_WARN([A python2 program name is not a single token (was specified with an argument?), so /usr/bin/env shebangs can be not reliable])
PYTHON2="/usr/bin/env ${PYTHON2}"
],
[*], [PYTHON2="/usr/bin/env ${PYTHON2}"]
)
AC_MSG_CHECKING([python2 interpeter to call])
AC_MSG_RESULT([${PYTHON2}])
AC_SUBST([PYTHON2], [${PYTHON2}])
AM_CONDITIONAL([HAVE_PYTHON2], [test "${PYTHON2}" != "no"])
AS_IF([test -n "${PYTHON2}"], [export PYTHON2])
])
])
AC_DEFUN([NUT_CHECK_PYTHON3],
[
AS_IF([test -z "${nut_with_python3}"], [
NUT_ARG_WITH([python3], [Use a particular program name of the python3 interpeter for code that needs that version and is not compatible with python2], [auto])
PYTHON3=""
AS_CASE([${nut_with_python3}],
[auto|yes|""], [AC_CHECK_PROGS([PYTHON3], [python3 python3.9 python-3.9 python3.7 python-3.7 python3.5 python-3.5 python], [_python3_runtime])],
[no], [PYTHON3="no"],
[PYTHON3="${nut_with_python3}"]
)
dnl Default to calling a basename from PATH, only use a specific full pathname
dnl if provided by the caller:
AS_CASE([${PYTHON3}],
[_python3_runtime], [
PYTHON3="/usr/bin/env python3"
AC_MSG_WARN([A python3 program name was not detected during configuration, will default to '$PYTHON3' (scripts will fail if that is not in PATH at run time)])],
[no], [],
[/*" "*" "*], [
AC_MSG_WARN([A python3 program name is not a single token (was specified with more than one argument?), so shebangs can be not reliable])
],
[/*], [],
[*" "*" "*], [
AC_MSG_WARN([A python3 program name is not a single token (was specified with more than one argument?), so shebangs can be not reliable])
PYTHON3="/usr/bin/env ${PYTHON3}"
],
[*" "*], [
AC_MSG_WARN([A python3 program name is not a single token (was specified with an argument?), so /usr/bin/env shebangs can be not reliable])
PYTHON3="/usr/bin/env ${PYTHON3}"
],
[*], [PYTHON3="/usr/bin/env ${PYTHON3}"]
)
AC_MSG_CHECKING([python3 interpeter to call])
AC_MSG_RESULT([${PYTHON3}])
AC_SUBST([PYTHON3], [${PYTHON3}])
AM_CONDITIONAL([HAVE_PYTHON3], [test "${PYTHON3}" != "no"])
AS_IF([test -n "${PYTHON3}"], [export PYTHON3])
])
])