|
@@ -648,11 +648,11 @@ m4_ifnblank([$1], [
|
648
|
648
|
AS_IF([test "$[pc_cv_python_func_]pc_python_safe_mod[_$2]" = "no"], [$5], [$4])
|
649
|
649
|
])# PC_PYTHON_CHECK_FUNC
|
650
|
650
|
|
651
|
|
-# PC_PYTHON_CHECK_MODULE_VERSION(LIBRARY, VERSION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND)
|
|
651
|
+# PC_PYTHON_CHECK_MODULE_MATCH_VERSION(LIBRARY, VERSION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND)
|
652
|
652
|
# -------------------------------------------------
|
653
|
653
|
# Macro for checking if a Python library with this version is installed
|
654
|
654
|
#
|
655
|
|
-AC_DEFUN([PC_PYTHON_CHECK_MODULE_VERSION],
|
|
655
|
+AC_DEFUN([PC_PYTHON_CHECK_MODULE_MATCH_VERSION],
|
656
|
656
|
[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
657
|
657
|
m4_define([pc_python_safe_mod], m4_bpatsubsts($1, [\.], [_]))
|
658
|
658
|
AC_CACHE_CHECK([for Python '$1' library version '$2'],
|
|
@@ -687,3 +687,69 @@ AS_IF([test "x$[pc_cv_python_module_version]pc_python_safe_mod" = "x$2" ],
|
687
|
687
|
[$4]
|
688
|
688
|
])
|
689
|
689
|
])# PC_PYTHON_CHECK_MODULE_VERSION
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+# PC_PYTHON_CHECK_MODULE_VERSION(LIBRARY, MIN-VERSION, MAX-VERSION, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND)
|
|
693
|
+# -------------------------------------------------
|
|
694
|
+# Macro for checking if a Python library with this version is installed
|
|
695
|
+#
|
|
696
|
+AC_DEFUN([PC_PYTHON_CHECK_MODULE_VERSION],
|
|
697
|
+[AC_REQUIRE([PC_PROG_PYTHON])[]dnl
|
|
698
|
+m4_define([pc_python_safe_mod], m4_bpatsubsts($1, [\.], [_]))
|
|
699
|
+m4_append([pc_python_safe_mod], m4_bpatsubsts($2, [\.], [_]))
|
|
700
|
+m4_append([pc_python_safe_mod], m4_bpatsubsts($3, [\.], [_]))
|
|
701
|
+AC_CACHE_CHECK(
|
|
702
|
+ [for Python '$1' library m4_ifnblank([$2],['$2' <= ]) version m4_ifnblank([$3], [<= '$3'])],
|
|
703
|
+ [[pc_cv_python_module_version]pc_python_safe_mod],
|
|
704
|
+ [AC_LANG_PUSH(Python)[]dnl
|
|
705
|
+ AC_LINK_IFELSE(
|
|
706
|
+ [AC_LANG_PROGRAM([dnl
|
|
707
|
+import sys
|
|
708
|
+def cmp_vers(v1,v2):
|
|
709
|
+ v1 = v1.split('.')
|
|
710
|
+ v2 = v2.split('.')
|
|
711
|
+ for i in range(max([len](v1), [len](v2))):
|
|
712
|
+ v1v = int(v1[[i]] if i < [len](v1) else 0)
|
|
713
|
+ v2v = int(v2[[i]] if i < [len](v2) else 0)
|
|
714
|
+ if v1v > v2v:
|
|
715
|
+ return 1
|
|
716
|
+ if v1v < v2v:
|
|
717
|
+ return -1
|
|
718
|
+ return 0
|
|
719
|
+try:
|
|
720
|
+ import $1
|
|
721
|
+except:
|
|
722
|
+ result='not found'
|
|
723
|
+else:
|
|
724
|
+ result='yes'
|
|
725
|
+ vmin = '$2'
|
|
726
|
+ vmax = '$3'
|
|
727
|
+ for vers_attr in ('__version__', 'version', 'version_info'):
|
|
728
|
+ if hasattr($1, vers_attr):
|
|
729
|
+ version = getattr($1, vers_attr)
|
|
730
|
+ break
|
|
731
|
+ else:
|
|
732
|
+ result = 'unknown'
|
|
733
|
+ if version not in ('unknonwn', 'no'):
|
|
734
|
+ failmsg = "but "+ version + " found"
|
|
735
|
+ if [len](vmin) > 0:
|
|
736
|
+ if cmp_vers(version, vmin) < 0:
|
|
737
|
+ result = failmsg
|
|
738
|
+ if [len](vmax) > 0:
|
|
739
|
+ if cmp_vers(version, vmax) > 0:
|
|
740
|
+ result = failmsg
|
|
741
|
+
|
|
742
|
+sys.stdout.write(result)
|
|
743
|
+], [])],
|
|
744
|
+ [[pc_cv_python_module_version]pc_python_safe_mod=`./conftest`],
|
|
745
|
+ [AC_MSG_FAILURE([failed to run Python program])])
|
|
746
|
+ AC_LANG_POP(Python)[]dnl
|
|
747
|
+ ])
|
|
748
|
+AS_IF( [test "$[pc_cv_python_module_version]pc_python_safe_mod" = "yes"],
|
|
749
|
+ [$4],
|
|
750
|
+ [ AS_IF(
|
|
751
|
+ [test "x$[pc_cv_python_module_version]pc_python_safe_mod" = 'unknown'],
|
|
752
|
+ AC_MSG_WARN([Unable to fetch version of Python module $1]))
|
|
753
|
+ [$5]
|
|
754
|
+ ])
|
|
755
|
+])# PC_PYTHON_CHECK_MODULE_VERSION
|