From d2b5853b8e28966af01ae6b9c3aec3f7eb228608 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 14 Feb 2020 07:10:06 +0100 Subject: [PATCH] Start enforcing the clang-format rules on changed files --- .gitlab-ci.yml | 12 ++++++++++-- util/cformat.sh | 20 ++++++++++++++------ 2 files changed, 24 insertions(+), 8 deletions(-) mode change 100644 => 100755 util/cformat.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3e980c8949..7719ea14a7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,9 +17,11 @@ variables: MAKE: make CONFIGURE: ./configure + CLANG: clang-9 SCAN_BUILD: scan-build-9 SYMBOLIZER: /usr/lib/llvm-9/bin/llvm-symbolizer ASAN_SYMBOLIZER_PATH: "$SYMBOLIZER" + CLANG_FORMAT: clang-format-11 CFLAGS_COMMON: -fno-omit-frame-pointer -fno-optimize-sibling-calls -O1 -g -Wall -Wextra @@ -384,6 +386,12 @@ misc:sid:amd64: expire_in: "1 day" when: on_failure +💾:sid:amd64: + <<: *precheck_job + script: + - if [ -r .clang-format ]; then ./util/cformat.sh "${CLANG_FORMAT}"; fi + - if test "$(git status --porcelain | grep -Ev '\?\?' | wc -l)" -gt "0"; then git status --short; exit 1; fi + 🐞:sid:amd64: <<: *precheck_job <<: *debian_buster_amd64_image @@ -618,7 +626,7 @@ scan-build:buster:amd64: <<: *debian_buster_amd64_image stage: postcheck variables: - CC: clang-9 + CC: "${CLANG}" CFLAGS: "${CFLAGS_COMMON}" CONFIGURE: "${SCAN_BUILD} ./configure" EXTRA_CONFIGURE: "--enable-dnstap --with-libidn2" @@ -878,7 +886,7 @@ tsan:buster:amd64: <<: *debian_buster_amd64_image <<: *build_job variables: - CC: clang-9 + CC: "${CLANG}" CFLAGS: "${CFLAGS_COMMON} -fsanitize=thread -DISC_MEM_USE_INTERNAL_MALLOC=0" LDFLAGS: "-fsanitize=thread" EXTRA_CONFIGURE: "--with-libidn2 --enable-pthread-rwlock" diff --git a/util/cformat.sh b/util/cformat.sh old mode 100644 new mode 100755 index 5d125f6fc0..3ad62318af --- a/util/cformat.sh +++ b/util/cformat.sh @@ -9,19 +9,27 @@ # See the COPYRIGHT file distributed with this work for additional # information regarding copyright ownership. +CLANG_FORMAT=clang-format +if [ -n "$1" ]; then + CLANG_FORMAT="$1" +fi + +CLANG_FORMAT_VERSION=$("$CLANG_FORMAT" --version | sed -e 's/clang-format version \([0-9]*\)\..*/\1/') + +if [ "$CLANG_FORMAT_VERSION" -lt 11 ]; then + echo "clang-format version 11 required" + exit 1 +fi + # use the main .clang-format for C files -find bin lib -name "*.c" | - xargs clang-format --style=file --sort-includes -i +"$CLANG_FORMAT" --style=file --sort-includes -i $(git ls-files '*.c') # set up a temporary .clang-format file for headers ONLY cp -f .clang-format .clang-format.bak sed -e 's/\(AlignConsecutiveDeclarations\).*/\1: true/' \ - -e 's/\(AlwaysBreakAfterReturnType\).*/\1: All/' \ .clang-format.bak > .clang-format -# modify header files -find bin lib -name "*.h" | - xargs clang-format --style=file --sort-includes -i +"$CLANG_FORMAT" --style=file --sort-includes -i $(git ls-files '*.h') # restore the original .clang-format file cp -f .clang-format.bak .clang-format