Add build.earth
This commit is contained in:
parent
5a6b42472a
commit
bebbfe4198
27
.cargo/config
Normal file
27
.cargo/config
Normal file
@ -0,0 +1,27 @@
|
||||
# ARMv6
|
||||
[target.arm-unknown-linux-gnueabihf]
|
||||
linker = "arm-linux-gnueabihf-gcc"
|
||||
|
||||
[target.arm-unknown-linux-musleabi]
|
||||
linker = "arm-linux-gnueabi-gcc"
|
||||
|
||||
[target.arm-unknown-linux-musleabihf]
|
||||
linker = "arm-linux-gnueabi-gcc"
|
||||
|
||||
# ARMv7
|
||||
[target.armv7-unknown-linux-musleabi]
|
||||
linker = "arm-linux-gnueabi-gcc"
|
||||
|
||||
[target.armv7-unknown-linux-musleabihf]
|
||||
linker = "arm-linux-gnueabi-gcc"
|
||||
|
||||
[target.armv7-unknown-linux-gnueabihf]
|
||||
linker = "arm-linux-gnueabihf-gcc"
|
||||
|
||||
# AARCH64
|
||||
|
||||
[target.aarch64-unknown-linux-musl]
|
||||
linker = "aarch64-linux-gnu-gcc"
|
||||
|
||||
[target.aarch64-unknown-linux-muslhf]
|
||||
linker = "aarch64-linux-gnu-gcc"
|
1
.earthignore
Normal file
1
.earthignore
Normal file
@ -0,0 +1 @@
|
||||
/target
|
75
build.earth
Normal file
75
build.earth
Normal file
@ -0,0 +1,75 @@
|
||||
FROM rust:latest
|
||||
ENV CARGO_HOME=/deps
|
||||
ARG APP_NAME=live-cli
|
||||
WORKDIR /work
|
||||
|
||||
deps:
|
||||
COPY ./Cargo.toml ./Cargo.lock .
|
||||
# This is a binary program, expose a main.rs file
|
||||
RUN mkdir src && touch src/main.rs
|
||||
RUN cargo fetch
|
||||
SAVE ARTIFACT /deps
|
||||
|
||||
rust-builder:
|
||||
# Linux
|
||||
RUN rustup target add x86_64-unknown-linux-musl
|
||||
RUN rustup target add i686-unknown-linux-musl
|
||||
RUN rustup target add i686-unknown-linux-musl
|
||||
RUN rustup target add aarch64-unknown-linux-musl
|
||||
RUN rustup target add arm-unknown-linux-musleabi
|
||||
RUN rustup target add armv7-unknown-linux-musleabi
|
||||
# Windows
|
||||
RUN rustup target add x86_64-pc-windows-gnu
|
||||
RUN rustup target add i686-pc-windows-gnu
|
||||
|
||||
RUN apt-get update
|
||||
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y gcc-arm-linux-gnueabi gcc-aarch64-linux-gnu gdb-mingw-w64 gcc-mingw-w64-x86-64 gcc-mingw-w64-i686
|
||||
|
||||
RUN cargo install cargo-deb
|
||||
|
||||
SAVE IMAGE docker-wg:5000/rust-builder
|
||||
|
||||
build:
|
||||
FROM +rust-builder
|
||||
|
||||
COPY +deps/deps /deps
|
||||
|
||||
ARG TOOLCHAIN
|
||||
|
||||
# Cache whatever dependency builds you can
|
||||
COPY ./Cargo.toml ./Cargo.lock .
|
||||
RUN \
|
||||
mkdir src && touch src/lib.rs && \
|
||||
cargo build --offline --release --target "$TOOLCHAIN" --jobs 1 && \
|
||||
rm src/lib.rs && rmdir src && \
|
||||
:
|
||||
|
||||
# Actually build the program
|
||||
COPY . .
|
||||
RUN cargo build --offline --release --target "$TOOLCHAIN" --jobs 1
|
||||
|
||||
ARG EXT
|
||||
ARG STRIP_CMD
|
||||
RUN if [ "$STRIP_CMD" ]; then "$STRIP_CMD" "target/$TOOLCHAIN/release/$APP_NAME$EXT"; fi
|
||||
# --force for windows since multiple hardlinks
|
||||
RUN xz --force --keep "target/$TOOLCHAIN/release/$APP_NAME$EXT"
|
||||
|
||||
# Also build a deb file
|
||||
IF [ -z "${TOOLCHAIN##*-linux-*}" ]
|
||||
RUN echo "Building deb for ${TOOLCHAIN}"
|
||||
RUN cargo deb --target "${TOOLCHAIN}"
|
||||
|
||||
SAVE ARTIFACT target/$TOOLCHAIN/debian/$APP_NAME_*.deb AS LOCAL dist/
|
||||
END
|
||||
|
||||
# SAVE ARTIFACT target/$TOOLCHAIN/release/$APP_NAME$EXT AS LOCAL dist/
|
||||
SAVE ARTIFACT target/$TOOLCHAIN/release/$APP_NAME$EXT.xz AS LOCAL dist/$APP_NAME$EXT.xt
|
||||
|
||||
all:
|
||||
BUILD --build-arg TOOLCHAIN=x86_64-unknown-linux-musl --build-arg STRIP_CMD=x86_64-linux-gnu-strip +build
|
||||
BUILD --build-arg TOOLCHAIN=i686-unknown-linux-musl --build-arg STRIP_CMD=x86_64-linux-gnu-strip +build
|
||||
BUILD --build-arg TOOLCHAIN=aarch64-unknown-linux-musl --build-arg STRIP_CMD=aarch64-linux-gnu-strip +build
|
||||
BUILD --build-arg TOOLCHAIN=arm-unknown-linux-musleabi --build-arg STRIP_CMD=arm-linux-gnueabi-strip +build
|
||||
BUILD --build-arg TOOLCHAIN=armv7-unknown-linux-musleabi --build-arg STRIP_CMD=arm-linux-gnueabi-strip +build
|
||||
BUILD --build-arg TOOLCHAIN=x86_64-pc-windows-gnu --build-arg STRIP_CMD= --build-arg EXT=.exe +build
|
||||
BUILD --build-arg TOOLCHAIN=i686-pc-windows-gnu --build-arg STRIP_CMD= --build-arg EXT=.exe +build
|
Loading…
Reference in New Issue
Block a user