diff --git a/.clang-format b/.clang-format index 64efabb58..88f48f9c8 100644 --- a/.clang-format +++ b/.clang-format @@ -32,7 +32,7 @@ BitFieldColonSpacing: Both BraceWrapping: AfterCaseLabel: false AfterClass: false - AfterControlStatement: MultiLine + AfterControlStatement: Never AfterEnum: false AfterExternBlock: false AfterFunction: false @@ -56,7 +56,6 @@ BreakConstructorInitializers: BeforeComma BreakConstructorInitializersBeforeComma: false BreakInheritanceList: BeforeColon BreakStringLiterals: true -BracedInitializerIndentWidth: 8 ColumnLimit: 100 CommentPragmas: '^ IWYU pragma:' CompactNamespaces: false @@ -174,7 +173,7 @@ SpacesInLineCommentPrefix: Maximum: -1 SpacesInParentheses: false SpacesInSquareBrackets: false -Standard: Latest +Standard: c++20 StatementAttributeLikeMacros: - Q_EMIT StatementMacros: diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1b94e40d5..e63d7320c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,16 +14,28 @@ jobs: runs-on: ubuntu-latest container: fedora:latest steps: - - uses: actions/checkout@v4 - run: | dnf install -y \ - make gcc ninja-build meson clang-tools-extra git gcovr scdoc \ + make gcc ninja-build meson git gcovr scdoc \ libasan \ libcmocka-devel \ libedit-devel \ libevent-devel \ numactl-devel \ python3-pyelftools + - uses: actions/checkout@v4 - run: make - run: make coverage + lint: + runs-on: ubuntu-latest + steps: + - run: sudo apt-get install make clang-format git + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - run: make lint + # TODO: later, check commit messages here + - run: | + git config --global --add safe.directory $PWD + git log --oneline --decorate "${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}" + if: ${{ github.event.pull_request.base.sha && github.event.pull_request.head.sha }} diff --git a/GNUmakefile b/GNUmakefile index 148cbb094..918b28c13 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -41,16 +41,17 @@ $(BUILDDIR)/build.ninja: meson setup $(BUILDDIR) $(meson_opts) prune = -path $1 -prune -o -exclude = $(BUILDDIR) subprojects LICENSE .git README.md .lsan-suppressions main/include/stb_ds.h -c_src = `find * .* $(foreach d,$(exclude),$(call prune,$d)) -type f -name '*.[ch]' -print` -all_files = `find * .* $(foreach d,$(exclude),$(call prune,$d)) -type f -print` +exclude = $(BUILDDIR) subprojects LICENSE README.md main/include/stb_ds.h +c_src = find * $(foreach d,$(exclude),$(call prune,$d)) -type f -name '*.[ch]' -print +all_files = find * $(foreach d,$(exclude),$(call prune,$d)) -type f -print .PHONY: lint -lint: $(BUILDDIR)/build.ninja +lint: @echo '[clang-format]' - $Q clang-format --dry-run --Werror $(c_src) + $Q tmp=`mktemp` && trap "rm -f $$tmp" EXIT && $(c_src) > "$$tmp" && \ + clang-format --files="$$tmp" --dry-run --Werror @echo '[license-check]' - $Q ! for f in $(all_files); do \ + $Q ! $(all_files) | while read -r f; do \ if ! grep -qF 'SPDX-License-Identifier: BSD-3-Clause' $$f; then \ echo $$f; \ fi; \ @@ -65,4 +66,5 @@ lint: $(BUILDDIR)/build.ninja .PHONY: format format: @echo '[clang-format]' - $Q clang-format -i --verbose $(c_src) + $Q tmp=`mktemp` && trap "rm -f $$tmp" EXIT && $(c_src) > "$$tmp" && \ + clang-format --files="$$tmp" -i --verbose diff --git a/modules/ip4/datapath/lookup.c b/modules/ip4/datapath/lookup.c index ed70c0867..d1275f220 100644 --- a/modules/ip4/datapath/lookup.c +++ b/modules/ip4/datapath/lookup.c @@ -85,8 +85,7 @@ lookup_process(struct rte_graph *graph, struct rte_node *node, void **objs, uint // TODO: optimize with lookup of multiple packets if (rte_fib_lookup_bulk(fib, &dst_addr, &next_hop, 1) < 0 - || next_hop == BR_NO_ROUTE) - { + || next_hop == BR_NO_ROUTE) { next = NO_ROUTE; goto next_packet; }