]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Python config cleanup
authorRyan Moeller <ryan@freqlabs.com>
Thu, 13 Jun 2019 20:15:46 +0000 (13:15 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 13 Jun 2019 20:15:46 +0000 (13:15 -0700)
Don't require Python at configure/build unless building pyzfs.
Move ZFS_AC_PYTHON_MODULE to always-pyzfs.m4 where it is used.
Make test syntax more consistent.

Sponsored by: iXsystems, Inc.
Reviewed-by: Neal Gompa <ngompa@datto.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
Closes #8895

config/always-python.m4
config/always-pyzfs.m4

index 7cfefd9ebcae358611f64e35518b2fccda758402..c1c07597e68853e46b4c271427e4113fd9e21991 100644 (file)
@@ -1,47 +1,3 @@
-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
@@ -66,35 +22,38 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_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 # Python 2.6 or Python 3.4
        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")])
+       AM_PATH_PYTHON([], [], [:])
+       AS_IF([test -z "$PYTHON_VERSION"], [
+               PYTHON_VERSION=$(basename $PYTHON | tr -cd 0-9.)
        ])
+       PYTHON_MINOR=${PYTHON_VERSION#*\.}
 
-       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")])
-       ])
+       AS_CASE([$PYTHON_VERSION],
+               [2.*], [
+                       AS_IF([test $PYTHON_MINOR -lt 6],
+                               [AC_MSG_ERROR("Python >= 2.6 is required")])
+               ],
+               [3.*], [
+                       AS_IF([test $PYTHON_MINOR -lt 4],
+                               [AC_MSG_ERROR("Python >= 3.4 is required")])
+               ],
+               [:|2|3], [],
+               [PYTHON_VERSION=3]
+       )
+
+       AM_CONDITIONAL([USING_PYTHON], [test "$PYTHON" != :])
+       AM_CONDITIONAL([USING_PYTHON_2], [test "x${PYTHON_VERSION%%\.*}" = x2])
+       AM_CONDITIONAL([USING_PYTHON_3], [test "x${PYTHON_VERSION%%\.*}" = x3])
 
        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.'`
+       AS_IF([test "x$with_python" != xcheck], [
+               PYTHON_PKG_VERSION=$(echo $PYTHON_VERSION | tr -d .)
                DEFINE_PYTHON_PKG_VERSION='--define "__use_python_pkg_version '${PYTHON_PKG_VERSION}'"'
                DEFINE_PYTHON_VERSION='--define "__use_python '${PYTHON}'"'
        ], [
index 6f32e98feed253829877dee34062019792ed4c0a..f620a8f9a18b72423ed57c15bb6a0f4c33c0ffdc 100644 (file)
@@ -1,5 +1,24 @@
 dnl #
-dnl # Determines if pyzfs can be built, requires Python 2.7 or latter.
+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 # Determines if pyzfs can be built, requires Python 2.7 or later.
 dnl #
 AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
        AC_ARG_ENABLE([pyzfs],
@@ -18,7 +37,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
                        DEFINE_PYZFS='--without pyzfs'
                ])
        ], [
-               AS_IF([test $PYTHON != :], [
+               AS_IF([test "$PYTHON" != :], [
                        DEFINE_PYZFS=''
                ], [
                        enable_pyzfs=no
@@ -31,20 +50,16 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
        dnl # Require python-devel libraries
        dnl #
        AS_IF([test "x$enable_pyzfs" = xcheck  -o "x$enable_pyzfs" = xyes], [
-               AS_IF([ZFS_AC_PYTHON_VERSION_IS_2], [
-                       PYTHON_REQUIRED_VERSION=">= '2.7.0'"
-               ], [
-                       AS_IF([ZFS_AC_PYTHON_VERSION_IS_3], [
-                               PYTHON_REQUIRED_VERSION=">= '3.4.0'"
-                       ], [
-                               AC_MSG_ERROR("Python $PYTHON_VERSION unknown")
-                       ])
-               ])
+               AS_CASE([$PYTHON_VERSION],
+                       [3.*], [PYTHON_REQUIRED_VERSION=">= '3.4.0'"],
+                       [2.*], [PYTHON_REQUIRED_VERSION=">= '2.7.0'"],
+                       [AC_MSG_ERROR("Python $PYTHON_VERSION unknown")]
+               )
 
                AX_PYTHON_DEVEL([$PYTHON_REQUIRED_VERSION], [
                        AS_IF([test "x$enable_pyzfs" = xyes], [
                                AC_MSG_ERROR("Python $PYTHON_REQUIRED_VERSION development library is not installed")
-                       ], [test ! "x$enable_pyzfs" = xno], [
+                       ], [test "x$enable_pyzfs" != xno], [
                                enable_pyzfs=no
                        ])
                ])
@@ -57,7 +72,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
                ZFS_AC_PYTHON_MODULE([setuptools], [], [
                        AS_IF([test "x$enable_pyzfs" = xyes], [
                                AC_MSG_ERROR("Python $PYTHON_VERSION setuptools is not installed")
-                       ], [test ! "x$enable_pyzfs" = xno], [
+                       ], [test "x$enable_pyzfs" != xno], [
                                enable_pyzfs=no
                        ])
                ])
@@ -70,7 +85,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
                ZFS_AC_PYTHON_MODULE([cffi], [], [
                        AS_IF([test "x$enable_pyzfs" = xyes], [
                                AC_MSG_ERROR("Python $PYTHON_VERSION cffi is not installed")
-                       ], [test ! "x$enable_pyzfs" = xno], [
+                       ], [test "x$enable_pyzfs" != xno], [
                                enable_pyzfs=no
                        ])
                ])
@@ -81,7 +96,7 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
        dnl #
        AS_IF([test "x$enable_pyzfs" = xcheck], [enable_pyzfs=yes])
 
-       AM_CONDITIONAL([PYZFS_ENABLED], [test x$enable_pyzfs = xyes])
+       AM_CONDITIONAL([PYZFS_ENABLED], [test "x$enable_pyzfs" = xyes])
        AC_SUBST([PYZFS_ENABLED], [$enable_pyzfs])
        AC_SUBST(pythonsitedir, [$PYTHON_SITE_PKG])