2011-01-06 4 views
3

Я пытаюсь получить autofoo, чтобы проверить для максимум версии Python, а не минимум. Пример:Тест Autofoo для максимальной версии Python

AC_REQUIRE([AM_PATH_PYTHON([2.7])]) 

... испытает для Python> = 2.7, и, вероятно, окажется с/USR/BIN/Python3. Однако я хочу, чтобы он возвращал ничего больше, чем python2.7.

Есть ли простой способ сделать это? Я спросил, и пока лучший ответ, который я получил, - «переписать макрос».

Заранее благодарен!

+2

Боюсь, что ваш лучший ответ пока, вероятно, прав. Разве это не вопрос копирования макроса и изменение '-gt' на' -lt'? – ptomato

ответ

2

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

Вот и все.

+0

'+ 1' спасибо за обмен :) – Anne

2

Аргумент версии до AM_PATH_PYTHON не является обязательным. Если требуется питона, назовем его так:

AM_PATH_PYTHON 

Если это не требуется, назовем его так:

AM_PATH_PYTHON(,, [:]) 

Теперь, AM_PATH_PYTHON устанавливает переменную оболочки $PYTHON_VERSION к значению sys.version[:3], который вам может проверить себя.

+1

Правильно, проблема в том, что если в системе есть несколько установок Python, например, 2.7 и 3.0, я хочу, чтобы $ PYTHON_VERSION становился 2.7, а остальные части отражают этот двоичный путь и т. Д., – bhilburn

+0

Ах да , Я пропустил этот бит. Даже если он не отображается в './configure --help', вы можете установить' $ PYTHON', используя что-то вроде './configure PYTHON =/usr/bin/python2.7'. –

+2

Очевидно, что пользователь может установить '$ PYTHON' правильное поведение, см. Отчет об ошибке здесь: http://lists.gnu.org/archive/html/bug-automake/2011-01/msg00105.html. Он отлично работает на текущем automake, но будущие версии будут добавлять справочную информацию в './configure --help'. Поэтому вам должно быть хорошо протестировать результат «AM_PATH_PYTHON» и направить пользователя на предоставление альтернативного '$ PYTHON', если их системная версия слишком новая. –

0

Альтернативное решение может быть установлено по умолчанию для _AM_PYTHON_INTERPRETER_LIST, включая только двоичные файлы Python 2.