[devel] python/python3 deps

Aleksey Avdeev solo на solin.spb.ru
Пт Апр 5 12:14:30 MSK 2013


05.04.2013 03:36, Dmitry V. Levin пишет:
> On Fri, Apr 05, 2013 at 02:30:52AM +0400, Aleksey Avdeev wrote:
...
> 
>>   Т. е. python.req.py, используя парадигму "обрабатываем всё, коме того
>> что в каталогах python3", гарантированно обрабатывает более широкое множество
>> файлов, чем python3.req.py, использующий "обрабатываем только то,
>> что в каталогах python3". Выглядит это как ошибка...
> 
> Очевидно, это все именно так и было задумано тогда, когда это было
> задумано.  Просто ситуация изменилась, и задуманное тогда уже начинает
> устаревать.  Те умолчания, которые были приняты тогда, сейчас уже начинают
> работать против нас.  Так что предлагаю подумать, какое поведение по
> умолчанию нам нужно, и как более удобно его менять в тех случаях, когда
> это понадобится.  Код изменить не проблема, если понятно, что мы хотим
> получить.
> 
> Собственно говоря, вопрос можно сформулировать так:
> если файл *.py, тип которого не "*python* script text*",
> находится за пределами /usr/lib*/python*, то как его обрабатывать
> по умолчанию, и как этим поведением __удобно__ управлять?

  Да. Причём управлять на уровне конкретного подпакета: В случаи, когда
из одного .src.rpm собираются подпакеты для python и python3 умолчальные
обработчики у них должны быть разные.

> 
> Сейчас все такие файлы, за исключением расположенных в %_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.  Разумеется, такого безобразия допускать нельзя.

  Предлагаю формализовать задачу.

  Т. е. у нас файлы делятся на классы, каждый из которых должен
обработать только один из python*.req.py:

1. Файлы в официальных каталогах python (/usr/lib*/python2*) и
перечисленных в %_python_compile_include.

2. Файлы в официальных каталогах python3 (/usr/lib*/python3*) и
перечисленных в %_python3_compile_include (и/или %_python3_path).

3. Всё остальное.

4. Файлы расположенные в каталогах, перечисленных в
%_python{,3}_compile_exclude, исключаются из обработки соответсвующими
обработчиками.

  И основные проблемы у нас с п. 3: относящиеся к нему файлы должны
обрабатываться обработчиком по умолчанию. Хуже, что по логике -- этот
умолчальный обработчик должен индивидуально настраиваться для разных
пакетов.

> 
> Что точно можно сразу исправить - это не передавать в
> 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

  А это, на мой взгляд это приведёт к проблемам: достаточно много файлов
внутри /usr/lib*/python3* определяется file как "*python script text*".
Похоже file гарантировано определяет как "*python3 script text*", только
скрипты с "#! ... python3*" в заголовке и как следствие -- неверно
определяет версию python`а у модулей.

-- 

С уважением. Алексей.


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


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