diff --git a/Dockerfile b/Dockerfile index 1c54d791..f57b3429 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,12 +10,15 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ make \ openssl \ libssl-dev +WORKDIR /scratch +COPY script/wasm-deps.sh . +RUN chmod a+x ./wasm-deps.sh && ./wasm-deps.sh WORKDIR /app -COPY Cargo.toml Cargo.lock ./ +COPY Cargo.toml Cargo.lock rust-toolchain ./ RUN cargo install diesel_cli --no-default-features --features postgres --version '=1.3.0' RUN cargo install cargo-web COPY . . -RUN cargo web deploy -p plume-front +RUN chmod a+x ./script/plume-front.sh && ./script/plume-front.sh RUN cargo install --path ./ --force --no-default-features --features postgres RUN cargo install --path plume-cli --force --no-default-features --features postgres RUN cargo clean diff --git a/script/plume-front.sh b/script/plume-front.sh new file mode 100644 index 00000000..9f447be1 --- /dev/null +++ b/script/plume-front.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +ARCH=`arch` + +if [ "$ARCH" == "aarch64" -o "$ARCH" == "armv7l" ] ; then + export PATH=/opt/local/llvm/bin:${PATH} + cd /app + RUSTFLAGS="-C linker=lld" cargo web deploy -p plume-front +else + cargo web deploy -p plume-front +fi diff --git a/script/wasm-deps.sh b/script/wasm-deps.sh new file mode 100644 index 00000000..02a899be --- /dev/null +++ b/script/wasm-deps.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +ARCH=`arch` + +if [ "$ARCH" == "aarch64" -o "$ARCH" == "armv7l" ] ; then + apt-get install -y --no-install-recommends build-essential subversion ninja-build cmake + mkdir -p /scratch/src + cd /scratch/src + svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm + cd /scratch/src/llvm/tools + svn co http://llvm.org/svn/llvm-project/lld/trunk lld + #svn co http://llvm.org/svn/llvm-project/cfe/trunk clang + #svn co http://llvm.org/svn/llvm-project/clang-tools-extra/trunk extra + mkdir -p /scratch/build/arm + cd /scratch/build/arm + if [ "$ARCH" == "aarch64" ] ; then + cmake -G Ninja /scratch/src/llvm \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/opt/local/llvm \ + -DLLVM_TARGETS_TO_BUILD="AArch64" \ + -DLLVM_TARGET_ARCH="AArch64" + else + cmake -G Ninja /scratch/src/llvm \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/opt/local/llvm \ + -DLLVM_TARGETS_TO_BUILD="ARM" \ + -DLLVM_TARGET_ARCH="ARM" + fi + ninja lld + ninja install-lld + cd ~ + rm -rf /scratch +fi