diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..144f0824 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM rust:1.69.0 +LABEL description="Linear contract builder" + +RUN apt-get update && apt-get install -y git less vim clang + +RUN rustup default 1.69.0 +RUN rustup target add wasm32-unknown-unknown + +# Cargo files are needed to install and cache dependencies +ADD contracts/linear/Cargo.toml . +ADD Cargo.lock . + +# a trick to run cargo build +RUN mkdir -p src && echo "fn main() {}" > src/lib.rs && \ + RUSTFLAGS="-C link-arg=-s" cargo build -p linear --target wasm32-unknown-unknown --release && \ + rm Cargo.toml && \ + rm -rf ./src/ target/release/deps/my-project* target/release/my-project* diff --git a/build_docker.sh b/build_docker.sh deleted file mode 100644 index 7ad920e1..00000000 --- a/build_docker.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -# Exit script as soon as a command fails. -set -e - -DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" - -NAME="build_linear" - -if docker ps -a --format '{{.Names}}' | grep -Eq "^${NAME}\$"; then - echo "Container exists" -else -docker create \ - --mount type=bind,source=$DIR/..,target=/host \ - --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \ - --name=$NAME \ - -w /host/linear \ - -e RUSTFLAGS='-C link-arg=-s' \ - -it \ - nearprotocol/contract-builder \ - /bin/bash -fi - -docker start $NAME -docker exec -it $NAME /bin/bash -c "rustup toolchain install stable-2020-10-08;rustup default stable-2020-10-08;rustup target add wasm32-unknown-unknown; cargo build --target wasm32-unknown-unknown --release" - -mkdir -p res -cp $DIR/target/wasm32-unknown-unknown/release/linear.wasm $DIR/res/linear_release.wasm - diff --git a/makefile b/makefile index f9b7b801..65a1b92c 100644 --- a/makefile +++ b/makefile @@ -44,6 +44,16 @@ mock-whitelist: contracts/mock-whitelist mkdir -p res cp target/wasm32-unknown-unknown/release/mock_whitelist.wasm ./res/mock_whitelist.wasm +docker: + docker build -t linear-builder . + docker run \ + --mount type=bind,source=${PWD},target=/host \ + --cap-add=SYS_PTRACE --security-opt seccomp=unconfined \ + -w /host \ + -e RUSTFLAGS=$(RFLAGS) \ + -i -t linear-builder \ + make + clean: rm res/*.wasm