diff --git a/README.md b/README.md index 4cea378a..9701ac33 100644 --- a/README.md +++ b/README.md @@ -222,6 +222,8 @@ cd tests ## Requirements for Contributors -It's required to install [LLVM](https://llvm.org/builds/) for `clang-tidy` and `clang-format`. Pulsar C++ client use `clang-format` 6.0+ to format files. `make format` automatically formats the files. +It's required to install [LLVM](https://llvm.org/builds/) for `clang-tidy` and `clang-format`. Pulsar C++ client use `clang-format` **11** to format files. `make format` automatically formats the files. + +For Ubuntu users, you can install `clang-format-11` via `apt install clang-format-11`. For other users, run `./build-support/docker-format.sh` if you have Docker installed. We welcome contributions from the open source community, kindly make sure your changes are backward compatible with GCC 4.8 and Boost 1.53. diff --git a/build-support/Dockerfile.format b/build-support/Dockerfile.format new file mode 100644 index 00000000..92d53b03 --- /dev/null +++ b/build-support/Dockerfile.format @@ -0,0 +1,35 @@ +# +# 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. +# + + +FROM ubuntu:20.04 + +WORKDIR /app + +RUN apt update -y && apt install -y python3 clang-format-11 +ENTRYPOINT ["python3", "./build-support/run_clang_format.py", \ + "clang-format-11", \ + "0", \ + "./build-support/clang_format_exclusions.txt", \ + "./lib", \ + "./perf", \ + "./examples", \ + "./tests", \ + "./include", \ + "./wireshark"] diff --git a/build-support/docker-format.sh b/build-support/docker-format.sh new file mode 100755 index 00000000..622a4f15 --- /dev/null +++ b/build-support/docker-format.sh @@ -0,0 +1,32 @@ +#!/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. +# + +ROOT_DIR=$(git rev-parse --show-toplevel) +cd $ROOT_DIR/build-support + +IMAGE_NAME=apachepulsar/cpp-client-format +docker image inspect apachepulsar/cpp-client-format 1>/dev/null 2>&1 +OK=$? +set -e +if [[ $OK -ne 0 ]]; then + echo "The image $IMAGE_NAME doesn't exist, build it" + docker build -t $IMAGE_NAME -f ./Dockerfile.format . +fi +docker run -v $ROOT_DIR:/app --rm $IMAGE_NAME diff --git a/cmake_modules/FindClangTools.cmake b/cmake_modules/FindClangTools.cmake index 4b8fc18e..67128818 100644 --- a/cmake_modules/FindClangTools.cmake +++ b/cmake_modules/FindClangTools.cmake @@ -82,8 +82,8 @@ if (CLANG_FORMAT_VERSION) endif() else() find_program(CLANG_FORMAT_BIN - NAMES clang-format-5 - clang-format-5.0 + NAMES clang-format-11 + clang-format-11.0 clang-format PATHS ${CLANG_SEARCH_PATHS} NO_DEFAULT_PATH