[devel] check-python3-provs-importable.sh

Ivan Zakharyaschev imz на altlinux.org
Пт Окт 6 15:56:46 MSK 2017


Hello!

On Fri, 6 Oct 2017, Vitaly Lipatov wrote:

> (В ответ на комментарий №5)
>>  Действительно, было плохо, теперь проходит проверку (которую я, пользуясь
>>  моментом, ещё раз порекламирую):
>>
>>  $ apt-repo --hsh-apt-config=/home/imz/.hasher/sisyphus/apt.conf add 190330
>>  $ apt-repo --hsh-apt-config=/home/imz/.hasher/sisyphus/apt.conf test ''
>>  python3-module-sip python3-module-PyQt5 && { hsh-run
>>  --mount=/proc,/dev/pts
>>  /usr/lib/rpm/check-python3-provs-importable.sh python3-module-PyQt5; echo
>>  $?; }
>>  ...
>>  0
>>  $ apt-repo --hsh-apt-config=/home/imz/.hasher/sisyphus/apt.conf test ''
>>  python3-module-PyQt4 && { hsh-run --mount=/proc,/dev/pts
>>  /usr/lib/rpm/check-python3-provs-importable.sh python3-module-PyQt4; echo
>>  $?; }
>>  ...
>>  PyQt4.uic.pyuic
>>  123
>>  $ hsh-shell --mount=/proc,/dev/pts
>>  [builder на localhost .in]$ python3 -c 'import PyQt4.uic.pyuic'
>>  Error: one input ui-file must be specified
>>  [builder на localhost .in]$
>>
>>  А это какой-то странный модуль попал в Provides. (И зависимости на
>>  python3-module-sip не хватило почему-то.)
>>
>>  Возвращаясь к исходной проблеме. Интересно будет узнать, оно когда-то
>>  работало,
>>  а потом стало падать, или сразу было собрано в нерабочем виде.
>
> Какая-то сложная штука, я не понял, как применить. Проблема была в том, если 
> если обновить sip, то ломаются PyQt{4,5}. Это было всегда, но мантейнеры 
> ничего не указали в пакете, чтобы этого избежать.
>
> Я так понимаю, при сборке python-module-sip такая проверка ничего бы не дала, 
> если не проверять всех, кто использует его непосредственно:

Да, по-моему, ты всё понял и рассказал. Спасибо, что разобрался и 
рассказал про причину падения!

В этой штуке нет ничего сложного. Скрипт просто читатет список Provides 
указанного пакета и пробует каждый из них по очереди импортировать. Если 
случается ошибка, печатает название модуля. Пока что я просто предлагал 
вручную так проверять пакеты. Лучше в минимальном окружении в hasher, 
чтобы выловить больше проблем. (Потом можно будет сочинить службу 
проверки, работающую в режиме repocop. И потом, возможно, автоматизировать 
проверку при сборке пакета, что не очевидно, что полезно. В частности, 
этот случай -- это пример, почему.)

Действительно, если дело в смене версии sip, то эта проверка при сборке 
пакетов с модулями ничего бы не дала. (А автоматизировать в сборочнице 
проверку всего, что имеет пересобираемый пакет в каестве зависимости -- 
пока такого механизма нет.)

> $ epm whatdepends python-module-sip | grep -v sip
>  $ apt-cache whatdepends python-module-sip
>   qgis-python-2.18.13-alt1
>   python-module-kde4-4.14.3-alt1
>   python-module-qt-3.18.2-alt1.29855a84d8b6.4
>   python-module-PyQt4-4.11.4-alt2.1.1
>   kf5-kdelibs4support-devel-5.38.0-alt1.S1
>   calibre-3.8.0-alt1
>   python-module-projex_xqt-2.0.2-alt1.git20150111.1.1
>   python-module-TraitsBackendQt-3.6.1-alt1.svn20110127.1
>   puddletag-1.2.0-alt1
>   ninja-ide-2.3-alt2
>   luma-3.0.7-alt1
>   hgview-1.9.0-alt1
>   python-module-veusz-1.25.1-alt1
>   python-module-qbzr-0.23.1-alt1
>   kde4games-kajongg-15.4.3-alt1
>   kde4-kate-4.14.7-alt2
>   eric4-4.5.23-alt1
>
>
> -- 
> С уважением,
> Виталий Липатов,
> Etersoft
>
>


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