fix(appimage): reuse the Vulkan pywhispercpp build across CI runs (#903)
* fix(appimage): reuse the Vulkan pywhispercpp build across CI runs The x86_64 Build AppImage step spends most of its time recompiling pywhispercpp with Vulkan. That compile depends on the base image, tool_checksums.txt, and the pywhispercpp pin, not on the commit. Cache the native tree under one key shared by CI, Nightly, and Release. * fix(appimage): reject a partial Vulkan cache and key the build tools A failed copy could leave a tree that still contained libggml-vulkan.so, and the next run would reuse it. Check each copy, and keep the previous cache until the new one is in place. The cache id now also covers the pinned cmake and ninja export and the Vulkan compile flags. The hit path is what the build calls, and a test runs it with a stub compile command. * chore(ci): rerun AppImage against the saved Vulkan cache The review fix changed the native cache id, so run 37586979294 compiled pywhispercpp again and saved appimage-native-X64-ebf478b87986e2f6b9d80c97c2f5869fe3120c2bcd48f5d8f5a65fe06ec03015. This commit leaves the base image, tool checksums, pywhispercpp pin, installer tool pins, and Vulkan compile flags alone.
This commit is contained in:
@@ -90,13 +90,21 @@ jobs:
|
||||
if-no-files-found: error
|
||||
retention-days: 7
|
||||
|
||||
# glslc is built from the pinned shaderc commit inside the container -
|
||||
# Ubuntu 22.04 packages none - and depends on nothing but that commit.
|
||||
# glslc and the pywhispercpp Vulkan rebuild are native artifacts. Neither
|
||||
# depends on this commit: the id script keys them to the base image,
|
||||
# tool_checksums.txt, and the pywhispercpp pin.
|
||||
- name: AppImage native cache id
|
||||
id: native-cache
|
||||
run: |
|
||||
set -euo pipefail
|
||||
id="$(bash packaging/appimage/native-cache-id.sh)"
|
||||
echo "id=${id}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Cache AppImage build tools
|
||||
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
with:
|
||||
path: ~/.cache/vocalinux-appimage
|
||||
key: appimage-tools-${{ runner.arch }}-${{ hashFiles('packaging/appimage/tool_checksums.txt') }}
|
||||
key: appimage-native-${{ runner.arch }}-${{ steps.native-cache.outputs.id }}
|
||||
|
||||
- name: Build AppImage (x86_64)
|
||||
env:
|
||||
@@ -305,13 +313,21 @@ jobs:
|
||||
name: python-dist
|
||||
path: dist
|
||||
|
||||
# glslc is built from the pinned shaderc commit inside the container -
|
||||
# Ubuntu 22.04 packages none - and depends on nothing but that commit.
|
||||
# glslc and the pywhispercpp Vulkan rebuild are native artifacts. Neither
|
||||
# depends on this commit: the id script keys them to the base image,
|
||||
# tool_checksums.txt, and the pywhispercpp pin.
|
||||
- name: AppImage native cache id
|
||||
id: native-cache
|
||||
run: |
|
||||
set -euo pipefail
|
||||
id="$(bash packaging/appimage/native-cache-id.sh)"
|
||||
echo "id=${id}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Cache AppImage build tools
|
||||
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||
with:
|
||||
path: ~/.cache/vocalinux-appimage
|
||||
key: appimage-tools-${{ runner.arch }}-${{ hashFiles('packaging/appimage/tool_checksums.txt') }}
|
||||
key: appimage-native-${{ runner.arch }}-${{ steps.native-cache.outputs.id }}
|
||||
|
||||
- name: Build AppImage (aarch64)
|
||||
env:
|
||||
|
||||
Reference in New Issue
Block a user