diff options
Diffstat (limited to 'lldb/scripts/Python/finishSwigPythonLLDB.py')
-rw-r--r-- | lldb/scripts/Python/finishSwigPythonLLDB.py | 658 |
1 files changed, 328 insertions, 330 deletions
diff --git a/lldb/scripts/Python/finishSwigPythonLLDB.py b/lldb/scripts/Python/finishSwigPythonLLDB.py index 45cb8b98887..46e30b6f5e9 100644 --- a/lldb/scripts/Python/finishSwigPythonLLDB.py +++ b/lldb/scripts/Python/finishSwigPythonLLDB.py @@ -38,9 +38,7 @@ # Python modules: import os # Provide directory and file handling, determine OS information import sys # System specific parameters and functions -import errno # OS error results import shutil # High-level operations on files and collections of files -import subprocess # Call external programs import ctypes # Invoke Windows API for creating symlinks # Third party modules: @@ -50,28 +48,28 @@ import utilsOsType # Determine the OS type this script is running on import utilsDebug # Debug Python scripts # User facing text: -strMsgOsVersion = "The current OS is %s"; -strMsgPyVersion = "The Python version is %d.%d"; -strErrMsgProgFail = "Program failure: "; -strErrMsgLLDBPyFileNotNotFound = "Unable to locate lldb.py at path '%s'"; -strMsgCopyLLDBPy = "Copying lldb.py from '%s' to '%s'"; -strErrMsgFrameWkPyDirNotExist = "Unable to find the LLDB.framework directory '%s'"; -strMsgCreatePyPkgCopyPkgFile = "create_py_pkg: Copied file '%s' to folder '%s'"; -strMsgCreatePyPkgInitFile = "create_py_pkg: Creating pakage init file '%s'"; -strMsgCreatePyPkgMkDir = "create_py_pkg: Created folder '%s'"; -strMsgConfigBuildDir = "Configuration build directory located at '%s'"; -strMsgFoundLldbFrameWkDir = "Found '%s'"; -strMsgPyFileLocatedHere = "Python file will be put in '%s'"; -strMsgFrameWkPyExists = "Python output folder '%s' already exists"; -strMsgFrameWkPyMkDir = "Python output folder '%s' will be created"; -strErrMsgCreateFrmWkPyDirFailed = "Unable to create directory '%s' error: %s"; -strMsgSymlinkExists = "Symlink for '%s' already exists"; -strMsgSymlinkMk = "Creating symlink for %s (%s -> %s)"; -strErrMsgCpLldbpy = "copying lldb to lldb package directory"; -strErrMsgCreatePyPkgMissingSlash = "Parameter 3 fn create_py_pkg() missing slash"; -strErrMsgMkLinkExecute = "Command mklink failed: %s"; -strErrMsgMakeSymlink = "creating symbolic link"; -strErrMsgUnexpected = "Unexpected error: %s"; +strMsgOsVersion = "The current OS is %s" +strMsgPyVersion = "The Python version is %d.%d" +strErrMsgProgFail = "Program failure: " +strErrMsgLLDBPyFileNotNotFound = "Unable to locate lldb.py at path '%s'" +strMsgCopyLLDBPy = "Copying lldb.py from '%s' to '%s'" +strErrMsgFrameWkPyDirNotExist = "Unable to find the LLDB.framework directory '%s'" +strMsgCreatePyPkgCopyPkgFile = "create_py_pkg: Copied file '%s' to folder '%s'" +strMsgCreatePyPkgInitFile = "create_py_pkg: Creating pakage init file '%s'" +strMsgCreatePyPkgMkDir = "create_py_pkg: Created folder '%s'" +strMsgConfigBuildDir = "Configuration build directory located at '%s'" +strMsgFoundLldbFrameWkDir = "Found '%s'" +strMsgPyFileLocatedHere = "Python file will be put in '%s'" +strMsgFrameWkPyExists = "Python output folder '%s' already exists" +strMsgFrameWkPyMkDir = "Python output folder '%s' will be created" +strErrMsgCreateFrmWkPyDirFailed = "Unable to create directory '%s' error: %s" +strMsgSymlinkExists = "Symlink for '%s' already exists" +strMsgSymlinkMk = "Creating symlink for %s (%s -> %s)" +strErrMsgCpLldbpy = "copying lldb to lldb package directory" +strErrMsgCreatePyPkgMissingSlash = "Parameter 3 fn create_py_pkg() missing slash" +strErrMsgMkLinkExecute = "Command mklink failed: %s" +strErrMsgMakeSymlink = "creating symbolic link" +strErrMsgUnexpected = "Unexpected error: %s" def is_debug_interpreter(): return hasattr(sys, 'gettotalrefcount') @@ -84,29 +82,29 @@ def is_debug_interpreter(): # Str - Error description on task failure. # Throws: None. #-- -def macosx_copy_file_for_heap( vDictArgs, vstrFrameworkPythonDir ): - dbg = utilsDebug.CDebugFnVerbose( "Python script macosx_copy_file_for_heap()" ); - bOk = True; - strMsg = ""; +def macosx_copy_file_for_heap(vDictArgs, vstrFrameworkPythonDir): + dbg = utilsDebug.CDebugFnVerbose("Python script macosx_copy_file_for_heap()") + bOk = True + strMsg = "" - eOSType = utilsOsType.determine_os_type(); + eOSType = utilsOsType.determine_os_type() if eOSType != utilsOsType.EnumOsType.Darwin: - return (bOk, strMsg); + return (bOk, strMsg) - strHeapDir = os.path.join(vstrFrameworkPythonDir, "macosx", "heap"); - strHeapDir = os.path.normcase( strHeapDir ); - if (os.path.exists( strHeapDir ) and os.path.isdir( strHeapDir )): - return (bOk, strMsg); + strHeapDir = os.path.join(vstrFrameworkPythonDir, "macosx", "heap") + strHeapDir = os.path.normcase(strHeapDir) + if os.path.exists(strHeapDir) and os.path.isdir(strHeapDir): + return (bOk, strMsg) - os.makedirs( strHeapDir ); + os.makedirs(strHeapDir) - strRoot = os.path.normpath(vDictArgs[ "--srcRoot" ]); - strSrc = os.path.join(strRoot, "examples", "darwin", "heap_find", "heap", "heap_find.cpp"); - shutil.copy( strSrc, strHeapDir ); - strSrc = os.path.join(strRoot, "examples", "darwin", "heap_find", "heap", "Makefile"); - shutil.copy( strSrc, strHeapDir ); + strRoot = os.path.normpath(vDictArgs["--srcRoot"]) + strSrc = os.path.join(strRoot, "examples", "darwin", "heap_find", "heap", "heap_find.cpp") + shutil.copy(strSrc, strHeapDir) + strSrc = os.path.join(strRoot, "examples", "darwin", "heap_find", "heap", "Makefile") + shutil.copy(strSrc, strHeapDir) - return (bOk, strMsg); + return (bOk, strMsg) #++--------------------------------------------------------------------------- # Details: Create Python packages and Python __init__ files. @@ -118,63 +116,63 @@ def macosx_copy_file_for_heap( vDictArgs, vstrFrameworkPythonDir ): # Str - Error description on task failure. # Throws: None. #-- -def create_py_pkg( vDictArgs, vstrFrameworkPythonDir, vstrPkgDir, vListPkgFiles ): - dbg = utilsDebug.CDebugFnVerbose( "Python script create_py_pkg()" ); - dbg.dump_object( "Package file(s):", vListPkgFiles ); - bDbg = "-d" in vDictArgs; +def create_py_pkg(vDictArgs, vstrFrameworkPythonDir, vstrPkgDir, vListPkgFiles): + dbg = utilsDebug.CDebugFnVerbose("Python script create_py_pkg()") + dbg.dump_object("Package file(s):", vListPkgFiles) + bDbg = "-d" in vDictArgs - bOk = True; - strMsg = ""; + bOk = True + strMsg = "" - if vstrPkgDir.__len__() != 0 and vstrPkgDir[ 0 ] != "/": - bOk = False; - strMsg = strErrMsgCreatePyPkgMissingSlash; - return (bOk, strMsg); + if vstrPkgDir.__len__() != 0 and vstrPkgDir[0] != "/": + bOk = False + strMsg = strErrMsgCreatePyPkgMissingSlash + return (bOk, strMsg) - strPkgName = vstrPkgDir; - strPkgName = "lldb" + strPkgName.replace( "/", "." ); + strPkgName = vstrPkgDir + strPkgName = "lldb" + strPkgName.replace("/", ".") - strPkgDir = vstrFrameworkPythonDir; - strPkgDir += vstrPkgDir; - strPkgDir = os.path.normcase( strPkgDir ); + strPkgDir = vstrFrameworkPythonDir + strPkgDir += vstrPkgDir + strPkgDir = os.path.normcase(strPkgDir) - if not(os.path.exists( strPkgDir ) and os.path.isdir( strPkgDir )): + if not(os.path.exists(strPkgDir) and os.path.isdir(strPkgDir)): if bDbg: - print((strMsgCreatePyPkgMkDir % strPkgDir)); - os.makedirs( strPkgDir ); + print((strMsgCreatePyPkgMkDir % strPkgDir)) + os.makedirs(strPkgDir) for strPkgFile in vListPkgFiles: - if os.path.exists( strPkgFile ) and os.path.isfile( strPkgFile ): + if os.path.exists(strPkgFile) and os.path.isfile(strPkgFile): if bDbg: - print((strMsgCreatePyPkgCopyPkgFile % (strPkgFile, strPkgDir))); - shutil.copy( strPkgFile, strPkgDir ); + print((strMsgCreatePyPkgCopyPkgFile % (strPkgFile, strPkgDir))) + shutil.copy(strPkgFile, strPkgDir) # Create a packet init files if there wasn't one - strPkgIniFile = os.path.normpath(os.path.join(strPkgDir, "__init__.py")); - if os.path.exists( strPkgIniFile ) and os.path.isfile( strPkgIniFile ): - return (bOk, strMsg); + strPkgIniFile = os.path.normpath(os.path.join(strPkgDir, "__init__.py")) + if os.path.exists(strPkgIniFile) and os.path.isfile(strPkgIniFile): + return (bOk, strMsg) - strPyScript = "__all__ = ["; - strDelimiter = ""; + strPyScript = "__all__ = [" + strDelimiter = "" for strPkgFile in vListPkgFiles: - if os.path.exists( strPkgFile ) and os.path.isfile( strPkgFile ): - strBaseName = os.path.basename( strPkgFile ); - nPos = strBaseName.find( "." ); + if os.path.exists(strPkgFile) and os.path.isfile(strPkgFile): + strBaseName = os.path.basename(strPkgFile) + nPos = strBaseName.find(".") if nPos != -1: - strBaseName = strBaseName[ 0 : nPos ]; - strPyScript += "%s\"%s\"" % (strDelimiter, strBaseName); - strDelimiter = ","; - strPyScript += "]\n"; - strPyScript += "for x in __all__:\n"; - strPyScript += "\t__import__('%s.' + x)" % strPkgName; + strBaseName = strBaseName[0 : nPos] + strPyScript += "%s\"%s\"" % (strDelimiter, strBaseName) + strDelimiter = "," + strPyScript += "]\n" + strPyScript += "for x in __all__:\n" + strPyScript += "\t__import__('%s.' + x)" % strPkgName if bDbg: - print((strMsgCreatePyPkgInitFile % strPkgIniFile)); - file = open( strPkgIniFile, "w" ); - file.write( strPyScript ); - file.close(); + print((strMsgCreatePyPkgInitFile % strPkgIniFile)) + file = open(strPkgIniFile, "w") + file.write(strPyScript) + file.close() - return (bOk, strMsg); + return (bOk, strMsg) #++--------------------------------------------------------------------------- # Details: Copy the lldb.py file into the lldb package directory and rename @@ -186,35 +184,35 @@ def create_py_pkg( vDictArgs, vstrFrameworkPythonDir, vstrPkgDir, vListPkgFiles # Str - Error description on task failure. # Throws: None. #-- -def copy_lldbpy_file_to_lldb_pkg_dir( vDictArgs, vstrFrameworkPythonDir, vstrCfgBldDir ): - dbg = utilsDebug.CDebugFnVerbose( "Python script copy_lldbpy_file_to_lldb_pkg_dir()" ); - bOk = True; - bDbg = "-d" in vDictArgs; - strMsg = ""; +def copy_lldbpy_file_to_lldb_pkg_dir(vDictArgs, vstrFrameworkPythonDir, vstrCfgBldDir): + dbg = utilsDebug.CDebugFnVerbose("Python script copy_lldbpy_file_to_lldb_pkg_dir()") + bOk = True + bDbg = "-d" in vDictArgs + strMsg = "" - strSrc = os.path.join(vstrCfgBldDir, "lldb.py"); - strSrc = os.path.normcase( strSrc ); - strDst = os.path.join(vstrFrameworkPythonDir, "__init__.py"); - strDst = os.path.normcase( strDst ); + strSrc = os.path.join(vstrCfgBldDir, "lldb.py") + strSrc = os.path.normcase(strSrc) + strDst = os.path.join(vstrFrameworkPythonDir, "__init__.py") + strDst = os.path.normcase(strDst) - if not os.path.exists( strSrc ): - strMsg = strErrMsgLLDBPyFileNotNotFound % strSrc; - return (bOk, strMsg); + if not os.path.exists(strSrc): + strMsg = strErrMsgLLDBPyFileNotNotFound % strSrc + return (bOk, strMsg) try: if bDbg: - print((strMsgCopyLLDBPy % (strSrc, strDst))); - shutil.copyfile( strSrc, strDst ); + print((strMsgCopyLLDBPy % (strSrc, strDst))) + shutil.copyfile(strSrc, strDst) except IOError as e: - bOk = False; - strMsg = "I/O error( %d ): %s %s" % (e.errno, e.strerror, strErrMsgCpLldbpy); + bOk = False + strMsg = "I/O error(%d): %s %s" % (e.errno, e.strerror, strErrMsgCpLldbpy) if e.errno == 2: - strMsg += " Src:'%s' Dst:'%s'" % (strSrc, strDst); + strMsg += " Src:'%s' Dst:'%s'" % (strSrc, strDst) except: - bOk = False; - strMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ]; + bOk = False + strMsg = strErrMsgUnexpected % sys.exec_info()[0] - return (bOk, strMsg); + return (bOk, strMsg) #++--------------------------------------------------------------------------- # Details: Make the symbolic link on a Windows platform. @@ -224,11 +222,11 @@ def copy_lldbpy_file_to_lldb_pkg_dir( vDictArgs, vstrFrameworkPythonDir, vstrCfg # Str - Error description on task failure. # Throws: None. #-- -def make_symlink_windows( vstrSrcPath, vstrTargetPath ): - print(("Making symlink from %s to %s" % (vstrSrcPath, vstrTargetPath))); - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_windows()" ); - bOk = True; - strErrMsg = ""; +def make_symlink_windows(vstrSrcPath, vstrTargetPath): + print(("Making symlink from %s to %s" % (vstrSrcPath, vstrTargetPath))) + dbg = utilsDebug.CDebugFnVerbose("Python script make_symlink_windows()") + bOk = True + strErrMsg = "" try: csl = ctypes.windll.kernel32.CreateHardLinkW @@ -238,11 +236,11 @@ def make_symlink_windows( vstrSrcPath, vstrTargetPath ): raise ctypes.WinError() except Exception as e: if e.errno != 17: - bOk = False; - strErrMsg = "WinError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink); - strErrMsg += " Src:'%s' Target:'%s'" % (vstrSrcPath, vstrTargetPath); + bOk = False + strErrMsg = "WinError(%d): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink) + strErrMsg += " Src:'%s' Target:'%s'" % (vstrSrcPath, vstrTargetPath) - return (bOk, strErrMsg); + return (bOk, strErrMsg) #++--------------------------------------------------------------------------- # Details: Make the symbolic link on a UNIX style platform. @@ -252,22 +250,22 @@ def make_symlink_windows( vstrSrcPath, vstrTargetPath ): # Str - Error description on task failure. # Throws: None. #-- -def make_symlink_other_platforms( vstrSrcPath, vstrTargetPath ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" ); - bOk = True; - strErrMsg = ""; +def make_symlink_other_platforms(vstrSrcPath, vstrTargetPath): + dbg = utilsDebug.CDebugFnVerbose("Python script make_symlink_other_platforms()") + bOk = True + strErrMsg = "" try: - os.symlink( vstrSrcPath, vstrTargetPath ); + os.symlink(vstrSrcPath, vstrTargetPath) except OSError as e: - bOk = False; - strErrMsg = "OSError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink); - strErrMsg += " Src:'%s' Target:'%s'" % (vstrSrcPath, vstrTargetPath); + bOk = False + strErrMsg = "OSError(%d): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink) + strErrMsg += " Src:'%s' Target:'%s'" % (vstrSrcPath, vstrTargetPath) except: - bOk = False; - strErrMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ]; + bOk = False + strErrMsg = strErrMsgUnexpected % sys.exec_info()[0] - return (bOk, strErrMsg); + return (bOk, strErrMsg) #++--------------------------------------------------------------------------- # Details: Make the symbolic link. @@ -279,55 +277,55 @@ def make_symlink_other_platforms( vstrSrcPath, vstrTargetPath ): # Str - Error description on task failure. # Throws: None. #-- -def make_symlink( vDictArgs, vstrFrameworkPythonDir, vstrSrcFile, vstrTargetFile ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink()" ); - bOk = True; - strErrMsg = ""; - bDbg = "-d" in vDictArgs; - strTarget = os.path.join(vstrFrameworkPythonDir, vstrTargetFile); - strTarget = os.path.normcase( strTarget ); - strSrc = ""; - - os.chdir( vstrFrameworkPythonDir ); - bMakeFileCalled = "-m" in vDictArgs; - eOSType = utilsOsType.determine_os_type(); +def make_symlink(vDictArgs, vstrFrameworkPythonDir, vstrSrcFile, vstrTargetFile): + dbg = utilsDebug.CDebugFnVerbose("Python script make_symlink()") + bOk = True + strErrMsg = "" + bDbg = "-d" in vDictArgs + strTarget = os.path.join(vstrFrameworkPythonDir, vstrTargetFile) + strTarget = os.path.normcase(strTarget) + strSrc = "" + + os.chdir(vstrFrameworkPythonDir) + bMakeFileCalled = "-m" in vDictArgs + eOSType = utilsOsType.determine_os_type() if not bMakeFileCalled: - return (bOk, strErrMsg); + return (bOk, strErrMsg) else: # Resolve vstrSrcFile path relatively the build directory if eOSType == utilsOsType.EnumOsType.Windows: # On a Windows platform the vstrFrameworkPythonDir looks like: # llvm\\build\\Lib\\site-packages\\lldb - strBuildDir = os.path.join("..", "..", ".."); + strBuildDir = os.path.join("..", "..", "..") else: # On a UNIX style platform the vstrFrameworkPythonDir looks like: # llvm/build/lib/python2.7/site-packages/lldb - strBuildDir = os.path.join("..", "..", "..", ".."); - strSrc = os.path.normcase(os.path.join(strBuildDir, vstrSrcFile)); + strBuildDir = os.path.join("..", "..", "..", "..") + strSrc = os.path.normcase(os.path.join(strBuildDir, vstrSrcFile)) if eOSType == utilsOsType.EnumOsType.Unknown: - bOk = False; - strErrMsg = strErrMsgOsTypeUnknown; + bOk = False + strErrMsg = strErrMsgOsTypeUnknown elif eOSType == utilsOsType.EnumOsType.Windows: - if os.path.isfile( strTarget ): + if os.path.isfile(strTarget): if bDbg: - print((strMsgSymlinkExists % vstrTargetFile)); - return (bOk, strErrMsg); + print((strMsgSymlinkExists % vstrTargetFile)) + return (bOk, strErrMsg) if bDbg: - print((strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget))); - bOk, strErrMsg = make_symlink_windows( strSrc, - strTarget ); + print((strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget))) + bOk, strErrMsg = make_symlink_windows(strSrc, + strTarget) else: - if os.path.islink( strTarget ): + if os.path.islink(strTarget): if bDbg: - print((strMsgSymlinkExists % vstrTargetFile)); - return (bOk, strErrMsg); + print((strMsgSymlinkExists % vstrTargetFile)) + return (bOk, strErrMsg) if bDbg: - print((strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget))); - bOk, strErrMsg = make_symlink_other_platforms( strSrc, - strTarget ); + print((strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget))) + bOk, strErrMsg = make_symlink_other_platforms(strSrc, + strTarget) - return (bOk, strErrMsg); + return (bOk, strErrMsg) #++--------------------------------------------------------------------------- # Details: Make the symbolic that the script bridge for Python will need in @@ -339,41 +337,41 @@ def make_symlink( vDictArgs, vstrFrameworkPythonDir, vstrSrcFile, vstrTargetFile # Str - Error description on task failure. # Throws: None. #-- -def make_symlink_liblldb( vDictArgs, vstrFrameworkPythonDir, vstrLiblldbFileName ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_liblldb()" ); - bOk = True; - strErrMsg = ""; - strTarget = vstrLiblldbFileName; - strSrc = ""; - - eOSType = utilsOsType.determine_os_type(); +def make_symlink_liblldb(vDictArgs, vstrFrameworkPythonDir, vstrLiblldbFileName): + dbg = utilsDebug.CDebugFnVerbose("Python script make_symlink_liblldb()") + bOk = True + strErrMsg = "" + strTarget = vstrLiblldbFileName + strSrc = "" + + eOSType = utilsOsType.determine_os_type() if eOSType == utilsOsType.EnumOsType.Windows: # When importing an extension module using a debug version of python, you # write, for example, "import foo", but the interpreter searches for # "foo_d.pyd" if is_debug_interpreter(): - strTarget += "_d"; - strTarget += ".pyd"; + strTarget += "_d" + strTarget += ".pyd" else: - strTarget += ".so"; + strTarget += ".so" - bMakeFileCalled = "-m" in vDictArgs; + bMakeFileCalled = "-m" in vDictArgs if not bMakeFileCalled: - strSrc = os.path.join("lib", "LLDB"); + strSrc = os.path.join("lib", "LLDB") else: - strLibFileExtn = ""; + strLibFileExtn = "" if eOSType == utilsOsType.EnumOsType.Windows: - strSrc = os.path.join("bin", "liblldb.dll"); + strSrc = os.path.join("bin", "liblldb.dll") else: if eOSType == utilsOsType.EnumOsType.Darwin: - strLibFileExtn = ".dylib"; + strLibFileExtn = ".dylib" else: - strLibFileExtn = ".so"; - strSrc = os.path.join("lib", "liblldb" + strLibFileExtn); + strLibFileExtn = ".so" + strSrc = os.path.join("lib", "liblldb" + strLibFileExtn) - bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget ); + bOk, strErrMsg = make_symlink(vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget) - return (bOk, strErrMsg); + return (bOk, strErrMsg) #++--------------------------------------------------------------------------- # Details: Make the symbolic link to the darwin-debug. @@ -384,22 +382,22 @@ def make_symlink_liblldb( vDictArgs, vstrFrameworkPythonDir, vstrLiblldbFileName # Str - Error description on task failure. # Throws: None. #-- -def make_symlink_darwin_debug( vDictArgs, vstrFrameworkPythonDir, vstrDarwinDebugFileName ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_darwin_debug()" ); - bOk = True; - strErrMsg = ""; - strTarget = vstrDarwinDebugFileName; - strSrc = ""; - - bMakeFileCalled = "-m" in vDictArgs; +def make_symlink_darwin_debug(vDictArgs, vstrFrameworkPythonDir, vstrDarwinDebugFileName): + dbg = utilsDebug.CDebugFnVerbose("Python script make_symlink_darwin_debug()") + bOk = True + strErrMsg = "" + strTarget = vstrDarwinDebugFileName + strSrc = "" + + bMakeFileCalled = "-m" in vDictArgs if not bMakeFileCalled: - return (bOk, strErrMsg); + return (bOk, strErrMsg) else: - strSrc = os.path.join("bin", "lldb-launcher"); + strSrc = os.path.join("bin", "lldb-launcher") - bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget ); + bOk, strErrMsg = make_symlink(vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget) - return (bOk, strErrMsg); + return (bOk, strErrMsg) #++--------------------------------------------------------------------------- # Details: Make the symbolic link to the lldb-argdumper. @@ -410,29 +408,29 @@ def make_symlink_darwin_debug( vDictArgs, vstrFrameworkPythonDir, vstrDarwinDebu # Str - Error description on task failure. # Throws: None. #-- -def make_symlink_lldb_argdumper( vDictArgs, vstrFrameworkPythonDir, vstrArgdumperFileName ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_lldb_argdumper()" ); - bOk = True; - strErrMsg = ""; - strTarget = vstrArgdumperFileName; - strSrc = ""; - - eOSType = utilsOsType.determine_os_type(); +def make_symlink_lldb_argdumper(vDictArgs, vstrFrameworkPythonDir, vstrArgdumperFileName): + dbg = utilsDebug.CDebugFnVerbose("Python script make_symlink_lldb_argdumper()") + bOk = True + strErrMsg = "" + strTarget = vstrArgdumperFileName + strSrc = "" + + eOSType = utilsOsType.determine_os_type() if eOSType == utilsOsType.EnumOsType.Windows: - strTarget += ".exe"; + strTarget += ".exe" - bMakeFileCalled = "-m" in vDictArgs; + bMakeFileCalled = "-m" in vDictArgs if not bMakeFileCalled: - return (bOk, strErrMsg); + return (bOk, strErrMsg) else: - strExeFileExtn = ""; + strExeFileExtn = "" if eOSType == utilsOsType.EnumOsType.Windows: - strExeFileExtn = ".exe"; - strSrc = os.path.join("bin", "lldb-argdumper" + strExeFileExtn); + strExeFileExtn = ".exe" + strSrc = os.path.join("bin", "lldb-argdumper" + strExeFileExtn) - bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget ); + bOk, strErrMsg = make_symlink(vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget) - return (bOk, strErrMsg); + return (bOk, strErrMsg) #++--------------------------------------------------------------------------- # Details: Make the symlink that the script bridge for Python will need in @@ -443,37 +441,37 @@ def make_symlink_lldb_argdumper( vDictArgs, vstrFrameworkPythonDir, vstrArgdumpe # strErrMsg - Error description on task failure. # Throws: None. #-- -def create_symlinks( vDictArgs, vstrFrameworkPythonDir ): - dbg = utilsDebug.CDebugFnVerbose( "Python script create_symlinks()" ); - bOk = True; - strErrMsg = ""; - eOSType = utilsOsType.determine_os_type(); +def create_symlinks(vDictArgs, vstrFrameworkPythonDir): + dbg = utilsDebug.CDebugFnVerbose("Python script create_symlinks()") + bOk = True + strErrMsg = "" + eOSType = utilsOsType.determine_os_type() # Make symlink for _lldb - strLibLldbFileName = "_lldb"; + strLibLldbFileName = "_lldb" if bOk: - bOk, strErrMsg = make_symlink_liblldb( vDictArgs, - vstrFrameworkPythonDir, - strLibLldbFileName ); + bOk, strErrMsg = make_symlink_liblldb(vDictArgs, + vstrFrameworkPythonDir, + strLibLldbFileName) # Make symlink for darwin-debug on Darwin strDarwinDebugFileName = "darwin-debug" if bOk and eOSType == utilsOsType.EnumOsType.Darwin: - bOk, strErrMsg = make_symlink_darwin_debug( vDictArgs, - vstrFrameworkPythonDir, - strDarwinDebugFileName ); + bOk, strErrMsg = make_symlink_darwin_debug(vDictArgs, + vstrFrameworkPythonDir, + strDarwinDebugFileName) # Make symlink for lldb-argdumper strArgdumperFileName = "lldb-argdumper" if bOk: - bOk, strErrMsg = make_symlink_lldb_argdumper( vDictArgs, - vstrFrameworkPythonDir, - strArgdumperFileName ); + bOk, strErrMsg = make_symlink_lldb_argdumper(vDictArgs, + vstrFrameworkPythonDir, + strArgdumperFileName) - return (bOk, strErrMsg); + return (bOk, strErrMsg) #++--------------------------------------------------------------------------- -# Details: Look for the directory in which to put the Python files; if it +# Details: Look for the directory in which to put the Python files if it # does not already exist, attempt to make it. # Args: vDictArgs - (R) Program input parameters. # vstrFrameworkPythonDir - (R) Python framework directory. @@ -481,28 +479,28 @@ def create_symlinks( vDictArgs, vstrFrameworkPythonDir ): # Str - Error description on task failure. # Throws: None. #-- -def find_or_create_python_dir( vDictArgs, vstrFrameworkPythonDir ): - dbg = utilsDebug.CDebugFnVerbose( "Python script find_or_create_python_dir()" ); - bOk = True; - strMsg = ""; - bDbg = "-d" in vDictArgs; +def find_or_create_python_dir(vDictArgs, vstrFrameworkPythonDir): + dbg = utilsDebug.CDebugFnVerbose("Python script find_or_create_python_dir()") + bOk = True + strMsg = "" + bDbg = "-d" in vDictArgs - if os.path.isdir( vstrFrameworkPythonDir ): + if os.path.isdir(vstrFrameworkPythonDir): if bDbg: - print((strMsgFrameWkPyExists % vstrFrameworkPythonDir)); - return (bOk, strMsg); + print((strMsgFrameWkPyExists % vstrFrameworkPythonDir)) + return (bOk, strMsg) if bDbg: - print((strMsgFrameWkPyMkDir % vstrFrameworkPythonDir)); + print((strMsgFrameWkPyMkDir % vstrFrameworkPythonDir)) try: - os.makedirs( vstrFrameworkPythonDir ); + os.makedirs(vstrFrameworkPythonDir) except OSError as exception: - bOk = False; + bOk = False strMsg = strErrMsgCreateFrmWkPyDirFailed % (vstrFrameworkPythonDir, - os.strerror( exception.errno )); + os.strerror(exception.errno)) - return (bOk, strMsg); + return (bOk, strMsg) #++--------------------------------------------------------------------------- # Details: Retrieve the configuration build path if present and valid (using @@ -514,19 +512,19 @@ def find_or_create_python_dir( vDictArgs, vstrFrameworkPythonDir ): # 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 = ""; +def get_config_build_dir(vDictArgs, vstrFrameworkPythonDir): + dbg = utilsDebug.CDebugFnVerbose("Python script get_config_build_dir()") + bOk = True + strErrMsg = "" - strConfigBldDir = ""; - bHaveConfigBldDir = "--cfgBldDir" in vDictArgs; + strConfigBldDir = "" + bHaveConfigBldDir = "--cfgBldDir" in vDictArgs if bHaveConfigBldDir: - strConfigBldDir = vDictArgs[ "--cfgBldDir" ]; + strConfigBldDir = vDictArgs["--cfgBldDir"] if (bHaveConfigBldDir == False) or (strConfigBldDir.__len__() == 0): - strConfigBldDir = vstrFrameworkPythonDir; + strConfigBldDir = vstrFrameworkPythonDir - return (bOk, strConfigBldDir, strErrMsg); + return (bOk, strConfigBldDir, strErrMsg) #++--------------------------------------------------------------------------- # Details: Determine where to put the files. Retrieve the directory path for @@ -537,32 +535,32 @@ def get_config_build_dir( vDictArgs, vstrFrameworkPythonDir ): # 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 = ""; +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; + from distutils.sysconfig import get_python_lib + strPythonInstallDir = "" + bHaveArgPrefix = "--prefix" in vDictArgs if bHaveArgPrefix: - strPythonInstallDir = os.path.normpath(vDictArgs[ "--prefix" ]); + strPythonInstallDir = os.path.normpath(vDictArgs["--prefix"]) - bHaveArgCmakeBuildConfiguration = "--cmakeBuildConfiguration" in vDictArgs; + bHaveArgCmakeBuildConfiguration = "--cmakeBuildConfiguration" in vDictArgs if bHaveArgCmakeBuildConfiguration: - strPythonInstallDir = os.path.join(strPythonInstallDir, vDictArgs["--cmakeBuildConfiguration"]); + strPythonInstallDir = os.path.join(strPythonInstallDir, vDictArgs["--cmakeBuildConfiguration"]) if strPythonInstallDir.__len__() != 0: - strWkDir = get_python_lib( True, False, strPythonInstallDir ); + strWkDir = get_python_lib(True, False, strPythonInstallDir) else: - strWkDir = get_python_lib( True, False ); - strWkDir = os.path.normcase(os.path.join(strWkDir, "lldb")); + strWkDir = get_python_lib(True, False) + strWkDir = os.path.normcase(os.path.join(strWkDir, "lldb")) - return (bOk, strWkDir, strErrMsg); + return (bOk, strWkDir, strErrMsg) #++--------------------------------------------------------------------------- # Details: Retrieve the directory path for Python's dist_packages/ @@ -573,33 +571,33 @@ def get_framework_python_dir_windows( vDictArgs ): # 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; +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 ); + dbg.dump_text("Built by LLVM") + return get_framework_python_dir_windows(vDictArgs) else: - dbg.dump_text( "Built by XCode" ); + 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 += os.path.join(strWkDir, "LLDB.framework"); - if os.path.exists( strWkDir ): + strWkDir = vDictArgs["--targetDir"] + strWkDir += os.path.join(strWkDir, "LLDB.framework") + if os.path.exists(strWkDir): if bDbg: - print((strMsgFoundLldbFrameWkDir % strWkDir)); - strWkDir = os.path.join(strWkDir, "Resources", "Python", "lldb"); - strWkDir = os.path.normcase( strWkDir ); + print((strMsgFoundLldbFrameWkDir % strWkDir)) + strWkDir = os.path.join(strWkDir, "Resources", "Python", "lldb") + strWkDir = os.path.normcase(strWkDir) else: - bOk = False; - strErrMsg = strErrMsgFrameWkPyDirNotExist % strWkDir; + bOk = False + strErrMsg = strErrMsgFrameWkPyDirNotExist % strWkDir - return (bOk, strWkDir, strErrMsg); + return (bOk, strWkDir, strErrMsg) #++--------------------------------------------------------------------------- # Details: Retrieve the directory path for Python's dist_packages/ @@ -611,22 +609,22 @@ def get_framework_python_dir_other_platforms( vDictArgs ): # 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 = ""; +def get_framework_python_dir(vDictArgs): + dbg = utilsDebug.CDebugFnVerbose("Python script get_framework_python_dir()") + bOk = True + strWkDir = "" + strErrMsg = "" - eOSType = utilsOsType.determine_os_type(); + eOSType = utilsOsType.determine_os_type() if eOSType == utilsOsType.EnumOsType.Unknown: - bOk = False; - strErrMsg = strErrMsgOsTypeUnknown; + bOk = False + strErrMsg = strErrMsgOsTypeUnknown elif eOSType == utilsOsType.EnumOsType.Windows: - bOk, strWkDir, strErrMsg = get_framework_python_dir_windows( vDictArgs ); + bOk, strWkDir, strErrMsg = get_framework_python_dir_windows(vDictArgs) else: - bOk, strWkDir, strErrMsg = get_framework_python_dir_other_platforms( vDictArgs ); + bOk, strWkDir, strErrMsg = get_framework_python_dir_other_platforms(vDictArgs) - return (bOk, strWkDir, strErrMsg); + return (bOk, strWkDir, strErrMsg) #----------------------------------------------------------------------------- #----------------------------------------------------------------------------- @@ -660,92 +658,92 @@ def get_framework_python_dir( vDictArgs ): -------------------------------------------------------------------------- """ -def main( vDictArgs ): - dbg = utilsDebug.CDebugFnVerbose( "Python script main()" ); - bOk = True; - strMsg = ""; - strErrMsgProgFail = ""; +def main(vDictArgs): + dbg = utilsDebug.CDebugFnVerbose("Python script main()") + bOk = True + strMsg = "" + strErrMsgProgFail = "" - bDbg = "-d" in vDictArgs; + bDbg = "-d" in vDictArgs - eOSType = utilsOsType.determine_os_type(); + eOSType = utilsOsType.determine_os_type() if bDbg: - pyVersion = sys.version_info; - print((strMsgOsVersion % utilsOsType.EnumOsType.name_of( eOSType ))); - print((strMsgPyVersion % (pyVersion[ 0 ], pyVersion[ 1 ]))); + pyVersion = sys.version_info + print((strMsgOsVersion % utilsOsType.EnumOsType.name_of(eOSType))) + print((strMsgPyVersion % (pyVersion[0], pyVersion[1]))) - bOk, strFrameworkPythonDir, strMsg = get_framework_python_dir( vDictArgs ); + bOk, strFrameworkPythonDir, strMsg = get_framework_python_dir(vDictArgs) if bOk: - bOk, strCfgBldDir, strMsg = get_config_build_dir( vDictArgs, strFrameworkPythonDir ); + bOk, strCfgBldDir, strMsg = get_config_build_dir(vDictArgs, strFrameworkPythonDir) if bOk and bDbg: - print((strMsgPyFileLocatedHere % strFrameworkPythonDir)); - print((strMsgConfigBuildDir % strCfgBldDir)); + print((strMsgPyFileLocatedHere % strFrameworkPythonDir)) + print((strMsgConfigBuildDir % strCfgBldDir)) if bOk: - bOk, strMsg = find_or_create_python_dir( vDictArgs, strFrameworkPythonDir ); + bOk, strMsg = find_or_create_python_dir(vDictArgs, strFrameworkPythonDir) if bOk: - bOk, strMsg = create_symlinks( vDictArgs, strFrameworkPythonDir ); + bOk, strMsg = create_symlinks(vDictArgs, strFrameworkPythonDir) if bOk: - bOk, strMsg = copy_lldbpy_file_to_lldb_pkg_dir( vDictArgs, - strFrameworkPythonDir, - strCfgBldDir ); - strRoot = os.path.normpath(vDictArgs[ "--srcRoot" ]); + bOk, strMsg = copy_lldbpy_file_to_lldb_pkg_dir(vDictArgs, + strFrameworkPythonDir, + strCfgBldDir) + strRoot = os.path.normpath(vDictArgs["--srcRoot"]) if bOk: # lldb - listPkgFiles = [ os.path.join(strRoot, "source", "Interpreter", "embedded_interpreter.py") ]; - bOk, strMsg = create_py_pkg( vDictArgs, strFrameworkPythonDir, "", listPkgFiles ); + listPkgFiles = [os.path.join(strRoot, "source", "Interpreter", "embedded_interpreter.py")] + bOk, strMsg = create_py_pkg(vDictArgs, strFrameworkPythonDir, "", listPkgFiles) if bOk: # lldb/formatters/cpp - listPkgFiles = [ os.path.join(strRoot, "examples", "synthetic", "gnu_libstdcpp.py"), - os.path.join(strRoot, "examples", "synthetic", "libcxx.py") ]; - bOk, strMsg = create_py_pkg( vDictArgs, strFrameworkPythonDir, "/formatters/cpp", listPkgFiles ); + listPkgFiles = [os.path.join(strRoot, "examples", "synthetic", "gnu_libstdcpp.py"), + os.path.join(strRoot, "examples", "synthetic", "libcxx.py")] + bOk, strMsg = create_py_pkg(vDictArgs, strFrameworkPythonDir, "/formatters/cpp", listPkgFiles) if bOk: # Make an empty __init__.py in lldb/runtime as this is required for # Python to recognize lldb.runtime as a valid package (and hence, # lldb.runtime.objc as a valid contained package) - listPkgFiles = []; - bOk, strMsg = create_py_pkg( vDictArgs, strFrameworkPythonDir, "/runtime", listPkgFiles ); + listPkgFiles = [] + bOk, strMsg = create_py_pkg(vDictArgs, strFrameworkPythonDir, "/runtime", listPkgFiles) if bOk: # lldb/formatters # Having these files copied here ensure that lldb/formatters is a # valid package itself - listPkgFiles = [ os.path.join(strRoot, "examples", "summaries", "cocoa", "cache.py"), - os.path.join(strRoot, "examples", "summaries", "cocoa", "metrics.py"), - os.path.join(strRoot, "examples", "summaries", "cocoa", "attrib_fromdict.py"), - os.path.join(strRoot, "examples", "summaries", "cocoa", "Logger.py") ]; - bOk, strMsg = create_py_pkg( vDictArgs, strFrameworkPythonDir, "/formatters", listPkgFiles ); + listPkgFiles = [os.path.join(strRoot, "examples", "summaries", "cocoa", "cache.py"), + os.path.join(strRoot, "examples", "summaries", "cocoa", "metrics.py"), + os.path.join(strRoot, "examples", "summaries", "cocoa", "attrib_fromdict.py"), + os.path.join(strRoot, "examples", "summaries", "cocoa", "Logger.py")] + bOk, strMsg = create_py_pkg(vDictArgs, strFrameworkPythonDir, "/formatters", listPkgFiles) if bOk: # lldb/utils - listPkgFiles = [ os.path.join(strRoot, "examples", "python", "symbolication.py") ]; - bOk, strMsg = create_py_pkg( vDictArgs, strFrameworkPythonDir, "/utils", listPkgFiles ); + listPkgFiles = [os.path.join(strRoot, "examples", "python", "symbolication.py")] + bOk, strMsg = create_py_pkg(vDictArgs, strFrameworkPythonDir, "/utils", listPkgFiles) if bOk and (eOSType == utilsOsType.EnumOsType.Darwin): # lldb/macosx - listPkgFiles = [ os.path.join(strRoot, "examples", "python", "crashlog.py"), - os.path.join(strRoot, "examples", "darwin", "heap_find", "heap.py") ]; - bOk, strMsg = create_py_pkg( vDictArgs, strFrameworkPythonDir, "/macosx", listPkgFiles ); + listPkgFiles = [os.path.join(strRoot, "examples", "python", "crashlog.py"), + os.path.join(strRoot, "examples", "darwin", "heap_find", "heap.py")] + bOk, strMsg = create_py_pkg(vDictArgs, strFrameworkPythonDir, "/macosx", listPkgFiles) if bOk and (eOSType == utilsOsType.EnumOsType.Darwin): # lldb/diagnose - listPkgFiles = [ os.path.join(strRoot, "examples", "python", "diagnose_unwind.py"), - os.path.join(strRoot, "examples", "python", "diagnose_nsstring.py") ]; - bOk, strMsg = create_py_pkg( vDictArgs, strFrameworkPythonDir, "/diagnose", listPkgFiles ); + listPkgFiles = [os.path.join(strRoot, "examples", "python", "diagnose_unwind.py"), + os.path.join(strRoot, "examples", "python", "diagnose_nsstring.py")] + bOk, strMsg = create_py_pkg(vDictArgs, strFrameworkPythonDir, "/diagnose", listPkgFiles) if bOk: - bOk, strMsg = macosx_copy_file_for_heap( vDictArgs, strFrameworkPythonDir ); + bOk, strMsg = macosx_copy_file_for_heap(vDictArgs, strFrameworkPythonDir) if bOk: - return (0, strMsg ); + return (0, strMsg) else: - strErrMsgProgFail += strMsg; - return (-100, strErrMsgProgFail ); + strErrMsgProgFail += strMsg + return (-100, strErrMsgProgFail) #----------------------------------------------------------------------------- @@ -755,5 +753,5 @@ def main( vDictArgs ): # 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 finishSwigWrapperClasses.py"); + print("Script cannot be called directly, called by finishSwigWrapperClasses.py") |