aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar ncteisen <ncteisen@gmail.com>2018-01-12 15:16:41 -0800
committerGravatar Noah Eisen <ncteisen@google.com>2018-01-16 17:24:51 -0800
commit365ea6309bd683d384b58e05fdb58e557b20ba19 (patch)
treea855ca5699948a9b538f81dd9b56d641bd1b071e
parent5edcfb39c6afaabdd183da9e08fbcc56720fb92f (diff)
Dockerize clang tidy
-rw-r--r--templates/tools/dockerfile/clang5.include (renamed from templates/tools/dockerfile/clang_format.include)2
-rw-r--r--templates/tools/dockerfile/grpc_clang_format/Dockerfile.template6
-rw-r--r--templates/tools/dockerfile/grpc_clang_tidy/Dockerfile.template26
-rw-r--r--templates/tools/dockerfile/test/sanity/Dockerfile.template2
-rwxr-xr-xtools/distrib/clang_tidy_code.sh31
-rwxr-xr-xtools/distrib/run_clang_tidy.py3
-rw-r--r--tools/dockerfile/grpc_clang_format/Dockerfile2
-rw-r--r--tools/dockerfile/grpc_clang_tidy/Dockerfile39
-rwxr-xr-xtools/dockerfile/grpc_clang_tidy/clang_tidy_all_the_things.sh (renamed from tools/run_tests/sanity/check_clang_tidy.sh)9
-rw-r--r--tools/dockerfile/test/sanity/Dockerfile2
10 files changed, 110 insertions, 12 deletions
diff --git a/templates/tools/dockerfile/clang_format.include b/templates/tools/dockerfile/clang5.include
index 79d0ff286f..f16439b1d4 100644
--- a/templates/tools/dockerfile/clang_format.include
+++ b/templates/tools/dockerfile/clang5.include
@@ -1,5 +1,3 @@
RUN apt-get update && apt-get -y install wget xz-utils
RUN wget http://releases.llvm.org/5.0.0/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
RUN tar xf clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
-RUN ln -s /clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/clang-format /usr/local/bin/clang-format
-ENV CLANG_FORMAT=clang-format
diff --git a/templates/tools/dockerfile/grpc_clang_format/Dockerfile.template b/templates/tools/dockerfile/grpc_clang_format/Dockerfile.template
index 1ab667c95d..75048ba70f 100644
--- a/templates/tools/dockerfile/grpc_clang_format/Dockerfile.template
+++ b/templates/tools/dockerfile/grpc_clang_format/Dockerfile.template
@@ -16,8 +16,10 @@
FROM debian:jessie
- <%include file="../clang_format.include"/>
+ <%include file="../clang5.include"/>
+ RUN ln -s /clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/clang-format /usr/local/bin/clang-format
+ ENV CLANG_FORMAT=clang-format
ADD clang_format_all_the_things.sh /
CMD ["echo 'Run with tools/distrib/clang_format_code.sh'"]
- \ No newline at end of file
+
diff --git a/templates/tools/dockerfile/grpc_clang_tidy/Dockerfile.template b/templates/tools/dockerfile/grpc_clang_tidy/Dockerfile.template
new file mode 100644
index 0000000000..67d56cace2
--- /dev/null
+++ b/templates/tools/dockerfile/grpc_clang_tidy/Dockerfile.template
@@ -0,0 +1,26 @@
+%YAML 1.2
+--- |
+ # Copyright 2015 gRPC authors.
+ #
+ # Licensed 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.
+
+ FROM debian:jessie
+
+ <%include file="../clang5.include"/>
+ <%include file="../python_deps.include"/>
+ RUN ln -s /clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/clang-tidy /usr/local/bin/clang-tidy
+ ENV CLANG_TIDY=clang-tidy
+ ADD clang_tidy_all_the_things.sh /
+ CMD ["echo 'Run with tools/distrib/clang_tidy_code.sh'"]
+
+
diff --git a/templates/tools/dockerfile/test/sanity/Dockerfile.template b/templates/tools/dockerfile/test/sanity/Dockerfile.template
index c98f7d4176..7453e6c460 100644
--- a/templates/tools/dockerfile/test/sanity/Dockerfile.template
+++ b/templates/tools/dockerfile/test/sanity/Dockerfile.template
@@ -53,7 +53,7 @@
RUN chmod +x ./bazel-0.4.4-installer-linux-x86_64.sh
RUN ./bazel-0.4.4-installer-linux-x86_64.sh
- <%include file="../../clang_format.include"/>
+ <%include file="../../clang5.include"/>
<%include file="../../run_tests_addons.include"/>
# Define the default command.
diff --git a/tools/distrib/clang_tidy_code.sh b/tools/distrib/clang_tidy_code.sh
new file mode 100755
index 0000000000..c5bfc5ca4c
--- /dev/null
+++ b/tools/distrib/clang_tidy_code.sh
@@ -0,0 +1,31 @@
+#!/bin/bash
+# Copyright 2015 gRPC authors.
+#
+# Licensed 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 -ex
+
+# change to root directory
+cd $(dirname $0)/../..
+REPO_ROOT=$(pwd)
+
+if [ "$CLANG_TIDY_SKIP_DOCKER" == "" ]
+then
+ # build clang-tidy docker image
+ docker build -t grpc_clang_tidy tools/dockerfile/grpc_clang_tidy
+
+ # run clang-tidy against the checked out codebase
+ docker run -e TEST=$TEST -e CHANGED_FILES="$CHANGED_FILES" -e CLANG_TIDY_ROOT="/local-code" --rm=true -v "${REPO_ROOT}":/local-code -t grpc_clang_tidy /clang_tidy_all_the_things.sh
+else
+ CLANG_tidy_ROOT="${REPO_ROOT}" tools/dockerfile/grpc_clang_tidy/clang_tidy_all_the_things.sh
+fi
diff --git a/tools/distrib/run_clang_tidy.py b/tools/distrib/run_clang_tidy.py
index bc61d4e79a..182897e491 100755
--- a/tools/distrib/run_clang_tidy.py
+++ b/tools/distrib/run_clang_tidy.py
@@ -57,7 +57,8 @@ cmdline = [
clang_tidy,
'--checks=-*,%s' % ','.join(GRPC_CHECKS),
'--warnings-as-errors=%s' % ','.join(GRPC_CHECKS)
-] + ['--extra-arg-before=%s' % arg for arg in extra_args]
+]
+# + ['--extra-arg-before=%s' % arg for arg in extra_args]
if args.fix:
cmdline.append('--fix')
diff --git a/tools/dockerfile/grpc_clang_format/Dockerfile b/tools/dockerfile/grpc_clang_format/Dockerfile
index b3abaef465..7c2b5650f6 100644
--- a/tools/dockerfile/grpc_clang_format/Dockerfile
+++ b/tools/dockerfile/grpc_clang_format/Dockerfile
@@ -17,8 +17,8 @@ FROM debian:jessie
RUN apt-get update && apt-get -y install wget xz-utils
RUN wget http://releases.llvm.org/5.0.0/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
RUN tar xf clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
+
RUN ln -s /clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/clang-format /usr/local/bin/clang-format
ENV CLANG_FORMAT=clang-format
-
ADD clang_format_all_the_things.sh /
CMD ["echo 'Run with tools/distrib/clang_format_code.sh'"]
diff --git a/tools/dockerfile/grpc_clang_tidy/Dockerfile b/tools/dockerfile/grpc_clang_tidy/Dockerfile
new file mode 100644
index 0000000000..ed34fdc107
--- /dev/null
+++ b/tools/dockerfile/grpc_clang_tidy/Dockerfile
@@ -0,0 +1,39 @@
+# Copyright 2015 gRPC authors.
+#
+# Licensed 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.
+
+FROM debian:jessie
+
+RUN apt-get update && apt-get -y install wget xz-utils
+RUN wget http://releases.llvm.org/5.0.0/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
+RUN tar xf clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
+
+#====================
+# Python dependencies
+
+# Install dependencies
+
+RUN apt-get update && apt-get install -y \
+ python-all-dev \
+ python3-all-dev \
+ python-pip
+
+# Install Python packages from PyPI
+RUN pip install --upgrade pip==9.0.1
+RUN pip install virtualenv
+RUN pip install futures==2.2.0 enum34==1.0.4 protobuf==3.5.0.post1 six==1.10.0 twisted==17.5.0
+
+RUN ln -s /clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/clang-tidy /usr/local/bin/clang-tidy
+ENV CLANG_TIDY=clang-tidy
+ADD clang_tidy_all_the_things.sh /
+CMD ["echo 'Run with tools/distrib/clang_tidy_code.sh'"]
diff --git a/tools/run_tests/sanity/check_clang_tidy.sh b/tools/dockerfile/grpc_clang_tidy/clang_tidy_all_the_things.sh
index a27379253e..a74c728850 100755
--- a/tools/run_tests/sanity/check_clang_tidy.sh
+++ b/tools/dockerfile/grpc_clang_tidy/clang_tidy_all_the_things.sh
@@ -15,7 +15,10 @@
set -e
-make buildtests \
- -j "$(python -c 'import multiprocessing; print multiprocessing.cpu_count()')"
+# clang format command
+CLANG_TIDY=${CLANG_TIDY:-clang-tidy-5.0}
+
+cd ${CLANG_TIDY_ROOT}
+
find src/core src/cpp test/core test/cpp -name '*.h' -or -name '*.cc' -print0 \
- | xargs -0 tools/distrib/run_clang_tidy.py "$@"
+ | xargs -0 tools/distrib/run_clang_tidy.py --fix
diff --git a/tools/dockerfile/test/sanity/Dockerfile b/tools/dockerfile/test/sanity/Dockerfile
index 6e5a133a69..f3330cfd8d 100644
--- a/tools/dockerfile/test/sanity/Dockerfile
+++ b/tools/dockerfile/test/sanity/Dockerfile
@@ -108,8 +108,6 @@ RUN ./bazel-0.4.4-installer-linux-x86_64.sh
RUN apt-get update && apt-get -y install wget xz-utils
RUN wget http://releases.llvm.org/5.0.0/clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
RUN tar xf clang+llvm-5.0.0-linux-x86_64-ubuntu14.04.tar.xz
-RUN ln -s /clang+llvm-5.0.0-linux-x86_64-ubuntu14.04/bin/clang-format /usr/local/bin/clang-format
-ENV CLANG_FORMAT=clang-format
# Prepare ccache
RUN ln -s /usr/bin/ccache /usr/local/bin/gcc