Перейти к содержанию
zoryn/ maintainer-assistant

zoryn check

Проверки до submit и сборки. Проверки spec и packages запускаются автоматически из zoryn up, zoryn build и zoryn submit — также вызываются отдельно.

zoryn check version

Проверить доступность новой upstream-версии.

zoryn check version [-p|--package <name>] [-B <repo>]

Опции:

  • -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 и определение метода обновления.

zoryn check upstream [-p|--package <name>]

--package по умолчанию берётся из поля Name: .gear-spec в текущем каталоге.

Где ищутся данные. Если команда запущена внутри gear-репозитория пакета (поле Name: в spec совпадает с именем), сначала сканируется локальное рабочее дерево — так видны даже незакоммиченные изменения. Когда в локальном дереве watch-файла нет, недостающее берётся из удалённого gitweb (git.altlinux.org, ветка HEAD репозитория gears или srpms); локальные данные при этом в приоритете. Вне репозитория пакета опрашивается только удалённый gitweb.

Где ищется watch-файл (в этом порядке):

  1. файл из директивы copy: в .gear/rules или .gear-rules. Подходит и файл с именем просто watch (например, altlinux/watch); шаблон * подставляется именем пакета;
  2. .gear/watch;
  3. <package>.watch;
  4. .gear/<package>.watch;
  5. debian/watch.

Выводит, найден ли watch-файл, его источник, VCS URL и upstream git-репозиторий.

zoryn check spec

Валидация RPM spec-файла перед submit.

zoryn check spec [--no-network] [SPECFILE] [-B BRANCH]

Проверки:

  • Обязательные поля (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.

zoryn check packages [PATH...] [-b name] [--skip-check=LIST] [--tool=NAME]

Проверяет 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.

zoryn check version-up [--from VERSION] [--to VERSION] [--no-network]

Валидирует секции [version], [changelog], [merge], [batch], [tarball] на неверные значения, отсутствующие обязательные поля и неиспользуемые ключи. Проверяет все секции (включая [sandbox], [add_changelog]) на неизвестные ключи и неизвестные parser/format значения. Опционально симулирует генерацию changelog для диапазона версий.

Опции:

  • --from VERSION — старая версия для симуляции (по умолчанию: из spec).
  • --to VERSION — новая версия.
  • --no-network — без сетевых проверок и симуляции.

Exit code 0 при успехе, 1 при наличии ошибок.