Skip to content

[Verification][Ecosystem] End-to-end vcpkg install integration test across 8 systems #604

Description

@kcenon

What

Add a dedicated integration test workflow that performs a bottom-up vcpkg install of all eight kcenon ecosystem ports using overlay-ports, verifying that the full dependency graph resolves and that each layer produces working find_package targets.

This is the final verification gate for the ecosystem-wide vcpkg readiness rollout. It runs after the per-system fixes (P0, P1) and the automation (P2) have landed.

Why

Individually, each port may install correctly, but the vcpkg readiness analysis raised a concern that has not been tested: does the full dependency graph actually resolve? Cycles, missing transitive declarations, and drift between vcpkg.json and portfile.cmake can all hide until you try to install the entire stack in one shot.

A single CI job that walks the dependency graph from common_system all the way up to pacs_system catches these failures before they reach a downstream user. It also functions as an executable spec for the ecosystem's layering — any future change that accidentally introduces a cycle will turn this job red.

Where

  • New file: .github/workflows/ecosystem-vcpkg-integration.yml in this repo (kcenon/common_system)
  • Supporting consumer projects: tests/ecosystem-consumer/<port-name>/ — one minimal consumer per layer

How

Dependency Layering (Bottom-Up Install Order)

1. common_system        (base, no kcenon deps)
2. thread_system        (depends on common_system)
3. logger_system        (depends on thread_system)
4. container_system     (depends on common_system)
5. network_system       (depends on thread_system)
6. database_system      (depends on common_system)
7. monitoring_system    (depends on logger_system, thread_system, network_system)
8. pacs_system          (depends on monitoring_system + most of the stack)

The workflow installs each port in this order, and after every layer builds a minimal consumer (~10-line main.cpp) to prove find_package → link → run succeeds at that layer.

Failure Diagnosis Matrix

Failure mode Root cause category
vcpkg install fails portfile.cmake (SHA512, feature mapping, source fetch)
find_package fails after successful install Config template (PACKAGE_NAME, lib/cmake// path)
Link error on consumer build install(TARGETS ... EXPORT) PUBLIC headers, namespace/alias mismatch

Acceptance Criteria

  • ecosystem-vcpkg-integration.yml runs on pull_request and nightly schedule
  • All eight ports install sequentially with a single vcpkg overlay
  • Each layer has a minimal consumer project that builds and runs
  • Workflow fails fast with a clear indication of which layer broke
  • Matrix covers ubuntu-latest and macos-latest at minimum (Windows optional initially)
  • Job documents the dependency layer in its name so a red job immediately shows which layer is broken

Dependencies

This verification issue depends on:

  • [P0] container_system portfile.cmake (blocker — cannot install without it)
  • [P1] database_system naming unification
  • [P1] network_system CI workflow
  • (Optional) [P2] SHA512 automation — for sustainable long-term maintenance

Do not start implementation until the P0 and P1 issues are merged.

Scope Boundary

This is a verification issue, not a remediation one. If it uncovers new failures, file dedicated issues for each and link them here.

Metadata

Metadata

Assignees

Labels

ci-cdCI/CD and build automationepicEpic issue tracking multiple sub-tasks

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions