[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