[devel] python/python3 deps

Dmitry V. Levin ldv на altlinux.org
Пт Апр 5 03:36:32 MSK 2013


On Fri, Apr 05, 2013 at 02:30:52AM +0400, Aleksey Avdeev wrote:
> 04.04.2013 12:53, Paul Wolneykien пишет:
> > 
> >   Давай с этим прямо в devel на .
> 
>   OK.
> 
> > 
> > 04.04.2013 12:38, bugzilla-daemon на altlinux.ru пишет:
> >> https://bugzilla.altlinux.org/28762
> >> Компонент: Sisyphus/rpm-build-python3
> >>
> >> --- #3 solo <solo на altlinux.org> 2013-04-04 12:37:59 ---
> >> (В ответ на комментарий №2)
> >> ...
> >>> По идее, %_python3_path не нужен, python3.req.py должен обрабатывать все, что к
> >>> нему приехало.  Эх, автора бы спросить...
> >>
> >>    При отладке картина вообще странная: После python3.req.files, python3.req.py
> >> (через python3.req) передаётся только один файл (только строка
> >> "/usr/src/tmp/maliit-framework-buildroot/usr/bin/maliit-exampleapp-settings-python3.py").
> >> Но в переменную files (куда должен попадать весь in, если я правельно понял
> >> код) данная строка не попадает!
> 
>   С этим разобрался (очепятка при отладке).
> 
> >>
> >>    Содержимое files, формируется так:
> >>
> >> files = sys.argv[1:] or [ x.strip() for x in sys.stdin.readlines() ]
> 
>   Здесь всё нормально. А дальше, фильтр:
> 
> >> files = [p for p in files if is_python3(os.path.abspath(p))]
>                              ^^^^^^^^^^^^^
> 
>   Это в python3.req.py. В python.req.py данный кусок несколько отличается:
> 
> files = [p for p in files if not is_python3(os.path.abspath(p))]
>                           ^^^^^^^^^^^^^^^^^
> 
>   Причём реализации функции is_python3() идентичны.

Разумеется, это все было очевидно с самого начала.

>   Т. е. python.req.py, используя парадигму "обрабатываем всё, коме того
> что в каталогах python3", гарантированно обрабатывает более широкое множество
> файлов, чем python3.req.py, использующий "обрабатываем только то,
> что в каталогах python3". Выглядит это как ошибка...

Очевидно, это все именно так и было задумано тогда, когда это было
задумано.  Просто ситуация изменилась, и задуманное тогда уже начинает
устаревать.  Те умолчания, которые были приняты тогда, сейчас уже начинают
работать против нас.  Так что предлагаю подумать, какое поведение по
умолчанию нам нужно, и как более удобно его менять в тех случаях, когда
это понадобится.  Код изменить не проблема, если понятно, что мы хотим
получить.

Собственно говоря, вопрос можно сформулировать так:
если файл *.py, тип которого не "*python* script text*",
находится за пределами /usr/lib*/python*, то как его обрабатывать
по умолчанию, и как этим поведением __удобно__ управлять?

Сейчас все такие файлы, за исключением расположенных в %_python3_path,
передаются python.req.py.

>   Предлагаю исправить следующим образом:
>
> 1. Вообще выкинуть функцию is_python3 из python3.req.py: с вырезанием файлов
> расположенных в /usr/lib*/python2* сейчас справляется python3.req.files (см.
> <http://git.altlinux.org/people/solo/packages/rpm-build-python3.git?p=rpm-build-python3.git;
> a=commitdiff;h=804f000c2a4b300a9087079c7c0fe9ca508c95e5>).
>
> 2. Несколько ужесточить фильтр в python3.req.files -- добавить явное вырезание
> всех файлов, для которых file возвращает python script text executable (кроме
> файлов расположенных в /usr/lib*/python3*, %_python3_path и %_python3_compile_include,
> см. <http://git.altlinux.org/people/solo/packages/rpm-build-python3.git?p=rpm-build-python3.git;
> a=commitdiff;h=db2f2314cea7101b39e49cc3ae10c5c79268c971>).

В результате этого изменения файлы *.py неопределенного типа "* text*" за
пределами /usr/lib*/python* окажутся обработанными сразу всеми
python*.req.py.  Разумеется, такого безобразия допускать нельзя.

Что точно можно сразу исправить - это не передавать в
python3.{prov,req}.files файлы типа "*python script text*" вне зависимости
от их местоположения, по аналогии с тем, как ведут себя
python.{prov,req}.files по отношению к файлам типа "*python3 script text*".
Cм. коммит 0.1.5-alt1-1-g4c1439a у меня в rpm-build-python3.git


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20130405/a6ee9ea1/attachment.bin>


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