]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
meson: Implement duplicate includes check with clang-tidy 37237/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 24 Apr 2025 10:06:49 +0000 (12:06 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 24 Apr 2025 10:36:38 +0000 (12:36 +0200)
Instead of doing this with our own script, let's use clang-tidy
instead.

.clang-tidy
meson.build
tools/check-includes.py [deleted file]

index f716a6650b3c4b861d833f1e2c1c7958f7f51c2f..b09c0996143fc4fbc2074eff3567235fd461fe34 100644 (file)
@@ -2,7 +2,8 @@
 ---
 Checks: '
     -*,
-    misc-header-include-cycle
+    misc-header-include-cycle,
+    readability-duplicate-include
 '
 WarningsAsErrors: '*'
 HeaderFileExtensions:
index 7458f060a22c8fcd1a48cc2130ad285c3eb3dee7..b3cf5f1744aa800217f12b55a24df6a1435f3eba 100644 (file)
@@ -2824,16 +2824,6 @@ if git.found()
                 run_target(
                         'ctags',
                         command : [env, 'ctags', '--tag-relative=never', '-o', '@0@/tags'.format(meson.project_source_root())] + all_files)
-
-                ############################################
-
-                if want_tests != 'false' and conf.get('BUILD_MODE_DEVELOPER') == 1
-                        test('check-includes',
-                             files('tools/check-includes.py'),
-                             args: all_files,
-                             env : ['PROJECT_SOURCE_ROOT=@0@'.format(meson.project_source_root())],
-                             suite : 'headers')
-                endif
         endif
 
         ####################################################
diff --git a/tools/check-includes.py b/tools/check-includes.py
deleted file mode 100755 (executable)
index 5d5b39f..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python3
-# SPDX-License-Identifier: LGPL-2.1-or-later
-
-# pylint: disable=consider-using-with
-
-import os
-import pathlib
-import re
-import sys
-
-PROJECT_ROOT = pathlib.Path(os.getenv('PROJECT_SOURCE_ROOT', '.'))
-
-def check_file(filename):
-    seen = set()
-    good = True
-    for n, line in enumerate(open(filename)):
-        m = re.match(r'^\s*#\s*include\s*[<"](\S*)[>"]', line)
-        if m:
-            include = m.group(1)
-            if include in seen:
-                try:
-                    filename = pathlib.Path(filename).resolve().relative_to(PROJECT_ROOT)
-                except ValueError:
-                    pass
-                print(f'{filename}:{n}: {line.strip()}')
-                good = False
-            seen.add(include)
-    return good
-
-if __name__ == '__main__':
-    all_good = all(check_file(name) for name in sys.argv[1:])
-    sys.exit(0 if all_good else 1)