canary/.github/scripts
Luan Santos 4f01de4063
build: pin vcpkg registry and developer tools (#4052)
Pin vcpkg registry and native developer toolchain

This commit moves Canary patched protobuf port from the old overlay port model into a versioned local vcpkg registry and pins the native developer toolchain used by local builds and CI.

The goal is to make dependency resolution more reproducible without changing the CMake target structure or the existing CI build flow. The project still builds through the same CMake presets and vcpkg manifest model, but protobuf is now resolved from a controlled repository local registry instead of an unversioned overlay port path.

The vcpkg configuration now uses a pinned builtin registry baseline and a filesystem registry for the local protobuf package. The protobuf package is provided through the new vcpkg registry directory with its portfile metadata wrappers version database and Canary specific patches.

This keeps the patched protobuf dependency versioned inside the repository and makes future dependency updates easier to review because the registry baseline package version port version and patch set are all explicit.

The new local protobuf registry defines protobuf version 6.33.4 with port version 1 and keeps the required dependencies declared through the package metadata, including abseil host protobuf utf8 range vcpkg cmake and vcpkg cmake config. It also preserves optional zlib support through the protobuf zlib feature.

The developer toolchain is now pinned through mise. The repository adds a mise configuration that pins CMake Ninja sccache and Python, sets the default CMake generator to Ninja, and defines standard tasks for bootstrapping configuring building testing installing and checking cache stats.

Pinned tool versions

• mise minimum version 2026.5.15

• CMake 4.3.4

• Ninja 1.13.2

• sccache 0.14.0

• Python 3.14.6

A new bootstrap script installs the pinned vcpkg checkout into the configured VCPKG ROOT path, defaulting to the repository local tools directory. The script clones microsoft vcpkg when needed, fetches and checks out the builtin baseline from the vcpkg manifest, bootstraps vcpkg with metrics disabled, and prints the selected vcpkg root.

Main changes included in this commit

• Moves the patched protobuf port from overlay ports to a local vcpkg registry

• Adds a repository local vcpkg registry directory

• Adds protobuf package metadata under the local registry

• Adds protobuf version database entries for the local registry

• Pins the default builtin vcpkg registry baseline

• Configures protobuf to resolve from the filesystem registry

• Keeps overlay triplets unchanged

• Keeps CMake target structure unchanged

• Keeps the existing CI build flow conceptually unchanged

• Adds protobuf patches inside the versioned registry port

• Adds wrappers and package configuration files needed by the patched protobuf port

• Adds a mise based native developer toolchain definition

• Pins CMake Ninja Python and sccache for local development

• Sets VCPKG ROOT to the repository local tools vcpkg path by default

• Sets Ninja as the default CMake generator for the pinned workflow

• Adds mise tasks for bootstrap configure build test install and cache stats

• Adds a Python bootstrap script for the pinned vcpkg checkout

• Updates CI build workflows to install pinned build tools through mise

• Updates Linux macOS and Windows reusable build workflows to use the repository local vcpkg directory for CMake builds

• Updates CI path filters so changes to mise vcpkg configuration and the local registry trigger the correct jobs

• Updates cmake format checks to use pinned Python setup and hashed Python requirements

• Adds hashed requirements for cmakelang PyYAML and six

• Updates README test instructions to use the pinned mise workflow

• Updates development documentation to describe the unified local setup and build workflow

Workflow behavior after this change

Local developers can install the pinned tools and bootstrap vcpkg from the repository root before configuring or building Canary. The standard path is now based on mise install followed by the repository tasks for bootstrap configure build and test.

CI now sets up pinned build tools through mise before running native build steps. Linux and macOS workflows no longer rely on system installed Ninja from apt or brew for the build tool version. They install only the remaining platform dependencies and use the pinned toolchain for CMake Ninja and Python.

Windows CMake builds also use the pinned tool setup and place vcpkg under the repository local tools directory. Solution builds keep their existing repository vcpkg location behavior where needed.

CMake formatting now installs its Python dependencies through a hashed requirements file before running cmakelang format. This makes the formatting tool dependencies more deterministic and avoids installing unpinned formatter dependencies directly in the workflow.

Validation

• macOS release preset configures successfully with the local registry

• macOS release preset builds successfully with the local registry

• Manual testing was otherwise not reported

Overall this commit makes Canary native build dependency resolution more reproducible by versioning the patched protobuf port in a local vcpkg registry and pinning the developer toolchain through mise, while keeping the existing CMake presets target structure and CI build flow intact.
2026-08-05 09:07:02 -03:00
..
bootstrap_vcpkg.py build: pin vcpkg registry and developer tools (#4052) 2026-08-05 09:07:02 -03:00
docker-quickstart-smoke.sh build(docker): add Canary quickstart with MyAAC and login-server (#3973) 2026-05-25 01:18:52 -03:00
release_metadata.py ci(release): materialize tags before publishing (#4006) 2026-06-10 00:10:14 -03:00
smoke_test_canary.py build(docker): add Canary quickstart with MyAAC and login-server (#3973) 2026-05-25 01:18:52 -03:00