diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2021-12-29 11:53:58 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2021-12-29 11:53:58 -0500 |
commit | d26c5137fe09deb8b7dda9b197570f32824ff917 (patch) | |
tree | a459b126fb302f437f63b6a5a0b1ae19146eb05d | |
parent | 104f8b40ba36999b81d88470900f01c20654d3ce (diff) | |
parent | 8c160a96931520044688471c8d1ea6148aacb719 (diff) | |
download | python-setuptools-git-feature/distutils-8c160a9693.tar.gz |
Merge https://github.com/pypa/distutils into feature/distutils-8c160a9693feature/distutils-8c160a9693
-rw-r--r-- | setuptools/_distutils/cygwinccompiler.py | 6 | ||||
-rw-r--r-- | setuptools/_distutils/log.py | 6 | ||||
-rw-r--r-- | setuptools/_distutils/sysconfig.py | 26 | ||||
-rw-r--r-- | setuptools/_distutils/tests/test_sysconfig.py | 10 |
4 files changed, 25 insertions, 23 deletions
diff --git a/setuptools/_distutils/cygwinccompiler.py b/setuptools/_distutils/cygwinccompiler.py index 4a38dfda..fd082f6d 100644 --- a/setuptools/_distutils/cygwinccompiler.py +++ b/setuptools/_distutils/cygwinccompiler.py @@ -354,3 +354,9 @@ def is_cygwincc(cc): out_string = check_output(shlex.split(cc) + ['-dumpmachine']) return out_string.strip().endswith(b'cygwin') + +get_versions = None +""" +A stand-in for the previous get_versions() function to prevent failures +when monkeypatched. See pypa/setuptools#2969. +""" diff --git a/setuptools/_distutils/log.py b/setuptools/_distutils/log.py index 8ef6b28e..a68b156b 100644 --- a/setuptools/_distutils/log.py +++ b/setuptools/_distutils/log.py @@ -3,13 +3,14 @@ # The class here is styled after PEP 282 so that it could later be # replaced with a standard Python logging implementation. +import sys + DEBUG = 1 INFO = 2 WARN = 3 ERROR = 4 FATAL = 5 -import sys class Log: @@ -54,6 +55,7 @@ class Log: def fatal(self, msg, *args): self._log(FATAL, msg, args) + _global_log = Log() log = _global_log.log debug = _global_log.debug @@ -62,12 +64,14 @@ warn = _global_log.warn error = _global_log.error fatal = _global_log.fatal + def set_threshold(level): # return the old threshold for use from tests old = _global_log.threshold _global_log.threshold = level return old + def set_verbosity(v): if v <= 0: set_threshold(WARN) diff --git a/setuptools/_distutils/sysconfig.py b/setuptools/_distutils/sysconfig.py index d36d94f7..6f1bbb48 100644 --- a/setuptools/_distutils/sysconfig.py +++ b/setuptools/_distutils/sysconfig.py @@ -13,6 +13,7 @@ import _imp import os import re import sys +import sysconfig from .errors import DistutilsPlatformError @@ -274,10 +275,10 @@ def get_config_h_filename(): inc_dir = os.path.join(_sys_home or project_base, "PC") else: inc_dir = _sys_home or project_base + return os.path.join(inc_dir, 'pyconfig.h') else: - inc_dir = get_python_inc(plat_specific=1) + return sysconfig.get_config_h_filename() - return os.path.join(inc_dir, 'pyconfig.h') # Allow this value to be patched by pkgsrc. Ref pypa/distutils#16. @@ -308,26 +309,7 @@ def parse_config_h(fp, g=None): optional dictionary is passed in as the second argument, it is used instead of a new dictionary. """ - if g is None: - g = {} - define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") - undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") - # - while True: - line = fp.readline() - if not line: - break - m = define_rx.match(line) - if m: - n, v = m.group(1, 2) - try: v = int(v) - except ValueError: pass - g[n] = v - else: - m = undef_rx.match(line) - if m: - g[m.group(1)] = 0 - return g + return sysconfig.parse_config_h(fp, vars=g) # Regexes needed for parsing Makefile (and similar syntaxes, diff --git a/setuptools/_distutils/tests/test_sysconfig.py b/setuptools/_distutils/tests/test_sysconfig.py index 80cd1599..d28f4712 100644 --- a/setuptools/_distutils/tests/test_sysconfig.py +++ b/setuptools/_distutils/tests/test_sysconfig.py @@ -283,6 +283,16 @@ class SysconfigTestCase(support.EnvironGuard, unittest.TestCase): outs, errs = p.communicate() self.assertEqual(0, p.returncode, "Subprocess failed: " + outs) + def test_parse_config_h(self): + config_h = sysconfig.get_config_h_filename() + input = {} + with open(config_h, encoding="utf-8") as f: + result = sysconfig.parse_config_h(f, g=input) + self.assertTrue(input) + self.assertTrue(input is result) + with open(config_h, encoding="utf-8") as f: + result = sysconfig.parse_config_h(f) + self.assertTrue(result) def test_suite(): suite = unittest.TestSuite() |