108 lines
3.2 KiB
Text
108 lines
3.2 KiB
Text
|
dnl #
|
||
|
dnl # ZFS_AC_PYTHON_VERSION(version, [action-if-true], [action-if-false])
|
||
|
dnl #
|
||
|
dnl # Verify Python version
|
||
|
dnl #
|
||
|
AC_DEFUN([ZFS_AC_PYTHON_VERSION], [
|
||
|
ver_check=`$PYTHON -c "import sys; print (sys.version.split()[[0]] $1)"`
|
||
|
AS_IF([test "$ver_check" = "True"], [
|
||
|
m4_ifvaln([$2], [$2])
|
||
|
], [
|
||
|
m4_ifvaln([$3], [$3])
|
||
|
])
|
||
|
])
|
||
|
|
||
|
dnl #
|
||
|
dnl # ZFS_AC_PYTHON_VERSION_IS_2
|
||
|
dnl # ZFS_AC_PYTHON_VERSION_IS_3
|
||
|
dnl #
|
||
|
dnl # Tests if the $PYTHON_VERSION matches 2.x or 3.x.
|
||
|
dnl #
|
||
|
AC_DEFUN([ZFS_AC_PYTHON_VERSION_IS_2],
|
||
|
[test "${PYTHON_VERSION%%\.*}" = "2"])
|
||
|
AC_DEFUN([ZFS_AC_PYTHON_VERSION_IS_3],
|
||
|
[test "${PYTHON_VERSION%%\.*}" = "3"])
|
||
|
|
||
|
dnl #
|
||
|
dnl # ZFS_AC_PYTHON_MODULE(module_name, [action-if-true], [action-if-false])
|
||
|
dnl #
|
||
|
dnl # Checks for Python module. Freely inspired by AX_PYTHON_MODULE
|
||
|
dnl # https://www.gnu.org/software/autoconf-archive/ax_python_module.html
|
||
|
dnl # Required by ZFS_AC_CONFIG_ALWAYS_PYZFS.
|
||
|
dnl #
|
||
|
AC_DEFUN([ZFS_AC_PYTHON_MODULE], [
|
||
|
PYTHON_NAME=`basename $PYTHON`
|
||
|
AC_MSG_CHECKING([for $PYTHON_NAME module: $1])
|
||
|
AS_IF([$PYTHON -c "import $1" 2>/dev/null], [
|
||
|
AC_MSG_RESULT(yes)
|
||
|
m4_ifvaln([$2], [$2])
|
||
|
], [
|
||
|
AC_MSG_RESULT(no)
|
||
|
m4_ifvaln([$3], [$3])
|
||
|
])
|
||
|
])
|
||
|
|
||
|
dnl #
|
||
|
dnl # The majority of the python scripts are written to be compatible
|
||
|
dnl # with Python 2.6 and Python 3.4. Therefore, they may be installed
|
||
|
dnl # and used with either interpreter. This option is intended to
|
||
|
dnl # to provide a method to specify the default system version, and
|
||
|
dnl # set the PYTHON environment variable accordingly.
|
||
|
dnl #
|
||
|
AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYTHON], [
|
||
|
AC_ARG_WITH([python],
|
||
|
AC_HELP_STRING([--with-python[=VERSION]],
|
||
|
[default system python version @<:@default=check@:>@]),
|
||
|
[with_python=$withval],
|
||
|
[with_python=check])
|
||
|
|
||
|
AS_CASE([$with_python],
|
||
|
[check], [AC_CHECK_PROGS([PYTHON], [python3 python2], [:])],
|
||
|
[2*], [PYTHON="python${with_python}"],
|
||
|
[*python2*], [PYTHON="${with_python}"],
|
||
|
[3*], [PYTHON="python${with_python}"],
|
||
|
[*python3*], [PYTHON="${with_python}"],
|
||
|
[no], [PYTHON=":"],
|
||
|
[AC_MSG_ERROR([Unknown --with-python value '$with_python'])]
|
||
|
)
|
||
|
|
||
|
AS_IF([test $PYTHON != :], [
|
||
|
AS_IF([$PYTHON --version >/dev/null 2>&1],
|
||
|
[AM_PATH_PYTHON([2.6], [], [:])],
|
||
|
[AC_MSG_ERROR([Cannot find $PYTHON in your system path])]
|
||
|
)
|
||
|
])
|
||
|
AM_CONDITIONAL([USING_PYTHON], [test "$PYTHON" != :])
|
||
|
AM_CONDITIONAL([USING_PYTHON_2], [ZFS_AC_PYTHON_VERSION_IS_2])
|
||
|
AM_CONDITIONAL([USING_PYTHON_3], [ZFS_AC_PYTHON_VERSION_IS_3])
|
||
|
|
||
|
dnl #
|
||
|
dnl # Minimum supported Python versions for utilities:
|
||
|
dnl # Python 2.6.x, or Python 3.4.x
|
||
|
dnl #
|
||
|
AS_IF([ZFS_AC_PYTHON_VERSION_IS_2], [
|
||
|
ZFS_AC_PYTHON_VERSION([>= '2.6'], [ true ],
|
||
|
[AC_MSG_ERROR("Python >= 2.6.x is not available")])
|
||
|
])
|
||
|
|
||
|
AS_IF([ZFS_AC_PYTHON_VERSION_IS_3], [
|
||
|
ZFS_AC_PYTHON_VERSION([>= '3.4'], [ true ],
|
||
|
[AC_MSG_ERROR("Python >= 3.4.x is not available")])
|
||
|
])
|
||
|
|
||
|
dnl #
|
||
|
dnl # Request that packages be built for a specific Python version.
|
||
|
dnl #
|
||
|
AS_IF([test $with_python != check], [
|
||
|
PYTHON_PKG_VERSION=`echo ${PYTHON} | tr -d 'a-zA-Z.'`
|
||
|
DEFINE_PYTHON_PKG_VERSION='--define "__use_python_pkg_version '${PYTHON_PKG_VERSION}'"'
|
||
|
DEFINE_PYTHON_VERSION='--define "__use_python '${PYTHON}'"'
|
||
|
], [
|
||
|
DEFINE_PYTHON_VERSION=''
|
||
|
DEFINE_PYTHON_PKG_VERSION=''
|
||
|
])
|
||
|
|
||
|
AC_SUBST(DEFINE_PYTHON_VERSION)
|
||
|
AC_SUBST(DEFINE_PYTHON_PKG_VERSION)
|
||
|
])
|