diff options
Diffstat (limited to 'lldb/scripts/finishSwigWrapperClasses.py')
-rw-r--r-- | lldb/scripts/finishSwigWrapperClasses.py | 403 |
1 files changed, 0 insertions, 403 deletions
diff --git a/lldb/scripts/finishSwigWrapperClasses.py b/lldb/scripts/finishSwigWrapperClasses.py deleted file mode 100644 index 7e9166bf75e..00000000000 --- a/lldb/scripts/finishSwigWrapperClasses.py +++ /dev/null @@ -1,403 +0,0 @@ -""" Post process SWIG Bridge wrapper code Python script for Windows/LINUX/OSX platform - - -------------------------------------------------------------------------- - File: finishSwigWrapperClasses.py - - Overview: Python script(s) to finish off the SWIG Python C++ Script - Bridge wrapper code on the Windows/LINUX/OSX platform. - The Python scripts are equivalent to the shell script (.sh) - files. - We use SWIG to create a C++ file containing the appropriate - wrapper classes and functions for each scripting language, - before liblldb is built (thus the C++ file can be compiled - into liblldb. In some cases, additional work may need to be - done after liblldb has been compiled, to make the scripting - language stuff fully functional. Any such post-processing - is handled through the Python scripts called here. - - Gotchas: None. - - Copyright: None. - -------------------------------------------------------------------------- - -""" - -# Python modules: -import sys # Provide argument parsing -import os # Provide directory and file handling - -# Third party modules: - -# In-house modules: -import utilsArgsParse # Parse and validate this script's input arguments -import utilsOsType # Determine the OS type this script is running on -import utilsDebug # Debug Python scripts - -# Instantiations: -# True = Turn on script function tracing, False = off. -gbDbgVerbose = False -gbDbgFlag = False # Global debug mode flag, set by input parameter -# --dbgFlag. True = operate in debug mode. -# True = yes called from makefile system, False = not. -gbMakeFileFlag = False - -# User facing text: -strMsgErrorNoMain = "Program called by another Python script not allowed" -strExitMsgSuccess = "Program successful" -strExitMsgError = "Program error: " -strParameter = "Parameter: " -strMsgErrorOsTypeUnknown = "Unable to determine OS type" -strScriptDirNotFound = "Unable to locate the script directory \'/script\'" -strScriptLangsFound = "Found the following script languages:" -strPostProcessError = "Executing \'%s\' post process script failed: " -strScriptNotFound = "Unable to locate the post process script file \'%s\' in \'%s\'" -strScriptLangFound = "Found \'%s\' build script." -strScriptLangsFound = "Found the following script languages:" -strExecuteMsg = "Executing \'%s\' build script..." -strExecuteError = "Executing \'%s\' build script failed: " -strHelpInfo = "\ -Python script(s) to finish off the SWIG Python C++ Script \n\ -Bridge wrapper code on the Windows/LINUX/OSX platform. The Python \n\ -scripts are equivalent to the shell script (.sh) files \n\ -run on others platforms.\n\ -Args: -h (optional) Print help information on this program.\n\ - -d (optional) Determines whether or not this script\n\ - outputs additional information when running.\n\ - -m (optional) Specify called from Makefile system.\n\ - --srcRoot= The root of the lldb source tree.\n\ - --targetDir= Where the lldb framework/shared library gets put.\n\ - --cfgBldDir= (optional) Where the build-swig-Python-LLDB.py program \n\ - will put the lldb.py file it generated from running\n\ - SWIG.\n\ - --prefix= (optional) Is the root directory used to determine where\n\ - third-party modules for scripting languages should\n\ - be installed. Where non-Darwin systems want to put\n\ - the .py and .so files so that Python can find them\n\ - automatically. Python install directory.\n\ - --lldbLibDir (optional) The name of the directory containing liblldb.so.\n\ - \"lib\" by default.\n\ - --cmakeBuildConfiguration= (optional) Is the build configuration(Debug, Release, RelWithDebugInfo)\n\ - used to determine where the bin and lib directories are \n\ - created for a Windows build.\n\ - --argsFile= The args are read from a file instead of the\n\ - command line. Other command line args are ignored.\n\ - --useSystemSix Use system six.py version.\n\ -\n\ -Usage:\n\ - finishSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath\n\ - --cfgBldDir=ADirPath --prefix=ADirPath --lldbLibDir=ADirPath -m -d\n\ -\n\ -" # TAG_PROGRAM_HELP_INFO - -#++--------------------------------------------------------------------------- -# Details: Exit the program on success. Called on program successfully done -# its work. Returns a status result to the caller. -# Args: vnResult - (R) 0 or greater indicating success. -# vMsg - (R) Success message if any to show success to user. -# Returns: None. -# Throws: None. -#-- - - -def program_exit_success(vnResult, vMsg): - strMsg = "" - - if vMsg.__len__() != 0: - strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult) - print(strMsg) - - sys.exit(vnResult) - -#++--------------------------------------------------------------------------- -# Details: Exit the program with error. Called on exit program failed its -# task. Returns a status result to the caller. -# Args: vnResult - (R) A negative number indicating error condition. -# vMsg - (R) Error message to show to user. -# Returns: None. -# Throws: None. -#-- - - -def program_exit_on_failure(vnResult, vMsg): - print(("%s%s (%d)" % (strExitMsgError, vMsg, vnResult))) - sys.exit(vnResult) - -#++--------------------------------------------------------------------------- -# Details: Exit the program return a exit result number and print a message. -# Positive numbers and zero are returned for success other error -# occurred. -# Args: vnResult - (R) A -ve (an error), 0 or +ve number (ok or status). -# vMsg - (R) Error message to show to user. -# Returns: None. -# Throws: None. -#-- - - -def program_exit(vnResult, vMsg): - if vnResult >= 0: - program_exit_success(vnResult, vMsg) - else: - program_exit_on_failure(vnResult, vMsg) - -#++--------------------------------------------------------------------------- -# Details: Dump input parameters. -# Args: vDictArgs - (R) Map of input args to value. -# Returns: None. -# Throws: None. -#-- - - -def print_out_input_parameters(vDictArgs): - for arg, val in list(vDictArgs.items()): - strEqs = "" - strQ = "" - if val.__len__() != 0: - strEqs = " =" - strQ = "\"" - print(("%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ))) - -#++--------------------------------------------------------------------------- -# Details: Validate the arguments passed to the program. This function exits -# the program should error with the arguments be found. -# Args: vArgv - (R) List of arguments and values. -# Returns: Int - 0 = success, -ve = some failure. -# Dict - Map of arguments names to argument values -# Throws: None. -#-- - - -def validate_arguments(vArgv): - dbg = utilsDebug.CDebugFnVerbose("validate_arguments()") - strMsg = "" - dictArgs = {} - nResult = 0 - strListArgs = "hdm" # Format "hiox:" = -h -i -o -x <arg> - listLongArgs = [ - "srcRoot=", - "targetDir=", - "cfgBldDir=", - "prefix=", - "cmakeBuildConfiguration=", - "lldbLibDir=", - "lldbPythonPath=", - "argsFile", - "useSystemSix"] - dictArgReq = {"-h": "o", # o = optional, m = mandatory - "-d": "o", - "-m": "o", - "--srcRoot": "m", - "--targetDir": "m", - "--cfgBldDir": "o", - "--prefix": "o", - "--cmakeBuildConfiguration": "o", - "--lldbLibDir": "o", - "--argsFile": "o", - "--useSystemSix": "o", - "--lldbPythonPath": "m"} - - # Check for mandatory parameters - nResult, dictArgs, strMsg = utilsArgsParse.parse(vArgv, strListArgs, - listLongArgs, - dictArgReq, - strHelpInfo) - if nResult < 0: - program_exit_on_failure(nResult, strMsg) - - # User input -h for help - if nResult == 1: - program_exit_success(0, strMsg) - - return (nResult, dictArgs) - -#++--------------------------------------------------------------------------- -# Details: Locate post process script language directory and the script within -# and execute. -# Args: vStrScriptLang - (R) Name of the script language to build. -# vstrFinishFileName - (R) Prefix file name to build full name. -# vDictArgs - (R) Program input parameters. -# Returns: Int - 0 = Success, < 0 some error condition. -# Str - Error message. -# Throws: None. -#-- - - -def run_post_process(vStrScriptLang, vstrFinishFileName, vDictArgs): - dbg = utilsDebug.CDebugFnVerbose("run_post_process()") - nResult = 0 - strStatusMsg = "" - strScriptFile = vstrFinishFileName % vStrScriptLang - strScriptFileDir = os.path.normpath( - os.path.join( - vDictArgs["--srcRoot"], - "scripts", - vStrScriptLang)) - strScriptFilePath = os.path.join(strScriptFileDir, strScriptFile) - - # Check for the existence of the script file - strPath = os.path.normcase(strScriptFilePath) - bOk = os.path.exists(strPath) - if not bOk: - strDir = os.path.normcase(strScriptFileDir) - strStatusMsg = strScriptNotFound % (strScriptFile, strDir) - return (-9, strStatusMsg) - - if gbDbgFlag: - print((strScriptLangFound % vStrScriptLang)) - print((strExecuteMsg % vStrScriptLang)) - - # Change where Python looks for our modules - strDir = os.path.normcase(strScriptFileDir) - sys.path.append(strDir) - - # Execute the specific language script - dictArgs = vDictArgs # Remove any args not required before passing on - strModuleName = strScriptFile[: strScriptFile.__len__() - 3] - module = __import__(strModuleName) - nResult, strStatusMsg = module.main(dictArgs) - - # Revert sys path - sys.path.remove(strDir) - - return (nResult, strStatusMsg) - -#++--------------------------------------------------------------------------- -# Details: Step through each script language sub directory supported -# and execute post processing script for each scripting language, -# make sure the build script for that language exists. -# For now the only language we support is Python, but we expect this -# to change. -# Args: vDictArgs - (R) Program input parameters. -# Returns: Int - 0 = Success, < 0 some error condition. -# Str - Error message. -# Throws: None. -#-- - - -def run_post_process_for_each_script_supported(vDictArgs): - dbg = utilsDebug.CDebugFnVerbose( - "run_post_process_for_each_script_supported()") - nResult = 0 - strStatusMsg = "" - strScriptDir = os.path.normpath( - os.path.join( - vDictArgs["--srcRoot"], - "scripts")) - strFinishFileName = "finishSwig%sLLDB.py" - - # Check for the existence of the scripts folder - strScriptsDir = os.path.normcase(strScriptDir) - bOk = os.path.exists(strScriptsDir) - if not bOk: - return (-8, strScriptDirNotFound) - - # Look for any script language directories to build for - listDirs = ["Python"] - - # Iterate script directory find any script language directories - for scriptLang in listDirs: - dbg.dump_text("Executing language script for \'%s\'" % scriptLang) - nResult, strStatusMsg = run_post_process( - scriptLang, strFinishFileName, vDictArgs) - if nResult < 0: - break - - if nResult < 0: - strTmp = strPostProcessError % scriptLang - strTmp += strStatusMsg - strStatusMsg = strTmp - - return (nResult, strStatusMsg) - -#++--------------------------------------------------------------------------- -# Details: Program's main() with arguments passed in from the command line. -# Program either exits normally or with error from this function - -# top most level function. -# Args: vArgv - (R) List of arguments and values. -# Returns: None -# Throws: None. -#-- - - -def main(vArgv): - dbg = utilsDebug.CDebugFnVerbose("main()") - bOk = False - dictArgs = {} - nResult = 0 - strMsg = "" - - # The validate arguments fn will exit the program if tests fail - nResult, dictArgs = validate_arguments(vArgv) - - eOSType = utilsOsType.determine_os_type() - if eOSType == utilsOsType.EnumOsType.Unknown: - program_exit(-4, strMsgErrorOsTypeUnknown) - - global gbDbgFlag - gbDbgFlag = "-d" in dictArgs - if gbDbgFlag: - print_out_input_parameters(dictArgs) - - nResult, strMsg = run_post_process_for_each_script_supported(dictArgs) - - program_exit(nResult, strMsg) - -#----------------------------------------------------------------------------- -#----------------------------------------------------------------------------- -#----------------------------------------------------------------------------- - -# TAG_PROGRAM_HELP_INFO -""" Details: Program main entry point. - - -------------------------------------------------------------------------- - Args: -h (optional) Print help information on this program. - -d (optional) Determines whether or not this script - outputs additional information when running. - -m (optional) Specify called from Makefile system. If given locate - the LLDBWrapPython.cpp in --srcRoot/source folder - else in the --targetDir folder. - --srcRoot= The root of the lldb source tree. - --targetDir= Where the lldb framework/shared library gets put. - --cfgBldDir= Where the buildSwigPythonLLDB.py program will - (optional) put the lldb.py file it generated from running - SWIG. - --prefix= Is the root directory used to determine where - (optional) third-party modules for scripting languages should - be installed. Where non-Darwin systems want to put - the .py and .so files so that Python can find them - automatically. Python install directory. - --cmakeBuildConfiguration= (optional) Is the build configuration(Debug, Release, RelWithDebugInfo)\n\ - used to determine where the bin and lib directories are \n\ - created for a Windows build.\n\ - --lldbLibDir= The name of the directory containing liblldb.so. - (optional) "lib" by default. - --argsFile= The args are read from a file instead of the - command line. Other command line args are ignored. - --useSystemSix Use system six.py version. - Usage: - finishSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath - --cfgBldDir=ADirPath --prefix=ADirPath --lldbLibDir=ADirPath -m -d - --useSystemSix - - Results: 0 Success - -1 Error - invalid parameters passed. - -2 Error - incorrect number of mandatory parameters passed. - - -4 Error - unable to determine OS type. - -5 Error - program not run with name of "__main__". - -8 Error - unable to locate the scripts folder. - -9 Error - unable to locate the post process language script - file. - - -100+ - Error messages from the child language script file. - - -------------------------------------------------------------------------- - -""" - -# Called using "__main__" when not imported i.e. from the command line -if __name__ == "__main__": - utilsDebug.CDebugFnVerbose.bVerboseOn = gbDbgVerbose - dbg = utilsDebug.CDebugFnVerbose("__main__") - main(sys.argv[1:]) -else: - program_exit(-5, strMsgErrorNoMain) |