| name: "Cache for all OSes" | |
| description: "Needs to be called before any call to ext/.cmd|sh or cmake" | |
| inputs: | |
| extra-key: | |
| description: "Extra cache key to use in the cache name. Useful when several caches are used in one workflow." | |
| default: "" | |
| use-meson: | |
| description: "Whether meson is used" | |
| default: false | |
| use-rust: | |
| description: "Whether rust is used" | |
| default: false | |
| outputs: | |
| ext-cache-hit: | |
| value: ${{ steps.cache-ext.outputs.cache-hit }} | |
| runs: | |
| using: "composite" | |
| steps: | |
| - name: Find workflow path | |
| env: | |
| WORKFLOW_REF: ${{ github.workflow_ref }} | |
| id: workflow-info | |
| run: | | |
| # Remove repository path. | |
| END=(${WORKFLOW_REF/*.github/.github}) | |
| # Remove branch reference starting with @. | |
| MIDDLE=(${END/%@*/}) | |
| echo "Current workflow path is: ${MIDDLE}" | |
| echo "path=${MIDDLE}" >> "$GITHUB_OUTPUT" | |
| shell: bash | |
| - name: Generate meson cache key | |
| if: ${{ inputs.use-meson == 'true' }} | |
| run: | | |
| echo "MESON_KEY=meson-`meson --version`" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Generate empty meson cache key | |
| if: ${{ inputs.use-meson != 'true' }} | |
| run: | | |
| echo "MESON_KEY=meson-none" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Generate cargo cache key | |
| if: ${{ inputs.use-rust == 'true' }} | |
| run: | | |
| echo "CARGO_KEY=cargo-`cargo --version|cut -d' ' -f2`-${{ hashFiles('.github/action/**', steps.workflow-info.outputs.path, 'CMakeLists.txt', 'cmake/Modules/Findrav1e.cmake', 'cmake/Modules/LocalRav1e.cmake', 'ext/rav1e.cmd') }}" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Generate empty cargo cache key | |
| if: ${{ inputs.use-rust != 'true' }} | |
| run: | | |
| echo "CARGO_KEY=cargo-none" >> $GITHUB_ENV | |
| shell: bash | |
| - name: Cache all of cargo | |
| if: ${{ inputs.use-rust == 'true' }} | |
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
| continue-on-error: true | |
| with: | |
| path: ~/.cargo | |
| key: ${{ env.CARGO_CACHE_KEY }}-${{ github.run_id }} | |
| restore-keys: ${{ env.CARGO_CACHE_KEY }} | |
| env: | |
| CARGO_CACHE_KEY: ${{ env.CARGO_KEY }}-${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ inputs.extra-key }} | |
| - name: Cache external dependencies in ext | |
| id: cache-ext | |
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
| with: | |
| path: ext | |
| key: ext-${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ inputs.extra-key }}-${{ env.CARGO_KEY }}-${{ env.MESON_KEY }}-${{ hashFiles('.github/action/**', steps.workflow-info.outputs.path, 'ext/*.cmd', 'ext/*.sh') }} | |
| - name: Cache external dependencies in build/_deps | |
| uses: actions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57 # v4.2.0 | |
| with: | |
| path: build/_deps | |
| key: deps-${{ runner.os }}-${{ runner.arch }}-${{ github.job }}-${{ inputs.extra-key }}-${{ env.CARGO_KEY }}-${{ env.MESON_KEY }}-${{ hashFiles('.github/action/**', steps.workflow-info.outputs.path, 'CMakeLists.txt', 'cmake/Modules/*') }} |