[devel] I: python 3 copycat robot

George V. Kouryachy george на altlinux.org
Чт Май 23 13:55:54 MSK 2013


On Thu, May 23, 2013 at 10:58:51AM +0300, Igor Vlasenko wrote:
> Господа,
> у нас с модулями для 3-го питона ситуация плохая -
> собрано около 10% модулей по сравнению с 2-м питоном,
> 
> Робот берет пакет модуля для 2-го питона,
> проверяет, нет ли уже в нем (отключенного)
> модуля для 3-го питона, как это например есть в 
> python-module-PyQt4, и если нет,
> то трансформирует этот пакет в новый пакет, 
> который уже соберет модуль для 3-го питона.
...
> Нет возражений для развертывания робота
> Python 3 copycat в Сизиф?

Возражение ниже, сначала попробую описать ситуацию, как я её вижу.

Необходимо решить три задачи:

1. Унифицировать подмножества rpm-макросов. Сейчас макросы второго
   и третьего питона резко отличаются, в третьем многих не хватает.
2. Как-то обустроить ситуацию, при которой модуль для третьего питона
   получается из исходников не напрямую, а с помощью 2to3, мелкого
   ручного дохакивания по месту и т. п.
3. Как-то обустроить ситуацию, когда модули для второго и для третьего
   питона при этом ещё и принципиально различаются (например, составом).
   Это нас ожидает в полной мере, потому что (поправьте, если ошибаюсь)
   ни PyGTK, ни wxPython пока для Python3 не существуют, ну и другие.

Кстати, пресловутый python-module-enchant иллюстрирует две проблемы из трёх,
равно как и метод, которым мне хочется собирать двухпитоновые пакеты --
specsubst. Просьба на ужасающее использование %ifdef setup_python_module
не ругаться: это сделано намеренно, чтобы пакет сломался, когда макросы
починим :). См. сюда:
http://git.altlinux.org/people/george/packages/?p=python-module-enchant.git;a=blob;f=python-module-enchant.spec

Пока это выглядит мерзковато, но идея в том, чтобы вынести specsubst
в один базовый макрос, а все остальные будут раскрываться в python2
и python3 соответственно.

А теперь полтора возражения.

Вводная: за результат автосборки отвечает робот, а не майнтейнер, и,
следовательно, о неработоспособности пакета мы узнаем только тогда,
когда _другой_ пакет, его использующий, заглючит (повалится, испортит
данные и т. п.). В случае скриптовго языка вероятность этого существенно
выше, и опасность серьёзнее. Но это старое возражение против полных
роботов, на него есть старый ответ: хранилище с автосборками имеет более
низкий уровень ответственноси и качества, не хочешь -- не используй,
хочешь использовать -- забирай пакет оттуда, поправляй и сопровождай.

Но. До тех пор, пока не будут как-то решены три указанные проблемы,
полученный генератом спек будет или ужасен, или неполноценен.

И сопровождение python3-пакета наличием автосборки будет не упрощаться,
а (потенциально) усложняться, т. к. автосборка начнёт заджавать легаси.

И, кстати,
http://packages.altlinux.org/en/Sisyphus/srpms/python3-module-enchant/repocop

Что не так с __pycache__/*.pyo? Они действительно платформо-зависимые?
Или это баг репокопа?

-- 
				  Георгий Владимирович Курячий
				  Эксперт компании "Альт Линукс"
				  Mailto/JID: george на altlinux.org
				  Mobile: (8)9161738325


Подробная информация о списке рассылки Devel