[Python-devel] К вопросу о новых фичах в rpm-build-python

Andrey Orlov cray_devel на neural.ru
Чт Июн 30 13:24:58 MSD 2005


Hi!

Алексей, извини, я тебя и себя поцитирую:

Суть проблемы: программная логика PyXML & XML такова, что либо 
PyXML должен провайдить pythonX.Y(xml.Z) вместо pythonX.Y(_xmlplus.Z),
либо все остальные модули должны требовать pythonX.Y(_xmlplus.Z) вместо pythonX.Y(xml.Z)

Почему так происходит неважно, это такой дерьмовый мир.

Что бы с этим справитья алексей предлагает сделатт некий хак на python.prov.py, 
специфичный именно для этого случая. По этому поводу я должен заявить следующее:


[12:51:26] <cray> Моя позиция по вопросу изменения rpm-build-python носит такой характер
[12:51:58] <cray> Изменения туда вносяться только в том случае, если имеют отношение к заметному количетсву пакетов
[12:52:34] <cray> Изменения, что бы похачить единсттвенный пакет я делать не буду, потому что это криво
[12:52:57] <cray> Переубеждать меня в данном случае бесполезно, я уверен в том, что я прав
[12:53:05] <cray> Так что это мы проехали
[12:53:46] <cray> Все остальные хаки должны строится на базе того пакета, к которому они относятся
[12:55:20] <cray> Если rpm по каким либо причинам не может обеспечить такой функционал для отдельного пакета, то патчится либо rpm, либо rpm-build-python таким образом, что бы такой функционал
можно было обеспечить. Т.е. обеспечивается опять таки более менее универсальное решение
[12:56:47] <cray> Характерный пример: я против того, чбы вписывать в pytoh.req что-то типа : del(l[python2.4(sucks)]) только потому, что это нужно пакету sucs васи пупкина или гвидо - мне безразлично
[12:57:08] <cray> Но я не против создать макрос add_python_skip_req 
[12:57:16] <cray> И такой макрос даже создан
[12:58:15] <cray> еще одно добавление к этому програмному заявлению: если данное изменение носит более универсальный характер чем rpm-build-python
[12:58:25] <cray> то его нужно пропихивать в rpm-build
[12:59:50] *** Алексей Морозов - Отсутствую [Автоматическая смена режима]
[13:00:00] <cray> add_python_skip_req - такого характера не имеет, я однажды уже объяснял почему. Даже появление макроса skip_req или  чего то типа того в rpm-build не отменит необходимости 
макроса add_python_skip_req
[13:00:58] <cray> А вот фильтрация и переписывание зависимостей такой характер имеют и я предлагаю пропихнуть такое изменение в rpm-build
[13:02:35] <cray> Это в любом случае будет необходимо, так как непараметризуемй код  я python.prov не включу, а параметризация потребует патчить rpm-build по любому - так он устроен


Смысл возможного изменения rpm-build - это добавить возможность задания фильтра, переписывающеего
зависимости. Выглядит примерно так: Создается специальный макрос, позволяющий задать фильтр, который 
будет примен к строке provides (или Requires) после срабатывания find.prov (find.req). С точки зрения потреителя,
наша проблема при наличии такого кода решалась бы примерно так:

%CreateReqFilter sed -e "s/_xmlplus/xml/g"

------------------------------------------------------
Если мы напишем соотв. патч, я попробую пропихнуть его Диме. Если не пропихнется Диме - я пропихну его 
---------------------------------------------------
в свои коды, и мы эту проблему решим. 
-----------------------------------------------------

Я специально подчеркнул строки, обратите внимание на них.

Так же хотел бы отметить следуюшее:

[13:04:34] <cray> Ну и напоследок: rpm-build ___содержит__ коды для переписывания зависиомстей. Эти коды предназнаяены специально для таких случаев как этот. Я предлагаю изучить для начала вопрос,
можно ли воспользоваться этим функцтоналом, прежде чем пытаться городить что-то своё
[13:05:01] <cray> А если вдруг окажется что все это имеет ценность только для модуля PyXML
[13:05:30] <cray> то в модуль PyXML соответствующие зависимость можно вписать в полуручном режиме

Как показали эксперименты, способ вида 

Provides: $(find_povides /usr/lib/python2.4/site-packages/_xmlplus|sed -e "s/_xmlplus/xml/g" ) не прокатил. К сожалению.
Так как поля означиваются до выполнения операции install. 

Тем не менее, если это действительно ценно только для PyXML ^), и по крмре на некий переходный периол (пока не пропатчим
соотв. пакеты) можно сделать так:

find_povides /usr/lib/python2.4/site-packages/_xmlplus|sed -e "s/_xmlplus/xml/g" >PyXML-X.X.X-provides.lst

SourceN: PyXML-X.X.X-provides.lst
Provides: $(cat %SOURCEN)

Кажется, Алексей может предложить более грамотный способ с включением списка 
зависимсостей из внешнего источника.

-- 
WthBstRgrds -- Андрей Орлов --  
 --- http: www.neural.ru, mail: cray на neural.ru, jid: cray на altlinux.org ---
----------------------------------------


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