Repository navigation
doc: document source-collection prerequisites and release archives - #458
Merged
Pedro Henrique Penna (ppenna) merged 1 commit intoOct 10, 2026
Merged
Conversation
Remove the claim that collect-sources picks up Python initramfs variants; no such variant exists, and it reads only the built Alpine and Ubuntu manifests. State that collect-sources needs the built kernel, Alpine, and Ubuntu artifacts, Docker, and gpgv, and add the archive-release step that CI runs after packaging each platform. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The documentation accurately matches the packaging, source collection, archive, and CI implementations.
0 open findings
What changed in this PR
Clarifies release packaging, source collection prerequisites, and CI archive generation.
Changes:
- Separates binary-only and source-inclusive packaging guidance.
- Documents
collect-sourcesprerequisites and removes a stale claim. - Adds deterministic release archive and CI packaging details.
| File | Description |
|---|---|
doc/distribution.md |
Updates source-delivery prerequisites and release archive documentation. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Pedro Henrique Penna (ppenna)
deleted the
doc-sync/distribution-workflow
branch
October 10, 2026 00:06
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.
Summary
doc/distribution.mddescribed a source-collection behavior that has never existed, said nothing about whatcollect-sourcesneeds before it runs, and stopped before thearchive-releasestep that CI performs after every package. This PR corrects the stale claim, adds the prerequisites, and documents the archive step. It also splits the page into binary-only, source-inclusive, and archive sections. No open PR touches this file.Changes
collect-sourcesincludes their package manifests automatically." No Python initramfs variant exists, andcollect-sourcesreads exactly one Alpine manifest (initramfs.cpio.gz.packages.json) plus the two Ubuntu manifests. The sentence dates from the initial commit, which had no such code either.scripts/nvx_tools/release.py(collect_release_sources,_guest_release_inputs);git show 254a56c38:scripts/nvx_tools/release.pypackagestagesdist/<version>by default, and exactly one of binary-only or source-inclusive is required.scripts/nvx_tools/release.py(package_release);python scripts/nvx.py package --helpcollect-sourcesrequires the built kernel, Alpine, and Ubuntu artifacts but not the Azure Linux ones, so build the guests first._guest_release_inputs(include_azurelinux=False)withReleaseBuildConstants.GUEST_ARTIFACT_NAMES; runningpython scripts/nvx.py collect-sourcesin a clean checkout fails withrequired guest artifact vmlinux not foundcollect-sourcesneeds Docker with the Linux engine (Alpineabuild fetch/verifyin analpine:container, plus the Docker Linux source target) andgpgv(UbuntuInReleaseverification).scripts/nvx_tools/collect_alpine_sources.py(docker run ... alpine:);scripts/nvx_tools/build.py(build_docker_linux_source);scripts/nvx_tools/collect_ubuntu_sources.py(_verify_inrelease,require_tool(gpgv))archive-releasechecks the staged files againstSHA256SUMS, then writes a.tar.gzor.ziparchive outside the staged directory. Option details are linked tousage.md#archive-releaserather than repeated.scripts/nvx_tools/release.py(create_release_archive);python scripts/nvx.py archive-release --helpdevpushes, thelinux-kvm,linux-mshv, andwindows-whpplatform jobs stagedist/nvx-<version>-<platform>with--binary-onlyand archive it as.tar.gzon Linux and.zipon Windows..github/actions/package-release/action.yml;.github/workflows/run-platform.yml(thepushtorefs/heads/devcondition);.github/workflows/ci.yml(release-platform)No design docs changed, so no OpenVMM SHA applies. This was checked at
origin/devd8dc69f9dwith OpenVMMf4566bab0.Follow-ups
These are out of scope here because open PRs touch the files involved (#455, #406, #405, #417), or because they are code changes:
3796991d5andf4566bab0):doc/design/machine-and-device-abi.mdstill says generic egress rules take "optional TCP or UDP destination ports". The pinned OpenVMM also accepts protocol-onlytcp/udp/icmpselectors andtcp/udpFIRST-LASTport ranges. Its fragment rule also changed: only port-specific rules make a policy reject IPv4 fragments. Update this after network: support IPv6 in the portable profile and its egress policies #455, Adopt bind-once microVM image slots #406, and test-microvm: pause and resume a microVM through OpenVMM state control #405 settle.doc/: relocatescripts/setup/README.mdintodoc/. That requires editing links indoc/ci.mdanddoc/setup.md, which open PRs touch.doc/ci.mdsays CI usesOPENVMM_DEPLOY_KEY"to fetch the private submodule", whiledoc/contribute.mdanddoc/project-structure.mddescribe a publicnanvix/openvmm. Separately, thenvx.py inithelp text says "initialize the private submodule". That help text is in code, so it's a suspected stale string, not a doc fix.unittest_results.txt, a captured test log, has been tracked since the initial commit.doc/project-structure.mddrift: it describesdoc/guests/as "(Ubuntu)" although it also holds the Azure Linux chapter, and it lists one example underaci_edge_sandboxes/examples/although there are two.doc/openvmm-upstream-roadmap.mdis a dated plan pinned to fork tip2728f33ea. Refreshing it for the current pin needs a separate analysis.Validation
python -m unittest scripts.test_nvx_tools.CliTests scripts.test_performance.PerformanceTests: 110 tests, OK (1 skipped)doc/distribution.mdand the 5 Markdown files that link to it. Every relative link and anchor resolves, the changed file has one H1 and balanced code fences, anddoc/design.mdlinks every chapter indoc/design/.git diff --check: cleanpython scripts/nvx.py verify:source tree and submodule metadata are consistentdoc/distribution.md, so CI treats this as a documentation-only change.