diff options
Diffstat (limited to 'scripts/swig_bot_lib/local.py')
-rw-r--r-- | scripts/swig_bot_lib/local.py | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/scripts/swig_bot_lib/local.py b/scripts/swig_bot_lib/local.py deleted file mode 100644 index b26ea2f53ead..000000000000 --- a/scripts/swig_bot_lib/local.py +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env python - -""" -Shared functionality used by `client` and `server` when generating or preparing -to generate SWIG on the local machine. -""" - -# Future imports -from __future__ import absolute_import -from __future__ import print_function - -# Python modules -import argparse -import imp -import io -import logging -import os -import subprocess -import sys -import tempfile -import zipfile - -# LLDB modules -import use_lldb_suite - -# Package imports -from lldbsuite.support import fs - - -class LocalConfig(object): - src_root = None - target_dir = None - languages = None - swig_executable = None - - -def pack_archive(bytes_io, src_root, filters): - logging.info("Creating input file package...") - zip_file = None - try: - # It's possible that a custom-built interpreter will not have the - # standard zlib module. If so, we can only store, not compress. By - # try to compress since we usually have a standard Python distribution. - zip_file = zipfile.ZipFile(bytes_io, mode='w', - compression=zipfile.ZIP_DEFLATED) - except RuntimeError: - zip_file = zipfile.ZipFile(bytes_io, mode='w', - compression=zipfile.ZIP_STORED) - archive_entries = [] - if filters is not None: - def filter_func(t): - subfolder = t[0] - ext = t[1] - full_path = os.path.normpath(os.path.join(src_root, subfolder)) - candidates = [os.path.normpath(os.path.join(full_path, f)) - for f in os.listdir(full_path)] - actual = filter( - lambda f: os.path.isfile(f) and os.path.splitext(f)[1] == ext, - candidates) - return (subfolder, map(lambda f: os.path.basename(f), actual)) - archive_entries = map(filter_func, filters) - else: - for (root, dirs, files) in os.walk(src_root): - logging.debug("Adding files {} from directory {} to output package" - .format(files, root)) - if len(files) > 0: - rel_root = os.path.relpath(root, src_root) - archive_entries.append((rel_root, files)) - - archive_entries = list(archive_entries) - for entry in archive_entries: - subfolder = entry[0] - files = list(entry[1]) - for file in files: - rel_path = os.path.normpath(os.path.join(subfolder, file)) - full_path = os.path.join(src_root, rel_path) - logging.info("{} -> {}".format(full_path, rel_path)) - zip_file.write(full_path, rel_path) - - return zip_file - - -def unpack_archive(folder, archive_bytes): - zip_data = io.BytesIO(archive_bytes) - logging.debug("Opening zip archive...") - zip_file = zipfile.ZipFile(zip_data, mode='r') - zip_file.extractall(folder) - zip_file.close() - - -def generate(options): - include_folder = os.path.join(options.src_root, "include") - in_file = os.path.join(options.src_root, "scripts", "lldb.swig") - include_folder = os.path.normcase(include_folder) - - for lang in options.languages: - lang = lang.lower() - out_dir = os.path.join(options.target_dir, lang.title()) - if not os.path.exists(out_dir): - os.makedirs(out_dir) - out_file = os.path.join(out_dir, "LLDBWrap{}.cpp".format(lang.title())) - swig_command = [ - options.swig_executable, - "-c++", - ] - swig_command.append("-" + lang) - if lang == "python": - swig_command.append("-threads") - - swig_command.extend([ - "-I" + include_folder, - "-D__STDC_LIMIT_MACROS", - "-D__STDC_CONSTANT_MACROS", - "-outdir", out_dir, - "-o", out_file, - in_file - ]) - - logging.info("generating swig {} bindings into {}" - .format(lang, out_dir)) - logging.debug("swig command line: {}".format(swig_command)) - try: - # Execute swig - swig_output = subprocess.check_output( - swig_command, stderr=subprocess.STDOUT, universal_newlines=True) - - logging.info("swig generation succeeded") - if swig_output is not None and len(swig_output) > 0: - logging.info("swig output: %s", swig_output) - return (0, swig_output) - except subprocess.CalledProcessError as e: - logging.error("An error occurred executing swig. returncode={}" - .format(e.returncode)) - logging.error(e.output) - return (e.returncode, e.output) |