diff --git a/.github/actions/just-setup/action.yml b/.github/actions/just-setup/action.yml index 66baed82..12a43633 100644 --- a/.github/actions/just-setup/action.yml +++ b/.github/actions/just-setup/action.yml @@ -19,14 +19,14 @@ runs: using: composite steps: - name: Add just to tools to install - run: echo "tools=just" >>$GITHUB_ENV + 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 + run: echo "tools=$tools,$inputs_tools" >>"$GITHUB_ENV" shell: bash - name: Install tools @@ -62,3 +62,40 @@ runs: 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 }}