Summary
pantry install zig-bump@0.1.1 followed by pantry release patch --yes (the
intended downstream flow) fails with error: \bump` binary not found`. Three
distinct issues compound to make this unusable end-to-end:
- The pantry-registry tarball for
zig-bump@0.1.1 ships source files only —
no compiled binary, no build.zig, no install/post-install hook. Nothing in
the install puts a bump binary on PATH or in pantry/.bin/.
- Even if a downstream user tries to build from the installed source (or from
this repo at v0.1.3), the source does not compile on Zig 0.17-dev
because of a half-applied std.ArrayList API migration.
- The GitHub release workflow does not build or attach any binary assets, so
there is also no prebuilt binary that pantry (or anyone) could fetch as a
fallback.
Reproduction
In any project with pantry installed:
$ pantry install zig-bump
> Installing 1 package...
+ zig-bump@0.1.1
1 package installed [6213ms]
$ pantry release patch --yes
error: `bump` binary not found.
Install it with:
pantry install zig-bump
pantry release is a built-in subcommand (pantry 0.9.35) that shells out to
an external bump binary. It cannot find one because pantry install zig-bump
did not install one.
Detail
1. Registry tarball is incomplete and noisy
After pantry install zig-bump, ./pantry/zig-bump/ contains:
bump.zig cli.zig config.zig files.zig git.zig lib.zig main.zig
semver.zig test_version.zig lib.zig settings.local.json
workflows/{ci.yml,release.yml}
._bump.zig ._cli.zig ._config.zig ... (macOS AppleDouble resource forks)
Notably absent: build.zig, build.zig.zon, package.json, README.md,
LICENSE. Present but unexpected: a settings.local.json containing absolute
paths to the original author's machine
(/Users/chrisbreuer/Code/zig-bump/, /Users/chrisbreuer/Code/bumpx/) and a
full set of macOS ._* resource-fork files (indicates the tarball was created
with default macOS tar rather than tar --no-mac-metadata / COPYFILE_DISABLE=1).
Pantry's .bin/ directory in the project (./pantry/.bin/) is empty after install.
2. Source does not build on Zig 0.17-dev
zig build -Doptimize=ReleaseFast against this repo at v0.1.3 on
zig 0.17.0-dev.56+a8226cd53:
src/main.zig:282:38: error: missing struct field: items
var commits = std.ArrayList([]u8){};
~~~~~~~~~~~~~~~~~~~^~
src/main.zig:282:38: note: missing struct field: capacity
The codebase is in a partially-migrated state: src/main.zig lines 282, 414,
439, 465 use the new Zig 0.17 std.ArrayList(T){} empty-init form, while
src/git.zig, src/files.zig, src/cli.zig, src/bump.zig still use the
pre-0.17 std.ArrayList(T).init(allocator) form. So the source compiles cleanly
on no Zig version — pre-0.17 chokes on the empty-init sites; 0.17+ chokes
on the .init(allocator) sites.
build.zig.zon declares .minimum_zig_version = \"0.15.0\", which compounds the
issue: any Zig from 0.15 through 0.17-dev satisfies the declared minimum but
none can actually build the project.
3. Release workflow attaches no binary assets
.github/workflows/release.yml:
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Create Release
uses: stacksjs/action-releaser@v1.2.9
env:
GITHUB_TOKEN: \${{ secrets.GITHUB_TOKEN }}
- name: Publish to Pantry
uses: home-lang/pantry/packages/action@main
with:
publish: zig
install: 'false'
There is no zig build step and no upload-assets step. Consequently the
GitHub releases for v0.1.1 / v0.1.2 / v0.1.3 have an empty assets array, and
the "Publish to Pantry" step has no compiled artifact to upload — explaining
why pantry's registry tarball is source-only.
Suggested fixes
- Make the source build on a supported Zig range. Pick one ArrayList API
and use it consistently. If targeting Zig 0.17+, migrate all
.init(allocator) call sites to the new empty-init / appendBounded-style
API. If supporting both 0.15 and 0.17, gate with a comptime check on
builtin.zig_version. Update .minimum_zig_version in build.zig.zon
to match what actually builds.
- Build and attach binaries in
release.yml. Add a matrix
(macos-latest arm64, macos x86_64, ubuntu-latest x86_64 + aarch64,
windows-latest x86_64), run zig build -Doptimize=ReleaseFast -Dtarget=<triple> for each, and attach the resulting zig-out/bin/bump
(renamed per target) as release assets.
- Make the pantry publish include the binary. Whether that means the
home-lang/pantry/packages/action reads from the GitHub release assets,
or the workflow uploads the compiled binary as part of the publish payload,
the resulting pantry install zig-bump should leave a working bump
binary on the install path. Also fix the tarball hygiene
(COPYFILE_DISABLE=1 / tar --no-mac-metadata, drop
settings.local.json from the published files list).
Happy to PR (1) and (2). (3) likely needs coordination with whoever maintains
home-lang/pantry/packages/action.
Environment
- macOS (Darwin 25.3.0, arm64)
pantry 0.9.35 (d8622c77a)
zig 0.17.0-dev.56+a8226cd53
Summary
pantry install zig-bump@0.1.1followed bypantry release patch --yes(theintended downstream flow) fails with
error: \bump` binary not found`. Threedistinct issues compound to make this unusable end-to-end:
zig-bump@0.1.1ships source files only —no compiled binary, no
build.zig, no install/post-install hook. Nothing inthe install puts a
bumpbinary onPATHor inpantry/.bin/.this repo at
v0.1.3), the source does not compile on Zig 0.17-devbecause of a half-applied
std.ArrayListAPI migration.there is also no prebuilt binary that pantry (or anyone) could fetch as a
fallback.
Reproduction
In any project with
pantryinstalled:pantry releaseis a built-in subcommand (pantry 0.9.35) that shells out toan external
bumpbinary. It cannot find one becausepantry install zig-bumpdid not install one.
Detail
1. Registry tarball is incomplete and noisy
After
pantry install zig-bump,./pantry/zig-bump/contains:Notably absent:
build.zig,build.zig.zon,package.json,README.md,LICENSE. Present but unexpected: asettings.local.jsoncontaining absolutepaths to the original author's machine
(
/Users/chrisbreuer/Code/zig-bump/,/Users/chrisbreuer/Code/bumpx/) and afull set of macOS
._*resource-fork files (indicates the tarball was createdwith default macOS
tarrather thantar --no-mac-metadata/COPYFILE_DISABLE=1).Pantry's
.bin/directory in the project (./pantry/.bin/) is empty after install.2. Source does not build on Zig 0.17-dev
zig build -Doptimize=ReleaseFastagainst this repo atv0.1.3onzig 0.17.0-dev.56+a8226cd53:The codebase is in a partially-migrated state:
src/main.ziglines 282, 414,439, 465 use the new Zig 0.17
std.ArrayList(T){}empty-init form, whilesrc/git.zig,src/files.zig,src/cli.zig,src/bump.zigstill use thepre-0.17
std.ArrayList(T).init(allocator)form. So the source compiles cleanlyon no Zig version — pre-0.17 chokes on the empty-init sites; 0.17+ chokes
on the
.init(allocator)sites.build.zig.zondeclares.minimum_zig_version = \"0.15.0\", which compounds theissue: any Zig from 0.15 through 0.17-dev satisfies the declared minimum but
none can actually build the project.
3. Release workflow attaches no binary assets
.github/workflows/release.yml:There is no
zig buildstep and no upload-assets step. Consequently theGitHub releases for v0.1.1 / v0.1.2 / v0.1.3 have an empty
assetsarray, andthe "Publish to Pantry" step has no compiled artifact to upload — explaining
why pantry's registry tarball is source-only.
Suggested fixes
and use it consistently. If targeting Zig 0.17+, migrate all
.init(allocator)call sites to the new empty-init /appendBounded-styleAPI. If supporting both 0.15 and 0.17, gate with a
comptimecheck onbuiltin.zig_version. Update.minimum_zig_versioninbuild.zig.zonto match what actually builds.
release.yml. Add a matrix(
macos-latestarm64, macos x86_64,ubuntu-latestx86_64 + aarch64,windows-latestx86_64), runzig build -Doptimize=ReleaseFast -Dtarget=<triple>for each, and attach the resultingzig-out/bin/bump(renamed per target) as release assets.
home-lang/pantry/packages/actionreads from the GitHub release assets,or the workflow uploads the compiled binary as part of the publish payload,
the resulting
pantry install zig-bumpshould leave a workingbumpbinary on the install path. Also fix the tarball hygiene
(
COPYFILE_DISABLE=1/tar --no-mac-metadata, dropsettings.local.jsonfrom the published files list).Happy to PR (1) and (2). (3) likely needs coordination with whoever maintains
home-lang/pantry/packages/action.Environment
pantry 0.9.35 (d8622c77a)zig 0.17.0-dev.56+a8226cd53