aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorRyan Moeller <[email protected]>2019-06-04 18:05:46 -0700
committerBrian Behlendorf <[email protected]>2019-06-04 18:05:46 -0700
commit1a132f063882bba08253b6c0abf3846cdacfb7a6 (patch)
tree151ffde614984751f0396ecba359f8946d95a342 /config
parentdf24bcf00a60a5a9b1673f4012ee4cbea8c13a69 (diff)
Make Python detection optional and more portable
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 <[email protected]> Reviewed-by: Richard Laager <[email protected]> Reviewed-by: Eli Schwartz <[email protected]> Signed-off-by: Ryan Moeller <[email protected]> Closes #8809 Closes #8731
Diffstat (limited to 'config')
-rw-r--r--config/always-python.m443
-rw-r--r--config/always-pyzfs.m411
2 files changed, 32 insertions, 22 deletions
diff --git a/config/always-python.m4 b/config/always-python.m4
index 858ab7b01..7cfefd9eb 100644
--- a/config/always-python.m4
+++ b/config/always-python.m4
@@ -13,6 +13,17 @@ AC_DEFUN([ZFS_AC_PYTHON_VERSION], [
])
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
@@ -46,42 +57,36 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYTHON], [
[with_python=check])
AS_CASE([$with_python],
- [check],
- [AS_IF([test -x /usr/bin/python3],
- [PYTHON="python3"],
- [AS_IF([test -x /usr/bin/python2],
- [PYTHON="python2"],
- [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=""],
+ [no], [PYTHON=":"],
[AC_MSG_ERROR([Unknown --with-python value '$with_python'])]
)
- AS_IF([$PYTHON --version >/dev/null 2>&1], [ /bin/true ], [
- AC_MSG_ERROR([Cannot find $PYTHON in your system path])
+ 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_PATH_PYTHON([2.6], [], [:])
AM_CONDITIONAL([USING_PYTHON], [test "$PYTHON" != :])
- AM_CONDITIONAL([USING_PYTHON_2], [test "${PYTHON_VERSION:0:2}" = "2."])
- AM_CONDITIONAL([USING_PYTHON_3], [test "${PYTHON_VERSION:0:2}" = "3."])
+ 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([test "${PYTHON_VERSION:0:2}" = "2."], [
- ZFS_AC_PYTHON_VERSION([>= '2.6'], [ /bin/true ],
+ 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([test "${PYTHON_VERSION:0:2}" = "3."], [
- ZFS_AC_PYTHON_VERSION([>= '3.4'], [ /bin/true ],
+ 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")])
])
diff --git a/config/always-pyzfs.m4 b/config/always-pyzfs.m4
index d74d6f1a7..6f32e98fe 100644
--- a/config/always-pyzfs.m4
+++ b/config/always-pyzfs.m4
@@ -18,7 +18,12 @@ AC_DEFUN([ZFS_AC_CONFIG_ALWAYS_PYZFS], [
DEFINE_PYZFS='--without pyzfs'
])
], [
- DEFINE_PYZFS=''
+ AS_IF([test $PYTHON != :], [
+ DEFINE_PYZFS=''
+ ], [
+ enable_pyzfs=no
+ DEFINE_PYZFS='--without pyzfs'
+ ])
])
AC_SUBST(DEFINE_PYZFS)
@@ -26,10 +31,10 @@ 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([test "${PYTHON_VERSION:0:2}" = "2."], [
+ AS_IF([ZFS_AC_PYTHON_VERSION_IS_2], [
PYTHON_REQUIRED_VERSION=">= '2.7.0'"
], [
- AS_IF([test "${PYTHON_VERSION:0:2}" = "3."], [
+ AS_IF([ZFS_AC_PYTHON_VERSION_IS_3], [
PYTHON_REQUIRED_VERSION=">= '3.4.0'"
], [
AC_MSG_ERROR("Python $PYTHON_VERSION unknown")