name: Setup tools and cache inputs: tools: description: Extra tools required: false default: "" indexcache: description: Enable index cache required: true default: true type: boolean buildcache: description: Enable build cache required: true default: true type: boolean runs: using: composite steps: - name: Add just to tools to install run: echo "tools=just" >>"$GITHUB_ENV" shell: bash - name: Add inputs.tools to tools to install if: inputs.tools != '' env: inputs_tools: ${{ inputs.tools }} run: echo "tools=$tools,$inputs_tools" >>"$GITHUB_ENV" shell: bash - name: Install tools uses: taiki-e/install-action@v2 with: tool: ${{ env.tools }} - name: Install rust toolchains run: just toolchain shell: bash - name: rustc version run: rustc -vV shell: bash - name: Retrieve RUSTFLAGS for caching if: inputs.indexcache || inputs.buildcache id: retrieve-rustflags run: | if [ -n "${{ inputs.buildcache }}" ]; then echo RUSTFLAGS="$(just print-rustflags)" >> "$GITHUB_OUTPUT" else echo RUSTFLAGS= >> "$GITHUB_OUTPUT" fi shell: bash - run: just ci-install-deps shell: bash - if: inputs.indexcache || inputs.buildcache uses: Swatinem/rust-cache@v2 with: env-vars: "CARGO CC CFLAGS CXX CMAKE RUST JUST" env: RUSTFLAGS: ${{ steps.retrieve-rustflags.outputs.RUSTFLAGS }} - name: Find zig location and create symlink to it in ~/.local/bin if: env.JUST_USE_CARGO_ZIGBUILD run: | python_package_path=$(python3 -m site --user-site) ln -s "${python_package_path}/ziglang/zig" "$HOME/.local/bin/zig" shell: bash - name: Calculate zig cache key if: env.JUST_USE_CARGO_ZIGBUILD run: | ZIG_VERSION=$(zig version) SYS_CRATE_HASHSUM=$(cargo tree --all-features --prefix none --no-dedupe --target "$CARGO_BUILD_TARGET" | grep -e '-sys' -e '^ring' | sort -u | sha1sum | sed 's/[ -]*//g') PREFIX=v0-${JOB_ID}-zig-${ZIG_VERSION}-${CARGO_BUILD_TARGET}- echo "ZIG_CACHE_KEY=${PREFIX}${SYS_CRATE_HASHSUM}" >> "$GITHUB_ENV" echo -e "ZIG_CACHE_RESTORE_KEY=$PREFIX" >> "$GITHUB_ENV" shell: bash env: RUSTFLAGS: ${{ steps.retrieve-rustflags.outputs.RUSTFLAGS }} JOB_ID: ${{ github.job }} - name: Get zig global cache dir if: env.JUST_USE_CARGO_ZIGBUILD id: zig_global_cache_dir_path run: | cache_dir=$(zig env | jq -r '.global_cache_dir') echo "cache_dir=$cache_dir" >> "$GITHUB_OUTPUT" shell: bash - name: Cache zig compilation if: env.JUST_USE_CARGO_ZIGBUILD uses: actions/cache@v3 with: path: ${{ steps.zig_global_cache_dir_path.outputs.cache_dir }} key: ${{ env.ZIG_CACHE_KEY }} restore-keys: | ${{ env.ZIG_CACHE_RESTORE_KEY }}