zoryn check¶
Проверки до submit и сборки. Проверки spec и packages запускаются автоматически из zoryn up, zoryn build и zoryn submit — также вызываются отдельно.
zoryn check version¶
Проверить доступность новой upstream-версии.
Опции:
-p, --package <name>— имя пакета (по умолчанию: полеName:из.gear-spec в текущем каталоге).-B, --branch <repo>— ветка для проверки (по умолчанию:sisyphus).
Если URL: в spec указывает на pypi.org, сначала проверяется PyPI. Иначе используется watch-файл; если он не разбирается или его листинг upstream пришёл пустым, проверка на этом не останавливается, а переходит к git URL. При отсутствии watch-файла сразу берётся git URL из spec (тег Vcs:, иначе URL:). Любой из этих источников должен указывать на известный git-хостинг — GitHub, GitLab, в том числе self-hosted, Codeberg, sr.ht; Vcs: на другом хосте игнорируется: сравниваются удалённые теги, полученные через git ls-remote. Когда в .gear/version-up задан [version] pattern/template, учитываются только теги, подходящие под паттерн, а версия вычисляется по шаблону. Пререлизные теги пропускаются: шаблон обычно отбрасывает пререлизный сегмент, и выбор 2.0.0-rc1 объявил бы версию 2.0.0, которой upstream не выпускал. Если под паттерн подходят только пререлизы, команда сообщает об этом и завершается с кодом 0. Пометка пререлиза ищется лишь в той части тега, которую захватывает паттерн, поэтому пакеты, в имени которых есть rc/dev/pre (orc, mercurial, libevdev), не страдают. Без паттерна работает общая эвристика «последнего стабильного тега», которая может выбрать мусорный нерелизный тег (например, у llama.cpp 9794052 оказывался «новее» b10103).
Команда завершается с кодом 1, если сама проверка не удалась: удалённый репозиторий недоступен, в нём нет тегов или нет тегов с версиями, не разобрался watch-файл или он не дал ни одной upstream-версии, не удался запрос к PyPI, заданный паттерн не подходит ни одному тегу (ошибка конфига — например, опечатка; паттерн указывается в сообщении), теги подходят, но вычислить из них сравнимую версию не удалось (сломан template), либо filter ссылается на группу, которой нет в паттерне (такой фильтр не совпадёт никогда). При этом отсутствие того, с чем сравнивать, ошибкой не считается: если нет ни watch-файла, ни git URL, если filter в [version] закрепляет ветку релизов, для которой upstream ещё не выпустил тег, или пока вышли только пререлизы — сообщение печатается в stdout и код возврата равен 0.
Учтите: это отличается от git-merge-схемы zoryn up, которая сравнивает локальные теги и применяет собственные правила alias/нормализации; tarball-схема при отсутствии watch-файла использует тот же путь по удалённым тегам, что описан здесь.
zoryn check upstream¶
Анализ upstream и определение метода обновления.
--package по умолчанию берётся из поля Name: .gear-spec в текущем каталоге.
Где ищутся данные. Если команда запущена внутри gear-репозитория пакета (поле Name: в spec совпадает с именем), сначала сканируется локальное рабочее дерево — так видны даже незакоммиченные изменения. Когда в локальном дереве watch-файла нет, недостающее берётся из удалённого gitweb (git.altlinux.org, ветка HEAD репозитория gears или srpms); локальные данные при этом в приоритете. Вне репозитория пакета опрашивается только удалённый gitweb.
Где ищется watch-файл (в этом порядке):
- файл из директивы
copy:в.gear/rulesили.gear-rules. Подходит и файл с именем простоwatch(например,altlinux/watch); шаблон*подставляется именем пакета; .gear/watch;<package>.watch;.gear/<package>.watch;debian/watch.
Выводит, найден ли watch-файл, его источник, VCS URL и upstream git-репозиторий.
zoryn check spec¶
Валидация RPM spec-файла перед submit.
Проверки:
- Обязательные поля (
Name,Version,Release,Summary,License,Group). - Устаревший тэг
Packager. - Дубликаты версий в changelog.
- Доступность URL и VCS (если не
--no-network). - Форматирование идентификаторов уязвимостей в changelog (
CVE/BDU/OVE/MFSA) для парсера girar. - Синтаксис закрытия багов в changelog — обнаруживает недопустимые форматы, не распознаваемые girar (например,
(fix #N)вместо(Closes: #N)), номера багов вне диапазона, несуществующие и уже закрытые баги (через Bugzilla REST API, требует сеть). - Непечатаемые символы в полях метаданных — управляющие символы, NBSP, невалидный UTF-8 и другие невидимые байты. Локализованные поля (
Summary(ru_RU.UTF-8),%description -l ru_RU.UTF-8) разрешают валидный Unicode.
Опции:
--no-network— пропустить проверки URL/VCS и RDB-запросы.SPECFILE— путь к spec-файлу (по умолчанию: автоопределение в gear-репозитории).-B, --branch BRANCH— целевая ветка для RDB-проверки версии (по умолчанию:sisyphus).
Ошибки блокируют zoryn submit; предупреждения показываются, но не блокируют. --skip-check на submit — обход проверок.
zoryn check packages¶
Запустить проверки качества пакетов (sisyphus_check и др.) для RPM.
Проверяет RPM на нарушения policy. По умолчанию запускает sisyphus_check --no-check=gpg на хосте. Если пути не указаны — проверяет пакеты в репозитории hasher текущего билдера (local) или в каталоге загруженных результатов (remote).
Также запускается автоматически после каждого успешного zoryn build и zoryn up. Отключение — --skip-check=all.
Опции:
PATH...— RPM-файлы или каталоги (по умолчанию: репозиторий hasher билдера).-b, --builder <name>— билдер для раскрытия шаблонов (по умолчанию: автоопределение).--skip-check=LIST— пропустить указанные инструменты (через запятую, илиall).--tool=NAME— запустить только указанные инструменты.
Конфигурация в ~/.zoryn:
[check.tools.sisyphus_check]
command = "sisyphus_check --no-check=gpg {packages_dir}"
fatal = true
order = 10
zoryn check version-up¶
Валидация конфигурации .gear/version-up.
Валидирует секции [version], [changelog], [merge], [batch], [tarball] на неверные значения, отсутствующие обязательные поля и неиспользуемые ключи. Проверяет все секции (включая [sandbox], [add_changelog]) на неизвестные ключи и неизвестные parser/format значения. Опционально симулирует генерацию changelog для диапазона версий.
Опции:
--from VERSION— старая версия для симуляции (по умолчанию: из spec).--to VERSION— новая версия.--no-network— без сетевых проверок и симуляции.
Exit code 0 при успехе, 1 при наличии ошибок.