mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 11:19:32 +03:00
d6920fb996
Previously, --without-python would cause ./configure to fail. Now it is able to proceed, and the Python scripts will not be built. Use portable parameter expansion matching instead of nonstandard substring matching to detect the Python version. This test is duplicated in several places, so define a function for it. Don't assume the full path to binaries, since different platforms do install things in different places. Use AC_CHECK_PROGS instead. When building without Python, also build without pyzfs. Sponsored by: iXsystems, Inc. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Richard Laager <rlaager@wiktel.com> Reviewed-by: Eli Schwartz <eschwartz93@gmail.com> Signed-off-by: Ryan Moeller <ryan@freqlabs.com> Closes #8809 Closes #8731
108 lines
3.2 KiB
Plaintext
108 lines
3.2 KiB
Plaintext
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)
|
|
])
|