-
v0.48.0 Stable
released this
2026-08-06 21:16:58 +03:00 | 192 commits to master since this releasezoryn 0.48.0
This release opens up devenv networking — published ports on the host loopback and filtered LAN access for the sealed podman container, both contributed by Danil Shein — and teaches
task batchto build on several builders at once, so one run checks a whole batch on several architectures. Underneath sits a round of security hardening and a long list of fixes acrosssubmit, version checking and devenv.devenv: ports on the loopback
With
[devenv] portsin the machine config, a dev server running inside the sealed container is finally reachable from the host:"8080"maps the same port on both sides,"18080:8080"maps a host port to a guest port, and everything binds127.0.0.1only. Ports are arbitrated between environments of the same project — starting one environment stops (not removes) another one still holding the port, so a routine config change no longer needs a manualdevenv clean --all, and a taken host port fails fast with a clear message before the cached container is touched. Contributed by Danil Shein (#136).devenv: filtered LAN access
The new
[devenv.lan]config sub-table (interface+allow) grants the podman container access to exactly the LAN prefixes you list — a pasta sidecar attaches a second network interface to the container and routes only the allow-listed prefixes to the LAN; everything else keeps the default route through the tunnel. The policy is validated up front, route changes are reconciled into the running container without recreating it, andzoryn devenv inspectshows the live routes. Contributed by Danil Shein (#137).task batch on several builders
task batch -bnow accepts a pattern or a comma-separated list matching several builders and builds every package on all of them in parallel, with one log per builder in.gear/. This exists to check a batch on different architectures, not to speed it up: packages are still processed one after another, and each is built on every builder — the batch is deliberately not split, because packages inside it depend on earlier ones through the builder's own hasher repo. While the builds run, each package shows the same live status table aszoryn build, one column per builder.Alongside it, the new
--skip-builtflag (with--test) skips packages whose exact src.rpm is already on the builder and whose git repo has not changed since that build — resuming a long batch no longer rebuilds what already succeeded.task test-rebuild --mkrepo
task test-rebuild --mkrepobuilds a merged task repository (astask mkrepodoes) for all resolved builders and runs every rebuild against it. This fixes false negatives when a task renames a package that dependents pull in via a virtual Provides. The command refuses configurations that would silently test against the wrong repository — a build command without{apt_tmpdir}, or a hasher config withunchecked_initroot_cache. Contributed by Aleksandr A. Voyt (#135).Security hardening
- Repo-declared upstream URLs (
.gear/upstream/remotes, specVcs:/Url:) are checked against a scheme allowlist before reachinggit ls-remote— a malicious repo could declare anext::sh -c ...URL and have git execute the command. - Package names and versions coming from the RDB task API are validated at the parse boundary — path traversal in a field can no longer steer download, clone or log paths outside the intended directory.
- Hook sandboxes run with
--new-session, closing TIOCSTI keystroke injection from sandboxed code into your shell. - The
spec:path from.gear/rulesis kept inside the repository — absolute paths,..traversal and symlinked specs no longer point spec reads and rewrites outside the checkout.
Also in this release
[devenv] dns,dns_searchanddns_optionkeys with matching--dns/--dns-search/--dns-optionflags — resolver settings for both the image build and the container. Contributed by Ajrat Makhmutov (#130).zoryn devenv --timezone ZONEand[devenv] timezoneset the container's timezone viapodman run --tz, with IANA zone completion — handy for debugging timezone-sensitive code.zoryn gitery manage: repositories fully merged into the official gears repos get a greenin gearsbadge;vtoggles a fullgit log-style commit view; the actions menu on the repo detail screen now acts on the selected branch or tag (view log/tree, set default branch, delete branch/tag) — repository-wide actions stay on the repo list, so a stray keypress can no longer delete the whole repository.zoryn gitery: when[gitery] loginis unset, the login falls back to the local part of an@altlinux.orggituser.email.zoryn task newdefaults to thesisyphusrepository whenREPOis omitted, likessh gyle task new(#129).
Fixed
submit
- The gear tag name now comes from
git config gear.create-tag.name, exactly asgear-create-tagbuilds it (#131). --replace=TASK_ID:Nhonours the explicit subtask number unconditionally, in every mode; a:Nnaming a nonexistent subtask is an error instead of a silent mismatch.- Creating the package repository on gitery no longer fails for packages removed from sisyphus or last built from an srpm — the source path is resolved through the RDB
clone_urlAPI, with a fallback toinit-dbplus a full push (#133). - Squashing a duplicate release commit now works for release subjects containing the letter
t(e.g.1.0.beta-alt1).
Version checking
zoryn check versionand the no-watch-file git-tags fallback ofzoryn uphonour the[version]pattern/template from.gear/version-up— no more picking a generically "latest" non-release tag.- Failures are reported as failures: an unreachable remote, a pattern matching no tag, or a broken
[version]config now produce an error and exit 1 instead of "Already up to date!". - A broken or empty watch file no longer suppresses the git-tags check when the spec also carries a git URL.
Builds
- SRPM lookup accepts versions starting with a letter (
lshwB.02.20, gnustepr36614— ~95 sources in p11), sotask rebuild,task test-rebuildandtask batchin rebuild mode find them again. Contributed by Aleksandr A. Voyt (#134). - A builder whose
builders.dfile has no[commands] buildnow builds with the same command every other part of zoryn reports for it — the private fallback that silently dropped--apt-configis gone.
devenv
- Operates on the git repository root when run from a subdirectory (e.g.
.gear/). pids_limitnow also raises podman's lownproculimit, so parallel builds no longer die withposix_spawnp: Resource temporarily unavailable.- Re-entering a stopped cached environment no longer re-resolves
BuildRequiresevery time (and no longer fails offline). - Installing a kernel as a build dependency skips initrd generation, making kernel-heavy dependency sets noticeably faster to install.
- Repo-declared upstream URLs (