How to update the vcpkg baseline to get newer library versions.
- SDL2 or satellite libraries have security fixes or important bugfixes
- vcpkg ports have been updated with new features or build fixes
- Starting a new development phase and want current versions
Check current versions in vcpkg.json overrides and compare with vcpkg registry:
# See what you have pinned
cat vcpkg.json | grep -A3 '"overrides"'
# Check latest available in vcpkg
./external/vcpkg/vcpkg search sdl2
./external/vcpkg/vcpkg search sdl3cd external/vcpkg
git fetch origin
git checkout master
git pull origin master
cd ../..The baseline is the vcpkg commit that determines which port versions are available:
cd external/vcpkg
git rev-parse HEAD
# Example output: abc123def456...
cd ../..Update the builtin-baseline field:
{
"builtin-baseline": "NEW_COMMIT_HASH_HERE"
}With the new baseline, check what versions are available:
./external/vcpkg/vcpkg search sdl2 --x-jsonUpdate each library's override to the desired version:
"overrides": [
{
"name": "sdl2",
"version": "2.32.10",
"port-version": 0
}
]Keep build/manifest.json in sync with vcpkg.json:
- Update
vcpkg_versionfields (authoritative upstream version; also drives family version Major.Minor via G54) - Update
vcpkg_port_versionfields (recorded injanset-native-metadata.jsonat pack time — G55)
Note: the
native_lib_versionfield was removed from themanifest.jsonschema under D-3seg. Family version is derived from the git tag (MinVer), and the exact upstream patch version lives injanset-native-metadata.jsonper-package (G55) + README mapping table (G57). There is no pre-declarednative_lib_versionto update.
Run the Cake mapping-table regeneration so the <!-- JANSET:MAPPING-TABLE-START --> / <!-- JANSET:MAPPING-TABLE-END --> block in README.md reflects the new upstream version(s):
dotnet run --project build/_build -- --target UpdateMappingTableThe validator (G57) asserts the table is current at post-pack time; staleness is a hard fail. Regenerating after
vcpkg.json/manifest.jsonedits keeps the next release green.
# Run pre-flight check (validates manifest.json ↔ vcpkg.json consistency + runtime triplet overlay coherence)
cd build/_build
dotnet run -- --target PreFlightCheck
# Test a build for one platform
./external/vcpkg/vcpkg install --triplet x64-windows-release
# Test harvest for one RID
dotnet run -- --target Harvest --library SDL2 --rid win-x64git add external/vcpkg vcpkg.json build/manifest.json
git commit -m "chore: update vcpkg baseline to $(cd external/vcpkg && git rev-parse --short HEAD) — SDL2 2.32.10"The version you specified in overrides might not exist at the new baseline. Check:
./external/vcpkg/vcpkg x-history sdl2New library versions may introduce new dependencies or change behavior:
- Check the vcpkg port's changelog:
external/vcpkg/ports/sdl2/portfile.cmake - Run harvest with diagnostic verbosity:
--verbosity Diagnostic - Compare
build/manifest.jsonsystem_exclusions— new system dependencies may need updated exclusion rules
Versions in manifest.json don't match vcpkg.json. Update manifest.json to match.
- SDL2 patch versions (e.g., 2.32.4 → 2.32.10): Generally safe, API-compatible
- SDL2 minor versions (e.g., 2.30.x → 2.32.x): May add new functions, review binding coverage
- Satellite library updates: Usually API-compatible within a major version
- SDL2_gfx: Frozen at 1.0.4, will never update