【问题标题】:Autofoo test for maximum version of Python最高版本 Python 的 Autofoo 测试
【发布时间】:2011-01-06 20:45:40
【问题描述】:

我正在尝试让 autofoo 测试 Python 的最大 版本,而不是最低版本。示例:

AC_REQUIRE([AM_PATH_PYTHON([2.7])])

... 将测试 Python >= 2.7,并且可能会出现 /usr/bin/python3。但是,我希望它返回的值不超过 python2.7。

有没有一种简单的方法可以做到这一点?我四处打听,到目前为止我得到的最好的回答是“重写宏”。

提前致谢!

【问题讨论】:

  • 恐怕您迄今为止的最佳反应可能是正确的。不就是复制宏把-gt改成-lt的问题吗?

标签: build autoconf automake gnu-toolchain linux-toolchain


【解决方案1】:

1)。添加到acinclude.m4

`# my_CHECK_MAJOR_VERSION(VARIABLE, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE])`  
`# ---------------------------------------------------------------------------`  
`# Run ACTION-IF-TRUE if the VAR has a major version >= VERSION.`  
`# Run ACTION-IF-FALSE otherwise.`  
AC_DEFUN([my_CHECK_MAJOR_VERSION],  
[AC_MSG_CHECKING([whether $1 $$1 major version == $2])  
case $$1 in  
$2*)  
  AC_MSG_RESULT([yes])  
  ifelse([$3], [$3], [:])  
  ;;  
*)  
  AC_MSG_RESULT([no])  
  ifelse([$4], , [AC_MSG_ERROR([$$1 differs from $2])], [$4])  
  ;;  
esac])  

2.) 添加到zconfigure.inz

my_CHECK_MAJOR_VERSION([PYTHON_VERSION], [2])  

3.) aclocal, automake, autoconf

就是这样。

【讨论】:

    【解决方案2】:

    AM_PATH_PYTHON 的版本参数是可选的。如果需要 python,可以这样调用:

    AM_PATH_PYTHON
    

    如果不需要,可以这样调用:

    AM_PATH_PYTHON(,, [:])
    

    现在,AM_PATH_PYTHON 将 shell 变量 $PYTHON_VERSION 设置为 sys.version[:3] 的值,您可以自己测试。

    【讨论】:

    • 对,问题是如果系统上有多个 Python 安装,例如 2.7 和 3.0,我希望 $PYTHON_VERSION 变为 2.7,并让其余的变量反映该二进制路径等等,
    • 啊,是的,我错过了那一点。即使它没有出现在./configure --help 中,您也可以使用./configure PYTHON=/usr/bin/python2.7 之类的方式设置$PYTHON
    • 显然允许用户设置$PYTHON 是正确的行为,请参阅此处的错误报告:lists.gnu.org/archive/html/bug-automake/2011-01/msg00105.html。它在当前的 automake 上运行良好,但未来的版本会将帮助信息添加到 ./configure --help。因此,您应该可以针对AM_PATH_PYTHON 的结果进行测试,并指导用户在系统版本太新时提供备用$PYTHON
    【解决方案3】:

    另一种解决方案是为 _AM_PYTHON_INTERPRETER_LIST 设置默认值,以仅包含 Python 2 二进制文件。

    【讨论】:

      猜你喜欢
      • 2018-11-10
      • 2017-03-19
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多