[devel] как правильно использовать %check?
Vladimir D. Seleznev
vseleznv на altlinux.org
Пн Июн 29 18:59:46 MSK 2020
On Mon, Jun 29, 2020 at 06:40:41PM +0300, Ivan Zakharyaschev wrote:
> On Mon, 29 Jun 2020, Dmitry V. Levin wrote:
>
> > On Mon, Jun 29, 2020 at 05:52:24PM +0300, Vladimir D. Seleznev wrote:
> > > On Mon, Jun 29, 2020 at 05:38:13AM +0300, Денис Смирнов wrote:
> > > > On Fri, Jun 26, 2020 at 07:06:16PM +0300, Vitaly Lipatov wrote:
> > > >
> > > > >> А зачем обязательно в PDF? Почему недостаточно HTML? Его и проверить
> > > > >> проще, что там получилось...
> > > > > Ещё у нас есть механизм, использующий упаковку тестов в подпакет
> > > > > checkinstall
> > > > > И некоторые даже о нём знают и пользуются:
> > > > > https://lists.altlinux.org/pipermail/devel/2019-December/209294.html
> > > >
> > > > То есть идея в создании виртуального подпакета %name-checkinstall, у которого в %pre или %post скрипте выполняется тест?
> > >
> > > Мне кажется, это слишком сложно для данного случая. Лучше ограничиться
> > > скриптом в секции %check.
> >
> > С другой стороны, существуют токсичные пакеты, попадание которых
> > в сборочную среду следует избегать. К таким пакетам относится
> > rpm-build-ruby, который имеет свойство гулять по файловой системе,
> > и texlive, который вытягивает несколько гигабайт неизвестно чего.
>
> Ещё не бОльшая, а меньшая сложность оформления запуска тестов как
> *-checkinstall-пакета (зависящего от пакета *-tests) может достигаться
> благодаря автопоиску зависимостей в пакете *-tests -- вместо того, чтобы
> долго и мучительно их вручную подбирать, записывать, потом поддерживать в
> актуальном состоянии.
Это верно, но для простых скриптов это не актуальная проблема, по-моему.
Некоторое время назад в rpm.org сделали автогенерацию BuildRequires [1]
[2], которую можно было бы использовать в том числе для этого. У нас
этого нет, и даже если это реализовать, то придётся дорабатывать
сборочницу, чтобы она могла с этим работать, и делать дополнительные
ручки для rpm-build, как, например, %filter_from_buildrequires.
> Думаю, со многими python-* пакетами это сильно упростило бы спек-файлы.
> Правда, на этом пути есть небольшая проблема: в питоновских тестах пишут
> import-ы часто на более глубоком уровне вложенности, чем учитывает
> автопоиск зависимостей (но это настраиваемый параметр в принципе -- но при
> большой глбуине возникнут проблемы исключающих альтернатив):
>
> try:
> import XXX
>
> Ещё одно преимущество избавления от BuildRequires ради тестов -- разрыв
> циклов по сборочным зависимостям при пересборке множества пакетов
> (например, с новым ABI библиотеки -- тогда старые сборки уже не работают
> в промежутке между старым и новым состоянием) или при бутстрапе новой
> архитектуры: можно сначала кучу пакетов собрать, а когда вся куча будет
> готова -- запустить их взаимозависимые тесты.
В т.ч. для этого %if_with check и прописывается.
Ссылки:
[1] https://fedoraproject.org/wiki/Changes/DynamicBuildRequires
[2] https://github.com/rpm-software-management/rpm/commit/58dcfddc376a7c97de1432f0082be0d5f01adbcd
--
WBR,
Vladimir D. Seleznev
Подробная информация о списке рассылки Devel