diff --git a/ci/docker_install_iwyu.sh b/ci/docker_install_iwyu.sh new file mode 100755 index 0000000000000..5206f3b47d998 --- /dev/null +++ b/ci/docker_install_iwyu.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +set -eu + +: ${IWYU_REPO:="https://github.com/include-what-you-use/include-what-you-use.git"} +: ${IWYU_BRANCH:="clang_7.0"} +: ${IWYU_SRC:="/tmp/iwyu"} +: ${IWYU_HOME:="/opt/iwyu"} + +git clone "${IWYU_REPO}" "${IWYU_SRC}" +git -C "${IWYU_SRC}" checkout ${IWYU_BRANCH} + +mkdir -p "${IWYU_HOME}" +pushd "${IWYU_HOME}" + +# Build IWYU for current Clang +export CC=clang-7 +export CXX=clang++-7 + +cmake -DCMAKE_PREFIX_PATH=/usr/lib/llvm-7 "${IWYU_SRC}" +make -j4 + +popd diff --git a/dev/lint/Dockerfile b/dev/lint/Dockerfile index a468e2e9b182a..9a547c86d8ae5 100644 --- a/dev/lint/Dockerfile +++ b/dev/lint/Dockerfile @@ -18,7 +18,7 @@ FROM arrow:python-3.6 RUN apt-get install -y -q gnupg && \ - apt update && \ + apt-get update && \ apt-get install -y -q \ clang-7 \ libclang-7-dev \ @@ -28,3 +28,7 @@ RUN apt-get install -y -q gnupg && \ RUN conda install flake8 && \ conda clean --all -y + +ENV PATH=/opt/iwyu/bin:$PATH +ADD ci/docker_install_iwyu.sh /arrow/ci/ +RUN arrow/ci/docker_install_iwyu.sh diff --git a/dev/lint/run_iwyu.sh b/dev/lint/run_iwyu.sh index b3d8c8ebf5af3..050096809bb92 100755 --- a/dev/lint/run_iwyu.sh +++ b/dev/lint/run_iwyu.sh @@ -16,6 +16,8 @@ # limitations under the License. # +set -eux + export ARROW_BUILD_TOOLCHAIN=$CONDA_PREFIX mkdir -p /build/lint @@ -32,24 +34,5 @@ cmake -GNinja \ popd -# Build IWYU for current Clang -git clone https://github.com/include-what-you-use/include-what-you-use.git -pushd include-what-you-use -git checkout clang_7.0 -popd - -export CC=clang-7 -export CXX=clang++-7 - -mkdir -p iwyu -pushd iwyu -cmake -G "Unix Makefiles" \ - -DCMAKE_PREFIX_PATH=/usr/lib/llvm-7 \ - ../include-what-you-use -make -j4 -popd - -export PATH=`pwd`/iwyu/bin:$PATH - export IWYU_COMPILATION_DATABASE_PATH=/build/lint /arrow/cpp/build-support/iwyu/iwyu.sh all