]> granicus.if.org Git - python/commitdiff
[2.7] bpo-31221: patchcheck ignores external libraries (#3109) (#3118)
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 17 Aug 2017 15:13:01 +0000 (17:13 +0200)
committerGitHub <noreply@github.com>
Thu, 17 Aug 2017 15:13:01 +0000 (17:13 +0200)
* bpo-31221: patchcheck ignores external libraries (#3109)

Tools/scripts/patchcheck.py now ignores changes in directories which
are copies of external libraries:

* Modules/_ctypes/libffi_msvc/
* Modules/_ctypes/libffi_osx/
* Modules/_decimal/libmpdec/
* Modules/expat/
* Modules/zlib/

Drop also support for Mercurial, since CPython migrated to Git.

Exclude also libmpdec

patchcheck: exclude also libffi_osx and libffi_msvc
(cherry picked from commit 4a347ce426fe7381885703d9074d7a6b3aeb2f2b)

* Exclude also Modules/_ctypes/libffi on Python 2.7

* Remove _decimal/libmpdec, not in Python 2.7

Tools/scripts/patchcheck.py

index be46fe3d083b0371cae1194566b0fa346fe56c07..b69d54029ac988df99b88c8a8baeb0ab5d6d7706 100755 (executable)
@@ -10,8 +10,16 @@ import reindent
 import untabify
 
 
+# Excluded directories which are copies of external libraries:
+# don't check their coding style
+EXCLUDE_DIRS = [os.path.join('Modules', '_ctypes', 'libffi'),
+                os.path.join('Modules', '_ctypes', 'libffi_osx'),
+                os.path.join('Modules', '_ctypes', 'libffi_msvc'),
+                os.path.join('Modules', 'expat'),
+                os.path.join('Modules', 'zlib')]
 SRCDIR = sysconfig.get_config_var('srcdir')
 
+
 def n_files_str(count):
     """Return 'N file(s)' with the proper plurality on 'file'."""
     return "{} file{}".format(count, "s" if count != 1 else "")
@@ -102,7 +110,7 @@ def changed_files(base_branch=None):
             cmd += ' --rev qparent'
         st = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
         try:
-            return [x.decode().rstrip() for x in st.stdout]
+            filenames = [x.decode().rstrip() for x in st.stdout]
         finally:
             st.stdout.close()
     elif os.path.exists(os.path.join(SRCDIR, '.git')):
@@ -129,9 +137,19 @@ def changed_files(base_branch=None):
                 filenames.append(filename)
         finally:
             st.stdout.close()
-        return filenames
     else:
-        sys.exit('need a checkout to get modified files')
+        sys.exit('need a Mercurial or git checkout to get modified files')
+
+    filenames2 = []
+    for filename in filenames:
+        # Normalize the path to be able to match using .startswith()
+        filename = os.path.normpath(filename)
+        if any(filename.startswith(path) for path in EXCLUDE_DIRS):
+            # Exclude the file
+            continue
+        filenames2.append(filename)
+
+    return filenames2
 
 
 def report_modified_files(file_paths):