Hasher/vm-run: различия между версиями
Vt (обсуждение | вклад) мНет описания правки |
Vt (обсуждение | вклад) Нет описания правки |
||
Строка 19: | Строка 19: | ||
vm-run "''команды запуска тестов...''" | vm-run "''команды запуска тестов...''" | ||
Если тяжелые тесты имеет смысл запускать только под KVM и не запускать под эмуляцией, то следует использовать опцию <tt>--kvm=cond</tt>, она работает более надежно чем проверка <tt>[ -w /dev/kvm ]</tt> | Если тяжелые тесты имеет смысл запускать только под KVM и не запускать под эмуляцией, то следует использовать опцию <tt>--kvm=cond</tt>, она работает более надежно чем проверка <tt>[ -w /dev/kvm ]</tt>. В случае, если поддержка KVM не будет обнаружена <tt>vm-run --kvm=cond</tt> не запустит команду, но завершится успешно: | ||
%check | %check | ||
vm-run --kvm=cond make check | vm-run --kvm=cond make check | ||
=== Включение kvm === | === Включение kvm === | ||
Для ускорения работы тестов полезно настроить kvm в hasher. См. [[Hasher/FAQ#%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_%D0%B2_%D1%85%D1%8D%D1%88%D0%B5%D1%80%D0%B5_qemu_%D1%81_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%BE%D0%B9_kvm?|Hasher/FAQ: Как запустить в хэшере qemu с поддержкой kvm]]. Поддержка kvm есть на всех основых архитектурах | Для ускорения работы тестов полезно настроить kvm в hasher. См. [[Hasher/FAQ#%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C_%D0%B2_%D1%85%D1%8D%D1%88%D0%B5%D1%80%D0%B5_qemu_%D1%81_%D0%BF%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%BA%D0%BE%D0%B9_kvm?|Hasher/FAQ: Как запустить в хэшере qemu с поддержкой kvm]]. Поддержка kvm есть на всех основых архитектурах. | ||
{{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=hasher|category=hasher|sortkey={{SUBPAGENAME}}}} |
Версия от 02:05, 17 декабря 2021
Иногда для запуска тестов в секции %check требуются рутовые привилегии, чтоб обойти это ограничение есть пакет rpm-build-vm (анонс), который позволяет запустить произвольную команду под qemu с псевдо-рутовыми привилегиями.
Он работает по аналогии с virtme, eudyptula-boot, vido и т.д. — бутится Linux ядро, где корень файловой системы (то есть содержимое hasher) предоставлен внутрь qemu по протоколу 9p, а init запускает вашу команду. Нужно учитывать, что хоть внутри виртуализации у вас будут рутовые привилегии, но снаружи будет обычный юзер builder. Если для тестов надо создавать файлы под рутом, то можно использовать tmpfs или создать ext4 образ в файле и примонтировать его куда требуется. Код возврата вашей команды вернется из vm-run.
Справка по возможностям: vm-run --help.
Пример, что добавить в spec для обычного user space пакета (не ядра и не модуля ядра) для запуска make check под рутом:
BuildRequires: rpm-build-vm ... %check vm-run make check
Установка rpm-build-vm автоматически доставляет ядро kernel-image-un-def в hasher, что будет излишне при сборке ядра или ядерного модуля, поэтому есть пакет rpm-build-vm-run, который не имеет зависимостей к ядру. Пример использования для ядра или модуля:
BuildRequires: rpm-build-vm-run ... %check vm-run "команды запуска тестов..."
Если тяжелые тесты имеет смысл запускать только под KVM и не запускать под эмуляцией, то следует использовать опцию --kvm=cond, она работает более надежно чем проверка [ -w /dev/kvm ]. В случае, если поддержка KVM не будет обнаружена vm-run --kvm=cond не запустит команду, но завершится успешно:
%check vm-run --kvm=cond make check
Включение kvm
Для ускорения работы тестов полезно настроить kvm в hasher. См. Hasher/FAQ: Как запустить в хэшере qemu с поддержкой kvm. Поддержка kvm есть на всех основых архитектурах.