#71 · CI: cache vcpkg sources and builds for desktop packages
- timeline-app
- pull request
- packages
The Windows and macOS desktop packages build GMP and SQLite with vcpkg. Every run currently downloads their sources from upstream again. On #67, every GNU mirror timed out for `gmp-6.3.0.tar.xz` and `automake-1.17.tar.gz`, which failed the Windows build. **Change:** - **Separate cache folder:** `scripts/desktop/{windows,macos}-dependencies` point vcpkg's downloads (`VCPKG_DOWNLOADS`) and binary cache (`VCPKG_DEFAULT_BINARY_CACHE`) at `$RUNNER_TEMP/och-vcpkg-cache`, outside the clone. - **Cache step:** `desktop.yml` restores and saves that folder with `actions/cache` v6.1.0 (pinned by SHA) on Windows and macOS. The key covers the target plus a hash of the dependency scripts (which pin the vcpkg revision) and the triplets, so changing a pin rebuilds. - **Source bundles:** `packages.mjs` reads the source archives from the relocated downloads folder (`OCH_VCPKG_DOWNLOADS`). That keeps them in the `openchronology-native-source-*` bundle that ships GMP and SQLite sources; a binary-only cache would have lost them. **Effect:** - After one successful run per target, builds restore GMP and SQLite instead of downloading and compiling them, so mirror outages no longer fail the build and the jobs get faster. - The first run after this merges still downloads as before. - Linux is unaffected, since it uses distribution packages. I can't run the Windows or macOS jobs locally. This PR's own desktop jobs exercise the cold-cache path, and the next run will show the warm one. Unit tests pass (200).
Sources
Open #71 · CI: cache vcpkg sources and builds for desktop packages in the timeline