[libclc] r309820 - configure.py: Make python3 friendly

Jan Vesely via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 2 08:00:59 PDT 2017


Author: jvesely
Date: Wed Aug  2 08:00:59 2017
New Revision: 309820

URL: http://llvm.org/viewvc/llvm-project?rev=309820&view=rev
Log:
configure.py: Make python3 friendly

mostly prints and exceptions.
Few behavioral changes are documented in the text
Generated Makefile is identical between python2 and python3

Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
Reviewed-by: Aaron Watry <awatry at gmail.com>

Modified:
    libclc/trunk/build/metabuild.py
    libclc/trunk/configure.py

Modified: libclc/trunk/build/metabuild.py
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/build/metabuild.py?rev=309820&r1=309819&r2=309820&view=diff
==============================================================================
--- libclc/trunk/build/metabuild.py (original)
+++ libclc/trunk/build/metabuild.py Wed Aug  2 08:00:59 2017
@@ -97,4 +97,4 @@ def from_name(name):
     return Make()
   if name == 'ninja':
     return Ninja()
-  raise LookupError, 'unknown generator: %s; supported generators are make and ninja' % name
+  raise LookupError('unknown generator: %s; supported generators are make and ninja' % name)

Modified: libclc/trunk/configure.py
URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/configure.py?rev=309820&r1=309819&r2=309820&view=diff
==============================================================================
--- libclc/trunk/configure.py (original)
+++ libclc/trunk/configure.py Wed Aug  2 08:00:59 2017
@@ -1,4 +1,11 @@
 #!/usr/bin/python
+from __future__ import print_function
+
+# We only need this for int() cast, which works by default in python 2
+try:
+    from builtins import int
+except:
+    pass
 
 def c_compiler_rule(b, name, description, compiler, flags):
   command = "%s -MMD -MF $out.d %s -c -o $out $in" % (compiler, flags)
@@ -58,19 +65,21 @@ if not pkgconfigdir:
 
 def llvm_config(args):
   try:
-    proc = Popen([llvm_config_exe] + args, stdout=PIPE)
+    # Universal newlines translate different newline formats to '\n'
+    # it also force the input to be string instead of bytes in python 3
+    proc = Popen([llvm_config_exe] + args, stdout=PIPE, universal_newlines=True)
     return proc.communicate()[0].rstrip().replace('\n', ' ')
   except OSError:
-    print "Error executing llvm-config."
-    print "Please ensure that llvm-config is in your $PATH, or use --with-llvm-config."
+    print("Error executing llvm-config.")
+    print("Please ensure that llvm-config is in your $PATH, or use --with-llvm-config.")
     sys.exit(1)
 
-llvm_version = string.split(string.replace(llvm_config(['--version']), 'svn', ''), '.')
+llvm_version = llvm_config(['--version']).replace('svn', '').split('.')
 llvm_int_version = int(llvm_version[0]) * 100 + int(llvm_version[1]) * 10
 llvm_string_version = 'LLVM' + llvm_version[0] + '.' + llvm_version[1]
 
 if llvm_int_version < 400:
-    print "libclc requires LLVM >= 4.0"
+    print("libclc requires LLVM >= 4.0")
     sys.exit(1)
 
 llvm_system_libs = llvm_config(['--system-libs'])
@@ -180,6 +189,10 @@ for target in targets:
   libdirs = filter(lambda d: os.path.isfile(os.path.join(d, 'SOURCES')),
                    [os.path.join(srcdir, subdir, 'lib') for subdir in subdirs])
 
+  # The above are iterables in python3 but we might use them multiple times
+  # if more then one device is supported.
+  incdirs = list(incdirs)
+  libdirs = list(libdirs)
   clang_cl_includes = ' '.join(["-I%s" % incdir for incdir in incdirs])
 
   for device in available_targets[target]['devices']:




More information about the cfe-commits mailing list