Open
Conversation
Register a native XBPS packager, add the packager-specific config model, and implement naming, metadata, archive writing, and unit coverage for the initial format support. Closes goreleaser#718
Document the new xbps block, add quick start and arch mapping coverage, refresh command docs, and regenerate the public schema. See goreleaser#718
Correct the native writer and acceptance fixtures so install, remove, and metadata behavior match the tested Void lifecycle. See goreleaser#718
Allow format-specific arch overrides to satisfy validation so xbps can use its own normalized values without tripping generic checks. See goreleaser#718
Harden the acceptance flow and container setup so the Void-based install, upgrade, reconfigure, and removal checks run reliably. See goreleaser#718
Add upgrade and preserve fixtures and tighten the Void assertions around file state across package replacement scenarios. See goreleaser#718
Cover metadata ordering, config-file variants, noarch naming, and archive entry behavior to keep the native writer deterministic. See goreleaser#718
Assert the reconfigure path more directly and check props.plist details that should remain stable across the acceptance flow. See goreleaser#718
Add noarch and alternatives acceptance coverage and accept the normalized noarch arch mapping in the native packager tests. See goreleaser#718
Show the xbps settings in the generated example config so users can discover the new format and its primary packager options. See goreleaser#718
Refine the README and docs wording so the support statement matches the current scope and primary Void Linux validation target. See goreleaser#718
Expose XBPS in the upstream build matrix and surface it on the project landing pages so the supported format list stays aligned. See goreleaser#718
Extend the local smoke path to build, install, and query XBPS packages so contributors can exercise the format in the normal loop. See goreleaser#718
Wrap the Void Linux docker command in a folded block scalar so the colon-space in the grep pattern is not parsed as a YAML mapping key, which caused task to reject the Taskfile. See goreleaser#718
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1061 +/- ##
==========================================
+ Coverage 73.50% 74.87% +1.36%
==========================================
Files 23 24 +1
Lines 2767 3276 +509
==========================================
+ Hits 2034 2453 +419
- Misses 510 560 +50
- Partials 223 263 +40 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Wrap the Void Linux smoke command in a folded block scalar so the colon-space in the grep pattern is not parsed as a YAML mapping key. Sync remote repos before install so dependencies declared in the test fixture resolve. Skip xbps in TestCore since it uses dedicated stages covered by TestXBPSAcceptance. See goreleaser#718
Wrap the tar writer in a zstd compressor so generated packages match the compression format used by Void Linux repositories. Reject non-integer release values early with a clear error instead of silently defaulting to revision 1. Update the acceptance dockerfile tar commands for zstd and regenerate schema.json. See goreleaser#718
Remove unused mutable parameter from fileEntry to satisfy the unparam linter. Normalize bare dependency names to XBPS-required format by appending >=0 (e.g. "bash" becomes "bash>=0"). Install zstd in Void Linux dockerfile stages so tar --zstd can extract plists for verification. Rename the package to its conventional filename in the Taskfile install step so xbps-install can locate it during checksum verification.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
xbps packager support
Resolves #718
What this adds
Native XBPS package generation for Void Linux.
Packages are zstd-compressed tarballs containing
props.plist,files.plist,lifecycle scripts (
INSTALL/REMOVE), and content entries, matching theformat consumed by
xbps-rindex,xbps-install, and related tools.Supported features
xbps.archoverride)run_depends), conflicts, provides, replaces, revertsconf_filesmetadata)INSTALL/REMOVEdispatch)xbps.alternatives)xbps.preserve)xbps.tags)How scripts work
XBPS uses a single
INSTALLscript called with positional args ($1= pre/post,$4= yes/no for update). nfpm's four separate script hooks are wrapped intothis dispatch via heredoc extraction to a temp directory and a
caseblock.Same approach for
REMOVE.Testing
xbps/xbps_test.gocovering naming, metadata, plist serialization,script rendering, and error paths
ghcr.io/void-linux/void-glibc-full:preserveflag across upgradesbuild + install + queryloopScope and known limitations
are not exercised in acceptance tests yet.
is what the acceptance tests do).
Changes to shared code
nfpm.go: AddedXBPSstruct,hasAnyArch()replacing inline arch check(now correctly considers all packager-specific arch overrides, not just deb/rpm/apk)
acceptance_test.go: ExtractedacceptWithOldPackage()andacceptPackageTarget()helpers to share upgrade-test scaffolding across formats, added
NoCachetodockerParams, explicitf.Close()before docker build (fixes potential flush race)schema.json: Regenerated via go run ./cmd/nfpm/ schema -o ./www/static/schema.json.The indentation change is from the generation tool; XBPS additions are the only semantic diff.