[devel] Собираем Python-2.6

Evgeny Sinelnikov sin at altlinux.ru
Fri Jul 17 03:21:25 MSD 2009


17 июля 2009 г. 1:26 пользователь Dmitry V. Levin (ldv at altlinux.org) написал:
> On Thu, Jul 16, 2009 at 10:09:25PM +0400, Evgeny Sinelnikov wrote:
>> Пересборка всех этих пакетов сразу едва ли возможна. С другой стороны,
>> уже сейчас можно собрать два питона. Один из которых будет
>> python2.5-2.5.4, а другой python-2.6.2. Таким образом, если
>> сформировать задание из этих двух пакетов, girar-builder их пропустит.
>> Но не пропустит их sisyphus_check, исправление для которого я уже
>> высылал. Исправленный вариант планируется?
>
> Исправленный вариант планируется, но одно очень важное обстоятельство меня
> сдерживает.  Допустим, в Сизиф приехало 2 пакета, о которых вы говорите,
> python2.5-2.5.4 и python-2.6.2.  Далее, пользователь выполнил
> dist-upgrade, в результате которого у него в системе оказалось 2 питона,
> причём /ust/bin/python стал новым.  Далее, пользователь запустил любой
> скрипт на питоне, использующий, помимо стандартных модулей из подпакетов
> python, дополнительные модули из пакетов python-module-*.  Новый питон
> версии 2.6, конечно, не найдёт модулей, собранных для питона версии 2.5,
> и на этом скрипт закончит свою работу.  Это ситуация называется
> "разломанный питон".
>
> Я думаю, что во всех скриптах, содержащих #!/usr/bin/python, во время сборки
> нужно автоматически фиксить этот #! на
> /usr/bin/python%{?__python_package_version:%__python_package_version}%{?!__python_package_version:%__python_version}
>

Да, отличный вариант, тольк ему исключения, на всякий случай,
предусмотреть нужно. Что-то вроде такого:
%add_python_script_list

Думаю, что пересборку стоит начинать, имея такую фичу в rpm.

> До тех пор, пока скрипты используют /usr/bin/python, система с двумя
> питонами разных версий будет антидистрибутивна, ибо эти скрипты не смогут
> обеспечить выбор той версии питона, для которой зависимости пакетов
> гарантируют наличие модулей питона нужной версии, требуемых для этих скриптов.

Согласен, я тоже думал про это дело... Нам здорово мог бы помочь
repocop, только я пока не решаюсь на его разбор.
Минимально, нам нужно три штуки уметь проверять:
1) Отсутствие python-dev в BuildRequires
2) Наличие python-devel = %__python_version в BuildRequires
3) Проверку python программ на наличие
#!/usr/bin/python%__python_version
Только в последнем нужно делать предупреждение, а не ошибку. Может
быть это, за исключением третьего, в sisyphus_check стоит продвигать?

PS: Кстати, на идею git.alt task [task-id] rebuild так никто и не
отреагировал... Там  видимо тоже нужен, а эвристику с archivе можно
убрать, ибо из archive всегда можно перенести в личный packages, хотя
это не так удобно и требует траффик гонять, да и подпись придётся свою
ставить, что сводит всю прелесть на нет...

-- 
Sin (Sinelnikov Evgeny)


More information about the Devel mailing list