From 624510fd426384edd027a905112192df86014174 Mon Sep 17 00:00:00 2001 From: kazk Date: Mon, 23 Oct 2017 00:48:24 -0700 Subject: [PATCH] [Rust] Avoid crates to be recompiled Change in RUSTFLAGS causes everything to be recompiled. Avoid this by setting it before downloading and compiling crates. --- docker/rust.docker | 36 ++++++++++++++++++++---------------- lib/runners/rust.js | 17 ----------------- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/docker/rust.docker b/docker/rust.docker index e0056c3a..873944b9 100644 --- a/docker/rust.docker +++ b/docker/rust.docker @@ -1,20 +1,13 @@ FROM codewars/base-runner -RUN ln -s /home/codewarrior /workspace - -COPY frameworks/rust/skeleton /workspace/rust -RUN chown -R codewarrior:codewarrior /workspace/rust - -USER codewarrior -ENV USER=codewarrior HOME=/home/codewarrior +# based on the Dockerfile for https://hub.docker.com/_/rust/ +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH +RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path --default-toolchain 1.15.1; \ + chmod -R a+w $RUSTUP_HOME $CARGO_HOME; -# Install rustup with the Rust v1.15.1 toolchain -RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain 1.15.1 -# ~/.cargo/env -ENV PATH $HOME/.cargo/bin:$PATH -RUN cd /workspace/rust && cargo build && rm src/lib.rs - -USER root +RUN ln -s /home/codewarrior /workspace ENV NPM_CONFIG_LOGLEVEL warn WORKDIR /runner @@ -33,9 +26,20 @@ COPY test/runners/rust_spec.js test/runners/ COPY entrypoint.sh entrypoint.sh RUN chmod +x entrypoint.sh +COPY frameworks/rust/skeleton /workspace/rust +RUN chown -R codewarrior:codewarrior /workspace/rust + USER codewarrior -ENV USER=codewarrior HOME=/home/codewarrior -ENV PATH=$HOME/.cargo/bin:$PATH +ENV USER=codewarrior \ + HOME=/home/codewarrior \ +# set RUSTFLAGS (for backward compatibility) here +# compiling with different RUSTFLAGS for submitted solution causes downloaded crates to be recompiled + RUSTFLAGS='-Adead_code -Aunused_imports -Aunused_variables -Anon_snake_case' +# download and compile crates +RUN set -ex; \ + cd /workspace/rust; \ + cargo build; \ + rm src/lib.rs RUN mocha -t 10000 test/runners/rust_spec.js diff --git a/lib/runners/rust.js b/lib/runners/rust.js index b3b0629d..f581c6bb 100644 --- a/lib/runners/rust.js +++ b/lib/runners/rust.js @@ -11,9 +11,6 @@ module.exports = { args: ['run'], options: { cwd: '/workspace/rust', - env: Object.assign({}, process.env, { - RUSTFLAGS: rustFlags(), - }), }, }); }, @@ -44,9 +41,6 @@ module.exports = { args: ['test'], options: { cwd: '/workspace/rust', - env: Object.assign({}, process.env, { - RUSTFLAGS: rustFlags(), - }), }, }); }, @@ -106,14 +100,3 @@ module.exports = { return stderr; }, }; - -// ignore some warnings for backward compatibility -function rustFlags() { - const flags = []; - if (process.env.RUSTFLAGS !== '') flags.push(process.env.RUSTFLAGS); - flags.push('-A', 'dead_code'); - flags.push('-A', 'unused_imports'); - flags.push('-A', 'unused_variables'); - flags.push('-A', 'non_snake_case'); - return flags.join(' '); -}