Plume front arm support (#402)

* Update plume-front build to use a shell script that adds the necessary dependencies on arm (x86 left untouched inside the script)

* Fix cleanup portion of plume-front.sh

* Break wasm dependencies for arm out so they are run before the main builds to improve layer caching on subsequent docker builds

* Fixup dockerfile so wasm-deps can run properly and with fewer assumptions

* Move new scripts to script/ folder

* Remove saving of path as it's not actually not necessary

* Add rust-toolchain to early copy so it pulls the right rust release (addresses #400)
This commit is contained in:
KemoNine 2018-12-31 17:46:20 +00:00 committed by fdb-hiroshima
parent 2896eb1705
commit dfa89e227a
3 changed files with 49 additions and 2 deletions

View File

@ -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

11
script/plume-front.sh Normal file
View File

@ -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

33
script/wasm-deps.sh Normal file
View File

@ -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