From aaa8a9a652d0b86cfb20362beaa6e8a9e323a326 Mon Sep 17 00:00:00 2001 From: Michael Grupp Date: Wed, 31 Oct 2018 15:34:05 +0100 Subject: [PATCH] Configurable CC/CXX compiler toolchain in Dockerfiles. (#1402) Allows to build Docker images with Clang. --- .travis.yml | 9 +++++---- Dockerfile.jessie | 7 +++++++ Dockerfile.stretch | 7 +++++++ Dockerfile.trusty | 8 ++++++++ Dockerfile.trusty.bazel | 8 ++++++++ Dockerfile.xenial | 8 ++++++++ scripts/install_debs_cmake.sh | 1 + 7 files changed, 44 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9ba2ffe..e81cd9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,14 +22,15 @@ cache: - /home/travis/docker/ env: - - LSB_RELEASE=trusty DOCKER_CACHE_FILE=/home/travis/docker/trusty-cache.tar.gz - - LSB_RELEASE=xenial DOCKER_CACHE_FILE=/home/travis/docker/xenial-cache.tar.gz - - LSB_RELEASE=jessie DOCKER_CACHE_FILE=/home/travis/docker/jessie-cache.tar.gz - - LSB_RELEASE=stretch DOCKER_CACHE_FILE=/home/travis/docker/stretch-cache.tar.gz + - LSB_RELEASE=trusty DOCKER_CACHE_FILE=/home/travis/docker/trusty-cache.tar.gz CC=gcc CXX=g++ + - LSB_RELEASE=xenial DOCKER_CACHE_FILE=/home/travis/docker/xenial-cache.tar.gz CC=gcc CXX=g++ + - LSB_RELEASE=jessie DOCKER_CACHE_FILE=/home/travis/docker/jessie-cache.tar.gz CC=gcc CXX=g++ + - LSB_RELEASE=stretch DOCKER_CACHE_FILE=/home/travis/docker/stretch-cache.tar.gz CC=gcc CXX=g++ before_install: scripts/load_docker_cache.sh install: true script: - docker build ${TRAVIS_BUILD_DIR} -t cartographer:${LSB_RELEASE} -f Dockerfile.${LSB_RELEASE} + --build-arg cc=$CC --build-arg cxx=$CXX - scripts/save_docker_cache.sh diff --git a/Dockerfile.jessie b/Dockerfile.jessie index c67abc1..aca3742 100644 --- a/Dockerfile.jessie +++ b/Dockerfile.jessie @@ -14,6 +14,13 @@ FROM debian:jessie +ARG cc +ARG cxx + +# Set the preferred C/C++ compiler toolchain, if given (otherwise default). +ENV CC=$cc +ENV CXX=$cxx + # This base image doesn't ship with sudo. RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/* diff --git a/Dockerfile.stretch b/Dockerfile.stretch index 7cdd617..91d5211 100644 --- a/Dockerfile.stretch +++ b/Dockerfile.stretch @@ -14,6 +14,13 @@ FROM debian:stretch +ARG cc +ARG cxx + +# Set the preferred C/C++ compiler toolchain, if given (otherwise default). +ENV CC=$cc +ENV CXX=$cxx + # This base image doesn't ship with sudo. RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/* diff --git a/Dockerfile.trusty b/Dockerfile.trusty index 4c8c799..ac96e93 100644 --- a/Dockerfile.trusty +++ b/Dockerfile.trusty @@ -13,6 +13,14 @@ # limitations under the License. FROM ubuntu:trusty + +ARG cc +ARG cxx + +# Set the preferred C/C++ compiler toolchain, if given (otherwise default). +ENV CC=$cc +ENV CXX=$cxx + COPY scripts/install_debs_cmake.sh cartographer/scripts/ RUN cartographer/scripts/install_debs_cmake.sh && rm -rf /var/lib/apt/lists/* COPY scripts/install_ceres.sh cartographer/scripts/ diff --git a/Dockerfile.trusty.bazel b/Dockerfile.trusty.bazel index 8c5dc37..9e296e8 100644 --- a/Dockerfile.trusty.bazel +++ b/Dockerfile.trusty.bazel @@ -13,6 +13,14 @@ # limitations under the License. FROM ubuntu:trusty + +ARG cc +ARG cxx + +# Set the preferred C/C++ compiler toolchain, if given (otherwise default). +ENV CC=$cc +ENV CXX=$cxx + COPY scripts/install_debs_bazel.sh cartographer/scripts/ RUN cartographer/scripts/install_debs_bazel.sh && rm -rf /var/lib/apt/lists/* COPY . cartographer diff --git a/Dockerfile.xenial b/Dockerfile.xenial index 7279043..715287b 100644 --- a/Dockerfile.xenial +++ b/Dockerfile.xenial @@ -12,8 +12,16 @@ # See the License for the specific language governing permissions and # limitations under the License. + FROM ubuntu:xenial +ARG cc +ARG cxx + +# Set the preferred C/C++ compiler toolchain, if given (otherwise default). +ENV CC=$cc +ENV CXX=$cxx + # This base image doesn't ship with sudo. RUN apt-get update && apt-get install -y sudo && rm -rf /var/lib/apt/lists/* diff --git a/scripts/install_debs_cmake.sh b/scripts/install_debs_cmake.sh index afc0c8d..ce5fca4 100755 --- a/scripts/install_debs_cmake.sh +++ b/scripts/install_debs_cmake.sh @@ -35,6 +35,7 @@ else fi sudo apt-get install -y \ + clang \ g++ \ git \ google-mock \