mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-10 07:08:05 -05:00
72 lines
2.7 KiB
Docker
72 lines
2.7 KiB
Docker
# This script uses QEMU emulation, so before execution pull the corresponding
|
|
# images:
|
|
# docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
|
|
# Usage(on repo root folder):
|
|
# docker build . --platform=linux/riscv64 --pull --no-cache --shm-size=196m -t darkfi:riscv -f ./contrib/docker/riscv2.Dockerfile -o riscv-bins
|
|
# Optionally, add arguments like: --build-arg BINS=darkirc
|
|
# If you want to keep building using the same builder, remove --no-cache option.
|
|
|
|
# Arguments configuration
|
|
ARG DEBIAN_VER=sid
|
|
ARG RUST_VER=nightly-2024-12-05
|
|
#TODO: only darkirc has been tested, have to check rest binaries to add deps and ports.
|
|
ARG BINS=darkirc
|
|
|
|
# Environment setup
|
|
FROM --platform=$TARGETPLATFORM riscv64/debian:${DEBIAN_VER} as builder
|
|
|
|
## Arguments import
|
|
ARG RUST_VER
|
|
ARG BINS
|
|
|
|
## Install system dependencies
|
|
RUN apt-get update
|
|
RUN apt-get install -y git cmake make gcc g++ pkg-config \
|
|
libasound2-dev libclang-dev libssl-dev libsqlcipher-dev \
|
|
libsqlite3-dev wabt wget
|
|
|
|
## Rust installation
|
|
RUN wget -O install-rustup.sh https://sh.rustup.rs && \
|
|
sh install-rustup.sh -yq --default-toolchain none && \
|
|
rm install-rustup.sh
|
|
ENV PATH "${PATH}:/root/.cargo/bin/"
|
|
RUN rustup default ${RUST_VER}
|
|
RUN rustup target add wasm32-unknown-unknown --toolchain ${RUST_VER}
|
|
|
|
# Build binaries
|
|
FROM builder as rust_builder
|
|
|
|
WORKDIR /opt/darkfi
|
|
COPY . /opt/darkfi
|
|
|
|
# Cleanup existing binaries
|
|
RUN rm -rf zkas bin/zkas/zkas darkfid bin/darkfid/darkfid \
|
|
darkirc bin/darkirc/darkirc lilith bin/lilith/lilith \
|
|
taud bin/tau/taud/taud vanityaddr bin/vanityaddr/vanityaddr
|
|
|
|
# Risc-V support is highly experimental so we have to add some hack patches
|
|
# at Cargo.toml where [patch.crates-io] exists.
|
|
RUN sed -i Cargo.toml -e '335iring = {git="https://github.com/aggstam/ring"} \n\
|
|
rustls = {git="https://github.com/aggstam/rustls", branch="risc-v"} \n\
|
|
rcgen = {git="https://github.com/aggstam/rcgen"} \n'
|
|
|
|
# Add hacked dependencies into each crate that uses them
|
|
RUN sed -i bin/darkirc/Cargo.toml \
|
|
-e "s|\[dependencies\]|\[dependencies\]\nring = \"0.16.20\"|g"
|
|
RUN cargo +${RUST_VER} update
|
|
|
|
RUN sed -i rust-toolchain.toml -e "s|nightly|${RUST_VER}|g"
|
|
RUN make CARGO="cargo +${RUST_VER}" ${BINS} && \
|
|
mkdir compiled-bins && \
|
|
(if [ -e zkas ]; then cp -a zkas compiled-bins/; fi;) && \
|
|
(if [ -e darkfid ]; then cp -a darkfid compiled-bins/; fi;) && \
|
|
(if [ -e darkirc ]; then cp -a darkirc compiled-bins/; fi;) && \
|
|
(if [ -e lilith ]; then cp -a lilith compiled-bins/; fi;) && \
|
|
(if [ -e taud ]; then cp -a taud compiled-bins/; fi;) && \
|
|
(if [ -e vanityaddr ]; then cp -a vanityaddr compiled-bins/; fi;)
|
|
|
|
# Export binaries from rust builder
|
|
FROM scratch
|
|
COPY --from=rust_builder /opt/darkfi/compiled-bins/* ./
|