[Libclc-dev] [PATCH 1/1] configure.py: Make python3 friendly
Aaron Watry via Libclc-dev
libclc-dev at lists.llvm.org
Sun Jul 30 20:19:33 PDT 2017
On Sun, Jul 30, 2017 at 11:12 AM, Jan Vesely via Libclc-dev
<libclc-dev at lists.llvm.org> wrote:
> 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>
> ---
> We should probably switch to cmake to be in line with the rest of llvm.
> This just makes the build system behave nicely on systems with default
> python >= 3.
> An alternative would be to jjust change the shebang to python2
>
> build/metabuild.py | 2 +-
> configure.py | 23 ++++++++++++++++++-----
> 2 files changed, 19 insertions(+), 6 deletions(-)
>
> diff --git a/build/metabuild.py b/build/metabuild.py
> index 4ab5db5..b2d5a6e 100644
> --- a/build/metabuild.py
> +++ b/build/metabuild.py
> @@ -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)
> diff --git a/configure.py b/configure.py
> index f26f535..5908c4d 100755
> --- a/configure.py
> +++ b/configure.py
> @@ -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 them multiple times
"we might them"?
With that fixed:
Reviewed-by: Aaron Watry <awatry at gmail.com>
> + # 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']:
> --
> 2.13.3
>
> _______________________________________________
> Libclc-dev mailing list
> Libclc-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/libclc-dev
More information about the Libclc-dev
mailing list