summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts/Python')
-rw-r--r--lldb/scripts/Python/buildSwigPython.py782
1 files changed, 0 insertions, 782 deletions
diff --git a/lldb/scripts/Python/buildSwigPython.py b/lldb/scripts/Python/buildSwigPython.py
deleted file mode 100644
index 1b1c8c68cb6..00000000000
--- a/lldb/scripts/Python/buildSwigPython.py
+++ /dev/null
@@ -1,782 +0,0 @@
-""" Python SWIG wrapper creation script Windows/LINUX/OSX platform
-
- --------------------------------------------------------------------------
- File: buildSwigPython.py
-
- Overview: Creates SWIG Python C++ Script Bridge wrapper code. This
- script is called by build-swig-wrapper-classes.py in turn.
-
- Gotchas: Python debug complied pythonXX_d.lib is required for SWIG
- to build correct LLDBWrapperPython.cpp in order for Visual
- Studio to compile successfully. The release version of the
- Python lib will not work.
- LLDB (dir) CMakeLists.txt uses windows environmental
- variables $PYTHON_INCLUDE and $PYTHON_LIB to locate
- Python files required for the build.
-
- Copyright: None.
- --------------------------------------------------------------------------
-
-"""
-
-# Python modules:
-import os # Provide directory and file handling, determine OS information
-import sys # sys.executable
-import subprocess # Call external programs
-import shutil # File handling
-
-# Third party modules:
-
-# In-house modules:
-import utilsOsType # Determine the OS type this script is running on
-import utilsDebug # Debug Python scripts
-
-# User facing text:
-strMsgLldbDisablePythonEnv = "Python build aborted as LLDB_DISABLE_PYTHON \
-environmental variable is defined"
-strMsgLldbDisableGccEnv = "Python build aborted as GCC_PREPROCESSOR_DEFINITIONS \
-environmental variable is defined"
-strMsgHdrFiles = "Header files are:"
-strMsgIFaceFiles = "SWIG interface files are"
-strErrMsgProgFail = "Program failure: "
-strMsgFileNewrSwigOpFile = "\'%s\' is newer than \'%s\'\nSWIG file will need to be re-built"
-strMsgFileNotExist = "\'%s\' could not be found\nSWIG file will need to be re-built"
-strErrMsgOsTypeUnknown = "Unable to determine current OS type"
-strMsgNotNeedUpdate = "Everything is up-to-date"
-strMsgSwigNeedRebuild = "SWIG needs to be re-run"
-strErrMsgSwigParamsMissing = "This script was not passed '--swigExecutable' as required."
-strMsgSwigExecute = "SWIG executing the following:\n\'%s'"
-strErrMsgSwigExecute = "SWIG failed: %s"
-strErrMsgPythonExecute = "Python script '%s' failed: %s"
-strMsgSwigNoGenDep = "SWIG ran with no generated dependencies, script exit early"
-strMsgSwigGenDep = "SWIG ran and generated dependencies, script exit early, deleted '%s'"
-strErrMsgFrameWkPyDirNotExist = "Unable to find the LLDB. Framework directory is '%s'"
-strMsgFoundLldbFrameWkDir = "Found '%s'"
-strErrMsgModifyPythonLldbPyFileNotFound = "Unable to find '%s' in '%s'"
-
-#++---------------------------------------------------------------------------
-# Details: Retrieve the list of hard coded lldb header file names and
-# put in the program's dictArgs map container. Make paths compatible
-# with the current OS.
-# Note this does not necessarily match the content of those
-# directories. The resultant header string is inserted into the
-# dictionary vDictArgs key "--headerFiles".
-# Args: vDictArgs - (RW) Program input parameters.
-# Returns: Bool - True = success, False = failure.
-# Throws: None.
-#--
-def get_header_files(vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose("Python script get_header_files()")
- listHeaderFiles = ["/include/lldb/API/lldb.h", # .sh has /include/lldb/lldb.h 21/11/2013
- "/include/lldb/lldb-defines.h",
- "/include/lldb/lldb-enumerations.h",
- "/include/lldb/lldb-forward.h",
- "/include/lldb/lldb-forward-rtti.h",
- "/include/lldb/lldb-types.h",
- "/include/lldb/API/SBAddress.h",
- "/include/lldb/API/SBAttachInfo.h",
- "/include/lldb/API/SBBlock.h",
- "/include/lldb/API/SBBreakpoint.h",
- "/include/lldb/API/SBBreakpointLocation.h",
- "/include/lldb/API/SBBroadcaster.h",
- "/include/lldb/API/SBCommandInterpreter.h",
- "/include/lldb/API/SBCommandReturnObject.h",
- "/include/lldb/API/SBCommunication.h",
- "/include/lldb/API/SBCompileUnit.h",
- "/include/lldb/API/SBData.h",
- "/include/lldb/API/SBDebugger.h",
- "/include/lldb/API/SBError.h",
- "/include/lldb/API/SBEvent.h",
- "/include/lldb/API/SBExpressionOptions.h",
- "/include/lldb/API/SBFileSpec.h",
- "/include/lldb/API/SBFrame.h",
- "/include/lldb/API/SBFunction.h",
- "/include/lldb/API/SBHostOS.h",
- "/include/lldb/API/SBInputReader.h",
- "/include/lldb/API/SBInstruction.h",
- "/include/lldb/API/SBInstructionList.h",
- "/include/lldb/API/SBLanguageRuntime.h",
- "/include/lldb/API/SBLaunchInfo.h",
- "/include/lldb/API/SBLineEntry.h",
- "/include/lldb/API/SBListener.h",
- "/include/lldb/API/SBModule.h",
- "/include/lldb/API/SBModuleSpec.h",
- "/include/lldb/API/SBProcess.h",
- "/include/lldb/API/SBSourceManager.h",
- "/include/lldb/API/SBStream.h",
- "/include/lldb/API/SBStringList.h",
- "/include/lldb/API/SBSymbol.h",
- "/include/lldb/API/SBSymbolContext.h",
- "/include/lldb/API/SBSymbolContextList.h",
- "/include/lldb/API/SBTarget.h",
- "/include/lldb/API/SBThread.h",
- "/include/lldb/API/SBThreadCollection.h",
- "/include/lldb/API/SBType.h",
- "/include/lldb/API/SBTypeCategory.h",
- "/include/lldb/API/SBTypeFilter.h",
- "/include/lldb/API/SBTypeFormat.h",
- "/include/lldb/API/SBTypeNameSpecifier.h",
- "/include/lldb/API/SBTypeSummary.h",
- "/include/lldb/API/SBTypeSynthetic.h",
- "/include/lldb/API/SBValue.h",
- "/include/lldb/API/SBValueList.h",
- "/include/lldb/API/SBWatchpoint.h"]
- bDebug = "-d" in vDictArgs
- strRt = vDictArgs["--srcRoot"]
- strRt = os.path.normcase(strRt)
-
- strHeaderFiles = ""
- for strHdr in listHeaderFiles[0: len(listHeaderFiles)]:
- strHdr = os.path.normcase(strHdr)
- strHeaderFiles += " %s%s" % (strRt, strHdr)
-
- if bDebug:
- print(strMsgHdrFiles)
- print(strHeaderFiles)
-
- vDictArgs["--headerFiles"] = strHeaderFiles
-
- return True
-
-#++---------------------------------------------------------------------------
-# Details: Retrieve the list of hard coded lldb SWIG interface file names and
-# put in the program's dictArgs map container. Make paths compatible
-# with the current OS.
-# Note this does not necessarily match the content of those
-# directories. The resultant interface string is inserted into the
-# dictionary vDictArgs key "--ifaceFiles".
-# Args: vDictArgs - (RW) Program input parameters.
-# Returns: Bool - True = success, False = failure.
-# Throws: None.
-#--
-def get_interface_files(vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose("Python script get_interface_files()")
- listIFaceFiles = ["/scripts/interface/SBAddress.i",
- "/scripts/interface/SBAttachInfo.i",
- "/scripts/interface/SBBlock.i",
- "/scripts/interface/SBBreakpoint.i",
- "/scripts/interface/SBBreakpointLocation.i",
- "/scripts/interface/SBBroadcaster.i",
- "/scripts/interface/SBCommandInterpreter.i",
- "/scripts/interface/SBCommandReturnObject.i",
- "/scripts/interface/SBCommunication.i",
- "/scripts/interface/SBCompileUnit.i",
- "/scripts/interface/SBData.i",
- "/scripts/interface/SBDebugger.i",
- "/scripts/interface/SBDeclaration.i",
- "/scripts/interface/SBError.i",
- "/scripts/interface/SBEvent.i",
- "/scripts/interface/SBExpressionOptions.i",
- "/scripts/interface/SBFileSpec.i",
- "/scripts/interface/SBFrame.i",
- "/scripts/interface/SBFunction.i",
- "/scripts/interface/SBHostOS.i",
- "/scripts/interface/SBInputReader.i",
- "/scripts/interface/SBInstruction.i",
- "/scripts/interface/SBInstructionList.i",
- "/scripts/interface/SBLanguageRuntime.i",
- "/scripts/interface/SBLaunchInfo.i",
- "/scripts/interface/SBLineEntry.i",
- "/scripts/interface/SBListener.i",
- "/scripts/interface/SBModule.i",
- "/scripts/interface/SBModuleSpec.i",
- "/scripts/interface/SBProcess.i",
- "/scripts/interface/SBSourceManager.i",
- "/scripts/interface/SBStream.i",
- "/scripts/interface/SBStringList.i",
- "/scripts/interface/SBSymbol.i",
- "/scripts/interface/SBSymbolContext.i",
- "/scripts/interface/SBTarget.i",
- "/scripts/interface/SBThread.i",
- "/scripts/interface/SBThreadCollection.i",
- "/scripts/interface/SBType.i",
- "/scripts/interface/SBTypeCategory.i",
- "/scripts/interface/SBTypeFilter.i",
- "/scripts/interface/SBTypeFormat.i",
- "/scripts/interface/SBTypeNameSpecifier.i",
- "/scripts/interface/SBTypeSummary.i",
- "/scripts/interface/SBTypeSynthetic.i",
- "/scripts/interface/SBValue.i",
- "/scripts/interface/SBValueList.i",
- "/scripts/interface/SBWatchpoint.i"]
- bDebug = "-d" in vDictArgs
- strRt = vDictArgs["--srcRoot"]
- strRt = os.path.normcase(strRt)
-
- strInterfaceFiles = ""
- for strIFace in listIFaceFiles[0: len(listIFaceFiles)]:
- strIFace = os.path.normcase(strIFace)
- strInterfaceFiles += " %s%s" % (strRt, strIFace)
-
- if bDebug:
- print(strMsgIFaceFiles)
- print(strInterfaceFiles)
-
- vDictArgs["--ifaceFiles"] = strInterfaceFiles
-
- return True
-
-#++---------------------------------------------------------------------------
-# Details: Compare which file is newer.
-# Args: vFile1 - (R) File name path.
-# vFile2 - (R) File name path.
-# Returns: Int - 0 = both not exist, 1 = file 1 newer, 2 = file 2 newer,
-# 3 = file 1 not exist.
-# Throws: None.
-#--
-def which_file_is_newer(vFile1, vFile2):
- bF1 = os.path.exists(vFile1)
- bF2 = os.path.exists(vFile2)
- if bF1 == False and bF2 == False:
- return 0 # Both files not exist
- if bF1 == False:
- return 3 # File 1 not exist
- if bF2 == False:
- return 1 # File 1 is newer / file 2 not exist
- f1Stamp = os.path.getmtime(vFile1)
- f2Stamp = os.path.getmtime(vFile2)
- if f1Stamp > f2Stamp:
- return 1 # File 1 is newer
-
- return 2 # File 2 is newer than file 1
-
-#++---------------------------------------------------------------------------
-# Details: Determine whether the specified file exists.
-# Args: vDictArgs - (R) Program input parameters.
-# vstrFileNamePath - (R) Check this file exists.
-# Returns: Bool - True = Files exists, false = not found.
-# Throws: None.
-#--
-def check_file_exists(vDictArgs, vstrFileNamePath):
- bExists = False
- bDebug = "-d" in vDictArgs
-
- if os.path.exists(vstrFileNamePath):
- bExists = True
- elif bDebug:
- print((strMsgFileNotExist % vstrFileNamePath))
-
- return bExists
-
-#++---------------------------------------------------------------------------
-# Details: Determine whether the specified file is newer than the
-# LLDBWrapPython.cpp file.
-# Args: vDictArgs - (R) Program input parameters.
-# vstrSwigOpFileNamePath - (R) LLDBWrapPython.cpp file.
-# vstrFileNamePath - (R) Specific file.
-# Returns: Bool - True = SWIG update required, false = no update required.
-# Throws: None.
-#--
-def check_newer_file(vDictArgs, vstrSwigOpFileNamePath, vstrFileNamePath):
- bNeedUpdate = False
- bDebug = "-d" in vDictArgs
-
- strMsg = ""
- nResult = which_file_is_newer(vstrFileNamePath, vstrSwigOpFileNamePath)
- if nResult == 1:
- strMsg = strMsgFileNewrSwigOpFile % (vstrFileNamePath,
- vstrSwigOpFileNamePath)
- bNeedUpdate = True
- elif nResult == 3:
- strMsg = strMsgFileNotExist % vstrFileNamePath
- bNeedUpdate = True
-
- if bNeedUpdate and bDebug:
- print(strMsg)
-
- return bNeedUpdate
-
-#++---------------------------------------------------------------------------
-# Details: Determine whether the any files in the list are newer than the
-# LLDBWrapPython.cpp file.
-# Args: vDictArgs - (R) Program input parameters.
-# vstrSwigOpFileNamePath - (R) LLDBWrapPython.cpp file.
-# vstrFiles - (R) Multi string file names ' ' delimiter.
-# Returns: Bool - True = SWIG update required, false = no update required.
-# Throws: None.
-#--
-def check_newer_files(vDictArgs, vstrSwigOpFileNamePath, vstrFiles):
- bNeedUpdate = False
-
- listFiles = vstrFiles.split()
- for strFile in listFiles:
- if check_newer_file(vDictArgs, vstrSwigOpFileNamePath, strFile):
- bNeedUpdate = True
- break
-
- return bNeedUpdate
-
-#++---------------------------------------------------------------------------
-# Details: Retrieve the directory path for Python's dist_packages/
-# site_package folder on a Windows platform.
-# Args: vDictArgs - (R) Program input parameters.
-# Returns: Bool - True = function success, False = failure.
-# Str - Python Framework directory path.
-# strErrMsg - Error description on task failure.
-# Throws: None.
-#--
-def get_framework_python_dir_windows(vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose("Python script get_framework_python_dir_windows()")
- bOk = True
- strWkDir = ""
- strErrMsg = ""
-
- # We are being built by LLVM, so use the PYTHON_INSTALL_DIR argument,
- # and append the python version directory to the end of it. Depending
- # on the system other stuff may need to be put here as well.
- from distutils.sysconfig import get_python_lib
- strPythonInstallDir = ""
- bHaveArgPrefix = "--prefix" in vDictArgs
- if bHaveArgPrefix:
- strPythonInstallDir = vDictArgs["--prefix"]
- if strPythonInstallDir.__len__() != 0:
- strWkDir = get_python_lib(True, False, strPythonInstallDir)
- else:
- strWkDir = get_python_lib(True, False)
- strWkDir += "/lldb"
- strWkDir = os.path.normcase(strWkDir)
-
- return (bOk, strWkDir, strErrMsg)
-
-#++---------------------------------------------------------------------------
-# Details: Retrieve the directory path for Python's dist_packages/
-# site_package folder on a UNIX style platform.
-# Args: vDictArgs - (R) Program input parameters.
-# Returns: Bool - True = function success, False = failure.
-# Str - Python Framework directory path.
-# strErrMsg - Error description on task failure.
-# Throws: None.
-#--
-def get_framework_python_dir_other_platforms(vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose("Python script get_framework_python_dir_other_platform()")
- bOk = True
- strWkDir = ""
- strErrMsg = ""
- bDbg = "-d" in vDictArgs
-
- bMakeFileCalled = "-m" in vDictArgs
- if bMakeFileCalled:
- dbg.dump_text("Built by LLVM")
- return get_framework_python_dir_windows(vDictArgs)
- else:
- dbg.dump_text("Built by XCode")
- # We are being built by XCode, so all the lldb Python files can go
- # into the LLDB.framework/Resources/Python subdirectory.
- strWkDir = vDictArgs["--targetDir"]
- strWkDir += "/LLDB.framework"
- if os.path.exists(strWkDir):
- if bDbg:
- print((strMsgFoundLldbFrameWkDir % strWkDir))
- strWkDir += "/Resources/Python/lldb"
- strWkDir = os.path.normcase(strWkDir)
- else:
- bOk = False
- strErrMsg = strErrMsgFrameWkPyDirNotExist % strWkDir
-
- return (bOk, strWkDir, strErrMsg)
-
-#++---------------------------------------------------------------------------
-# Details: Retrieve the directory path for Python's dist_packages/
-# site_package folder depending on the type of OS platform being
-# used.
-# Args: vDictArgs - (R) Program input parameters.
-# Returns: Bool - True = function success, False = failure.
-# Str - Python Framework directory path.
-# strErrMsg - Error description on task failure.
-# Throws: None.
-#--
-def get_framework_python_dir(vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose("Python script get_framework_python_dir()")
- bOk = True
- strWkDir = ""
- strErrMsg = ""
-
- eOSType = utilsOsType.determine_os_type()
- if eOSType == utilsOsType.EnumOsType.Unknown:
- bOk = False
- strErrMsg = strErrMsgOsTypeUnknown
- elif eOSType == utilsOsType.EnumOsType.Windows:
- bOk, strWkDir, strErrMsg = get_framework_python_dir_windows(vDictArgs)
- else:
- bOk, strWkDir, strErrMsg = get_framework_python_dir_other_platforms(vDictArgs)
-
- return (bOk, strWkDir, strErrMsg)
-
-#++---------------------------------------------------------------------------
-# Details: Retrieve the configuration build path if present and valid (using
-# parameter --cfgBlddir or copy the Python Framework directory.
-# Args: vDictArgs - (R) Program input parameters.
-# vstrFrameworkPythonDir - (R) Python framework directory.
-# Returns: Bool - True = function success, False = failure.
-# Str - Config directory path.
-# strErrMsg - Error description on task failure.
-# Throws: None.
-#--
-def get_config_build_dir(vDictArgs, vstrFrameworkPythonDir):
- dbg = utilsDebug.CDebugFnVerbose("Python script get_config_build_dir()")
- bOk = True
- strErrMsg = ""
-
- strConfigBldDir = ""
- bHaveConfigBldDir = "--cfgBldDir" in vDictArgs
- if bHaveConfigBldDir:
- strConfigBldDir = vDictArgs["--cfgBldDir"]
- if (bHaveConfigBldDir == False) or (strConfigBldDir.__len__() == 0):
- strConfigBldDir = vstrFrameworkPythonDir
-
- return (bOk, strConfigBldDir, strErrMsg)
-
-"""
-Removes given file, ignoring error if it doesn't exist.
-"""
-def remove_ignore_enoent(filename):
- try:
- os.remove(filename)
- except OSError as e:
- import errno
- if e.errno != errno.ENOENT:
- raise
-
-#++---------------------------------------------------------------------------
-# Details: Do a SWIG code rebuild. Any number returned by SWIG which is not
-# zero is treated as an error. The generate dependencies flag decides
-# how SWIG is rebuilt and if set false will cause the script to exit
-# immediately with the exit status + 200 if status is not zero.
-# Args: vDictArgs - (R) Program input parameters.
-# vstrSwigDepFile - (R) SWIG dependency file.
-# vstrCfgBldDir - (R) Configuration build directory.
-# vstrSwigOpFile - (R) SWIG output file.
-# vstrSwigIpFile - (R) SWIG input file.
-# Returns: Bool - True = function success, False = failure.
-# strMsg - Error or status message.
-# nExitResult - Exit result of SWIG executable.
-# - 0 = Success.
-# - 1 = Success, exit this script and parent script.
-# - +200 = A SWIG error status result.
-# Throws: None.
-#--
-def do_swig_rebuild(vDictArgs, vstrSwigDepFile, vstrCfgBldDir,
- vstrSwigOpFile, vstrSwigIpFile):
- dbg = utilsDebug.CDebugFnVerbose("Python script do_swig_rebuild()")
- bOk = True
- strMsg = ""
- bDbg = "-d" in vDictArgs
- bGenDependencies = "-M" in vDictArgs
- strSwig = vDictArgs["--swigExecutable"]
- strSrcRoot = vDictArgs["--srcRoot"]
-
- strCfg = vstrCfgBldDir
- strOp = vstrSwigOpFile
- strIp = vstrSwigIpFile
- strSi = os.path.normcase("./.")
- strRoot = strSrcRoot + "/include"
- strRoot = os.path.normcase(strRoot)
- strDep = ""
- if bGenDependencies:
- strDep = vstrSwigDepFile + ".tmp"
-
- # Build the SWIG args list
- strCmd = "%s " % strSwig
- strCmd += "-c++ "
- strCmd += "-shadow "
- strCmd += "-python "
- strCmd += "-threads "
- strCmd += "-I\"%s\" " % strRoot
- strCmd += "-I\"%s\" " % strSi
- strCmd += "-D__STDC_LIMIT_MACROS "
- strCmd += "-D__STDC_CONSTANT_MACROS "
- if bGenDependencies:
- strCmd += "-MMD -MF \"%s\" " % strDep
- strCmd += "-outdir \"%s\" " % strCfg
- strCmd += "-o \"%s\" " % strOp
- strCmd += "\"%s\" " % strIp
- if bDbg:
- print((strMsgSwigExecute % strCmd))
-
- # Execute SWIG
- process = subprocess.Popen(strCmd, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE, shell=True)
- # Wait for SWIG process to terminate
- strStdOut, strStdErr = process.communicate()
- nResult = process.returncode
- if nResult != 0:
- bOk = False
- nResult += 200
- strMsg = strErrMsgSwigExecute % strStdErr
- else:
- if bDbg and (strStdOut.__len__() != 0):
- strMsg = strStdOut
-
- if bGenDependencies:
- if bOk:
- if os.path.exists(strDep):
- shutil.move(strDep, vstrSwigDepFile)
- else:
- os.remove(strDep)
- nResult = 1 # Exit this script and parent script
- if bDbg:
- strMsg = strMsgSwigGenDep % strDep
- else:
- strMsg = strMsgSwigNoGenDep + strMsg
-
- return bOk, strMsg, nResult
-
-#++---------------------------------------------------------------------------
-# Details: Execute another Python script from this script in a separate
-# process. No data is passed back to the caller script. It is
-# assumed should any exit result be returned that -ve numbers are
-# error conditions. A zero or +ve numbers mean ok/warning/status.
-# Args: vDictArgs - (R) Program input parameters.
-# vstrArgs - (R) Space separated parameters passed to python.
-# Returns: Bool - True = function success, False = failure.
-# strMsg - Error or status message.
-# Throws: None.
-#--
-def run_python_script(vDictArgs, vstrArgs):
- dbg = utilsDebug.CDebugFnVerbose("Python script run_python_script()")
- bOk = True
- strMsg = ""
- bDbg = "-d" in vDictArgs
-
- strPy = "%s %s" % (sys.executable, vstrArgs)
- process = subprocess.Popen(strPy, shell=True)
- strStdOut, strStdErr = process.communicate()
- nResult = process.returncode
- if nResult < 0:
- bOk = False
- strErr = strStdErr
- if strErr == None:
- strErr = "No error given"
- strMsg = strErrMsgPythonExecute % (vstrArgs, strErr)
- else:
- if bDbg:
- strOut = strStdOut
- if strOut == None:
- strOut = "No status given"
- strMsg = strOut
-
- return bOk, strMsg
-
-#++---------------------------------------------------------------------------
-# Details: Implement the iterator protocol and/or eq/ne operators for some
-# lldb objects.
-# Append global variable to lldb Python module.
-# And initialize the lldb debugger subsystem.
-# Args: vDictArgs - (R) Program input parameters.
-# vstrCfgBldDir - (R) Configuration build directory.
-# Returns: Bool - True = function success, False = failure.
-# strMsg - Error or status message.
-# Throws: None.
-#--
-def do_modify_python_lldb(vDictArgs, vstrCfgBldDir):
- dbg = utilsDebug.CDebugFnVerbose("Python script do_modify_python_lldb()")
- bOk = True
- strMsg = ""
- bDbg = "-d" in vDictArgs
- strCwd = vDictArgs["--srcRoot"] # /llvm/tools/lldb
- strCwd += "/scripts/Python"
- strPyScript = "modify-python-lldb.py"
- strPath = "%s/%s" % (strCwd, strPyScript)
- strPath = os.path.normcase(strPath)
-
- bOk = os.path.exists(strPath)
- if not bOk:
- strMsg = strErrMsgModifyPythonLldbPyFileNotFound % (strPyScript, strPath)
- return bOk, strMsg
-
- strPyArgs = "%s %s" % (strPath, vstrCfgBldDir)
- bOk, strMsg = run_python_script(vDictArgs, strPyArgs)
-
- return bOk, strMsg
-
-#-----------------------------------------------------------------------------
-#-----------------------------------------------------------------------------
-#-----------------------------------------------------------------------------
-
-""" Details: Program main entry point fn. Called by another Python script.
-
- --------------------------------------------------------------------------
- Details: This script is to be called by another Python script. It is not
- intended to be called directly i.e from the command line.
- If environmental variable "LLDB_DISABLE_PYTHON" is defined/exists
- it will cause the script to end early creating nothing.
- If environmental variable "GCC_PREPROCESSOR_DEFINITIONS" is
- defined/exists it will cause the script to end early creating
- nothing.
- Args: vDictArgs - (R) Map of parameter names to values. Used to for the
- the SWIG required parameters to create code. Note
- this container does get amended with more data.
- -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.
- -M (optional) Specify want SWIG to generate a dependency file.
- --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.
- --swigExecutable Full path to the SWIG executable. (Determined and
- passed by buildSwigWrapperClasses.py to here)
- Results: 0 Success
- 1 Success, generated dependencies removed
- LLDBWrapPython.cpp.d.
- -100+ Error from this script to the caller script.
- -100 Error program failure with optional message.
- -200+ - 200 +- the SWIG exit result.
-
- --------------------------------------------------------------------------
-
-"""
-def main(vDictArgs):
- dbg = utilsDebug.CDebugFnVerbose("Python script main()")
- bOk = True
- strMsg = ""
-
- if not "--swigExecutable" in vDictArgs:
- strErrMsgProgFail += strErrMsgSwigParamsMissing
- return (-100, strErrMsgProgFail)
-
- bDebug = "-d" in vDictArgs
-
- strSwigDepFile = ""
- strSwigDepOptions = ""
- bGenDependencies = "-M" in vDictArgs
- if bGenDependencies:
- strSwigDepFile = vDictArgs["--targetDir"] + "/LLDBWrapPython.cpp.d"
- strSwigDepOptions = "-MMD -MF \"%s.tmp\"" % strSwigDepFile
- strSwigDepFile = os.path.normcase(strSwigDepFile)
- strSwigDepOptions = os.path.normcase(strSwigDepOptions)
-
- bMakeFileCalled = "-m" in vDictArgs
- strSwigOutputFile = ""
- if bMakeFileCalled:
- strSwigOutputFile = vDictArgs["--targetDir"] + "/LLDBWrapPython.cpp"
- else:
- strSwigOutputFile = vDictArgs["--srcRoot"] + "/source/LLDBWrapPython.cpp"
- strSwigOutputFile = os.path.normcase(strSwigOutputFile)
-
- strRt = vDictArgs["--srcRoot"]
- strSwigInputFile = strRt + "/scripts/lldb.swig"
- strSwigPythonExtensions = strRt + "/scripts/Python/python-extensions.swig"
- strSwigPythonWrapper = strRt + "/scripts/Python/python-wrapper.swig"
- strSwigPythonTypemaps = strRt + "/scripts/Python/python-typemaps.swig"
- strSwigPythonSwigsafecast = strRt + "/scripts/Python/python-swigsafecast.swig"
- strSwigInputFile = os.path.normcase(strSwigInputFile)
- strSwigPythonExtensions = os.path.normcase(strSwigPythonExtensions)
- strSwigPythonWrapper = os.path.normcase(strSwigPythonWrapper)
- strSwigPythonTypemaps = os.path.normcase(strSwigPythonTypemaps)
- strSwigPythonSwigsafecast = os.path.normcase(strSwigPythonSwigsafecast)
-
- strEnvVarLLDBDisablePython = os.getenv("LLDB_DISABLE_PYTHON", None)
- # We don't want Python for this build, but touch the output file so we
- # don't have to conditionalize the build on this as well.
- # Note, at present iOS doesn't have Python, so if you're building for
- # iOS be sure to set LLDB_DISABLE_PYTHON to 1.
- if (strEnvVarLLDBDisablePython != None) and \
- (strEnvVarLLDBDisablePython == "1"):
- remove_ignore_enoent(strSwigOutputFile)
- open(strSwigOutputFile, 'w').close() # Touch the file
- if bDebug:
- strMsg = strMsgLldbDisablePythonEnv
- return (0, strMsg)
-
- # If this project is being built with LLDB_DISABLE_PYTHON defined,
- # don't bother generating Python swig bindings -- we don't have
- # Python available.
- strEnvVarGccPreprocessDefs = os.getenv("GCC_PREPROCESSOR_DEFINITIONS",
- None)
- if (strEnvVarGccPreprocessDefs != None) or \
- (strEnvVarLLDBDisablePython != None):
- remove_ignore_enoent(strSwigOutputFile)
- open(strSwigOutputFile, 'w').close() # Touch the file
- if bDebug:
- strMsg = strMsgLldbDisableGccEnv
- return (0, strMsg)
-
- bOk = bOk and get_header_files(vDictArgs)
- bOk = bOk and get_interface_files(vDictArgs)
-
- strFrameworkPythonDir = ""
- if bOk:
- bNeedUpdate = (check_file_exists(vDictArgs, strSwigOutputFile) == False)
- dbg.dump_object("check_file_exists strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
- if bNeedUpdate == False:
- bNeedUpdate = check_newer_files(vDictArgs, strSwigOutputFile, vDictArgs["--headerFiles"])
- dbg.dump_object("check_newer_files header files than strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
- if bNeedUpdate == False:
- bNeedUpdate = check_newer_files(vDictArgs, strSwigOutputFile, vDictArgs["--ifaceFiles"])
- dbg.dump_object("check_newer_files iface files than strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
- if bNeedUpdate == False:
- bNeedUpdate = check_newer_file(vDictArgs, strSwigOutputFile, strSwigInputFile)
- dbg.dump_object("check_newer_files strSwigInputFile than strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
- if bNeedUpdate == False:
- bNeedUpdate = check_newer_file(vDictArgs, strSwigOutputFile, strSwigPythonExtensions)
- dbg.dump_object("check_newer_files strSwigPythonExtensions than strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
- if bNeedUpdate == False:
- bNeedUpdate = check_newer_file(vDictArgs, strSwigOutputFile, strSwigPythonWrapper)
- dbg.dump_object("check_newer_files strSwigPythonWrapper than strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
- if bNeedUpdate == False:
- bNeedUpdate = check_newer_file(vDictArgs, strSwigOutputFile, strSwigPythonTypemaps)
- dbg.dump_object("check_newer_files strSwigPythonTypemaps than strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
- if bNeedUpdate == False:
- bNeedUpdate = check_newer_file(vDictArgs, strSwigOutputFile, strSwigPythonSwigsafecast)
- dbg.dump_object("check_newer_files strSwigPythonSwigsafecast than strSwigOutputFile, bNeedUpdate =", bNeedUpdate)
-
- # Determine where to put the files
- bOk, strFrameworkPythonDir, strMsg = get_framework_python_dir(vDictArgs)
-
- if bOk:
- bOk, strCfgBldDir, strMsg = get_config_build_dir(vDictArgs, strFrameworkPythonDir)
-
- if bOk and (bNeedUpdate == False):
- strDllPath = strFrameworkPythonDir + "/_lldb.so"
- strDllPath = os.path.normcase(strDllPath)
- bSymbolicLink = check_file_exists(vDictArgs, strDllPath) and os.path.islink(strDllPath)
- bNeedUpdate = not bSymbolicLink
- dbg.dump_object("check_file_exists(vDictArgs, strDllPath) and os.path.islink(strDllPath), bNeedUpdate =", bNeedUpdate)
-
- if bOk and (bNeedUpdate == False):
- strInitPiPath = strFrameworkPythonDir + "/__init__.py"
- strInitPiPath = os.path.normcase(strInitPiPath)
- print(strInitPiPath)
- bNeedUpdate = not check_file_exists(vDictArgs, strInitPiPath)
- dbg.dump_object("check_file_exists(vDictArgs, strInitPiPath), bNeedUpdate =", bNeedUpdate)
-
- if bOk:
- if bNeedUpdate == False:
- strMsg = strMsgNotNeedUpdate
- return (0, strMsg)
- else:
- print(strMsgSwigNeedRebuild)
- bOk, strMsg, nExitResult = do_swig_rebuild(vDictArgs, strSwigDepFile,
- strCfgBldDir,
- strSwigOutputFile,
- strSwigInputFile)
- bGenDependencies = "-M" in vDictArgs
- if bGenDependencies == True:
- return (nExitResult, strMsg)
-
- if bOk:
- bOk, strMsg = do_modify_python_lldb(vDictArgs, strCfgBldDir)
-
- if bOk:
- return (0, strMsg)
- else:
- strErrMsgProgFail += strMsg
- return (-100, strErrMsgProgFail)
-
-#-----------------------------------------------------------------------------
-#-----------------------------------------------------------------------------
-#-----------------------------------------------------------------------------
-
-# This script can be called by another Python script by calling the main()
-# function directly
-if __name__ == "__main__":
- print("Script cannot be called directly, called by buildSwigWrapperClasses.py")
OpenPOWER on IntegriCloud