diff --git a/tools/build_rust.sh b/tools/build_rust.sh old mode 100644 new mode 100755 index 3d0a9a5a..1e5a35ea --- a/tools/build_rust.sh +++ b/tools/build_rust.sh @@ -8,4 +8,4 @@ docker build -t rust-builder-general tools/rust-builder/general # Step 2: Run the Docker container and execute the builder script echo "Running the Docker container..." -docker run --rm -v "$(pwd)":/app rust-builder bash -c "cd /app && ./tools/rust-builder/general/builder.sh" +docker run --rm -v "$(pwd)":/app rust-builder-general bash -c "cd /app && ./tools/rust-builder/general/build.sh" diff --git a/tools/rust-builder/general/Dockerfile b/tools/rust-builder/general/Dockerfile index 1ce8bca3..951d49a1 100644 --- a/tools/rust-builder/general/Dockerfile +++ b/tools/rust-builder/general/Dockerfile @@ -3,14 +3,19 @@ FROM debian:10-slim # Install Rust building environment RUN apt update && apt install -y curl build-essential gcc libssl-dev bash musl-tools mingw-w64 RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -RUN source $HOME/.cargo/env # Add toolchains for building for gnu[x86_64, aarch64, armv7l], musl[x86_64], and windows[x86_64, aarch64] -RUN rustup target add \ +RUN /root/.cargo/bin/rustup target add \ x86_64-unknown-linux-gnu \ aarch64-unknown-linux-gnu \ armv7-unknown-linux-gnueabihf \ x86_64-unknown-linux-musl \ - x86_64-pc-windows-gnu \ + x86_64-pc-windows-gnu + +# Install armv7l & aarch64 toolchains +RUN apt install -y gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu + +# Add cargo to path +ENV PATH="/root/.cargo/bin:${PATH}" WORKDIR /app diff --git a/tools/rust-builder/general/build.sh b/tools/rust-builder/general/build.sh old mode 100644 new mode 100755 index f12cae9d..c7d7c436 --- a/tools/rust-builder/general/build.sh +++ b/tools/rust-builder/general/build.sh @@ -1,5 +1,11 @@ #!/usr/bin/env bash +set -e + +# Set linkers for cross-compilation +export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=/usr/bin/arm-linux-gnueabihf-gcc +export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=/usr/bin/aarch64-linux-gnu-gcc + # Build for platforms cargo build --release --target x86_64-unknown-linux-gnu cargo build --release --target aarch64-unknown-linux-gnu