Skip to content

Centralize backend-aware OpenVMM builds - #187

Merged
Pedro Henrique Penna (ppenna) merged 1 commit into
devfrom
feat-build-config
Sep 22, 2026
Merged

Pedro Henrique Penna (ppenna) merged 1 commit into
devfrom
feat-build-config

Conversation

@ppenna

@ppenna Pedro Henrique Penna (ppenna) commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • move shared guest, kernel, initramfs, distro-layer, Docker, and OpenVMM runtime settings into typed build configuration objects
  • preserve Alpine, Ubuntu, and all guest selection while routing aggregate builds through one configuration
  • select GNU, musl, or MSVC OpenVMM builds from the requested backend and host OS without probing runtime hypervisor devices
  • normalize OpenVMM outputs and provenance through one Python build path, including the MSHV musl build
  • simplify reusable CI inputs and cache keys, and document the backend-aware build workflow

Validation

Rebased commit 48e5a731802f6ae08152ee0e1bfaf1c221397bc1 onto origin/dev at aa197157f76d97af1c70492aeccec6b5e79283a4.

Local validation:

  • full NVX CLI suite: 312 tests passed
  • adversarial suite: 52 tests passed
  • host inventory suite: 4 tests passed
  • Ruff lint and formatting passed
  • Pyright passed for Linux and Windows
  • Python compile checks and CLI help smoke tests passed

Bare-metal validation (excluding Cobalt):

  • prometheus32 / Linux KVM: python3 scripts/nvx.py build --backend kvm
  • prometheus30 / Linux MSHV: python3 scripts/nvx.py build --native --backend mshv
  • prometheus28 / Windows WHP: python scripts\nvx.py build-openvmm --backend whp
  • python scripts/nvx.py verify passed on every isolated checkout
  • KVM and MSHV dry-run command generation passed
  • OpenVMM executable hashes matched their provenance on all three platforms
  • the MSHV output was confirmed as static PIE and matched the normalized executable

The full aggregate Windows build was not run because Docker is not installed on prometheus28; the platform-specific WHP OpenVMM build passed in the installed Visual Studio environment.

Copilot AI balanced review requested due to automatic review settings September 22, 2026 16:16

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟢 Approval recommended

The centralized build paths are consistently wired, documented, and covered across supported platforms and CI configurations.

Review effort: Balanced
Findings: None

What changed in this PR

Centralizes backend-aware OpenVMM and guest build configuration while unifying local and CI build paths.

Changes:

  • Adds typed build configurations and backend-to-target selection.
  • Normalizes OpenVMM outputs, provenance, caching, and CI invocation.
  • Expands tests and documentation for the unified workflow.
File Description
scripts/​test_nvx_tools.py Expands build, backend, provenance, and CI coverage.
scripts/​nvx.py Routes CLI commands through typed configurations.
scripts/​nvx_tools/​release.py Passes Docker configuration into source collection.
scripts/​nvx_tools/​create_linux_source_archive.py Uses the centralized kernel configuration.
scripts/​nvx_tools/​build.py Implements unified guest and backend-aware OpenVMM builds.
scripts/​nvx_tools/​build_config.py Defines shared typed build configurations.
doc/​usage.md Documents backend CLI options.
doc/​project-structure.md Documents the configuration module.
doc/​ci.md Explains backend-aware CI builds and caches.
doc/​build.md Documents target selection and normalized outputs.
.github/​workflows/​ci.yml Replaces explicit targets and modes with backends.
.github/​workflows/​build-openvmm-binary.yml Simplifies reusable workflow inputs.
.github/​actions/​build-openvmm/​action.yml Uses the unified Python build path and backend cache keys.
.github/​actions/​build-guest-artifacts/​action.yml Includes build configuration in cache hashes.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🟡 Changes recommended

The standard MSHV bootstrap currently bypasses the intended musl build path.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 Low severity

Open (1)

Comment thread doc/project-structure.md
Move shared build settings into typed configuration objects and route the
guest, kernel, initramfs, Docker, release-source, and OpenVMM workflows
through them.

Select the OpenVMM target from the host OS and requested backend instead
of probing runtime hypervisor devices. Support KVM/GNU, MSHV/musl, and
WHP/MSVC through one Python build path, reject unsupported combinations
before starting combined builds, normalize executable destinations, and
record provenance after each successful build.

Simplify the reusable CI workflow to pass only the backend, remove the
duplicate musl shell build, version backend-aware binary caches, and
include shared build configuration in guest artifact cache keys.

Document backend selection and add coverage for CLI routing, platform
validation, native and musl builds, output normalization, provenance,
configuration defaults, source collection, and CI wiring.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot review overview

🔵 Needs a closer look

The broad cross-platform build and CI changes warrant final human review, and one moderate documentation issue remains.

Review effort: Balanced
Findings: 1 Low severity

Open (1)

@ppenna
Pedro Henrique Penna (ppenna) merged commit 58fc642 into dev Sep 22, 2026
24 checks passed
@ppenna
Pedro Henrique Penna (ppenna) deleted the feat-build-config branch September 22, 2026 19:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants