refactor(pack): two-axis mode model, clearer names, system mode; 0.0.56#134
Merged
Conversation
Pack distribution has two orthogonal axes: libc/static (a build-target property via --target gnu/musl) and bundling depth (the --mode axis). The old modes mixed those frames (Static named libc; Bundle* named depth) and had no 'depend on OS for everything' mode. - Rename --mode values to idiomatic, self-documenting names; keep old names as PERMANENT aliases: bundle-project=vendored (default), bundle-all=self-contained. static unchanged. - Add 'system' mode (Mode::None): bundle nothing, repoint PT_INTERP to the LSB loader — for .deb/.rpm packaging and same-distro fleet deploy. - Split mode_name() into mode_cli_name() (display) and mode_tarball_suffix() (FROZEN wire format) so renaming cannot change release artifact names (guarded by 30_pack_modes.sh tarball-name asserts). - Bump version to 0.0.56 (mcpp.toml + MCPP_VERSION) + CHANGELOG. This release also carries the run/test/build loader-env launch fix (#133). tests/unit/test_pack_modes.cpp + 30_pack_modes.sh system-mode coverage.
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.
Why
mcpp pack's modes mixed two orthogonal axes into one flat set:--target …-gnuvs…-musl).Staticnamed the libc axis whileBundleProject/BundleAllnamed the depth axis — you couldn't tell from the names thatstaticalso bundles everything. And there was no mode that depends on the OS for every.so(third-party included), which.deb/.rpmpackaging and same-distro deployment need.What
--modevalues to idiomatic, self-documenting names, with the old names kept as permanent aliases:vendored(default)bundle-projectself-containedbundle-allstaticsystemmode (Mode::None): bundles nothing, repointsPT_INTERPto the LSB loader. For distro packages / same-distro fleets.mode_name()intomode_cli_name()(display) andmode_tarball_suffix()(frozen), so the rename can't change release tarball names.install.shand download URLs are unaffected (30_pack_modes.shasserts the exact tarball strings).docs/02-pack-and-release.md: libc via--target, depth via--mode.Version
Bumps to 0.0.56 (
mcpp.toml+MCPP_VERSIONinfingerprint.cppm) + CHANGELOG.Tests
tests/unit/test_pack_modes.cpp— canonical names + old-name aliases +system.tests/e2e/30_pack_modes.sh—systemmode (emptylib/, LSB interp, runs) + alias parse.--version→ 0.0.56, unit 19/19, e2e 30 PASS.Design:
.agents/docs/2026-06-19-pack-mode-redesign.md.