zoryn task¶
Task management. Commands task show and task ls use the Tasks API by default for faster response, falling back to SSH if the API is unavailable. The current user is determined from [tasks] user in ~/.zoryn, or from the %packager email in ~/.rpmmacros (rider@altlinux.org → rider).
zoryn task new¶
Create a new task in a binary repository. Wraps ssh gyle task new.
Prints the new task ID on success.
zoryn task show¶
Show detailed information about a build task.
Output modes:
- default — gyle-like key=value format with colorised state, repo, owner.
--brief— compact subtask display (package.git=tag).--json— colorised JSON output (jq-style).
If TASK_ID is omitted, shows the latest task.
zoryn task show 409684 # task details
zoryn task show --brief 409684 # brief format
zoryn task show --json 409684 # colorised JSON
zoryn task show # latest task
zoryn task ls¶
List build tasks with coloured state output.
zoryn task ls [-B repo] [--state STATE] [-p pkg] [--user NAME] [-a|--all]
[--test-only] [--needs-approval ROLE] [-d]
Displays the user's build tasks from gyle. Filterable by repository, state, package, user, and test-only flag.
-B <repo>/--repo <repo>— comma-separated list (sisyphus,p11,p10).--state <STATE>— comma-separated list. Values:NEW,AWAITING,BUILDING,COMMITTING,PENDING,TESTED,EPERM,FAILING,FAILED,POSTPONED,SWEPT,DONE.-p <pkg>— filter by package name.--user <NAME>— show tasks of a specific user (default: current user;ALLfor everyone).-a/--all— alias for--user ALL.--test-only— show only test-only tasks.--needs-approval <ROLE>— filter tasks needing approval frommaintortester.
zoryn task ls # list all tasks
zoryn task ls -B p11 # only p11 tasks
zoryn task ls -B sisyphus,p11 # p11 and sisyphus tasks
zoryn task ls --state FAILED # failed tasks
zoryn task ls --state FAILED,EPERM # failed and eperm
zoryn task ls -p php # tasks with package php
zoryn task ls --user zerg # tasks of user zerg
zoryn task ls --all # all users' tasks
zoryn task ls --test-only # only test-only tasks
zoryn task ls --needs-approval maint # needs maintainer approval
zoryn task ls --needs-approval tester # needs tester approval
zoryn task download¶
Download built RPMs from task to local hasher repository.
Downloads all built binary RPMs from a task. The argument can be a package name or a task ID. If the argument is a number, it is used directly as the task ID; otherwise zoryn searches for a task containing the specified package.
By default, the destination path is determined automatically from hsh --printenv. Use -o to specify a custom output directory (will be created if it doesn't exist).
Options:
-b <repo>— target repository (default:sisyphus, ignored when task ID is specified).--arch <arch>— target architecture (default: fromhsh --printenv, orx86_64with-o).-o, --output <dir>— output directory (default: hasher repo directory).
zoryn task download 404784 # by task ID
zoryn task download ffmpeg # from sisyphus task
zoryn task download 404784 -o /tmp/rpms # to custom directory
zoryn task download libva -b p11 # from p11 task
zoryn task download ffmpeg --arch i586 # i586 RPMs
zoryn task add¶
Add subtask to task. Compatible with ssh gyle task add syntax.
Supported actions:
repo <repo> <tag>— add gear repo subtask.<repo>.git=<tag>— shorthand for repo (for copy-paste fromtask ls).del <pkg>...— mark packages for deletion.rebuild <pkg>...— rebuild packages from repo.copy <pkg> [<from_repo>]— copy pre-built binaries.
zoryn task add 123456 repo php-sphinx.git 8.2.30-alt1
zoryn task add 123456 php-sphinx.git=8.2.30-alt1
zoryn task add 123456 del php-sphinx php-foo
zoryn task add 123456 rebuild php-sphinx
zoryn task add 123456 copy php-sphinx p10
zoryn task add --before 100 123456 repo dune.git 3.17.2-alt1
zoryn task run¶
Queue a task for build. Wraps ssh gyle task run.
zoryn task run [--test-only] [--commit] [--dry-run] [--fail-early] [--fail-late]
[--hurry] [--unhurry] [-m MESSAGE] [TASK_ID] [-d]
If no task ID is specified, the latest task created by the current user is used.
--test-only— stop after test, do not commit.--commit— commit after tests.--dry-run— stop right before queueing.--fail-early— stop building after the first error.--fail-late— do not stop building after the first error.--hurry/--unhurry— enable/disable swift mode.-m MESSAGE— build reason (multi-word messages in quotes).-m -— read build reason from stdin.
zoryn task run # latest task
zoryn task run 123456 # specific task
zoryn task run --test-only -m "fix build for aarch64" 123456
zoryn task run --fail-early --hurry 123456
zoryn task run --dry-run 123456
echo "long reason" | zoryn task run -m - 123456 # read message from stdin
zoryn task abort¶
Abort a running task. Wraps ssh gyle task abort.
Task ID supports TAB completion from the current user's task list.
zoryn task approve¶
Approve a task subtask. Wraps ssh gyle task approve.
SUBTASK can be a subtask number, package name, or all to approve every subtask. With all the ssh gyle task approve <id> all call is issued once and gyle picks the existing subtasks itself, so earlier task delsub removals never surface as spurious "subtask not found" errors. A comment message can be provided with -m. If -m is not given and stdin is piped, the message is read from stdin.
zoryn task approve 123456 1 # approve subtask #1
zoryn task approve 123456 php-sphinx -m "LGTM" # approve by package name
zoryn task approve 123456 all # approve all subtasks
zoryn task approve 123456 1 --revoke # revoke approval
echo "Checked" | zoryn task approve 123456 1 # pipe message from stdin
zoryn task disapprove¶
Disapprove a task subtask. Wraps ssh gyle task disapprove. Same usage as approve, including the all behaviour: a single ssh gyle task disapprove <id> all call is issued and gyle iterates over existing subtasks itself.
zoryn task disapprove 123456 1 -m "Needs fixes"
zoryn task disapprove 123456 all -m "FTBFS"
zoryn task disapprove 123456 1 --revoke
zoryn task delete¶
Delete subtask from task by package name or subtask number. Also available as zoryn task delsub (gyle-compatible alias).
zoryn task delete <task_id> <package|subtask> [-d]
zoryn task delsub <task_id> <package|subtask> [-d]
The second argument can be:
4200— subtask number.php-sphinx— package name.php-sphinx.git— package name with.gitsuffix.php-sphinx.git=8.2.30-alt1— package name with tag (for copy-paste fromtask ls).
zoryn task rm¶
Remove a task.
zoryn task genbatch¶
Generate batch config from an existing task.
Reads the task structure and generates a batch config file for rebuilding. See Batch configs for the format.
zoryn task refresh¶
Refresh stale subtasks in a task — pulls in newer package versions from the repo to replace stale ones. By default, compares rebuild subtasks against the task's branch; --from <branch> --types <list> extends to other subtask kinds.
Options:
<task_id>— task to refresh.--from <branch>— repo branch to compare against (defaults to the task's branch).--types <list>— subtask types to touch (comma-separated). Values:rebuild(default),copy,gear,srpm; plus the shortcutsALL(everything exceptdel) andbuild(=gear,srpm). Required when--fromis given.--dry-run— show what would be refreshed without changing anything.
zoryn task refresh 123456 # refresh rebuild subtasks on same branch
zoryn task refresh 123456 --from sisyphus --types ALL # all kinds from sisyphus
zoryn task refresh 123456 --from sisyphus --types copy # only copy subtasks
zoryn task refresh 123456 --from sisyphus --types ALL --dry-run
zoryn task batch¶
Build a chain of related packages from a batch config.
zoryn task batch <config> [--basedir dir] [--no-build] [--create-task] [--refresh]
[--dry-run] [--test] [--skip pkgs] [-b builder] [-B repo]
[--continue|--abort|--restart] [-d]
Reads the package list from the config file and builds each package in order. Useful for maintaining package groups like PHP extensions where all packages share common settings.
Options:
<config>— config name (from~/.config/zoryn/batch/) or path to.conffile.--basedir <dir>— base directory for packages (overrides config, required if not in config).--no-build— skip local build, only commit/tag/push/submit.--create-task— create new task if not found (adds main package automatically).--refresh— refresh packages with local changes (create new tag, push, replace subtask).--dry-run— show what would be done without making changes.--test— local-only test build mode: build packages locally without gitery/gyle interaction.--skip <pkgs>— skip packages (comma-separated names).-b <name>— select builder for local builds.-B <repo>— target repository (default:sisyphus). Multiple repos can be comma-separated.--continue— resume interrupted batch from the last checkpoint.--abort— discard interrupted batch state.--restart— discard old state and start fresh.
zoryn task batch php-8.4 # build from ~/.config/.../batch/php-8.4.conf
zoryn task batch ~/configs/mypackages.conf # explicit path
zoryn task batch php-8.4 --basedir ~/packages # override basedir
zoryn task batch php-8.4 --no-build # skip local builds
zoryn task batch php-8.4 --create-task # create task if not found
zoryn task batch php-8.4 --refresh # refresh packages with local changes
zoryn task batch php-8.4 --dry-run # preview
zoryn task batch php-8.4 --test # local-only test build
zoryn task batch php-8.4 --test -b arm-server # test on specific builder
zoryn task batch php-8.4 --skip php-xdebug # skip specific packages
zoryn task batch php-8.4 -B p11 # build to p11
zoryn task batch php-8.4 -B sisyphus,p11,p10 # 3 branches with dependencies
zoryn task batch php-8.4 --continue # resume interrupted batch
zoryn task batch php-8.4 --abort # discard state
zoryn task batch php-8.4 --restart # start fresh
zoryn task rebuild¶
Rebuild packages that depend on a package in an existing task.
zoryn task rebuild <task_id|package> [-b repo] [--from-log] [--deps-by-pkg <pkg>]
[--dptype=TYPE] [--depth=N] [--up <basedir>]
[--all-subtasks <basedir>] [--skip LIST] [--skip-gyle-done]
[-f|--force] [builder options] [-d]
Queries the RDB API for packages that have binary dependencies on the specified package, then rebuilds them locally using hasher and adds successful rebuilds to the task.
-b <repo>— target repository (default:sisyphus).--from-log— parse affected packages from FAILED task log instead of the RDB API.-f, --force— force rebuild all packages, ignore existing error logs.--deps-by-pkg <pkg>— query dependencies by package name instead of task ID.--up <basedir>— update packages from upstream instead of rebuilding (see below).--dptype=TYPE— dependency type for RDB query:source(default),binary, orboth.--depth=N— dependency depth for RDB query (1–4, default:1).--skip LIST— skip subtasks by number or package name (comma-separated, e.g.--skip 340,440,vtkaddon).--skip-gyle-done— skip subtasks already built on gyle for the target architecture (only with--all-subtasks).
Builder options (same as zoryn build): --builder=PATTERN, -a/--arch, -B/--build-branch (note: -b is reserved for target repo), -p, -s, --fail-if-busy, --skip-busy.
--from-log searches all available logs (iterations and tries) and finds the last one containing the "ACLs of affected packages" section. For old/deleted tasks, it displays the affected packages list without attempting rebuild.
Update mode (--up)¶
Instead of rebuilding packages from repository, this mode updates each dependent package from upstream:
- Clone package to
<basedir>/<package>if not present (usingzoryn clone). - Fetch and checkout
gears/sisyphusbranch. - Run
zoryn upto update from upstream. - If already up-to-date: add as rebuild subtask.
- If updated: build locally and add as regular subtask.
- On any error: stop immediately and return control to the maintainer.
zoryn task copy¶
Copy task to another repository.
Copies all subtasks from an existing task to a new task in another repository using package names (SRPM names) from the Tasks API. If the source task is not yet completed, the new task will depend on it.
For rebuild subtasks, compares package EVR (epoch:version-release) between source and target repositories. If EVR differs, asks interactively whether to copy from source or rebuild from target. Use --copy-rebuilds or --rebuild-only to skip the prompt.
-B, --branch <repo>— target repository (required).-r, --run— run the task after creating it.-c, --commit— auto-commit after successful build (only with--run).--copy-rebuilds— copy from source when EVR differs (don't ask); same EVR is still rebuilt.--rebuild-only— always rebuild from target, even if source has different EVR.-n, --dry-run— preview planned actions without creating a task.<task_id>— source task ID to copy.
zoryn task copy -B p11 404765 # copy to p11 (create only)
zoryn task copy -B p11 --run 404765 # copy and run in test-only mode
zoryn task copy -B p11 --run --commit 404765 # copy, run, and auto-commit
zoryn task copy -B p11 --rebuild-only 404765 # always rebuild from target
zoryn task copy -B p11 --copy-rebuilds 404765 # copy when EVR differs
zoryn task copy -B p11 --dry-run 404765 # preview
zoryn task test-rebuild¶
Experimental
This command is under active development and may change.
Test-rebuild dependent packages before submitting a task.
zoryn task test-rebuild <task_id> [--arch <arch>] [--builder <pattern>]
[--package PKG]... [--packages-file FILE]
[--dptype=TYPE] [--depth=N] [--skip-ftbfs] [--verify-failures]
[--continue] [--continue-no-refresh] [--top] [-d]
Downloads RPMs from a task, identifies dependent packages via RDB, and test-rebuilds each one locally. Verifies that packages build correctly with new dependencies before committing to a task.
<task_id>— task ID to test.--arch <arch>— architectures to test (comma-separated, e.g.x86_64,aarch64).--builder <pattern>— select builders by name or pattern (see Builder Patterns).--package PKG— add a package to the custom rebuild list (repeatable). Skips the automatic RDB dependency query. Accepts: name,name-version,name-version-release, with/without epoch and.rpmsuffix.--packages-file FILE— read package list from file (one per line,#= comment). Combined with--packageif both given.--dptype=TYPE— dependency type for RDB query:source(default),binary, orboth.--depth=N— dependency depth (1–4, default:1).--skip-ftbfs— skip packages that are already FTBFS on beehive.--verify-failures— after main rebuild, rebuild failed packages without task RPMs to distinguish regressions from pre-existing failures.--continue— continue from previous run, refreshing package list from RDB.--continue-no-refresh— continue from previous run without refreshing.--top— interactive TUI with progress display.-d, --debug— enable debug output.
When --package / --packages-file is used, zoryn fetches the current version of each package from RDB. If a specified version doesn't match the repository, the package is rebuilt with the current version and a warning is shown. Packages not found in the branch are skipped.
Features:
- Multi-architecture support with parallel execution on multiple builders.
- Automatic RPM download from task by architecture.
- Dependent package detection via RDB.
- Custom package list mode with
--package/--packages-file. - Beehive FTBFS detection — shows which packages already fail to build on beehive.
- Incremental rebuild with
--continue/--continue-no-refresh. - Statistics saved to
rebuild-stats.json. - Host load monitoring to avoid overloading build machines.
- TUI mode with
--top. - Persistent search history: Up/Down or Ctrl+R in log search inputs to recall past patterns.
zoryn task test-rebuild 404809 # basic test on local builder
zoryn task test-rebuild 404809 -b @all --arch=x86_64 # test on all x86_64 builders
zoryn task test-rebuild 404809 --skip-ftbfs # skip packages broken on beehive
zoryn task test-rebuild 404809 --continue # continue interrupted build
zoryn task test-rebuild 404809 -b @all --top # interactive TUI mode
zoryn task test-rebuild 404809 --verify-failures # verify failures are regressions
zoryn task test-rebuild 404809 --package foo --package bar-1.2.3-alt1 # custom list
zoryn task test-rebuild 404809 --packages-file ~/rebuild-list.txt # from file
zoryn task manage¶
Interactive full-screen TUI for browsing and managing build tasks.
zoryn task manage [TASK_ID] [--user NAME] [--state STATE] [--repo REPO]
[--needs-approval GROUP] [--no-color]
Options:
TASK_ID— open a specific task directly (skips task list).--user NAME— filter by user (default: current user,ALLfor all users).--state STATE— filter by task state (e.g.TESTED,FAILED,BUILDING).--repo REPO— filter by target repository (e.g.sisyphus,p11).--needs-approval GROUP— filter tasks needing approval (maintortester).--no-color— disable coloured output (also respectsNO_COLORenv variable).
Features:
- Mutt-style single-panel navigation: task list → task detail → dependencies.
- Approve/disapprove subtasks, run/abort/commit/test-only tasks, toggle share, manage dependencies.
- Disable git/lastchange inheritance checks.
- Create new tasks and add subtasks from within the TUI.
- Search tasks (
/) and subtasks (/on detail screen,n/Nfor next/prev). - Persistent search history: Up/Down or Ctrl+R in log search inputs to recall past patterns.
- Build log and event log viewers with syntax highlighting and word wrap.
- Auto-refresh every 15 seconds, manual refresh with
R/F5. - Filter by state, repo, user, needs-approval — all via hotkeys.
- Read-only mode when SSH is unavailable.
- Full keyboard navigation with mouse wheel support.
- Mouse text selection on any task screen — drag to select a range, double-click to select a word; triple-click on a task list entry's wrapped package block selects every
pkg=versionof that task. Multi-row selections are joined with spaces (no line breaks) and copied to the clipboard on release (OSC 52). A single click on a#NNNid still copies just the digits.
zoryn task manage # open with default filters
zoryn task manage --user ALL # show all users' tasks
zoryn task manage --state TESTED --repo sisyphus # filter by state and repo
zoryn task manage --needs-approval maint # tasks needing maintainer approval
zoryn task manage 410005 # open task #410005 directly
zoryn task manage --no-color # disable colours
Press F1 inside the TUI for a complete keybinding reference.
zoryn task log¶
View build or event logs in the TUI viewer.
zoryn task log <task_id> # event log
zoryn task log <task_id> <subtask> # select architecture
zoryn task log <task_id> <subtask> --arch x86_64 # build log
zoryn task log <task_id> <subtask> --arch x86_64 --srpm # SRPM log
Subtask can be a number or package name (TAB completes from the task):
Options:
--arch <arch>— target architecture (requires subtask).--srpm— viewsrpm.loginstead of main log (requires--arch).--no-color— disable colours in TUI.