Created
March 4, 2025 09:08
-
-
Save greaka/9b44306f9bcbc038d9addc81a95064b7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| VERSION 0.8 | |
| IMPORT github.com/Jake-Shadle/xwin AS xwin | |
| builder: | |
| FROM xwin+xwin | |
| RUN mkdir /build | |
| WORKDIR /build | |
| RUN apt-get update && apt-get install --no-install-recommends -y jq | |
| COPY --keep-ts --if-exists rust-toolchain.toml ./ | |
| IF [ ! -f ./rust-toolchain.toml ] | |
| RUN rustup default stable | |
| END | |
| RUN rustup target add x86_64-pc-windows-msvc | |
| RUN ln $CARGO_HOME/bin/* /usr/bin/ | |
| SAVE IMAGE --cache-hint xwin-builder | |
| prefetch: | |
| FROM +builder | |
| ARG --required cargo_home_cache_id | |
| COPY --keep-ts --dir --if-exists .cargo ./ | |
| COPY --keep-ts Cargo.toml ./ | |
| COPY --keep-ts --if-exists Cargo.lock ./ | |
| RUN mkdir -p src && touch src/lib.rs | |
| RUN --mount=type=cache,mode=0777,id=$cargo_home_cache_id,sharing=shared,target=$CARGO_HOME \ | |
| cargo --color=always fetch --target x86_64-pc-windows-msvc | |
| SAVE IMAGE --cache-hint prefetch | |
| addon: | |
| ARG cargo_home_cache_id="earthly-cargo-cache" | |
| FROM --pass-args +prefetch | |
| ARG EARTHLY_TARGET_PROJECT_NO_TAG | |
| ARG EARTHLY_TARGET_NAME | |
| ARG target_cache_id="${EARTHLY_CARGO_HOME_CACHE_ID}#${EARTHLY_TARGET_PROJECT_NO_TAG}#${EARTHLY_TARGET_NAME}" | |
| ARG target_folder="target/x86_64-pc-windows-msvc/release" | |
| ARG CARGO_TARGET_NAME = $(cargo metadata -q --no-deps --filter-platform x86_64-pc-windows-msvc | jq -r '.packages[0].name' | sed 's/-/_/g') | |
| ARG CARGO_CMD = "build --release" | |
| ARG CARGO_EXTRA_ARGS | |
| COPY --keep-ts --dir . ./ | |
| RUN --mount=type=cache,mode=0777,id=$cargo_home_cache_id,sharing=shared,target=$CARGO_HOME \ | |
| --mount=type=cache,mode=0777,id=$target_cache_id,sharing=locked,target=target \ | |
| cargo ${CARGO_CMD} --color=always --target x86_64-pc-windows-msvc ${CARGO_EXTRA_ARGS} && \ | |
| (rm -f ${CARGO_TARGET_NAME}.dll || true) && \ | |
| (rm -f ${CARGO_TARGET_NAME}.pdb || true) && \ | |
| cp ${target_folder}/${CARGO_TARGET_NAME}.dll ./ && \ | |
| (cp ${target_folder}/${CARGO_TARGET_NAME}.pdb ./ || true) | |
| SAVE ARTIFACT ${CARGO_TARGET_NAME}.dll | |
| SAVE ARTIFACT --if-exists ${CARGO_TARGET_NAME}.pdb |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment