[devel] Обновление numpy и matplotlib

Ivan Zakharyaschev imz на altlinux.org
Вс Апр 16 19:46:19 MSK 2017


On Sun, 16 Apr 2017, Антон Мидюков wrote:

> 16.04.2017 15:43, Ivan Zakharyaschev пишет:
>>  On Sun, 16 Apr 2017, Антон Мидюков wrote:
>> 
>> >  Я не нашёл, какие пакеты зависят от этих провайдесов, потому собрал без 
>> >  них сегодня. И эти модули к тому же не импортируются никак, по крайней 
>> >  мере в
>>
>>  В новой сборке благодаря Вашим улучшениям список Provides, не проходящих
>>  проверку, значительно сократился!
>>
>>  $ apt-repo --hsh-apt-config=/home/imz/.hasher/sisyphus/apt.conf test
>>  181544 rpm-build-python3 python3-module-matplotlib
>>  $ hsh-shell --mount=/proc,/dev/pts
>>
>>  [builder на localhost .in]$ /usr/lib/rpm/check-python3-provs-importable.sh
>>  python3-module-matplotlib; echo $?
>>  matplotlib.backends.backend_cairo
>>  matplotlib.pylab
>>  matplotlib.pyplot
>>  pylab
>>  123
>> 
> Причины нашёл.

> Для matplotlib.pylab, matplotlib.pyplot и pylab ситуация аналогичная. Им 
> нужна провайдес typelib(Gtk), которую предоставляют два пакета libgtk+3-gir и 
> libgtk+2-gir. Но здесь уже косяк rpm-build-gir, который определяет 
> зависимость без указания версии. Эту тему я с месяц назад пытался поднять, но 
> никто не откликнулся.
>
> Итак, что лучше исправить всё в спеке пострадавшего пакета или в косячных 
> пакетах, из-за которых он пострадал, и вероятно страдают и будут страдать 
> другие пакеты?

Лучше, конечно, в косячных пакетов, если удалось с этим разобраться.

> Для matplotlib.backends.backend_cairo требуется пакет python3-module-pycairo, 
> а зависимость у него на провайдес libcairo.so.2
> Но этот же провайдес предоставляет python-module-pycairo Из-за этого в чистом 
> хэшере ставится python-module-pycairo для удовлетворения зависимости пакета 
> python3-module-matplotlib Получается, что это косяк пакета 
> python-module-pycairo

По-моему, там проще. python3-module-matplotlib содержит модуль 
matplotlib.backends.backend_cairo, для работы которого нужна какая-то 
реализация работы с cairo. Но никакого формального Requires на cairo и 
питоньий cairo-модуль у пакета matplotlib.backends.backend_cairo нет.

У меня в хешере поставилось только это:

[imz на basalt ~]$ hsh-shell --mount=/proc,/dev/pts
[builder на localhost .in]$ rpm -qa '*cairo*'
libcairo-gobject-1.14.4-alt1.x86_64
libcairo-1.14.4-alt1.x86_64
[builder на localhost .in]$ rpm -e libcairo
error: Failed dependencies:
 	libcairo.so.2()(64bit) >= 
set:mftjiSDpqFHAVc36cHM5cYYiadA6gsOohUuyDdcHca4Lr183bLNevUeaZ1VjZkuLKx4jWY9X5HMvSz2EkppmVxDyLeycKEaMYIs6bdclqVgCDjycEXZgTHQYGP1JOJhSQawzEqigwWlvTy3A0gSLs0B5V0GcbbOofFRxluXxoVoljmrUDOY1uxZLIJjtKcZEBrzq2y9OEq3O34np87 
is needed by (installed) libpango-1.40.5-alt1.x86_64
 	libcairo.so.2()(64bit) >= 
set:metjiSz8j4Eq2wswsKE1ysyq1cMMjiOpfWWvr2eVLkZsW6XMCDx01ffxtQol75Pq1M1FROohj5xtZgDVyuIYcU89uGCGEgl4scNlK93Mu2DPJdsBTOxTb2sFSgvPzF8EHwGByAZnQL5ZFC7T0X7ZGeZafpUB06KDnpl2MpAe7YU1aqfg2F8IQ3leriMcTx7mw7neGNdFjyv0t68lmMr1wxFDnwsguIpqdOOczt4y9X5vGaENc5AzdYR2Z9WWfyMd9ljogW6p9h290yZ14OB3MUUY67fyeM82W9Z3FIijp15GYWxsREevgXmE3ZtgLynFOZEvGHYiAlE55cW8GhPN5YAkVjM5pw6nQVwX4WGv2cX0 
is needed by (installed) libgtk+4-3.90.0-alt1.x86_64
 	libcairo.so.2()(64bit) >= set:mjQZ8JL9Iqnj3IVExlKJyDe is needed by 
(installed) python3-module-pygobject3-3.24.1-alt1.x86_64
 	libcairo = 1:1.14.4-alt1 is needed by (installed) 
libcairo-gobject-1:1.14.4-alt1.x86_64
[builder на localhost .in]$

т.е. версия про то, что вытягивается не тот python*-module-pycairo не 
проходит, потому что ни одного такого вообще не вытянулось. А у них с 
зависимостями вроде всё более-менее в порядке, ошибок нет:

$ rpm -qp /ALT/Sisyphus/x86_64/RPMS.classic/python3-module-pycairo-1.10.1-alt3.git20121222.1.1.x86_64.rpm --requires
/usr/lib64/python3/site-packages
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libcairo.so.2()(64bit) >= 
set:mekW4hu5c38Fq0pNZjg0jZ1dgA3wFYQFV0RP9DVv59KiEs9gPMldUdmHhxNlaf312upFNGeOebZvoe8mQkNJOGA8T75CbWNO3mEK7ZhU8V9lZFOrzDGFaak517jsB7Wcvb0wVe9IQ3t1PZyaksXgeiBYltDlZtHgqsliuZkalWZl1lb599aR5qTpG9moZEV7vahOu0C44MttXxWZ9uA7xOyIpYPD4cLCPw1j9fMzEe7YU1aqfgA4OhreriMcTxDKKQwZFlUkYcKskDPIQglmOkCT3r6Sfwe3AaTenJn0EuKPNmhm6kaxkBAJ2wP3i7RqtNo7xoOuNDG2qCO3ToXTnSMnbQDaIvrO8wFCE5ZaQrABApIqIhpfFkt0YU0dIlMV0abGxv5WkDTUUhQNI0DjbOH6NrIAABf0EDIMZmRf2jp15GYWxsRA9MnQJMkPOUr85cOZEvG8HRRlE55rqDc6f5REVUjWdoxriGY9UOjWOJNBYZixkvrgqCmfWXRjwp7
rpmlib(SetVersions)
python3.5-ABI(64bit)
rtld(GNU_HASH)
rpmlib(PayloadIsLzma)
$

Кажется, можно просто дописать

%py3_requires cairo

если нет потребности отпиливать эту зависимость в отдельный подпакет. 
(Если есть альтернативные провайдеры, можно было бы при желании отпилить 
два подпакета, каждый со своим Requires :) )

-- 
Best regards,
Ivan


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