Skip to content

Commit

Permalink
Stick clang-format version to 11 and add back docker-format.sh (#45)
Browse files Browse the repository at this point in the history
* Stick clang-format version to 11 and add back docker-format.sh

### Motivation

Currently the code is formatted by `clang-format` 11. If it's formatted
by other versions of `clang-format`, the style might be a little
different.

### Modifications

- Add back `docker-format.sh` and the associated `Dockerfile.format`.
  This script build the image with `python3` and `clang-format-11`
  installed and the entrypoint is formatting the code.
- Explain the `clang-format` version in README.

* Move Dockerfile and docker-format.sh to build-support

(cherry picked from commit ecc1995)
  • Loading branch information
BewareMyPower committed Nov 1, 2022
1 parent 382e3a3 commit e557cca
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 3 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
35 changes: 35 additions & 0 deletions build-support/Dockerfile.format
Original file line number Diff line number Diff line change
@@ -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"]
32 changes: 32 additions & 0 deletions build-support/docker-format.sh
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions cmake_modules/FindClangTools.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit e557cca

Please sign in to comment.