[devel] Модули python3

Ivan Zakharyaschev imz на altlinux.org
Вт Мар 27 20:30:36 MSK 2018


Hello!

On Tue, 27 Mar 2018, Aleksei Nikiforov wrote:

> Я пытаюсь разобраться с обновлением python3 до версии 3.6.x и возник вопрос: 
> почему архитектурно-зависимые модули python3 в основном лежат в 
> % _libdir/python3 вместо %_libdir/python3.5? Если бы модули лежали в 
> % _libdir/python3.5, то рядом в %_libdir/python3.6 можно было бы положить 
> модули для python-3.6.x, а в будущем и для 3.7.x, а сейчас обновление 
> python-3 невозможно без одномоментной пересборки всего содержимого 
> %_libdir/python3 c новой версией python3.

Не совсем так. Только бинарных модулей.

Во-первых, из-за стремления к политике поддерживать только один вариант в 
Сизифе. С этим все согласились и при последней пересборке с python 3.5.

Во-вторых, технически это тогда должно было бы реализовываться по-другому. 
Если noarch-пакеты общие, как сейчас, т.е. подходят для использования 
любой версией python3, то механизм Requires+Provides в rpm не позволяет 
выразить нужные условия работоспособности. Например:

модуль a импортирует noarch-модуль b, b импортирует c.

a и с -- бинарные.

Тогда когда импортируется a для python 3.6, должен импортироваться b, а 
потом c для python 3.6 тоже. И так же для python 3.5. Соответсвующий 
Requires в пакете с модулем b невозможно написать.

Раз так не получается, остаётся только сборка каждого модуля для каждой 
версии питона, т.е. все-все-все модули в Сизифе надо будет собрать ещё 
раз. Ну и этого может не хотеться, например, потому что слишком долгий 
процесс, если делать вручную.

Теоретически, конечно, всякие варианты возможно, но у нас сейчас такой 
выбран. Вероятно, в Debian по-другому. В Сизифе тоже были предусмотрены 
такие механизмы для размножения модулей, остались атавизмы в виде всяких 
%python_setup_module, которые сейчас не очень полезны. (И этого уже нет 
для Python 3.)

-- 
Best regards,
Ivan


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