diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 96643ba..c634868 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -69,6 +69,19 @@ jobs: - name: Install build dependencies run: .gitea/scripts/macos-deps.sh + - name: Cache OBS SDK bootstrap deps + # cmake/macos/buildspec.cmake downloads the pinned obs-deps bundle + + # obs-studio source into .deps/ and already skips re-downloading via + # SHA256 marker files -- but .deps/ lives inside the checkout, so a + # fresh `actions/checkout` above wipes it every run regardless. This + # cache step is what actually makes that existing skip-logic apply + # across runs. The runner's built-in cache server is on by default + # (cache.enabled: true), so this needs no runner-side config. + uses: actions/cache@v4 + with: + path: .deps + key: obs-deps-${{ runner.os }}-${{ hashFiles('cmake/macos/buildspec.cmake', 'cmake/common/buildspec_common.cmake', 'buildspec.json') }} + - name: Configure, build, test, verify run: .gitea/scripts/macos-build.sh @@ -92,6 +105,16 @@ jobs: # preinstalled tooling (cmake included) can be assumed present. uses: lukka/get-cmake@latest + - name: Cache OBS SDK bootstrap deps + # See the matching step in the macOS job above for why this is + # needed: cmake/windows/buildspec.cmake's own download logic is + # already idempotent, it just never gets the chance because .deps/ + # lives inside the checkout and is wiped by every fresh clone. + uses: actions/cache@v4 + with: + path: .deps + key: obs-deps-${{ runner.os }}-${{ hashFiles('cmake/windows/buildspec.cmake', 'cmake/common/buildspec_common.cmake', 'buildspec.json') }} + - name: Configure, build, test, verify # Windows PowerShell (powershell.exe), not PowerShell Core (pwsh) -- # this self-hosted runner does not have pwsh installed, only the