lint: remove excluded files from whitespace check #34831

pull fanquake wants to merge 5 commits into bitcoin:master from fanquake:git_lint_remove_excludes changing 10 files +98 −108
  1. fanquake commented at 10:44 am on March 16, 2026: member
    The .cpp/.h have been fixed since #32482 and 5d25a82b9a5e54f74cc066599541bc1d3da70988. Fix other offending files.
  2. lint: remove excluded .cpp/.h files from whitespace check
    These have been fixed since #32482 and
    5d25a82b9a5e54f74cc066599541bc1d3da70988.
    04e2118372
  3. DrahtBot added the label Tests on Mar 16, 2026
  4. DrahtBot commented at 10:44 am on March 16, 2026: contributor

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Reviews

    See the guideline for information on the review process.

    Type Reviewers
    ACK stickies-v, maflcko, sedited, kevkevinpal
    Stale ACK hebasto

    If your review is incorrectly listed, please copy-paste <!–meta-tag:bot-skip–> into the comment that the bot should ignore.

  5. sedited approved
  6. sedited commented at 11:10 am on March 16, 2026: contributor
    ACK 04e211837296aa2317bc5118863c15e5d76aa752
  7. in test/lint/test_runner/src/lint_text_format.rs:21 in 04e2118372
    19@@ -20,14 +20,11 @@ fn get_pathspecs_exclude_whitespace() -> Vec<String> {
    20             // Temporary excludes, or existing violations
    21             "contrib/init/bitcoind.openrc",
    


    maflcko commented at 11:38 am on March 16, 2026:

    Those two seem trivial enough to fix in a new commit:

      0diff --git a/contrib/init/bitcoind.openrc b/contrib/init/bitcoind.openrc
      1index 013a1a6070..30e7be36fc 100644
      2--- a/contrib/init/bitcoind.openrc
      3+++ b/contrib/init/bitcoind.openrc
      4@@ -2,3 +2,3 @@
      5 
      6-# backward compatibility for existing gentoo layout 
      7+# backward compatibility for existing gentoo layout
      8 #
      9diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus
     10index bb693e7305..c8244af153 100755
     11--- a/contrib/macdeploy/macdeployqtplus
     12+++ b/contrib/macdeploy/macdeployqtplus
     13@@ -44,3 +44,3 @@ class FrameworkInfo(object):
     14         self.destinationVersionContentsDirectory = ""
     15-    
     16+
     17     def __eq__(self, other):
     18@@ -50,3 +50,3 @@ class FrameworkInfo(object):
     19             return False
     20-    
     21+
     22     def __str__(self):
     23@@ -64,6 +64,6 @@ class FrameworkInfo(object):
     24 """
     25-    
     26+
     27     def isDylib(self):
     28         return self.frameworkName.endswith(".dylib")
     29-    
     30+
     31     def isQtFramework(self):
     32@@ -73,3 +73,3 @@ class FrameworkInfo(object):
     33             return self.frameworkName.startswith("Qt")
     34-    
     35+
     36     reOLine = re.compile(r'^(.+) \(compatibility version [0-9.]+, current version [0-9.]+\)$')
     37@@ -77,3 +77,3 @@ class FrameworkInfo(object):
     38     bundleBinaryDirectory = "Contents/MacOS"
     39-    
     40+ [@classmethod](/bitcoin-bitcoin/contributor/classmethod/)
     41@@ -83,3 +83,3 @@ class FrameworkInfo(object):
     42             return None
     43-        
     44+
     45         # Don't deploy system libraries
     46@@ -87,3 +87,3 @@ class FrameworkInfo(object):
     47             return None
     48-        
     49+
     50         m = cls.reOLine.match(line)
     51@@ -91,5 +91,5 @@ class FrameworkInfo(object):
     52             raise RuntimeError(f"Line could not be parsed: {line}")
     53-        
     54+
     55         path = m.group(1)
     56-        
     57+
     58         info = cls()
     59@@ -97,3 +97,3 @@ class FrameworkInfo(object):
     60         info.installName = path
     61-        
     62+
     63         if path.endswith(".dylib"):
     64@@ -103,3 +103,3 @@ class FrameworkInfo(object):
     65             info.frameworkPath = path
     66-            
     67+
     68             info.binaryDirectory = dirname
     69@@ -108,3 +108,3 @@ class FrameworkInfo(object):
     70             info.version = "-"
     71-            
     72+
     73             info.installName = path
     74@@ -123,3 +123,3 @@ class FrameworkInfo(object):
     75                 raise RuntimeError(f"Could not find .framework or .dylib in line: {line}")
     76-            
     77+
     78             info.frameworkName = parts[i]
     79@@ -127,3 +127,3 @@ class FrameworkInfo(object):
     80             info.frameworkPath = os.path.join(info.frameworkDirectory, info.frameworkName)
     81-            
     82+
     83             info.binaryName = parts[i+3]
     84@@ -132,6 +132,6 @@ class FrameworkInfo(object):
     85             info.version = parts[i+2]
     86-            
     87+
     88             info.deployedInstallName = f"@executable_path/../Frameworks/{os.path.join(info.frameworkName, info.binaryPath)}"
     89             info.destinationDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, info.binaryDirectory)
     90-            
     91+
     92             info.sourceResourcesDirectory = os.path.join(info.frameworkPath, "Resources")
     93@@ -141,3 +141,3 @@ class FrameworkInfo(object):
     94             info.destinationVersionContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Versions", info.version, "Contents")
     95-        
     96+
     97         return info
     98@@ -291,3 +291,3 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
     99         deploymentInfo = DeploymentInfo()
    100-    
    101+
    102     while len(frameworks) > 0:
    103@@ -295,5 +295,5 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
    104         deploymentInfo.deployedFrameworks.append(framework.frameworkName)
    105-        
    106+
    107         print("Processing", framework.frameworkName, "...")
    108-        
    109+
    110         # Get the Qt path from one of the Qt frameworks
    111@@ -301,3 +301,3 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
    112             deploymentInfo.detectQtPath(framework.frameworkDirectory)
    113-        
    114+
    115         if framework.installName.startswith("@executable_path") or framework.installName.startswith(bundlePath):
    116@@ -305,6 +305,6 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
    117             continue
    118-        
    119+
    120         # install_name_tool the new id into the binary
    121         changeInstallName(framework.installName, framework.deployedInstallName, binaryPath, verbose)
    122-        
    123+
    124         # Copy framework to app bundle.
    125@@ -314,6 +314,6 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
    126             continue
    127-        
    128+
    129         if strip:
    130             runStrip(deployedBinaryPath, verbose)
    131-        
    132+
    133         # install_name_tool it a new id.
    134@@ -322,6 +322,6 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
    135         dependencies = getFrameworks(deployedBinaryPath, verbose, rpath=framework.frameworkDirectory)
    136-        
    137+
    138         for dependency in dependencies:
    139             changeInstallName(dependency.installName, dependency.deployedInstallName, deployedBinaryPath, verbose)
    140-            
    141+
    142             # Deploy framework if necessary.
    143@@ -329,3 +329,3 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
    144                 frameworks.append(dependency)
    145-    
    146+
    147     return deploymentInfo
    148@@ -357,6 +357,6 @@ def deployPlugins(appBundleInfo: ApplicationBundleInfo, deploymentInfo: Deployme
    149             plugins.append((pluginDirectory, pluginName))
    150-    
    151+
    152     for pluginDirectory, pluginName in plugins:
    153         print("Processing plugin", os.path.join(pluginDirectory, pluginName), "...")
    154-        
    155+
    156         sourcePath = os.path.join(deploymentInfo.pluginPath, pluginDirectory, pluginName)
    157@@ -365,3 +365,3 @@ def deployPlugins(appBundleInfo: ApplicationBundleInfo, deploymentInfo: Deployme
    158             os.makedirs(destinationDirectory)
    159-        
    160+
    161         destinationPath = os.path.join(destinationDirectory, pluginName)
    162@@ -371,11 +371,11 @@ def deployPlugins(appBundleInfo: ApplicationBundleInfo, deploymentInfo: Deployme
    163             print(" to:", destinationPath)
    164-        
    165+
    166         if strip:
    167             runStrip(destinationPath, verbose)
    168-        
    169+
    170         dependencies = getFrameworks(destinationPath, verbose)
    171-        
    172+
    173         for dependency in dependencies:
    174             changeInstallName(dependency.installName, dependency.deployedInstallName, destinationPath, verbose)
    175-            
    176+
    177             # Deploy framework if necessary.
    178@@ -448,3 +448,3 @@ if config.plugins:
    179     print("+ Deploying plugins +")
    180-    
    181+
    182     try:
    183diff --git a/test/lint/test_runner/src/lint_text_format.rs b/test/lint/test_runner/src/lint_text_format.rs
    184index ca51e6db08..87637dd647 100644
    185--- a/test/lint/test_runner/src/lint_text_format.rs
    186+++ b/test/lint/test_runner/src/lint_text_format.rs
    187@@ -20,4 +20,2 @@ fn get_pathspecs_exclude_whitespace() -> Vec<String> {
    188             // Temporary excludes, or existing violations
    189-            "contrib/init/bitcoind.openrc",
    190-            "contrib/macdeploy/macdeployqtplus",
    191             "src/crypto/sha256_sse4.cpp",
    

    maflcko commented at 11:41 am on March 16, 2026:

    Maybe even the tabs in the shell scripts, but up to you:

     0diff --git a/contrib/qos/tc.sh b/contrib/qos/tc.sh
     1index 2c48fc2a26..4e4237084e 100755
     2--- a/contrib/qos/tc.sh
     3+++ b/contrib/qos/tc.sh
     4@@ -34,9 +34,9 @@ tc filter add dev ${IF} parent 1: protocol ip prio 1 handle 1 fw classid 1:10
     5 tc filter add dev ${IF} parent 1: protocol ip prio 2 handle 2 fw classid 1:11
     6 
     7 if [ -n "${LOCALNET_V6}" ] ; then
     8-       # v6 cannot have the same priority value as v4
     9-       tc filter add dev ${IF} parent 1: protocol ipv6 prio 3 handle 1 fw classid 1:10
    10-       tc filter add dev ${IF} parent 1: protocol ipv6 prio 4 handle 2 fw classid 1:11
    11+  # v6 cannot have the same priority value as v4
    12+  tc filter add dev ${IF} parent 1: protocol ipv6 prio 3 handle 1 fw classid 1:10
    13+  tc filter add dev ${IF} parent 1: protocol ipv6 prio 4 handle 2 fw classid 1:11
    14 fi
    15 
    16 #delete any existing rules
    17@@ -57,6 +57,6 @@ iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET_V4} -j M
    18 iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET_V4} -j MARK --set-mark 0x2
    19 
    20 if [ -n "${LOCALNET_V6}" ] ; then
    21-       ip6tables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
    22-       ip6tables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
    23+  ip6tables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
    24+  ip6tables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
    25 fi
    

    fanquake commented at 11:44 am on March 16, 2026:
    Sure, can push something up here.
  8. maflcko approved
  9. maflcko commented at 11:41 am on March 16, 2026: member
    lgtm, but I think the trivial fixes are easy enough to be done here as well, to avoid a follow-up doing them
  10. hebasto approved
  11. hebasto commented at 11:43 am on March 16, 2026: member
    ACK 04e211837296aa2317bc5118863c15e5d76aa752.
  12. fanquake renamed this:
    lint: remove excluded .cpp/.h files from whitespace check
    lint: remove excluded files from whitespace check
    on Mar 16, 2026
  13. maflcko commented at 1:18 pm on March 16, 2026: member

    review ACK 3d13795497ca024361c8fbdb1e082d138103dc1d 🚦

    Signature:

    0untrusted comment: signature from minisign secret key on empty file; verify via: minisign -Vm "${path_to_any_empty_file}" -P RWTRmVTMeKV5noAMqVlsMugDDCyyTSbA3Re5AkUrhvLVln0tSaFWglOw -x "${path_to_this_whole_four_line_signature_blob}"
    1RUTRmVTMeKV5npGrKx1nqXCw5zeVHdtdYURB/KlyA/LMFgpNCs+SkW9a8N95d+U4AP1RJMi+krxU1A3Yux4bpwZNLvVBKy0wLgM=
    2trusted comment: review ACK 3d13795497ca024361c8fbdb1e082d138103dc1d 🚦
    3kJTnfI2cvDNbweD7sbSK59kK5WwRdxRcmkwwjboc0Jn33xOswCx/XIAm8JHKULJCsONfkBP+iZ/BOIPLDhNRBA==
    
  14. DrahtBot requested review from hebasto on Mar 16, 2026
  15. DrahtBot requested review from sedited on Mar 16, 2026
  16. in contrib/verify-commits/gpg.sh:22 in 3d13795497
    29+    # an attacker could construct a pull-req that results in a commit object that
    30+    # they've created a collision for. Not the most likely attack, but preventing
    31+    # it is pretty easy so we do so as a "belt-and-suspenders" measure.
    32+    for LINE in $(gpg --version); do
    33+        case "$LINE" in
    34+                "gpg (GnuPG) 1.4.1"*|"gpg (GnuPG) 2.0."*)
    


    stickies-v commented at 1:27 pm on March 16, 2026:

    nit: this one’s indented a bit too much now. would be nice to just clean up the messed up indentation in general here, while we’re doing similar fixups:

     0diff --git a/contrib/verify-commits/gpg.sh b/contrib/verify-commits/gpg.sh
     1index 7b4218367c..bcb117f19a 100755
     2--- a/contrib/verify-commits/gpg.sh
     3+++ b/contrib/verify-commits/gpg.sh
     4@@ -19,10 +19,10 @@ else
     5     # it is pretty easy so we do so as a "belt-and-suspenders" measure.
     6     for LINE in $(gpg --version); do
     7         case "$LINE" in
     8-                "gpg (GnuPG) 1.4.1"*|"gpg (GnuPG) 2.0."*)
     9+            "gpg (GnuPG) 1.4.1"*|"gpg (GnuPG) 2.0."*)
    10                 echo "Please upgrade to at least gpg 2.1.10 to check for weak signatures" > /dev/stderr
    11-                                printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null
    12-                                exit $?
    13+                printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null
    14+                exit $?
    15                 ;;
    16             # We assume if you're running 2.1+, you're probably running 2.1.10+
    17             # gpg will fail otherwise
    18@@ -30,6 +30,6 @@ else
    19             # gpg will fail otherwise
    20         esac
    21     done
    22-        printf '%s\n' "$INPUT" | gpg --trust-model always --weak-digest sha1 "$@" 2>/dev/null
    23-        exit $?
    24+    printf '%s\n' "$INPUT" | gpg --trust-model always --weak-digest sha1 "$@" 2>/dev/null
    25+    exit $?
    26 fi
    
  17. hebasto approved
  18. hebasto commented at 2:40 pm on March 16, 2026: member
    re-ACK 3d13795497ca024361c8fbdb1e082d138103dc1d.
  19. stickies-v approved
  20. stickies-v commented at 3:21 pm on March 16, 2026: contributor

    ACK 3d13795497ca024361c8fbdb1e082d138103dc1d

    Not really obvious from the commit title, but 3d13795497ca024361c8fbdb1e082d138103dc1d is not a pure refactor but increases the subtree exclusions to lint-locale-dependence.py and lint-include-guards.py. Since these are subtrees, that seems like a good change.

  21. contrib: fix whitespace issues in scripts ee8c22eb6a
  22. lint: fix lint issue in lint script
    Replace the tabs with spaces.
    ecefc12927
  23. lint: add missing ipc/test to grep_boost_fixture_test_suite 8864917d8b
  24. lint: more reuse of SHARED_EXCLUDED_SUBTREES f55c891a65
  25. fanquake force-pushed on Mar 16, 2026
  26. stickies-v commented at 3:27 pm on March 16, 2026: contributor
    re-ACK f55c891a65ed76e593be4108939cf6998036646a
  27. DrahtBot requested review from maflcko on Mar 16, 2026
  28. DrahtBot requested review from hebasto on Mar 16, 2026
  29. maflcko commented at 3:59 pm on March 16, 2026: member

    re-ACK f55c891a65ed76e593be4108939cf6998036646a 🗿

    Signature:

    0untrusted comment: signature from minisign secret key on empty file; verify via: minisign -Vm "${path_to_any_empty_file}" -P RWTRmVTMeKV5noAMqVlsMugDDCyyTSbA3Re5AkUrhvLVln0tSaFWglOw -x "${path_to_this_whole_four_line_signature_blob}"
    1RUTRmVTMeKV5npGrKx1nqXCw5zeVHdtdYURB/KlyA/LMFgpNCs+SkW9a8N95d+U4AP1RJMi+krxU1A3Yux4bpwZNLvVBKy0wLgM=
    2trusted comment: re-ACK f55c891a65ed76e593be4108939cf6998036646a 🗿
    3I9IK2h3IqXgVYCFxownDpz76v+5D6EyLnJEdWqfOb9kdWjSaffIVvjeTRYN3cYHgTmuXRJBkX9oAtiEx4HVgDg==
    
  30. sedited approved
  31. sedited commented at 5:10 pm on March 16, 2026: contributor
    Re-ACK f55c891a65ed76e593be4108939cf6998036646a
  32. kevkevinpal commented at 7:40 pm on March 16, 2026: contributor
    ACK f55c891
  33. sedited merged this on Mar 16, 2026
  34. sedited closed this on Mar 16, 2026

  35. fanquake deleted the branch on Mar 17, 2026

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-05 12:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me