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

Alexey Morozov =?iso-8859-1?q?alex_=CE=C1_idisys=2Eiae=2Ensk=2Esu?=
Пт Янв 16 22:58:39 MSK 2004


On Fri, Jan 16, 2004 at 06:10:40PM +0300, Andrey Orlov wrote:
> 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 если я правильно понимаю.
Ok, спросим LDV.

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

> > Итого, сухой остаток:
> > 
> > Долой /usr/lib/rpm/brp-bytecompile_python!
> > Даешь /usr/lib/rpm/python.{req,prov}!
> Сухой остаток: я бы попросил ничего не менять, не разобравшись.
Именно это я и пытаюсь сделать.

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

во-первых, возможны нюансы, касающиеся переносимости собственно кода
(но на это хоть диагностика будет внятная),

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

В данном треде я совсем НЕ РАССМАТРИВАЛ первую проблему, целиком
занимаясь исключительно второй.
> Если вы считаете что _ваш_ пакет не должен содержать *pyc & *pyo - вы
> можете не _включать_ их в секцию files _вашего_ spec'а. А все
Могу. Но, во-первых, для модулей, все же, _хочется_ включать байткод,
причем, откомпилированный именно тем питоном, который потом будет этот
модуль использовать (сейчас это, по факту НЕ ТАК, если вместо %__python
используется, скажем, python-2.3). А во-вторых, мне, все же, больше
нравится оперировать списком файлов, сформированных на этапе

setup.py install

а не произвольными каталогами (хотя, возможно, это и относится к области
[неверных] личных предпочтений).

> глобальные изменения порядка комплиции стоит согласовывать со всеми.
Именно это я и делаю на протяжении последних нескольких писем.

> Пока что _лично_я_ против таких изменений, и  я хотя я согласен что 
> ситуацию с pyc & pyo надо менять - я против изъятия прекомпиляции как 
> таковой, так как наличие байткомпиляции является существенным 
> преимуществом питона перед, скажем, перлом.
Я не пытаюсь изъять байткомпиляцию. См. мои предыдущие письма в этом
треде относительно использования возможностей и данных distutils,
а не компиляции всего, что хоть отдаленно напоминает python.

> > Давайте жить дружно!
> Давайте, только прислушивайтесь к чужому мнению?
Как мне кажется, и так уже прислушиваюсь.

> На сегодняшний день оно такое:
> 
>  1. Перенос байт-кода из одной версии в другую не допустим;
Ура. Здесь мы с Вами едины во мнении.

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

> 3. Сама проблема двух питонов является надуманной, так как никакой 
> необходимости держать два питона на одной машине я не знаю;
Андрей, выше Вы пишете о том, что при переезде с python-2.2 на
python-2.3 отвалилась большая часть Zope, и понадобилось ненулевое время
на исправление ситуации. В другом письме Вы (я все же надеюсь, что это
были Вы) пишете, что разработчики в своей деятельности должны
использовать самые модные наработки.

Отсюда с необходимостью следует, что, если мы говорим о том, что,
с одной стороны, HEAD ведется на последнем (в данный момент, 2.3)
питоне, а, с другой стороны, поддержку предыдущих версий _вашего_
продукта необходимо осуществлять в старом окружении, то мы с
необходимостью приходим к двум питонам и двум версиям каждого из модулей
на машине, по крайней мере, человека, который одновременно осуществляет
и разработку, и поддержку. Возможна, конечно, установка второй версии
питона куда-нибудь в chroot/vmware и т.п. но это требует по сути,
полноценного виртуального сервера.

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

> По поводу py, pyc, pyo - я сейчас работаю над тем, что бы начится 
> безболезненно разбивать модули на три составляющих:
> 
> module-src, module, module-opt - каждый из которых содержит только
> один тип прекомпиленных модулей. Никаких проблем здесь не возникает 
> (так ставится один мой проект), но пока что это не автоматизировано, 
> чем собственно я и занимаюсь. На самом деле, я не вижу проблем в том, 
> что бы при установке модулей, в норме, не ставить исходников этих 
> модулей, что существенно экономит место и решает еще ряд проблем.
Замечательно. То, как это делает, н-р, emacs, можно взять за основу?
И, кстати, я испугался заранее фразы "решает еще ряд проблем". Что там
еще не так?

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

----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20040117/b8d00d76/attachment-0001.bin>


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