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

    <!--e57a25ab6845829454e8d69fc972939a-->

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

    <!--021abf342d371248e50ceaed478a90ca-->

    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 <code>&lt;!--meta-tag:bot-skip--&gt;</code> into the comment that the bot should ignore.

    <!--5faf32d7da4f0f540f40219e4f7537a3-->

  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:

    diff --git a/contrib/init/bitcoind.openrc b/contrib/init/bitcoind.openrc
    index 013a1a6070..30e7be36fc 100644
    --- a/contrib/init/bitcoind.openrc
    +++ b/contrib/init/bitcoind.openrc
    @@ -2,3 +2,3 @@
     
    -# backward compatibility for existing gentoo layout 
    +# backward compatibility for existing gentoo layout
     #
    diff --git a/contrib/macdeploy/macdeployqtplus b/contrib/macdeploy/macdeployqtplus
    index bb693e7305..c8244af153 100755
    --- a/contrib/macdeploy/macdeployqtplus
    +++ b/contrib/macdeploy/macdeployqtplus
    @@ -44,3 +44,3 @@ class FrameworkInfo(object):
             self.destinationVersionContentsDirectory = ""
    -    
    +
         def __eq__(self, other):
    @@ -50,3 +50,3 @@ class FrameworkInfo(object):
                 return False
    -    
    +
         def __str__(self):
    @@ -64,6 +64,6 @@ class FrameworkInfo(object):
     """
    -    
    +
         def isDylib(self):
             return self.frameworkName.endswith(".dylib")
    -    
    +
         def isQtFramework(self):
    @@ -73,3 +73,3 @@ class FrameworkInfo(object):
                 return self.frameworkName.startswith("Qt")
    -    
    +
         reOLine = re.compile(r'^(.+) \(compatibility version [0-9.]+, current version [0-9.]+\)$')
    @@ -77,3 +77,3 @@ class FrameworkInfo(object):
         bundleBinaryDirectory = "Contents/MacOS"
    -    
    + [@classmethod](/bitcoin-bitcoin/contributor/classmethod/)
    @@ -83,3 +83,3 @@ class FrameworkInfo(object):
                 return None
    -        
    +
             # Don't deploy system libraries
    @@ -87,3 +87,3 @@ class FrameworkInfo(object):
                 return None
    -        
    +
             m = cls.reOLine.match(line)
    @@ -91,5 +91,5 @@ class FrameworkInfo(object):
                 raise RuntimeError(f"Line could not be parsed: {line}")
    -        
    +
             path = m.group(1)
    -        
    +
             info = cls()
    @@ -97,3 +97,3 @@ class FrameworkInfo(object):
             info.installName = path
    -        
    +
             if path.endswith(".dylib"):
    @@ -103,3 +103,3 @@ class FrameworkInfo(object):
                 info.frameworkPath = path
    -            
    +
                 info.binaryDirectory = dirname
    @@ -108,3 +108,3 @@ class FrameworkInfo(object):
                 info.version = "-"
    -            
    +
                 info.installName = path
    @@ -123,3 +123,3 @@ class FrameworkInfo(object):
                     raise RuntimeError(f"Could not find .framework or .dylib in line: {line}")
    -            
    +
                 info.frameworkName = parts[i]
    @@ -127,3 +127,3 @@ class FrameworkInfo(object):
                 info.frameworkPath = os.path.join(info.frameworkDirectory, info.frameworkName)
    -            
    +
                 info.binaryName = parts[i+3]
    @@ -132,6 +132,6 @@ class FrameworkInfo(object):
                 info.version = parts[i+2]
    -            
    +
                 info.deployedInstallName = f"@executable_path/../Frameworks/{os.path.join(info.frameworkName, info.binaryPath)}"
                 info.destinationDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, info.binaryDirectory)
    -            
    +
                 info.sourceResourcesDirectory = os.path.join(info.frameworkPath, "Resources")
    @@ -141,3 +141,3 @@ class FrameworkInfo(object):
                 info.destinationVersionContentsDirectory = os.path.join(cls.bundleFrameworkDirectory, info.frameworkName, "Versions", info.version, "Contents")
    -        
    +
             return info
    @@ -291,3 +291,3 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
             deploymentInfo = DeploymentInfo()
    -    
    +
         while len(frameworks) > 0:
    @@ -295,5 +295,5 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
             deploymentInfo.deployedFrameworks.append(framework.frameworkName)
    -        
    +
             print("Processing", framework.frameworkName, "...")
    -        
    +
             # Get the Qt path from one of the Qt frameworks
    @@ -301,3 +301,3 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
                 deploymentInfo.detectQtPath(framework.frameworkDirectory)
    -        
    +
             if framework.installName.startswith("@executable_path") or framework.installName.startswith(bundlePath):
    @@ -305,6 +305,6 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
                 continue
    -        
    +
             # install_name_tool the new id into the binary
             changeInstallName(framework.installName, framework.deployedInstallName, binaryPath, verbose)
    -        
    +
             # Copy framework to app bundle.
    @@ -314,6 +314,6 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
                 continue
    -        
    +
             if strip:
                 runStrip(deployedBinaryPath, verbose)
    -        
    +
             # install_name_tool it a new id.
    @@ -322,6 +322,6 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
             dependencies = getFrameworks(deployedBinaryPath, verbose, rpath=framework.frameworkDirectory)
    -        
    +
             for dependency in dependencies:
                 changeInstallName(dependency.installName, dependency.deployedInstallName, deployedBinaryPath, verbose)
    -            
    +
                 # Deploy framework if necessary.
    @@ -329,3 +329,3 @@ def deployFrameworks(frameworks: list[FrameworkInfo], bundlePath: str, binaryPat
                     frameworks.append(dependency)
    -    
    +
         return deploymentInfo
    @@ -357,6 +357,6 @@ def deployPlugins(appBundleInfo: ApplicationBundleInfo, deploymentInfo: Deployme
                 plugins.append((pluginDirectory, pluginName))
    -    
    +
         for pluginDirectory, pluginName in plugins:
             print("Processing plugin", os.path.join(pluginDirectory, pluginName), "...")
    -        
    +
             sourcePath = os.path.join(deploymentInfo.pluginPath, pluginDirectory, pluginName)
    @@ -365,3 +365,3 @@ def deployPlugins(appBundleInfo: ApplicationBundleInfo, deploymentInfo: Deployme
                 os.makedirs(destinationDirectory)
    -        
    +
             destinationPath = os.path.join(destinationDirectory, pluginName)
    @@ -371,11 +371,11 @@ def deployPlugins(appBundleInfo: ApplicationBundleInfo, deploymentInfo: Deployme
                 print(" to:", destinationPath)
    -        
    +
             if strip:
                 runStrip(destinationPath, verbose)
    -        
    +
             dependencies = getFrameworks(destinationPath, verbose)
    -        
    +
             for dependency in dependencies:
                 changeInstallName(dependency.installName, dependency.deployedInstallName, destinationPath, verbose)
    -            
    +
                 # Deploy framework if necessary.
    @@ -448,3 +448,3 @@ if config.plugins:
         print("+ Deploying plugins +")
    -    
    +
         try:
    diff --git a/test/lint/test_runner/src/lint_text_format.rs b/test/lint/test_runner/src/lint_text_format.rs
    index ca51e6db08..87637dd647 100644
    --- a/test/lint/test_runner/src/lint_text_format.rs
    +++ b/test/lint/test_runner/src/lint_text_format.rs
    @@ -20,4 +20,2 @@ fn get_pathspecs_exclude_whitespace() -> Vec<String> {
                 // Temporary excludes, or existing violations
    -            "contrib/init/bitcoind.openrc",
    -            "contrib/macdeploy/macdeployqtplus",
                 "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:

    diff --git a/contrib/qos/tc.sh b/contrib/qos/tc.sh
    index 2c48fc2a26..4e4237084e 100755
    --- a/contrib/qos/tc.sh
    +++ b/contrib/qos/tc.sh
    @@ -34,9 +34,9 @@ tc filter add dev ${IF} parent 1: protocol ip prio 1 handle 1 fw classid 1:10
     tc filter add dev ${IF} parent 1: protocol ip prio 2 handle 2 fw classid 1:11
     
     if [ -n "${LOCALNET_V6}" ] ; then
    -       # v6 cannot have the same priority value as v4
    -       tc filter add dev ${IF} parent 1: protocol ipv6 prio 3 handle 1 fw classid 1:10
    -       tc filter add dev ${IF} parent 1: protocol ipv6 prio 4 handle 2 fw classid 1:11
    +  # v6 cannot have the same priority value as v4
    +  tc filter add dev ${IF} parent 1: protocol ipv6 prio 3 handle 1 fw classid 1:10
    +  tc filter add dev ${IF} parent 1: protocol ipv6 prio 4 handle 2 fw classid 1:11
     fi
     
     #delete any existing rules
    @@ -57,6 +57,6 @@ iptables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET_V4} -j M
     iptables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET_V4} -j MARK --set-mark 0x2
     
     if [ -n "${LOCALNET_V6}" ] ; then
    -       ip6tables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
    -       ip6tables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
    +  ip6tables -t mangle -A OUTPUT -p tcp -m tcp --dport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
    +  ip6tables -t mangle -A OUTPUT -p tcp -m tcp --sport 8333 ! -d ${LOCALNET_V6} -j MARK --set-mark 0x4
     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 🚦

    <details><summary>Show signature</summary>

    Signature:

    untrusted 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}"
    RUTRmVTMeKV5npGrKx1nqXCw5zeVHdtdYURB/KlyA/LMFgpNCs+SkW9a8N95d+U4AP1RJMi+krxU1A3Yux4bpwZNLvVBKy0wLgM=
    trusted comment: review ACK 3d13795497ca024361c8fbdb1e082d138103dc1d 🚦
    kJTnfI2cvDNbweD7sbSK59kK5WwRdxRcmkwwjboc0Jn33xOswCx/XIAm8JHKULJCsONfkBP+iZ/BOIPLDhNRBA==
    

    </details>

  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:

    <details> <summary>git diff on 3d13795497</summary>

    diff --git a/contrib/verify-commits/gpg.sh b/contrib/verify-commits/gpg.sh
    index 7b4218367c..bcb117f19a 100755
    --- a/contrib/verify-commits/gpg.sh
    +++ b/contrib/verify-commits/gpg.sh
    @@ -19,10 +19,10 @@ else
         # it is pretty easy so we do so as a "belt-and-suspenders" measure.
         for LINE in $(gpg --version); do
             case "$LINE" in
    -                "gpg (GnuPG) 1.4.1"*|"gpg (GnuPG) 2.0."*)
    +            "gpg (GnuPG) 1.4.1"*|"gpg (GnuPG) 2.0."*)
                     echo "Please upgrade to at least gpg 2.1.10 to check for weak signatures" > /dev/stderr
    -                                printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null
    -                                exit $?
    +                printf '%s\n' "$INPUT" | gpg --trust-model always "$@" 2>/dev/null
    +                exit $?
                     ;;
                 # We assume if you're running 2.1+, you're probably running 2.1.10+
                 # gpg will fail otherwise
    @@ -30,6 +30,6 @@ else
                 # gpg will fail otherwise
             esac
         done
    -        printf '%s\n' "$INPUT" | gpg --trust-model always --weak-digest sha1 "$@" 2>/dev/null
    -        exit $?
    +    printf '%s\n' "$INPUT" | gpg --trust-model always --weak-digest sha1 "$@" 2>/dev/null
    +    exit $?
     fi
    
    

    </details>

  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 🗿

    <details><summary>Show signature</summary>

    Signature:

    untrusted 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}"
    RUTRmVTMeKV5npGrKx1nqXCw5zeVHdtdYURB/KlyA/LMFgpNCs+SkW9a8N95d+U4AP1RJMi+krxU1A3Yux4bpwZNLvVBKy0wLgM=
    trusted comment: re-ACK f55c891a65ed76e593be4108939cf6998036646a 🗿
    I9IK2h3IqXgVYCFxownDpz76v+5D6EyLnJEdWqfOb9kdWjSaffIVvjeTRYN3cYHgTmuXRJBkX9oAtiEx4HVgDg==
    

    </details>

  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-26 06:12 UTC

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