RPM/checkinstall
checkinstall-подпакет как альтернатива %check
Создание checkinstall-подпакета вместо %check
упрощает для авторов спеков задачу запуска интеграционных тестов (создания подходящего окружения для них и прописывания их дополнительных зависимостей), а для репозитория пакетов — устраняет циклы по сборочным зависимостям (в случае бутстрапа новой архитектуры или новой версии сборочной зависимости, такой, как python3, например). Так как дополнительные зависимости этих тестов пишутся в Requires:
этого подпакета, и не надо усложнять BuildRequires:
, так же тестируемые бинарники уже лежат в месте инсталла, а не в %buildroot или build/src dir. (Однако, этот метод не подходит для make check
.)
Предполагается, что checkinstall-подпакет запускает тесты в своих скриптах %pre
или %post
, а сборочница girar выявит ошибки на стадии install check и не пропустит пакет.
То есть — для вашего пакета %name
во время install check будет так же проверен (т.е. просто установлен) пакет %name-checkinstall
и выполнятся его %pre
и %post
скрипты. Ваш пакет необходимо поставить в зависимость к checkinstall
подпакету. Обратите внимание, что в отличии от секции %check
в %post
и %pre
скриптах нет errexit
по умолчанию, так что не забудьте сделать set -e
, если нужно.
checkinstall
-пакет, тестирующий ваш пакет, может быть запакован отдельно (из другого spec'а), независимым пакетом (например, external-checkinstall). При условии, что он собирается в том же задании или вытаскивается по зависимостям одного из собирающихся пакетов (очевидно, какого-то из того же компонента репозитория, т.е. *-checkinstall), girar будет его устанавливать на стадии install check, выполнять его %pre
- и %post
-скрипты и обнаруживать их ошибки. (Приходит в голову ещё один вариант "автоматизации" попадания external-checkinstall в то же задание, где находится тестируемый пакет: при сборке external-checkinstall записывать в него жёсткую зависимость на текущую версию тестируемого пакета на момент сборки, что приведёт к возникновению unmet dependency в репозитории пакетов при сборке туда другой версии тестируемого пакета и заставит мейнтейнера добавить в задание rebuild external-checkinstall. На практике не применялось.)
checkinstall не проверяется ALT beekeeper'ом (пересборка на x86), так что если нужны регулярные проверки, то придется использовать %check.