RPM/checkinstall

Материал из ALT Linux Wiki
< RPM

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.