[libc++] Fix MacOS platform detection broken in Python 3
authorLouis Dionne <ldionne@apple.com>
Wed, 29 Apr 2020 13:56:52 +0000 (09:56 -0400)
committerLouis Dionne <ldionne@apple.com>
Wed, 29 Apr 2020 14:00:56 +0000 (10:00 -0400)
Since 88af3ddb1e8a, libc++ will prefer Python 3 when available. It is
available on Apple platforms, so subprocess.check_output will return
bytes instead of str. This lead to comparisons against str to be false,
and the MacOS platform not being detected properly.

libcxx/utils/libcxx/test/target_info.py

index caa161e..696ad14 100644 (file)
@@ -91,13 +91,12 @@ class DarwinLocalTI(DefaultTargetInfo):
         super(DarwinLocalTI, self).__init__(full_config)
 
     def is_host_macosx(self):
-        name = subprocess.check_output(['sw_vers', '-productName']).strip()
+        name = subprocess.check_output(['sw_vers', '-productName']).decode().strip()
         return name == "Mac OS X"
 
     def get_macosx_version(self):
         assert self.is_host_macosx()
-        version = subprocess.check_output(
-            ['sw_vers', '-productVersion']).strip()
+        version = subprocess.check_output(['sw_vers', '-productVersion']).decode().strip()
         version = re.sub(r'([0-9]+\.[0-9]+)(\..*)?', r'\1', version)
         return version