mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-10 10:01:42 +00:00
[swig] Start of pylint on python build scripts.
Summary: This does a broad first pass on cleaning up a lot of the noise when using pylint on these scripts. It mostly addresses issues of: * Mixed tabs and spaces. * Trailing whitespace. * Semicolons where they aren't needed. * Incorrect whitespace around () and []. * Superfluous parentheses. There will be subsequent patches with further changes that build upon these. Reviewers: zturner, domipheus Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D14375 llvm-svn: 252244
This commit is contained in:
parent
a1d960ef54
commit
a18231a5e9
File diff suppressed because it is too large
Load Diff
@ -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 = "";
|
||||
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();
|
||||
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 = "";
|
||||
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();
|
||||
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 = "";
|
||||
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;
|
||||
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 = "";
|
||||
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();
|
||||
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;
|
||||
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;
|
||||
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")
|
||||
|
||||
|
@ -27,7 +27,7 @@ if sys.version_info.major >= 3:
|
||||
else:
|
||||
import StringIO
|
||||
|
||||
if len (sys.argv) != 2:
|
||||
if len(sys.argv) != 2:
|
||||
output_name = "./lldb.py"
|
||||
else:
|
||||
output_name = sys.argv[1] + "/lldb.py"
|
||||
|
@ -36,27 +36,27 @@ import utilsOsType # Determine the OS type this script is running on
|
||||
import utilsDebug # Debug Python scripts
|
||||
|
||||
# Instantiations:
|
||||
gbDbgVerbose = False; # True = Turn on script function tracing, False = off.
|
||||
gbDbgFlag = False; # Global debug mode flag, set by input parameter
|
||||
gbDbgVerbose = False # True = Turn on script function tracing, False = off.
|
||||
gbDbgFlag = False # Global debug mode flag, set by input parameter
|
||||
# --dbgFlag. True = operate in debug mode.
|
||||
gbMakeFileFlag = False; # True = yes called from makefile system, False = not.
|
||||
gbSwigGenDepFileFlag = False; # True = SWIG generate a dependency file.
|
||||
gbMakeFileFlag = False # True = yes called from makefile system, False = not.
|
||||
gbSwigGenDepFileFlag = False # True = SWIG generate a dependency file.
|
||||
|
||||
# User facing text:
|
||||
strMsgErrorNoMain = "Program called by another Python script not allowed";
|
||||
strExitMsgSuccess = "Program successful";
|
||||
strExitMsgError = "Program error: ";
|
||||
strParameter = "Parameter: ";
|
||||
strMsgErrorNoMain = "Program called by another Python script not allowed"
|
||||
strExitMsgSuccess = "Program successful"
|
||||
strExitMsgError = "Program error: "
|
||||
strParameter = "Parameter: "
|
||||
strMsgErrorOsTypeUnknown = "Unable to determine OS type"
|
||||
strSwigFileFound = "Found the \'lldb.swig\' file\n";
|
||||
strSwigFileFound = "Found the \'lldb.swig\' file\n"
|
||||
strSwigFileFoundNotFound = "Unable to locate the file \'%s\'"
|
||||
strSwigExeFileNotFound = "Unable to locate the SWIG executable file \'swig\'";
|
||||
strSwigScriptDirNotFound = "Unable to locate the SWIG script directory \'/script\'";
|
||||
strSwigScriptNotFound = "Unable to locate the SWIG script file \'%s\' in \'%s\'. Is it a script directory?";
|
||||
strSwigScriptLangFound = "Found \'%s\' build script.";
|
||||
strSwigScriptLangsFound = "Found the following script languages:";
|
||||
strSwigExecuteMsg = "Executing \'%s\' build script...";
|
||||
strSwigExecuteError = "Executing \'%s\' build script failed: ";
|
||||
strSwigExeFileNotFound = "Unable to locate the SWIG executable file \'swig\'"
|
||||
strSwigScriptDirNotFound = "Unable to locate the SWIG script directory \'/script\'"
|
||||
strSwigScriptNotFound = "Unable to locate the SWIG script file \'%s\' in \'%s\'. Is it a script directory?"
|
||||
strSwigScriptLangFound = "Found \'%s\' build script."
|
||||
strSwigScriptLangsFound = "Found the following script languages:"
|
||||
strSwigExecuteMsg = "Executing \'%s\' build script..."
|
||||
strSwigExecuteError = "Executing \'%s\' build script failed: "
|
||||
strHelpInfo = "\
|
||||
Python script(s) to build the SWIG Python C++ Script \n\
|
||||
Bridge wrapper code on various platforms. The Python \n\
|
||||
@ -86,7 +86,7 @@ Usage:\n\
|
||||
buildSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath\n\
|
||||
--cfgBldDir=ADirPath --prefix=ADirPath --swigExecutable=ADirPath -m -d\n\
|
||||
\n\
|
||||
"; #TAG_PROGRAM_HELP_INFO
|
||||
" #TAG_PROGRAM_HELP_INFO
|
||||
strHelpInfoExtraWindows = "\
|
||||
On the Windows platform the PATH environmental variable needs to be \n\
|
||||
extended to include the installed SWIG executable path so it can be \n\
|
||||
@ -94,7 +94,7 @@ be found by this Python script. The SWIG executable name is 'swig'."
|
||||
strHelpInfoExtraNonWindows = "\
|
||||
This Python script looks for the SWIG executable 'swig' in the following \n\
|
||||
directories '/usr/bin', '/usr/local/bin'. If not found the script will \n\
|
||||
abort.";
|
||||
abort."
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Retrieve the script -h help information based on the OS currently.
|
||||
@ -103,15 +103,15 @@ abort.";
|
||||
# Throws: None.
|
||||
#--
|
||||
def get_help_information():
|
||||
strHelpMsg = strHelpInfo;
|
||||
strHelpMsg = strHelpInfo
|
||||
|
||||
eOSType = utilsOsType.determine_os_type();
|
||||
eOSType = utilsOsType.determine_os_type()
|
||||
if eOSType == utilsOsType.EnumOsType.Windows:
|
||||
strHelpMsg += strHelpInfoExtraWindows;
|
||||
strHelpMsg += strHelpInfoExtraWindows
|
||||
else:
|
||||
strHelpMsg += strHelpInfoExtraNonWindows;
|
||||
strHelpMsg += strHelpInfoExtraNonWindows
|
||||
|
||||
return strHelpMsg;
|
||||
return strHelpMsg
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Exit the program on success. Called on program successfully done
|
||||
@ -121,14 +121,14 @@ def get_help_information():
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def program_exit_success( vnResult, vMsg ):
|
||||
strMsg = "";
|
||||
def program_exit_success(vnResult, vMsg):
|
||||
strMsg = ""
|
||||
|
||||
if vMsg.__len__() != 0:
|
||||
strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult);
|
||||
print(strMsg);
|
||||
strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult)
|
||||
print(strMsg)
|
||||
|
||||
sys.exit( vnResult );
|
||||
sys.exit(vnResult)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Exit the program with error. Called on exit program failed its
|
||||
@ -138,9 +138,9 @@ def program_exit_success( vnResult, vMsg ):
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def program_exit_on_failure( vnResult, vMsg ):
|
||||
print(("%s%s (%d)" % (strExitMsgError, vMsg, vnResult)));
|
||||
sys.exit( vnResult );
|
||||
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.
|
||||
@ -151,11 +151,11 @@ def program_exit_on_failure( vnResult, vMsg ):
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def program_exit( vnResult, vMsg ):
|
||||
def program_exit(vnResult, vMsg):
|
||||
if vnResult >= 0:
|
||||
program_exit_success( vnResult, vMsg );
|
||||
program_exit_success(vnResult, vMsg)
|
||||
else:
|
||||
program_exit_on_failure( vnResult, vMsg );
|
||||
program_exit_on_failure(vnResult, vMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Dump input parameters.
|
||||
@ -163,14 +163,14 @@ def program_exit( vnResult, vMsg ):
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def print_out_input_parameters( vDictArgs ):
|
||||
def print_out_input_parameters(vDictArgs):
|
||||
for arg, val in vDictArgs.items():
|
||||
strEqs = "";
|
||||
strQ = "";
|
||||
strEqs = ""
|
||||
strQ = ""
|
||||
if val.__len__() != 0:
|
||||
strEqs = " =";
|
||||
strQ = "\"";
|
||||
print(("%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ)));
|
||||
strEqs = " ="
|
||||
strQ = "\""
|
||||
print(("%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ)))
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate the lldb.swig file. No checking for path correctness is
|
||||
@ -183,21 +183,21 @@ def print_out_input_parameters( vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def check_lldb_swig_file_exists( vstrSrcRoot, veOSType ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_file_exists()" );
|
||||
bOk = True;
|
||||
strStatusMsg = "";
|
||||
strSwigFilePathName = "/scripts/lldb.swig";
|
||||
def check_lldb_swig_file_exists(vstrSrcRoot, veOSType):
|
||||
dbg = utilsDebug.CDebugFnVerbose("check_lldb_swig_file_exists()")
|
||||
bOk = True
|
||||
strStatusMsg = ""
|
||||
strSwigFilePathName = "/scripts/lldb.swig"
|
||||
|
||||
strFullPath = os.path.normcase( vstrSrcRoot + strSwigFilePathName );
|
||||
bOk = os.path.isfile( strFullPath );
|
||||
strFullPath = os.path.normcase(vstrSrcRoot + strSwigFilePathName)
|
||||
bOk = os.path.isfile(strFullPath)
|
||||
if bOk:
|
||||
if gbDbgFlag:
|
||||
print(strSwigFileFound);
|
||||
print(strSwigFileFound)
|
||||
else:
|
||||
strStatusMsg = strSwigFileFoundNotFound % strFullPath;
|
||||
strStatusMsg = strSwigFileFoundNotFound % strFullPath
|
||||
|
||||
return (bOk, strStatusMsg);
|
||||
return (bOk, strStatusMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate SWIG sub script language directory and the script within
|
||||
@ -209,41 +209,41 @@ def check_lldb_swig_file_exists( vstrSrcRoot, veOSType ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def run_swig( vStrScriptLang, vSwigBuildFileName, vDictArgs ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "run_swig()" );
|
||||
nResult = 0;
|
||||
strStatusMsg = "";
|
||||
strScriptFile = vSwigBuildFileName % vStrScriptLang;
|
||||
strScriptFileDir = "%s%s/%s" % (vDictArgs[ "--srcRoot" ], "/scripts",
|
||||
vStrScriptLang);
|
||||
strScriptFilePath = "%s/%s" % (strScriptFileDir, strScriptFile);
|
||||
def run_swig(vStrScriptLang, vSwigBuildFileName, vDictArgs):
|
||||
dbg = utilsDebug.CDebugFnVerbose("run_swig()")
|
||||
nResult = 0
|
||||
strStatusMsg = ""
|
||||
strScriptFile = vSwigBuildFileName % vStrScriptLang
|
||||
strScriptFileDir = "%s%s/%s" % (vDictArgs["--srcRoot"], "/scripts",
|
||||
vStrScriptLang)
|
||||
strScriptFilePath = "%s/%s" % (strScriptFileDir, strScriptFile)
|
||||
|
||||
# Check for the existence of the script file
|
||||
strPath = os.path.normcase( strScriptFilePath );
|
||||
bOk = os.path.exists( strPath );
|
||||
strPath = os.path.normcase(strScriptFilePath)
|
||||
bOk = os.path.exists(strPath)
|
||||
if bOk == False:
|
||||
strDir = os.path.normcase( strScriptFileDir );
|
||||
strStatusMsg = strSwigScriptNotFound % (strScriptFile, strDir);
|
||||
return (-9, strStatusMsg);
|
||||
strDir = os.path.normcase(strScriptFileDir)
|
||||
strStatusMsg = strSwigScriptNotFound % (strScriptFile, strDir)
|
||||
return (-9, strStatusMsg)
|
||||
|
||||
if gbDbgFlag:
|
||||
print((strSwigScriptLangFound % vStrScriptLang));
|
||||
print((strSwigExecuteMsg % vStrScriptLang));
|
||||
print((strSwigScriptLangFound % vStrScriptLang))
|
||||
print((strSwigExecuteMsg % vStrScriptLang))
|
||||
|
||||
# Change where Python looks for our modules
|
||||
strDir = os.path.normcase( strScriptFileDir );
|
||||
sys.path.append( strDir );
|
||||
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 );
|
||||
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 );
|
||||
sys.path.remove(strDir)
|
||||
|
||||
return (nResult, strStatusMsg);
|
||||
return (nResult, strStatusMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Step through each SWIG sub directory script language supported
|
||||
@ -259,26 +259,26 @@ def run_swig( vStrScriptLang, vSwigBuildFileName, vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def run_swig_for_each_script_supported( vDictArgs ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "run_swig_for_each_script_supported()" );
|
||||
nResult = 0;
|
||||
strStatusMsg = "";
|
||||
strSwigScriptDir = vDictArgs[ "--srcRoot" ] + "/scripts";
|
||||
strSwigBuildFileName = "buildSwig%s.py";
|
||||
def run_swig_for_each_script_supported(vDictArgs):
|
||||
dbg = utilsDebug.CDebugFnVerbose("run_swig_for_each_script_supported()")
|
||||
nResult = 0
|
||||
strStatusMsg = ""
|
||||
strSwigScriptDir = vDictArgs["--srcRoot"] + "/scripts"
|
||||
strSwigBuildFileName = "buildSwig%s.py"
|
||||
|
||||
# Check for the existence of the SWIG scripts folder
|
||||
strScriptsDir = os.path.normcase( strSwigScriptDir );
|
||||
bOk = os.path.exists( strScriptsDir );
|
||||
strScriptsDir = os.path.normcase(strSwigScriptDir)
|
||||
bOk = os.path.exists(strScriptsDir)
|
||||
if bOk == False:
|
||||
return (-8, strSwigScriptDirNotFound);
|
||||
return (-8, strSwigScriptDirNotFound)
|
||||
|
||||
# Look for any script language directories to build for
|
||||
listDirs = [];
|
||||
nDepth = 1;
|
||||
for strPath, listDirs, listFiles in os.walk( strSwigScriptDir ):
|
||||
nDepth = nDepth - 1;
|
||||
listDirs = []
|
||||
nDepth = 1
|
||||
for strPath, listDirs, listFiles in os.walk(strSwigScriptDir):
|
||||
nDepth = nDepth - 1
|
||||
if nDepth == 0:
|
||||
break;
|
||||
break
|
||||
|
||||
# Skip the directory that contains the interface files.
|
||||
listDirs.remove('interface')
|
||||
@ -290,24 +290,24 @@ def run_swig_for_each_script_supported( vDictArgs ):
|
||||
sys.stdout.write(strSwigScriptLangsFound)
|
||||
for dir in listDirs:
|
||||
sys.stdout.write(dir)
|
||||
print("\n");
|
||||
print("\n")
|
||||
|
||||
# Iterate script directory find any script language directories
|
||||
for scriptLang in listDirs:
|
||||
# __pycache__ is a magic directory in Python 3 that holds .pyc files
|
||||
if scriptLang != "__pycache__":
|
||||
dbg.dump_text( "Executing language script for \'%s\'" % scriptLang );
|
||||
nResult, strStatusMsg = run_swig( scriptLang, strSwigBuildFileName,
|
||||
vDictArgs );
|
||||
dbg.dump_text("Executing language script for \'%s\'" % scriptLang)
|
||||
nResult, strStatusMsg = run_swig(scriptLang, strSwigBuildFileName,
|
||||
vDictArgs)
|
||||
if nResult < 0:
|
||||
break;
|
||||
break
|
||||
|
||||
if nResult < 0:
|
||||
strTmp = strSwigExecuteError % scriptLang;
|
||||
strTmp += strStatusMsg;
|
||||
strStatusMsg = strTmp;
|
||||
strTmp = strSwigExecuteError % scriptLang
|
||||
strTmp += strStatusMsg
|
||||
strStatusMsg = strTmp
|
||||
|
||||
return (nResult, strStatusMsg);
|
||||
return (nResult, strStatusMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Dummy function - system unknown. Function should not be called.
|
||||
@ -316,10 +316,10 @@ def run_swig_for_each_script_supported( vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def check_lldb_swig_executable_file_exists_Unknown( vDictArgs ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_executable_file_exists_Unknown()" );
|
||||
def check_lldb_swig_executable_file_exists_Unknown(vDictArgs):
|
||||
dbg = utilsDebug.CDebugFnVerbose("check_lldb_swig_executable_file_exists_Unknown()")
|
||||
# Do nothing
|
||||
return (False, strMsgErrorOsTypeUnknown);
|
||||
return (False, strMsgErrorOsTypeUnknown)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate the SWIG executable file in a Windows system. Several hard
|
||||
@ -331,16 +331,16 @@ def check_lldb_swig_executable_file_exists_Unknown( vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def check_lldb_swig_executable_file_exists_Windows( vDictArgs ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_executable_file_exists_Windows()" );
|
||||
def check_lldb_swig_executable_file_exists_Windows(vDictArgs):
|
||||
dbg = utilsDebug.CDebugFnVerbose("check_lldb_swig_executable_file_exists_Windows()")
|
||||
|
||||
# Will always be true as it assumed the path to SWIG executable will be
|
||||
# in the OS system environmental variable %PATH%. Easier this way as the
|
||||
# user may have renamed the directory and or custom path installation.
|
||||
bExeFileFound = True;
|
||||
vDictArgs[ "--swigExePath" ] = "";
|
||||
vDictArgs[ "--swigExeName" ] = "swig.exe";
|
||||
return (bExeFileFound, None);
|
||||
bExeFileFound = True
|
||||
vDictArgs["--swigExePath"] = ""
|
||||
vDictArgs["--swigExeName"] = "swig.exe"
|
||||
return (bExeFileFound, None)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate the SWIG executable file in a Linux system. Several hard
|
||||
@ -352,28 +352,28 @@ def check_lldb_swig_executable_file_exists_Windows( vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def check_lldb_swig_executable_file_exists_Linux( vDictArgs ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_executable_file_exists_Linux()" );
|
||||
bExeFileFound = False;
|
||||
def check_lldb_swig_executable_file_exists_Linux(vDictArgs):
|
||||
dbg = utilsDebug.CDebugFnVerbose("check_lldb_swig_executable_file_exists_Linux()")
|
||||
bExeFileFound = False
|
||||
|
||||
strSwigExe = "swig";
|
||||
strSwigExePath = "/usr/bin";
|
||||
strExe = os.path.normcase( "%s/%s" % (strSwigExePath, strSwigExe) );
|
||||
if os.path.isfile( strExe ) and os.access( strExe, os.X_OK ):
|
||||
bExeFileFound = True;
|
||||
vDictArgs[ "--swigExePath" ] = os.path.normcase( strSwigExePath );
|
||||
vDictArgs[ "--swigExeName" ] = strSwigExe;
|
||||
return (bExeFileFound, None);
|
||||
strSwigExe = "swig"
|
||||
strSwigExePath = "/usr/bin"
|
||||
strExe = os.path.normcase("%s/%s" % (strSwigExePath, strSwigExe))
|
||||
if os.path.isfile(strExe) and os.access(strExe, os.X_OK):
|
||||
bExeFileFound = True
|
||||
vDictArgs["--swigExePath"] = os.path.normcase(strSwigExePath)
|
||||
vDictArgs["--swigExeName"] = strSwigExe
|
||||
return (bExeFileFound, None)
|
||||
|
||||
strSwigExePath = "/usr/local/bin";
|
||||
strExe = os.path.normcase( "%s/%s" % (strSwigExePath, strSwigExe) );
|
||||
if os.path.isfile( strExe ) and os.access( strExe, os.X_OK ):
|
||||
bExeFileFound = True;
|
||||
vDictArgs[ "--swigExePath" ] = os.path.normcase( strSwigExePath );
|
||||
vDictArgs[ "--swigExeName" ] = strSwigExe;
|
||||
return (bExeFileFound, None);
|
||||
strSwigExePath = "/usr/local/bin"
|
||||
strExe = os.path.normcase("%s/%s" % (strSwigExePath, strSwigExe))
|
||||
if os.path.isfile(strExe) and os.access(strExe, os.X_OK):
|
||||
bExeFileFound = True
|
||||
vDictArgs["--swigExePath"] = os.path.normcase(strSwigExePath)
|
||||
vDictArgs["--swigExeName"] = strSwigExe
|
||||
return (bExeFileFound, None)
|
||||
|
||||
return (bExeFileFound, strSwigExeFileNotFound);
|
||||
return (bExeFileFound, strSwigExeFileNotFound)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate the SWIG executable file in a OSX system. Several hard
|
||||
@ -385,14 +385,14 @@ def check_lldb_swig_executable_file_exists_Linux( vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def check_lldb_swig_executable_file_exists_Darwin( vDictArgs ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_executable_file_exists_Darwin()" );
|
||||
bExeFileFound = False;
|
||||
def check_lldb_swig_executable_file_exists_Darwin(vDictArgs):
|
||||
dbg = utilsDebug.CDebugFnVerbose("check_lldb_swig_executable_file_exists_Darwin()")
|
||||
bExeFileFound = False
|
||||
# ToDo: Find the SWIG executable and add the path to the args dictionary
|
||||
#vDictArgs.[ "--swigExePath" ] = "/usr/bin/swig";
|
||||
strStatusMsg = "Sorry function 'check_lldb_swig_executable_file_exists_Darwin()' is not implemented";
|
||||
#vDictArgs.["--swigExePath"] = "/usr/bin/swig"
|
||||
strStatusMsg = "Sorry function 'check_lldb_swig_executable_file_exists_Darwin()' is not implemented"
|
||||
|
||||
return (bExeFileFound, strStatusMsg);
|
||||
return (bExeFileFound, strStatusMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate the SWIG executable file in a OSX system. Several hard
|
||||
@ -404,14 +404,14 @@ def check_lldb_swig_executable_file_exists_Darwin( vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def check_lldb_swig_executable_file_exists_FreeBSD( vDictArgs ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_executable_file_exists_FreeBSD()" );
|
||||
bExeFileFound = False;
|
||||
def check_lldb_swig_executable_file_exists_FreeBSD(vDictArgs):
|
||||
dbg = utilsDebug.CDebugFnVerbose("check_lldb_swig_executable_file_exists_FreeBSD()")
|
||||
bExeFileFound = False
|
||||
# ToDo: Find the SWIG executable and add the path to the args dictionary
|
||||
#vDictArgs.[ "--swigExePath" ] = "/usr/bin/swig";
|
||||
strStatusMsg = "Sorry function 'check_lldb_swig_executable_file_exists_FreeBSD()' is not implemented";
|
||||
#vDictArgs.["--swigExePath"] = "/usr/bin/swig"
|
||||
strStatusMsg = "Sorry function 'check_lldb_swig_executable_file_exists_FreeBSD()' is not implemented"
|
||||
|
||||
return (bExeFileFound, strStatusMsg);
|
||||
return (bExeFileFound, strStatusMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate the SWIG executable file. Several hard coded predetermined
|
||||
@ -423,23 +423,23 @@ def check_lldb_swig_executable_file_exists_FreeBSD( vDictArgs ):
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def check_lldb_swig_executable_file_exists( vDictArgs, veOSType ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "check_lldb_swig_executable_file_exists()" );
|
||||
bExeFileFound = False;
|
||||
strStatusMsg = "";
|
||||
def check_lldb_swig_executable_file_exists(vDictArgs, veOSType):
|
||||
dbg = utilsDebug.CDebugFnVerbose("check_lldb_swig_executable_file_exists()")
|
||||
bExeFileFound = False
|
||||
strStatusMsg = ""
|
||||
if "--swigExecutable" in vDictArgs:
|
||||
vDictArgs["--swigExeName"] = os.path.basename(vDictArgs["--swigExecutable"])
|
||||
vDictArgs["--swigExePath"] = os.path.dirname(vDictArgs["--swigExecutable"])
|
||||
bExeFileFound = True
|
||||
else:
|
||||
from utilsOsType import EnumOsType;
|
||||
switch = { EnumOsType.Unknown : check_lldb_swig_executable_file_exists_Unknown,
|
||||
EnumOsType.Darwin : check_lldb_swig_executable_file_exists_Darwin,
|
||||
EnumOsType.FreeBSD : check_lldb_swig_executable_file_exists_FreeBSD,
|
||||
EnumOsType.Linux : check_lldb_swig_executable_file_exists_Linux,
|
||||
EnumOsType.Windows : check_lldb_swig_executable_file_exists_Windows }
|
||||
bExeFileFound, strStatusMsg = switch[ veOSType ]( vDictArgs );
|
||||
return (bExeFileFound, strStatusMsg);
|
||||
from utilsOsType import EnumOsType
|
||||
switch = {EnumOsType.Unknown : check_lldb_swig_executable_file_exists_Unknown,
|
||||
EnumOsType.Darwin : check_lldb_swig_executable_file_exists_Darwin,
|
||||
EnumOsType.FreeBSD : check_lldb_swig_executable_file_exists_FreeBSD,
|
||||
EnumOsType.Linux : check_lldb_swig_executable_file_exists_Linux,
|
||||
EnumOsType.Windows : check_lldb_swig_executable_file_exists_Windows}
|
||||
bExeFileFound, strStatusMsg = switch[veOSType](vDictArgs)
|
||||
return (bExeFileFound, strStatusMsg)
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Validate the arguments passed to the program. This function exits
|
||||
# the program should error with the arguments be found.
|
||||
@ -448,39 +448,39 @@ def check_lldb_swig_executable_file_exists( vDictArgs, veOSType ):
|
||||
# Dict - Map of arguments names to argument values
|
||||
# Throws: None.
|
||||
#--
|
||||
def validate_arguments( vArgv ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "validate_arguments()" );
|
||||
strMsg = "";
|
||||
dictArgs = {};
|
||||
nResult = 0;
|
||||
strListArgs = "hdmM"; # Format "hiox:" = -h -i -o -x <arg>
|
||||
def validate_arguments(vArgv):
|
||||
dbg = utilsDebug.CDebugFnVerbose("validate_arguments()")
|
||||
strMsg = ""
|
||||
dictArgs = {}
|
||||
nResult = 0
|
||||
strListArgs = "hdmM" # Format "hiox:" = -h -i -o -x <arg>
|
||||
listLongArgs = ["srcRoot=", "targetDir=", "cfgBldDir=", "prefix=",
|
||||
"swigExecutable=", "argsFile"];
|
||||
dictArgReq = { "-h": "o", # o = optional, m = mandatory
|
||||
"-d": "o",
|
||||
"-m": "o",
|
||||
"-M": "o",
|
||||
"--srcRoot": "m",
|
||||
"--targetDir": "m",
|
||||
"--swigExecutable" : "o",
|
||||
"--cfgBldDir": "o",
|
||||
"--prefix": "o",
|
||||
"--argsFile": "o" };
|
||||
strHelpInfo = get_help_information();
|
||||
"swigExecutable=", "argsFile"]
|
||||
dictArgReq = {"-h": "o", # o = optional, m = mandatory
|
||||
"-d": "o",
|
||||
"-m": "o",
|
||||
"-M": "o",
|
||||
"--srcRoot": "m",
|
||||
"--targetDir": "m",
|
||||
"--swigExecutable" : "o",
|
||||
"--cfgBldDir": "o",
|
||||
"--prefix": "o",
|
||||
"--argsFile": "o"}
|
||||
strHelpInfo = get_help_information()
|
||||
|
||||
# Check for mandatory parameters
|
||||
nResult, dictArgs, strMsg = utilsArgsParse.parse( vArgv, strListArgs,
|
||||
listLongArgs,
|
||||
dictArgReq,
|
||||
strHelpInfo );
|
||||
nResult, dictArgs, strMsg = utilsArgsParse.parse(vArgv, strListArgs,
|
||||
listLongArgs,
|
||||
dictArgReq,
|
||||
strHelpInfo)
|
||||
if nResult < 0:
|
||||
program_exit_on_failure( nResult, strMsg );
|
||||
program_exit_on_failure(nResult, strMsg)
|
||||
|
||||
# User input -h for help
|
||||
if nResult == 1:
|
||||
program_exit_success( 0, strMsg );
|
||||
program_exit_success(0, strMsg)
|
||||
|
||||
return (nResult, dictArgs);
|
||||
return (nResult, dictArgs)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Program's main() with arguments passed in from the command line.
|
||||
@ -490,45 +490,45 @@ def validate_arguments( vArgv ):
|
||||
# Returns: None
|
||||
# Throws: None.
|
||||
#--
|
||||
def main( vArgv ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "main()" );
|
||||
bOk = False;
|
||||
dictArgs = {};
|
||||
nResult = 0;
|
||||
strMsg = "";
|
||||
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 );
|
||||
nResult, dictArgs = validate_arguments(vArgv)
|
||||
|
||||
eOSType = utilsOsType.determine_os_type();
|
||||
eOSType = utilsOsType.determine_os_type()
|
||||
if eOSType == utilsOsType.EnumOsType.Unknown:
|
||||
program_exit( -4, strMsgErrorOsTypeUnknown );
|
||||
program_exit(-4, strMsgErrorOsTypeUnknown)
|
||||
|
||||
global gbDbgFlag;
|
||||
gbDbgFlag = "-d" in dictArgs;
|
||||
global gbDbgFlag
|
||||
gbDbgFlag = "-d" in dictArgs
|
||||
if gbDbgFlag:
|
||||
print_out_input_parameters( dictArgs );
|
||||
print_out_input_parameters(dictArgs)
|
||||
|
||||
# Check to see if we were called from the Makefile system. If we were, check
|
||||
# if the caller wants SWIG to generate a dependency file.
|
||||
# Not used in this program, but passed through to the language script file
|
||||
# called by this program
|
||||
global gbMakeFileFlag;
|
||||
global gbSwigGenDepFileFlag;
|
||||
gbMakeFileFlag = "-m" in dictArgs;
|
||||
gbSwigGenDepFileFlag = "-M" in dictArgs;
|
||||
global gbMakeFileFlag
|
||||
global gbSwigGenDepFileFlag
|
||||
gbMakeFileFlag = "-m" in dictArgs
|
||||
gbSwigGenDepFileFlag = "-M" in dictArgs
|
||||
|
||||
bOk, strMsg = check_lldb_swig_file_exists( dictArgs[ "--srcRoot" ], eOSType );
|
||||
bOk, strMsg = check_lldb_swig_file_exists(dictArgs["--srcRoot"], eOSType)
|
||||
if bOk == False:
|
||||
program_exit( -3, strMsg );
|
||||
program_exit(-3, strMsg)
|
||||
|
||||
bOk, strMsg = check_lldb_swig_executable_file_exists( dictArgs, eOSType );
|
||||
bOk, strMsg = check_lldb_swig_executable_file_exists(dictArgs, eOSType)
|
||||
if bOk == False:
|
||||
program_exit( -6, strMsg );
|
||||
program_exit(-6, strMsg)
|
||||
|
||||
nResult, strMsg = run_swig_for_each_script_supported( dictArgs );
|
||||
nResult, strMsg = run_swig_for_each_script_supported(dictArgs)
|
||||
|
||||
program_exit( nResult, strMsg );
|
||||
program_exit(nResult, strMsg)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -579,8 +579,8 @@ def main( vArgv ):
|
||||
|
||||
# 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: ] );
|
||||
utilsDebug.CDebugFnVerbose.bVerboseOn = gbDbgVerbose
|
||||
dbg = utilsDebug.CDebugFnVerbose("__main__")
|
||||
main(sys.argv[1:])
|
||||
else:
|
||||
program_exit( -5, strMsgErrorNoMain );
|
||||
program_exit(-5, strMsgErrorNoMain)
|
||||
|
@ -34,25 +34,25 @@ import utilsOsType # Determine the OS type this script is running on
|
||||
import utilsDebug # Debug Python scripts
|
||||
|
||||
# Instantiations:
|
||||
gbDbgVerbose = False; # True = Turn on script function tracing, False = off.
|
||||
gbDbgFlag = False; # Global debug mode flag, set by input parameter
|
||||
gbDbgVerbose = False # True = Turn on script function tracing, False = off.
|
||||
gbDbgFlag = False # Global debug mode flag, set by input parameter
|
||||
# --dbgFlag. True = operate in debug mode.
|
||||
gbMakeFileFlag = False; # True = yes called from makefile system, False = not.
|
||||
gbMakeFileFlag = False # True = yes called from makefile system, False = not.
|
||||
|
||||
# User facing text:
|
||||
strMsgErrorNoMain = "Program called by another Python script not allowed";
|
||||
strExitMsgSuccess = "Program successful";
|
||||
strExitMsgError = "Program error: ";
|
||||
strParameter = "Parameter: ";
|
||||
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: ";
|
||||
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\
|
||||
@ -82,7 +82,7 @@ Usage:\n\
|
||||
finishSwigWrapperClasses.py --srcRoot=ADirPath --targetDir=ADirPath\n\
|
||||
--cfgBldDir=ADirPath --prefix=ADirPath -m -d\n\
|
||||
\n\
|
||||
"; #TAG_PROGRAM_HELP_INFO
|
||||
" #TAG_PROGRAM_HELP_INFO
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Exit the program on success. Called on program successfully done
|
||||
@ -92,14 +92,14 @@ Usage:\n\
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def program_exit_success( vnResult, vMsg ):
|
||||
strMsg = "";
|
||||
def program_exit_success(vnResult, vMsg):
|
||||
strMsg = ""
|
||||
|
||||
if vMsg.__len__() != 0:
|
||||
strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult);
|
||||
print(strMsg);
|
||||
strMsg = "%s: %s (%d)" % (strExitMsgSuccess, vMsg, vnResult)
|
||||
print(strMsg)
|
||||
|
||||
sys.exit( vnResult );
|
||||
sys.exit(vnResult)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Exit the program with error. Called on exit program failed its
|
||||
@ -109,9 +109,9 @@ def program_exit_success( vnResult, vMsg ):
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def program_exit_on_failure( vnResult, vMsg ):
|
||||
print(("%s%s (%d)" % (strExitMsgError, vMsg, vnResult)));
|
||||
sys.exit( vnResult );
|
||||
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.
|
||||
@ -122,11 +122,11 @@ def program_exit_on_failure( vnResult, vMsg ):
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def program_exit( vnResult, vMsg ):
|
||||
def program_exit(vnResult, vMsg):
|
||||
if vnResult >= 0:
|
||||
program_exit_success( vnResult, vMsg );
|
||||
program_exit_success(vnResult, vMsg)
|
||||
else:
|
||||
program_exit_on_failure( vnResult, vMsg );
|
||||
program_exit_on_failure(vnResult, vMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Dump input parameters.
|
||||
@ -134,14 +134,14 @@ def program_exit( vnResult, vMsg ):
|
||||
# Returns: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def print_out_input_parameters( vDictArgs ):
|
||||
def print_out_input_parameters(vDictArgs):
|
||||
for arg, val in list(vDictArgs.items()):
|
||||
strEqs = "";
|
||||
strQ = "";
|
||||
strEqs = ""
|
||||
strQ = ""
|
||||
if val.__len__() != 0:
|
||||
strEqs = " =";
|
||||
strQ = "\"";
|
||||
print(("%s%s%s %s%s%s\n" % (strParameter, arg, strEqs, strQ, val, strQ)));
|
||||
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
|
||||
@ -151,14 +151,14 @@ def print_out_input_parameters( vDictArgs ):
|
||||
# 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>
|
||||
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=",
|
||||
"argsFile"];
|
||||
"argsFile"]
|
||||
dictArgReq = { "-h": "o", # o = optional, m = mandatory
|
||||
"-d": "o",
|
||||
"-m": "o",
|
||||
@ -167,21 +167,21 @@ def validate_arguments( vArgv ):
|
||||
"--cfgBldDir": "o",
|
||||
"--prefix": "o",
|
||||
"--cmakeBuildConfiguration": "o",
|
||||
"--argsFile": "o" };
|
||||
"--argsFile": "o" }
|
||||
|
||||
# Check for mandatory parameters
|
||||
nResult, dictArgs, strMsg = utilsArgsParse.parse( vArgv, strListArgs,
|
||||
listLongArgs,
|
||||
dictArgReq,
|
||||
strHelpInfo );
|
||||
nResult, dictArgs, strMsg = utilsArgsParse.parse(vArgv, strListArgs,
|
||||
listLongArgs,
|
||||
dictArgReq,
|
||||
strHelpInfo)
|
||||
if nResult < 0:
|
||||
program_exit_on_failure( nResult, strMsg );
|
||||
program_exit_on_failure(nResult, strMsg)
|
||||
|
||||
# User input -h for help
|
||||
if nResult == 1:
|
||||
program_exit_success( 0, strMsg );
|
||||
program_exit_success(0, strMsg)
|
||||
|
||||
return (nResult, dictArgs);
|
||||
return (nResult, dictArgs)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Locate post process script language directory and the script within
|
||||
@ -193,40 +193,40 @@ def validate_arguments( vArgv ):
|
||||
# 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);
|
||||
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 );
|
||||
strPath = os.path.normcase(strScriptFilePath)
|
||||
bOk = os.path.exists(strPath)
|
||||
if bOk == False:
|
||||
strDir = os.path.normcase( strScriptFileDir );
|
||||
strStatusMsg = strScriptNotFound % (strScriptFile, strDir);
|
||||
return (-9, strStatusMsg);
|
||||
strDir = os.path.normcase(strScriptFileDir)
|
||||
strStatusMsg = strScriptNotFound % (strScriptFile, strDir)
|
||||
return (-9, strStatusMsg)
|
||||
|
||||
if gbDbgFlag:
|
||||
print((strScriptLangFound % vStrScriptLang));
|
||||
print((strExecuteMsg % vStrScriptLang));
|
||||
print((strScriptLangFound % vStrScriptLang))
|
||||
print((strExecuteMsg % vStrScriptLang))
|
||||
|
||||
# Change where Python looks for our modules
|
||||
strDir = os.path.normcase( strScriptFileDir );
|
||||
sys.path.append( strDir );
|
||||
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 );
|
||||
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 );
|
||||
sys.path.remove(strDir)
|
||||
|
||||
return (nResult, strStatusMsg);
|
||||
return (nResult, strStatusMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Step through each script language sub directory supported
|
||||
@ -239,26 +239,26 @@ def run_post_process( vStrScriptLang, vstrFinishFileName, vDictArgs ):
|
||||
# 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";
|
||||
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 );
|
||||
strScriptsDir = os.path.normcase(strScriptDir)
|
||||
bOk = os.path.exists(strScriptsDir)
|
||||
if bOk == False:
|
||||
return (-8, strScriptDirNotFound);
|
||||
return (-8, strScriptDirNotFound)
|
||||
|
||||
# Look for any script language directories to build for
|
||||
listDirs = [];
|
||||
nDepth = 1;
|
||||
for strPath, listDirs, listFiles in os.walk( strScriptDir ):
|
||||
nDepth = nDepth - 1;
|
||||
listDirs = []
|
||||
nDepth = 1
|
||||
for strPath, listDirs, listFiles in os.walk(strScriptDir):
|
||||
nDepth = nDepth - 1
|
||||
if nDepth == 0:
|
||||
break;
|
||||
break
|
||||
|
||||
# Skip the directory that contains the interface files.
|
||||
listDirs.remove('interface')
|
||||
@ -276,18 +276,18 @@ def run_post_process_for_each_script_supported( vDictArgs ):
|
||||
for scriptLang in listDirs:
|
||||
# __pycache__ is a magic directory in Python 3 that holds .pyc files
|
||||
if scriptLang != "__pycache__":
|
||||
dbg.dump_text( "Executing language script for \'%s\'" % scriptLang );
|
||||
nResult, strStatusMsg = run_post_process( scriptLang, strFinishFileName,
|
||||
vDictArgs );
|
||||
dbg.dump_text("Executing language script for \'%s\'" % scriptLang)
|
||||
nResult, strStatusMsg = run_post_process(scriptLang, strFinishFileName,
|
||||
vDictArgs)
|
||||
if nResult < 0:
|
||||
break;
|
||||
break
|
||||
|
||||
if nResult < 0:
|
||||
strTmp = strPostProcessError % scriptLang;
|
||||
strTmp += strStatusMsg;
|
||||
strStatusMsg = strTmp;
|
||||
strTmp = strPostProcessError % scriptLang
|
||||
strTmp += strStatusMsg
|
||||
strStatusMsg = strTmp
|
||||
|
||||
return (nResult, strStatusMsg);
|
||||
return (nResult, strStatusMsg)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Program's main() with arguments passed in from the command line.
|
||||
@ -297,35 +297,35 @@ def run_post_process_for_each_script_supported( vDictArgs ):
|
||||
# Returns: None
|
||||
# Throws: None.
|
||||
#--
|
||||
def main( vArgv ):
|
||||
dbg = utilsDebug.CDebugFnVerbose( "main()" );
|
||||
bOk = False;
|
||||
dictArgs = {};
|
||||
nResult = 0;
|
||||
strMsg = "";
|
||||
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 );
|
||||
nResult, dictArgs = validate_arguments(vArgv)
|
||||
|
||||
eOSType = utilsOsType.determine_os_type();
|
||||
eOSType = utilsOsType.determine_os_type()
|
||||
if eOSType == utilsOsType.EnumOsType.Unknown:
|
||||
program_exit( -4, strMsgErrorOsTypeUnknown );
|
||||
program_exit(-4, strMsgErrorOsTypeUnknown)
|
||||
|
||||
global gbDbgFlag;
|
||||
gbDbgFlag = "-d" in dictArgs;
|
||||
global gbDbgFlag
|
||||
gbDbgFlag = "-d" in dictArgs
|
||||
if gbDbgFlag:
|
||||
print_out_input_parameters( dictArgs );
|
||||
print_out_input_parameters(dictArgs)
|
||||
|
||||
# Check to see if we were called from the Makefile system. If we were, check
|
||||
# if the caller wants SWIG to generate a dependency file.
|
||||
# Not used in this program, but passed through to the language script file
|
||||
# called by this program
|
||||
global gbMakeFileFlag;
|
||||
gbMakeFileFlag = "-m" in dictArgs;
|
||||
global gbMakeFileFlag
|
||||
gbMakeFileFlag = "-m" in dictArgs
|
||||
|
||||
nResult, strMsg = run_post_process_for_each_script_supported( dictArgs );
|
||||
nResult, strMsg = run_post_process_for_each_script_supported(dictArgs)
|
||||
|
||||
program_exit( nResult, strMsg );
|
||||
program_exit(nResult, strMsg)
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -378,9 +378,8 @@ def main( vArgv ):
|
||||
|
||||
# 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: ] );
|
||||
utilsDebug.CDebugFnVerbose.bVerboseOn = gbDbgVerbose
|
||||
dbg = utilsDebug.CDebugFnVerbose("__main__")
|
||||
main(sys.argv[1:])
|
||||
else:
|
||||
program_exit( -5, strMsgErrorNoMain );
|
||||
|
||||
program_exit(-5, strMsgErrorNoMain)
|
||||
|
@ -1,141 +1,139 @@
|
||||
""" Utility module handle program args and give help
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
File: utilsArgsParse.py
|
||||
--------------------------------------------------------------------------
|
||||
File: utilsArgsParse.py
|
||||
|
||||
Overview: Python module to parse and validate program parameters
|
||||
against those required by the program whether mandatory
|
||||
or optional.
|
||||
Also give help information on arguments required by the
|
||||
program.
|
||||
|
||||
Gotchas: None.
|
||||
Overview: Python module to parse and validate program parameters
|
||||
against those required by the program whether mandatory
|
||||
or optional.
|
||||
Also give help information on arguments required by the
|
||||
program.
|
||||
|
||||
Gotchas: None.
|
||||
|
||||
Copyright: None.
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Copyright: None.
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
"""
|
||||
|
||||
# Python modules:
|
||||
import sys # Provide argument parsing
|
||||
import getopt # Parse command line arguments
|
||||
import getopt # Parse command line arguments
|
||||
|
||||
# Third party modules:
|
||||
|
||||
# In-house modules:
|
||||
import utilsOsType # Determine the OS type this script is running on
|
||||
|
||||
# Instantiations:
|
||||
|
||||
# User facing text:
|
||||
strMsgErrorInvalidParameters = "Invalid parameters entered, -h for help. \nYou entered:\n";
|
||||
strMsgErrorInvalidNoParams = "No parameters entered, -h for help\n";
|
||||
strMsgErrorNumberParameters = "Number of parameters entered incorrect, %d parameters required. You entered:\n";
|
||||
strMsgArgFileNotImplemented = "Sorry the --argFile is not implemented";
|
||||
strMsgErrorInvalidParameters = "Invalid parameters entered, -h for help. \nYou entered:\n"
|
||||
strMsgErrorInvalidNoParams = "No parameters entered, -h for help\n"
|
||||
strMsgErrorNumberParameters = "Number of parameters entered incorrect, %d parameters required. You entered:\n"
|
||||
strMsgArgFileNotImplemented = "Sorry the --argFile is not implemented"
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Validate the arguments passed in against the mandatory and
|
||||
# optional arguments specified. The argument format for the parameters
|
||||
# is required to work with the module getopt function getopt().
|
||||
# Parameter vDictArgReq specifies which parameters are mandatory and
|
||||
# which are optional. The format is for example:
|
||||
# dictArgReq = { "-h": "o", # o = optional, m = mandatory
|
||||
# "-m": "m",
|
||||
# "--targetDir": "m",
|
||||
# "--cfgBldDir": "o" };
|
||||
# Args: vArgv - (R) List of arguments and values.
|
||||
# vstrListArgs - (R) List of small arguments.
|
||||
# vListLongArgs - (R) List of long arguments.
|
||||
# vDictArgReq - (R) Map of arguments required.
|
||||
# vstrHelpInfo - (R) Formatted help text.
|
||||
# Returns: Int - 0 success.
|
||||
# 1 success display information, do nothing else.
|
||||
# -1 error invalid parameters.
|
||||
# -2 error incorrect number of mandatory parameters.
|
||||
# Dict - Map of arguments names to argument values
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
# Details: Validate the arguments passed in against the mandatory and
|
||||
# optional arguments specified. The argument format for the parameters
|
||||
# is required to work with the module getopt function getopt().
|
||||
# Parameter vDictArgReq specifies which parameters are mandatory and
|
||||
# which are optional. The format is for example:
|
||||
# dictArgReq = {"-h": "o", # o = optional, m = mandatory
|
||||
# "-m": "m",
|
||||
# "--targetDir": "m",
|
||||
# "--cfgBldDir": "o" }
|
||||
# Args: vArgv - (R) List of arguments and values.
|
||||
# vstrListArgs - (R) List of small arguments.
|
||||
# vListLongArgs - (R) List of long arguments.
|
||||
# vDictArgReq - (R) Map of arguments required.
|
||||
# vstrHelpInfo - (R) Formatted help text.
|
||||
# Returns: Int - 0 success.
|
||||
# 1 success display information, do nothing else.
|
||||
# -1 error invalid parameters.
|
||||
# -2 error incorrect number of mandatory parameters.
|
||||
# Dict - Map of arguments names to argument values
|
||||
# Str - Error message.
|
||||
# Throws: None.
|
||||
#--
|
||||
def parse( vArgv, vstrListArgs, vListLongArgs, vDictArgReq, vstrHelpInfo ):
|
||||
dictArgs = {};
|
||||
dictDummy = {};
|
||||
strDummy = "";
|
||||
|
||||
# Validate parameters above and error on not recognised
|
||||
try:
|
||||
dictOptsNeeded, dictArgsLeftOver = getopt.getopt( vArgv,
|
||||
vstrListArgs,
|
||||
vListLongArgs );
|
||||
except getopt.GetoptError:
|
||||
strMsg = strMsgErrorInvalidParameters;
|
||||
strMsg += str( vArgv );
|
||||
return (-1, dictDummy, strMsg);
|
||||
def parse(vArgv, vstrListArgs, vListLongArgs, vDictArgReq, vstrHelpInfo):
|
||||
dictArgs = {}
|
||||
dictDummy = {}
|
||||
strDummy = ""
|
||||
|
||||
if len( dictOptsNeeded ) == 0:
|
||||
strMsg = strMsgErrorInvalidNoParams;
|
||||
return (-1, dictDummy, strMsg);
|
||||
|
||||
# Look for help -h before anything else
|
||||
for opt, arg in dictOptsNeeded:
|
||||
if opt == '-h':
|
||||
return (1, dictDummy, vstrHelpInfo );
|
||||
|
||||
# Look for the --argFile if found ignore other command line arguments
|
||||
for opt, arg in dictOptsNeeded:
|
||||
if opt == '--argsFile':
|
||||
return (1, dictDummy, strMsgArgFileNotImplemented);
|
||||
|
||||
# Count the number of mandatory args required (if any one found)
|
||||
countMandatory = 0;
|
||||
for opt, man in list(vDictArgReq.items()):
|
||||
if man == "m":
|
||||
countMandatory = countMandatory + 1;
|
||||
|
||||
# Extract short args
|
||||
listArgs = [];
|
||||
for arg in vstrListArgs:
|
||||
if (arg == '-h') or (arg == ':'):
|
||||
continue;
|
||||
listArgs.append( arg );
|
||||
|
||||
# Append to arg dictionary the option and its value
|
||||
bFoundNoInputValue = False;
|
||||
countMandatoryOpts = 0;
|
||||
for opt, val in dictOptsNeeded:
|
||||
match = 0;
|
||||
for arg in listArgs:
|
||||
argg = "-" + arg;
|
||||
if opt == argg:
|
||||
if "m" == vDictArgReq[ opt ]:
|
||||
countMandatoryOpts = countMandatoryOpts + 1;
|
||||
dictArgs[ opt ] = val;
|
||||
match = 1;
|
||||
break;
|
||||
if match == 0:
|
||||
for arg in vListLongArgs:
|
||||
argg = "--" + arg[:arg.__len__() - 1];
|
||||
if opt == argg:
|
||||
if "m" == vDictArgReq[ opt ]:
|
||||
countMandatoryOpts = countMandatoryOpts + 1;
|
||||
dictArgs[ opt ] = val;
|
||||
if val.__len__() == 0:
|
||||
bFoundNoInputValue = True;
|
||||
break;
|
||||
|
||||
# Do any of the long arguments not have a value attached
|
||||
if bFoundNoInputValue:
|
||||
strMsg = strMsgErrorInvalidParameters;
|
||||
strMsg += str( vArgv );
|
||||
return (-1, dictDummy, strMsg);
|
||||
# Validate parameters above and error on not recognised
|
||||
try:
|
||||
dictOptsNeeded, dictArgsLeftOver = getopt.getopt(vArgv,
|
||||
vstrListArgs,
|
||||
vListLongArgs)
|
||||
except getopt.GetoptError:
|
||||
strMsg = strMsgErrorInvalidParameters
|
||||
strMsg += str(vArgv)
|
||||
return (-1, dictDummy, strMsg)
|
||||
|
||||
# Debug only
|
||||
#print countMandatoryOpts
|
||||
#print countMandatory
|
||||
|
||||
# Do we have the exact number of mandatory arguments
|
||||
if (countMandatoryOpts > 0) and (countMandatory != countMandatoryOpts):
|
||||
strMsg = strMsgErrorNumberParameters % countMandatory;
|
||||
strMsg += str( vArgv );
|
||||
return (-2, dictDummy, strMsg);
|
||||
if len(dictOptsNeeded) == 0:
|
||||
strMsg = strMsgErrorInvalidNoParams
|
||||
return (-1, dictDummy, strMsg)
|
||||
|
||||
return (0, dictArgs, strDummy);
|
||||
# Look for help -h before anything else
|
||||
for opt, arg in dictOptsNeeded:
|
||||
if opt == '-h':
|
||||
return (1, dictDummy, vstrHelpInfo)
|
||||
|
||||
# Look for the --argFile if found ignore other command line arguments
|
||||
for opt, arg in dictOptsNeeded:
|
||||
if opt == '--argsFile':
|
||||
return (1, dictDummy, strMsgArgFileNotImplemented)
|
||||
|
||||
# Count the number of mandatory args required (if any one found)
|
||||
countMandatory = 0
|
||||
for opt, man in list(vDictArgReq.items()):
|
||||
if man == "m":
|
||||
countMandatory = countMandatory + 1
|
||||
|
||||
# Extract short args
|
||||
listArgs = []
|
||||
for arg in vstrListArgs:
|
||||
if (arg == '-h') or (arg == ':'):
|
||||
continue
|
||||
listArgs.append(arg)
|
||||
|
||||
# Append to arg dictionary the option and its value
|
||||
bFoundNoInputValue = False
|
||||
countMandatoryOpts = 0
|
||||
for opt, val in dictOptsNeeded:
|
||||
match = 0
|
||||
for arg in listArgs:
|
||||
argg = "-" + arg
|
||||
if opt == argg:
|
||||
if "m" == vDictArgReq[opt]:
|
||||
countMandatoryOpts = countMandatoryOpts + 1
|
||||
dictArgs[opt] = val
|
||||
match = 1
|
||||
break
|
||||
if match == 0:
|
||||
for arg in vListLongArgs:
|
||||
argg = "--" + arg[:arg.__len__() - 1]
|
||||
if opt == argg:
|
||||
if "m" == vDictArgReq[opt]:
|
||||
countMandatoryOpts = countMandatoryOpts + 1
|
||||
dictArgs[opt] = val
|
||||
if val.__len__() == 0:
|
||||
bFoundNoInputValue = True
|
||||
break
|
||||
|
||||
# Do any of the long arguments not have a value attached
|
||||
if bFoundNoInputValue:
|
||||
strMsg = strMsgErrorInvalidParameters
|
||||
strMsg += str(vArgv)
|
||||
return (-1, dictDummy, strMsg)
|
||||
|
||||
# Debug only
|
||||
#print countMandatoryOpts
|
||||
#print countMandatory
|
||||
|
||||
# Do we have the exact number of mandatory arguments
|
||||
if (countMandatoryOpts > 0) and (countMandatory != countMandatoryOpts):
|
||||
strMsg = strMsgErrorNumberParameters % countMandatory
|
||||
strMsg += str(vArgv)
|
||||
return (-2, dictDummy, strMsg)
|
||||
|
||||
return (0, dictArgs, strDummy)
|
||||
|
@ -1,19 +1,17 @@
|
||||
""" Utility module to help debug Python scripts
|
||||
|
||||
--------------------------------------------------------------------------
|
||||
File: utilsDebug.py
|
||||
--------------------------------------------------------------------------
|
||||
File: utilsDebug.py
|
||||
|
||||
Overview: Python module to supply functions to help debug Python
|
||||
scripts.
|
||||
|
||||
Gotchas: None.
|
||||
|
||||
Copyright: None.
|
||||
--------------------------------------------------------------------------
|
||||
|
||||
Overview: Python module to supply functions to help debug Python
|
||||
scripts.
|
||||
Gotchas: None.
|
||||
Copyright: None.
|
||||
--------------------------------------------------------------------------
|
||||
"""
|
||||
|
||||
# Python modules:
|
||||
import sys
|
||||
|
||||
# Third party modules:
|
||||
|
||||
@ -22,104 +20,101 @@
|
||||
# Instantiations:
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Details: Class to implement simple stack function trace. Instantiation the
|
||||
# class as the first function you want to trace. Example:
|
||||
# obj = utilsDebug.CDebugFnVerbose( "validate_arguments()" );
|
||||
# Gotchas: This class will not work in properly in a multi-threaded
|
||||
# environment.
|
||||
# Authors: Illya Rudkin 28/11/2013.
|
||||
# Changes: None.
|
||||
# Details: Class to implement simple stack function trace. Instantiation the
|
||||
# class as the first function you want to trace. Example:
|
||||
# obj = utilsDebug.CDebugFnVerbose("validate_arguments()")
|
||||
# Gotchas: This class will not work in properly in a multi-threaded
|
||||
# environment.
|
||||
# Authors: Illya Rudkin 28/11/2013.
|
||||
# Changes: None.
|
||||
#--
|
||||
class CDebugFnVerbose:
|
||||
# Public static properties:
|
||||
bVerboseOn = False; # True = turn on function tracing, False = turn off.
|
||||
|
||||
# Public:
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: CDebugFnVerbose constructor.
|
||||
# Type: Method.
|
||||
# Args: vstrFnName - (R) Text description i.e. a function name.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
# CDebugFnVerbose( vstrFnName )
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Print out information on the object specified.
|
||||
# Type: Method.
|
||||
# Args: vstrText - (R) Some helper text description.
|
||||
# vObject - (R) Some Python type object.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def dump_object( self, vstrText, vObject ):
|
||||
if CDebugFnVerbose.bVerboseOn == False:
|
||||
return;
|
||||
sys.stdout.write("%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
vstrText));
|
||||
print(vObject);
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Print out some progress text given by the client.
|
||||
# Type: Method.
|
||||
# Args: vstrText - (R) Some helper text description.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def dump_text( self, vstrText ):
|
||||
if CDebugFnVerbose.bVerboseOn == False:
|
||||
return;
|
||||
print(("%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
vstrText)));
|
||||
|
||||
# Private methods:
|
||||
def __init__( self, vstrFnName ):
|
||||
self.__indent_out( vstrFnName );
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Build an indentation string of dots based on the __nLevel.
|
||||
# Type: Method.
|
||||
# Args: None.
|
||||
# Return: Str - variable length string.
|
||||
# Throws: None.
|
||||
#--
|
||||
def __get_dots( self ):
|
||||
return "".join( "." for i in range( 0, CDebugFnVerbose.__nLevel ) );
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Build and print out debug verbosity text indicating the function
|
||||
# just exited from.
|
||||
# Type: Method.
|
||||
# Args: None.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def __indent_back( self ):
|
||||
if CDebugFnVerbose.bVerboseOn:
|
||||
print(("%d%s< fn: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
self.__strFnName)));
|
||||
CDebugFnVerbose.__nLevel -= 1;
|
||||
class CDebugFnVerbose(object):
|
||||
# Public static properties:
|
||||
bVerboseOn = False # True = turn on function tracing, False = turn off.
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Build and print out debug verbosity text indicating the function
|
||||
# just entered.
|
||||
# Type: Method.
|
||||
# Args: vstrFnName - (R) Name of the function entered.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def __indent_out( self, vstrFnName ):
|
||||
CDebugFnVerbose.__nLevel += 1;
|
||||
self.__strFnName = vstrFnName;
|
||||
if CDebugFnVerbose.bVerboseOn:
|
||||
print(("%d%s> fn: %s" % ( CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
self.__strFnName)));
|
||||
# Public:
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: CDebugFnVerbose constructor.
|
||||
# Type: Method.
|
||||
# Args: vstrFnName - (R) Text description i.e. a function name.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
# CDebugFnVerbose(vstrFnName)
|
||||
|
||||
# Private statics attributes:
|
||||
__nLevel = 0; # Indentation level counter
|
||||
|
||||
# Private attributes:
|
||||
__strFnName = "";
|
||||
|
||||
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Print out information on the object specified.
|
||||
# Type: Method.
|
||||
# Args: vstrText - (R) Some helper text description.
|
||||
# vObject - (R) Some Python type object.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def dump_object(self, vstrText, vObject):
|
||||
if CDebugFnVerbose.bVerboseOn == False:
|
||||
return
|
||||
sys.stdout.write("%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
vstrText))
|
||||
print(vObject)
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Print out some progress text given by the client.
|
||||
# Type: Method.
|
||||
# Args: vstrText - (R) Some helper text description.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def dump_text(self, vstrText):
|
||||
if CDebugFnVerbose.bVerboseOn == False:
|
||||
return
|
||||
print(("%d%s> Dp: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
vstrText)))
|
||||
|
||||
# Private methods:
|
||||
def __init__(self, vstrFnName):
|
||||
self.__indent_out(vstrFnName)
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Build an indentation string of dots based on the __nLevel.
|
||||
# Type: Method.
|
||||
# Args: None.
|
||||
# Return: Str - variable length string.
|
||||
# Throws: None.
|
||||
#--
|
||||
def __get_dots(self):
|
||||
return "".join("." for i in range(0, CDebugFnVerbose.__nLevel))
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Build and print out debug verbosity text indicating the function
|
||||
# just exited from.
|
||||
# Type: Method.
|
||||
# Args: None.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def __indent_back(self):
|
||||
if CDebugFnVerbose.bVerboseOn:
|
||||
print(("%d%s< fn: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
self.__strFnName)))
|
||||
CDebugFnVerbose.__nLevel -= 1
|
||||
|
||||
#++------------------------------------------------------------------------
|
||||
# Details: Build and print out debug verbosity text indicating the function
|
||||
# just entered.
|
||||
# Type: Method.
|
||||
# Args: vstrFnName - (R) Name of the function entered.
|
||||
# Return: None.
|
||||
# Throws: None.
|
||||
#--
|
||||
def __indent_out(self, vstrFnName):
|
||||
CDebugFnVerbose.__nLevel += 1
|
||||
self.__strFnName = vstrFnName
|
||||
if CDebugFnVerbose.bVerboseOn:
|
||||
print(("%d%s> fn: %s" % (CDebugFnVerbose.__nLevel, self.__get_dots(),
|
||||
self.__strFnName)))
|
||||
|
||||
# Private statics attributes:
|
||||
__nLevel = 0 # Indentation level counter
|
||||
|
||||
# Private attributes:
|
||||
__strFnName = ""
|
||||
|
@ -3,7 +3,7 @@
|
||||
--------------------------------------------------------------------------
|
||||
File: utilsOsType.py
|
||||
|
||||
Overview: Python module to supply functions and an enumeration to
|
||||
Overview: Python module to supply functions and an enumeration to
|
||||
help determine the platform type, bit size and OS currently
|
||||
being used.
|
||||
--------------------------------------------------------------------------
|
||||
@ -36,22 +36,22 @@ if sys.version_info.major >= 3:
|
||||
NetBSD = 4
|
||||
Windows = 5
|
||||
else:
|
||||
class EnumOsType( object ):
|
||||
values = [ "Unknown",
|
||||
"Darwin",
|
||||
"FreeBSD",
|
||||
"Linux",
|
||||
"NetBSD",
|
||||
"Windows" ]
|
||||
class __metaclass__( type ):
|
||||
class EnumOsType(object):
|
||||
values = ["Unknown",
|
||||
"Darwin",
|
||||
"FreeBSD",
|
||||
"Linux",
|
||||
"NetBSD",
|
||||
"Windows"]
|
||||
class __metaclass__(type):
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Fn acts as an enumeration.
|
||||
# Args: vName - (R) Enumeration to match.
|
||||
# Returns: Int - Matching enumeration/index.
|
||||
# Throws: None.
|
||||
#--
|
||||
def __getattr__( self, vName ):
|
||||
return self.values.index( vName );
|
||||
def __getattr__(cls, vName):
|
||||
return cls.values.index(vName)
|
||||
|
||||
#++---------------------------------------------------------------------------
|
||||
# Details: Reverse fast lookup of the values list.
|
||||
@ -59,8 +59,8 @@ else:
|
||||
# Returns: Str - text description matching enumeration.
|
||||
# Throws: None.
|
||||
#--
|
||||
def name_of( self, vI ):
|
||||
return EnumOsType.values[ vI ];
|
||||
def name_of(cls, vI):
|
||||
return EnumOsType.values[vI]
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
#-----------------------------------------------------------------------------
|
||||
@ -73,18 +73,18 @@ else:
|
||||
# Throws: None.
|
||||
#--
|
||||
def determine_os_type():
|
||||
eOSType = EnumOsType.Unknown;
|
||||
eOSType = EnumOsType.Unknown
|
||||
|
||||
strOS = sys.platform
|
||||
if strOS == "darwin":
|
||||
eOSType = EnumOsType.Darwin
|
||||
elif (strOS.startswith("freebsd")):
|
||||
elif strOS.startswith("freebsd"):
|
||||
eOSType = EnumOsType.FreeBSD
|
||||
elif (strOS.startswith("linux")):
|
||||
elif strOS.startswith("linux"):
|
||||
eOSType = EnumOsType.Linux
|
||||
elif (strOS.startswith("netbsd")):
|
||||
elif strOS.startswith("netbsd"):
|
||||
eOSType = EnumOsType.NetBSD
|
||||
elif strOS == "win32":
|
||||
eOSType = EnumOsType.Windows
|
||||
|
||||
return eOSType;
|
||||
return eOSType
|
||||
|
Loading…
Reference in New Issue
Block a user