mirror of
https://github.com/mehah/otclient
synced 2026-08-15 16:29:06 -04:00
fix(cache): canonicalize vcpkg manifest line endings Normalize manifest line endings when generating shared build-cache fingerprints so equivalent vcpkg configurations use the same dependency pool regardless of Git checkout settings. Root cause: - Equivalent Git content can be checked out using CRLF or LF depending on core.autocrlf and local Git configuration. - The previous shared-cache resolver hashed raw manifest bytes. - Two otherwise equivalent worktrees could therefore resolve to different dependency fingerprints and separate vcpkg pools. Main changes: - Normalize CRLF and LF when fingerprinting vcpkg.json. - Normalize CRLF and LF when fingerprinting vcpkg-configuration.json. - Keep registry, overlay, port, patch, and arbitrary payload trees byte-signatured because their contents may be line-ending-sensitive. - Advance the shared-cache contract from schema v3 to schema v4. - Retain recognition of schemas v1 through v3 for auditing and transient cleanup. - Require an exact full-fingerprint metadata match before cleaning fingerprint-specific transient data. - Keep shortened cache directory names backed by full SHA-256 identity metadata. - Update shared-cache setup and cleanup tooling for the v4 layout. - Update documentation with v4 fingerprinting behavior, migration rules, cleanup procedures, and cache paths. Windows build updates: - Move Windows CI to the Visual Studio 2026 hosted runner. - Verify that Visual Studio 2026 provides the native C++ v145 toolset. - Configure MSBuild discovery specifically for the Visual Studio 18.x prerelease range. - Remove the previous Chocolatey-based Visual Studio toolset installation path. Validation: - Reproduced the Release x64 dependency contract in two worktrees with different manifest line endings. - Verified both worktrees now resolve to the same schema v4 dependency fingerprint. - Ran SharedBuildCache.cmake in CMake script mode. - Verified the windows-release preset listing. - Ran PowerShell parser checks. - Ran JSON parsing checks. - Ran documentation portability checks. - Ran git diff --check. This keeps shared vcpkg cache identity stable across CRLF and LF checkouts while preserving byte-sensitive hashing for dependency content where physical file representation can affect behavior. |
||
|---|---|---|
| .. | ||
| ISSUE_TEMPLATE | ||
| workflows | ||
| FUNDING.yml | ||
| labeler.yml | ||
| PULL_REQUEST_TEMPLATE.md | ||