[devel] Сборка пакетов , содержащих .py

Andrey Orlov =?iso-8859-1?q?cray_=CE=C1_neural=2Eru?=
Пт Янв 16 18:10:40 MSK 2004


On Friday 2004  January 16 13:50, Alexey Morozov wrote:
> On Fri, Jan 16, 2004 at 10:12:43AM +0300, Andrey Orlov wrote:

> > Особенно автороство того, кто и что вам говорит? На этот вопрос
> > отвечали, в разное время, два человека - я & Максим, и ответ был 
совсем
> > не такой.
> Вопрос был другой :-)). И отвечали на него не Вы :-)

Тогда почему вы приписали этот ответ мне? Вы сказали - один из 
занимающихся сборкой python. Если верить changelog - Максим сборкой
python не занимался, последние сборки python - мои. Мой же ответ был 
другой, и так как мне влом искать его в pipermail, то я его повторяю 
специально для вас еще раз:

"Исходный код программ на питоне в общем случае не переносим при смене 
2.1 -> 2.2 -> 2.3. Это для меня _очень_ большая проблема, решением 
которой на почве сервера приложений Zope я занимаюсь уже два года, и 
об этой проблеме в свое время было написано не мало писем 
русскоязычной питоновской рассылке."

Только что (см. патчи к Z262) пришлость устранять из Zope 
несовместимости с новой версией python. Если вы загляните на сайт
zope.org, то увидите, что половина changes в Zope263 посвящены именно 
переносу его на python23.

> /usr/lib/python2.2
> /usr/share/python2.2
> Кто прав, Максим или доки на питон, я не знаю, но это, в общем, в
> контексте вопроса, обсуждаемого в _этом_ треде, и не важно.

Скомпиленный питоновский	 модуль нельзя разместить с другим путем. Так 
как после этого он начинает немножко неправильно работать, (кажется, 
в частности, выдавать неверную диагностику). Установлено это было еще 
до моего прихода в команду, и кажется именно этим обусловлена 
__двойная__ байт-компиляция всего питоновского кода. Подробнее об 
этом может рассказать LDV если я правильно понимаю.

> > И такая привязка - хорошо, потому что альтернативы нет.
> Привязка для _скриптов_? Можно сузить область обсуждения: для 
скриптов,
> которыми питоньи .tex-доки конвертируются в различные другие 
форматы?
> Нет, я с Вами не согласен. Если бы это было так, то на питоне вообще
> ничего нельзя было бы писать. По счастью, на таком уровне переезд с
> одной версии на другую осуществляется безболезненно, так что,
> зависимости на python2.2 или python2.3 здесь быть не должно.

Я еще раз вам говорю: такие зависимости есть. Самые заметные из них - 
начиная с версии 23 питоновская программа не должна содержать 
символов из второй половины кодовой таблицы или должна содержать 
специальный заголовок с указанием кодировке. Без этого будет 
выводится warning, вывод которого, в некоторых случаях, приводит к 
нарушению работы скриптов и их окружения. Другие изменения, опять же 
самыае заметные: None стало ключевым словом (половина Access* в Zope 
отвалилась), модуль rotor был задеприкейчен - что опять же привело 
к некислой правке того же Zope.

> Итого, сухой остаток:
> 
> Долой /usr/lib/rpm/brp-bytecompile_python!
> Даешь /usr/lib/rpm/python.{req,prov}!

Сухой остаток: я бы попросил ничего не менять, не разобравшись. 
Прекомпиляцию модулей лучше пока оставить, тем более что именно в 
контексте етого треда, ее изъятие _вашей_ проблемы не решит, из-за 
непериносимости _исходного_ кода на языке питон в _общем_ случае.

Если вы считаете что _ваш_ пакет не должен содержать *pyc & *pyo - вы
можете не _включать_ их в секцию files _вашего_ spec'а. А все 
глобальные изменения порядка комплиции стоит согласовывать со всеми. 
Пока что _лично_я_ против таких изменений, и  я хотя я согласен что 
ситуацию с pyc & pyo надо менять - я против изъятия прекомпиляции как 
таковой, так как наличие байткомпиляции является существенным 
преимуществом питона перед, скажем, перлом. 

> Давайте жить дружно!

Давайте, только прислушивайтесь к чужому мнению? На сегодняшний день 
оно такое:

 1. Перенос байт-кода из одной версии в другую не допустим;

 2. Перенос исходного кода из одной версии в другую может приводить к 
ошибкам, что отменяет возможность решения проблемы двух питонов за 
счет отказа от прекомпиленного кода;

3. Сама проблема двух питонов является надуманной, так как никакой 
необходимости держать два питона на одной машине я не знаю;

4. Отказ от прекомпиляции является большой ошибкой, т.к. 
прекомиплияция являетс существенным преимуществом языка питон.

По поводу py, pyc, pyo - я сейчас работаю над тем, что бы начится 
безболезненно разбивать модули на три составляющих:

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

Я это к тому, что бы было известно в какую сторону думаю, скажем, я.

-- 
Спасибо за проявленное понимание -
-- Андрей Орлов


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