Skip to content

chore(vcpkg): add vcpkg-configuration.json and ecosystem overrides #238

Description

@kcenon

What

Add vcpkg-configuration.json and version overrides to messaging_system, aligning it with the ecosystem-standard configuration used by the 8 core kcenon projects.

Current State

Item Current Expected
vcpkg-configuration.json Missing Add with ecosystem baselines
vcpkg.json builtin-baseline None Not needed (use vcpkg-configuration.json)
Overrides None Add ecosystem-standard versions
Custom registry (kcenon-*) Not configured Add kcenon/vcpkg-registry

Ecosystem Standard Baselines

Registry Baseline
Default (microsoft/vcpkg) d90a9b159c08169f39adcd1b0f1ac0ca12c4b96c
Custom (kcenon/vcpkg-registry) 77cc46d5ba5e2aef1581f2ec674f83e1ac906b43

Why

  • messaging_system has no baseline at all — vcpkg resolves packages from whatever version happens to be installed locally, making builds non-reproducible across machines
  • Without the custom registry, kcenon-* ecosystem packages cannot be consumed as vcpkg dependencies
  • No overrides means shared packages (asio, fmt, nlohmann-json, spdlog) may resolve to different versions than the core ecosystem
  • Issue Standardize vcpkg.json following ecosystem conventions #201 previously standardized vcpkg.json structure but did not add vcpkg-configuration.json

Dependency Overlap

Package messaging_system uses Core ecosystem pins
spdlog Yes (direct dep) 1.15.3
gtest Yes (testing feature) 1.17.0
benchmark Yes (testing feature) 1.9.5
asio Yes (direct dep) 1.30.2

Where

File Change
vcpkg-configuration.json Create with ecosystem baselines and registry
vcpkg.json Add overrides section

How

Technical Approach

  1. Create vcpkg-configuration.json:
{
  "default-registry": {
    "kind": "builtin",
    "baseline": "d90a9b159c08169f39adcd1b0f1ac0ca12c4b96c"
  },
  "registries": [
    {
      "kind": "git",
      "repository": "https://github.com/kcenon/vcpkg-registry.git",
      "baseline": "77cc46d5ba5e2aef1581f2ec674f83e1ac906b43",
      "packages": ["kcenon-*"]
    }
  ]
}
  1. Add overrides to vcpkg.json:
"overrides": [
  { "name": "gtest", "version": "1.17.0" },
  { "name": "benchmark", "version": "1.9.5" },
  { "name": "spdlog", "version": "1.15.3" },
  { "name": "asio", "version": "1.30.2" }
]
  1. Verify vcpkg install resolves correctly with the new configuration
  2. Update CI workflow to use vcpkg-configuration.json if not already implicit

Acceptance Criteria

  • vcpkg-configuration.json created with ecosystem-standard baselines
  • Overrides added for shared packages (gtest, benchmark, spdlog, asio)
  • vcpkg install succeeds with new configuration
  • CI build passes on all platforms (Ubuntu, macOS, Windows)
  • kcenon-* packages resolvable via custom registry

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    buildBuild system (CMake, etc)dependenciesDependency updates and managementpriority:mediumMedium priority issue

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions