From 4efe541814ec2ddd073428d6928497b50c48397a Mon Sep 17 00:00:00 2001 From: iphydf Date: Sun, 3 May 2020 15:36:57 +0100 Subject: Add a script to run Travis CI locally. This isn't quite Travis, but close enough for local testing. --- other/docker/Dockerfile.ci | 75 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 other/docker/Dockerfile.ci (limited to 'other/docker/Dockerfile.ci') diff --git a/other/docker/Dockerfile.ci b/other/docker/Dockerfile.ci new file mode 100644 index 00000000..db7e5e2c --- /dev/null +++ b/other/docker/Dockerfile.ci @@ -0,0 +1,75 @@ +# This Docker build emulates roughly what Travis CI is doing. It is not exactly +# the same (different tool versions) and success in this image may not +# necessarily mean success on Travis. This image is also not automatically +# tested, so it may get out of date. Send PRs if you use it and it's broken. +# +# For one, we use bionic, not xenial, because xenial's clang is way too old. +FROM ubuntu:16.04 + +# Travis environment. +RUN apt-get update && apt-get install --no-install-recommends -y \ + apt-transport-https \ + build-essential \ + ca-certificates \ + curl \ + git \ + pkg-config \ + python-pip \ + python-setuptools \ + python3 \ + software-properties-common \ + wget \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN curl https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \ + && apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-6.0 main" \ + && apt-get update && apt-get install --no-install-recommends -y \ + clang-6.0 \ + clang-format-6.0 \ + llvm-6.0 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +RUN ls /usr/bin/clang-6.0 && ln -s /usr/bin/clang-6.0 /usr/bin/clang \ + && ls /usr/bin/clang++-6.0 && ln -s /usr/bin/clang++-6.0 /usr/bin/clang++ \ + && ls /usr/bin/clang-format-6.0 && ln -s /usr/bin/clang-format-6.0 /usr/bin/clang-format \ + && ls /usr/bin/opt-6.0 && ln -s /usr/bin/opt-6.0 /usr/bin/opt + +# Bionic's cmake is too old. +RUN pip install --upgrade pip cmake + +# .travis.yml +RUN apt-get update && apt-get install --no-install-recommends -y \ + libconfig-dev \ + libgtest-dev \ + libopus-dev \ + libsodium-dev \ + libvpx-dev \ + ninja-build \ + pylint3 \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +# Set up travis user. +RUN groupadd -r -g 1000 travis \ + && useradd --no-log-init -r -g travis -u 1000 travis \ + && mkdir -p /src/workspace /home/travis \ + && chown travis:travis /home/travis +USER travis + +# Set up environment. +ENV CC=gcc CXX=g++ \ +PATH=/home/travis/.local/bin:$PATH \ +TRAVIS_REPO_SLUG=TokTok/c-toxcore + +# Copy minimal files to run "cmake-linux install", so we can avoid rebuilding +# astyle and other things when only source files change. +RUN mkdir -p /home/travis/build/c-toxcore /home/travis/cache +WORKDIR /home/travis/build/c-toxcore +COPY --chown=travis:travis c-toxcore/.travis/ /home/travis/build/c-toxcore/.travis/ +RUN .travis/cmake-linux install + +# Now copy the rest of the sources and run the build. +COPY --chown=travis:travis . /home/travis/build/ +RUN .travis/cmake-linux script -- cgit v1.2.3