@@ -2,24 +2,63 @@ version: 2
2
2
jobs :
3
3
build :
4
4
docker :
5
- - image : circleci/buildpack-deps:bionic
5
+ - image : circleci/buildpack-deps:focal
6
6
auth :
7
7
username : $DOCKERHUB_USERNAME
8
8
password : $DOCKERHUB_PASSWORD
9
9
steps :
10
10
- checkout
11
11
- run :
12
- name : Clang-format test
12
+ name : Ensure all submodules are updated recursively
13
+ command : git submodule update --init --recursive
14
+ - run :
15
+ name : Clang-format and Clang-tidy test
13
16
command : |
14
17
set -o xtrace
18
+ UBUNTU_CODE_NAME="focal"
19
+ BASE_BRANCH="8.4"
20
+ COMPILER_VERSION="17"
21
+ BOOST_VERSION="1_77_0"
22
+ BOOST_DIR="/home/circleci/my_boost"
23
+
15
24
curl -sSL "http://apt.llvm.org/llvm-snapshot.gpg.key" | sudo -E apt-key add -
16
- echo "deb http://apt.llvm.org/bionic / llvm-toolchain-bionic-15 main" | sudo tee -a /etc/apt/sources.list > /dev/null
25
+ echo "deb http://apt.llvm.org/$UBUNTU_CODE_NAME / llvm-toolchain-$UBUNTU_CODE_NAME-$COMPILER_VERSION main" | sudo tee -a /etc/apt/sources.list > /dev/null
17
26
sudo -E apt-get -yq update >> ~/apt-get-update.log 2>&1
18
- sudo -E apt-get -yq --no-install-suggests --no-install-recommends install clang-format-15
19
- git diff -U0 --no-color HEAD^1 *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-format-diff-15 -style=file -p1 >_GIT_DIFF
27
+ sudo apt-get install -yq --no-install-suggests --allow-unauthenticated --no-install-recommends clang-${COMPILER_VERSION} clang-tidy-${COMPILER_VERSION} clang-format-${COMPILER_VERSION} clang-tools-${COMPILER_VERSION} libc++-${COMPILER_VERSION}-dev libc++abi-${COMPILER_VERSION}-dev libldap2-dev curl libcurl4-openssl-dev bison libudev-dev libkrb5-dev libreadline-dev zlib1g-dev liblz4-dev libedit-dev libevent-dev protobuf-compiler libprotobuf-dev libprotoc-dev libldap2-dev libsasl2-dev libsasl2-modules-gssapi-mit cmake
28
+
29
+ # Download boost only if BASE_BRANCH is "8.0"
30
+ if [ "$BASE_BRANCH" = "8.0" ]; then
31
+ echo "BASE_BRANCH is 8.0, downloading and extracting Boost."
32
+ wget --progress=dot:giga -P ${BOOST_DIR} "https://archives.boost.io/release/${BOOST_VERSION//_/.}/source/boost_${BOOST_VERSION}.tar.gz"
33
+ tar -xzf "${BOOST_DIR}/boost_${BOOST_VERSION}.tar.gz" -C "${BOOST_DIR}"
34
+ else
35
+ echo "BASE_BRANCH is not 8.0, skipping Boost download."
36
+ fi
37
+
38
+ # Prepare compile_commands.json
39
+ cd ~/project
40
+ cmake -B /home/circleci/debug-build -DCMAKE_BUILD_TYPE=Debug -DWITH_BOOST=${BOOST_DIR} -DWITH_SSL=system -DWITH_AUTHENTICATION_LDAP=ON -DWITH_ROCKSDB=ON -DCMAKE_C_COMPILER=clang-${COMPILER_VERSION} -DCMAKE_CXX_COMPILER=clang++-${COMPILER_VERSION} -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_SYSTEM_LIBS=ON -DWITH_FIDO=bundled -DWITH_ZSTD=bundled -DWITH_LZ4=bundled -DWITH_PROTOBUF=bundled ~/project
41
+
42
+ git remote add target "https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
43
+ git fetch --no-tags --no-recurse-submodules target $BASE_BRANCH
44
+
45
+ echo "Checking clang-format results"
46
+ git diff -U0 "$(git merge-base HEAD target/$BASE_BRANCH)" *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-format-diff-$COMPILER_VERSION -style=file -p1 >_GIT_DIFF
20
47
if [ ! -s _GIT_DIFF ]; then
21
- echo The last git commit is clang-formatted;
48
+ echo The last git commit is clang-formatted;
49
+ else
50
+ cat _GIT_DIFF;
51
+ #false;
52
+ fi
53
+
54
+ echo "Checking clang-tidy static code analysis results"
55
+ cat /home/circleci/debug-build/compile_commands.json
56
+ git diff -U0 "$(git merge-base HEAD target/$BASE_BRANCH)" *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-tidy-diff-${COMPILER_VERSION}.py -clang-tidy-binary clang-tidy-${COMPILER_VERSION} -p1 -path /home/circleci/debug-build -export-fixes=fixes.yaml -extra-arg=-v -extra-arg=-stdlib=libc++
57
+ clang-apply-replacements-${COMPILER_VERSION} .
58
+ git diff > _GIT_DIFF_TIDY
59
+ if [ ! -s _GIT_DIFF_TIDY ]; then
60
+ echo The last git commit is clang-tidy clean;
22
61
else
23
- cat _GIT_DIFF ;
24
- false ;
62
+ echo The last git commit has clang-tidy warnings ;
63
+ cat _GIT_DIFF_TIDY ;
25
64
fi
0 commit comments