]> granicus.if.org Git - python/commitdiff
bpo-33717: pythoninfo: add CC --version (#7290)
authorVictor Stinner <vstinner@redhat.com>
Thu, 31 May 2018 22:33:03 +0000 (00:33 +0200)
committerGitHub <noreply@github.com>
Thu, 31 May 2018 22:33:03 +0000 (00:33 +0200)
Get the version of the C compiler.

Lib/test/pythoninfo.py

index f1b02336f7e3918134cb983051b21248bcfbc2c9..776f03f8b58b5cdabc3cc607f1d20e4f9d73a3e9 100644 (file)
@@ -489,6 +489,34 @@ def collect_test_support(info_add):
     call_func(info_add, 'test_support.python_is_optimized', support, 'python_is_optimized')
 
 
+def collect_cc(info_add):
+    import subprocess
+    import sysconfig
+
+    CC = sysconfig.get_config_var('CC')
+    if not CC:
+        return
+
+    try:
+        import shlex
+        args = shlex.split(CC)
+    except ImportError:
+        args = CC.split()
+    args.append('--version')
+    proc = subprocess.Popen(args,
+                            stdout=subprocess.PIPE,
+                            stderr=subprocess.STDOUT,
+                            universal_newlines=True)
+    stdout = proc.communicate()[0]
+    if proc.returncode:
+        # CC --version failed: ignore error
+        return
+
+    text = stdout.splitlines()[0]
+    text = normalize_text(text)
+    info_add('CC.version', text)
+
+
 def collect_info(info):
     error = False
     info_add = info.add
@@ -515,6 +543,7 @@ def collect_info(info):
         collect_decimal,
         collect_testcapi,
         collect_resource,
+        collect_cc,
 
         # Collecting from tests should be last as they have side effects.
         collect_test_socket,