From a7e79c1b448ff7ec90b1fee27e7e148275a2fd94 Mon Sep 17 00:00:00 2001 From: Ilia K Date: Fri, 13 Feb 2015 22:30:11 +0000 Subject: [PATCH] Fix build: revert r229148 "Fix argdumper build in cmake (OS X) after r228636" and r229159 "Fix build: make_symlink_darwin_debug passes 2 arguments into make_symlink, but it requires 4 arguments" llvm-svn: 229166 --- lldb/scripts/Python/finish-swig-Python-LLDB.sh | 22 -- lldb/scripts/Python/finishSwigPythonLLDB.py | 295 +++++++++------------ .../launch_with_glob/TestLaunchWithGlob.py | 1 + lldb/tools/CMakeLists.txt | 1 - lldb/tools/argdumper/CMakeLists.txt | 8 - 5 files changed, 124 insertions(+), 203 deletions(-) delete mode 100644 lldb/tools/argdumper/CMakeLists.txt diff --git a/lldb/scripts/Python/finish-swig-Python-LLDB.sh b/lldb/scripts/Python/finish-swig-Python-LLDB.sh index eb8ec11..690e882 100755 --- a/lldb/scripts/Python/finish-swig-Python-LLDB.sh +++ b/lldb/scripts/Python/finish-swig-Python-LLDB.sh @@ -167,7 +167,6 @@ else fi fi -# Make symlink for darwin-debug on Darwin if [ ${OS_NAME} = "Darwin" ] && [ $MakefileCalled -ne 0 ] then # We are being built by CMake on Darwin @@ -188,27 +187,6 @@ then fi fi -# Make symlink for argdumper on any platform -if [ $MakefileCalled -ne 0 ] -then - # We are being built by CMake - - if [ ! -L "${framework_python_dir}/argdumper" ] - then - if [ $Debug -eq 1 ] - then - echo "Creating symlink for argdumper" - fi - cd "${framework_python_dir}" - ln -s "../../../../bin/argdumper" argdumper - else - if [ $Debug -eq 1 ] - then - echo "${framework_python_dir}/argdumper already exists." - fi - fi -fi - create_python_package () { package_dir="${framework_python_dir}$1" package_files="$2" diff --git a/lldb/scripts/Python/finishSwigPythonLLDB.py b/lldb/scripts/Python/finishSwigPythonLLDB.py index 4f9b313..978b0d6 100644 --- a/lldb/scripts/Python/finishSwigPythonLLDB.py +++ b/lldb/scripts/Python/finishSwigPythonLLDB.py @@ -70,8 +70,8 @@ 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)"; +strMsglldbsoExists = "Symlink '%s' already exists"; +strMsglldbsoMk = "Creating symlink for _lldb.so (%s -> %s)"; strErrMsgCpLldbpy = "copying lldb to lldb package directory"; strErrMsgCreatePyPkgMissingSlash = "Parameter 3 fn create_py_pkg() missing slash"; strErrMsgMkLinkExecute = "Command mklink failed: %s"; @@ -218,159 +218,120 @@ def copy_lldbpy_file_to_lldb_pkg_dir( vDictArgs, vstrFrameworkPythonDir, vstrCfg strMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ]; return (bOk, strMsg); - -#++--------------------------------------------------------------------------- -# Details: Make the symbolic link on a Windows platform. -# Args: vstrSrcFile - (R) Source file name. -# vstrTargetFile - (R) Destination file name. -# Returns: Bool - True = function success, False = failure. -# 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 = ""; - - try: - csl = ctypes.windll.kernel32.CreateHardLinkW - csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32) - csl.restype = ctypes.c_ubyte - if csl(vstrTargetPath, vstrSrcPath, 0) == 0: - 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); - - return (bOk, strErrMsg); - -#++--------------------------------------------------------------------------- -# Details: Make the symbolic link on a UNIX style platform. -# Args: vstrSrcFile - (R) Source file name. -# vstrTargetFile - (R) Destination file name. -# Returns: Bool - True = function success, False = failure. -# 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 = ""; - - try: - 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); - except: - bOk = False; - strErrMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ]; - - return (bOk, strErrMsg); #++--------------------------------------------------------------------------- -# Details: Make the symbolic link. +# Details: Make the symbolic that the script bridge for Python will need in +# the Python framework directory. Code for specific to Windows. # Args: vDictArgs - (R) Program input parameters. # vstrFrameworkPythonDir - (R) Python framework directory. -# vstrSrcFile - (R) Source file name. -# vstrTargetFile - (R) Destination file name. +# vstrDllName - (R) File name for _lldb.dll. # Returns: Bool - True = function success, False = failure. # Str - Error description on task failure. # Throws: None. #-- -def make_symlink( vDictArgs, vstrFrameworkPythonDir, vstrSrcFile, vstrTargetFile ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink()" ); +def make_symlink_windows( vDictArgs, vstrFrameworkPythonDir, vstrDllName ): + dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_windows()" ); bOk = True; - strErrMsg = ""; + strMsg = ""; + bDbg = vDictArgs.has_key( "-d" ); - strTarget = "%s/%s" % (vstrFrameworkPythonDir, vstrTargetFile); - strTarget = os.path.normcase( strTarget ); + strTarget = vstrDllName; + # 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 vDictArgs["--buildConfig"].lower() == "debug": + strTarget += "_d"; + strTarget += ".pyd"; + strDLLPath = "%s\\%s" % (vstrFrameworkPythonDir, strTarget); + strTarget = os.path.normcase( strDLLPath ); strSrc = ""; os.chdir( vstrFrameworkPythonDir ); bMakeFileCalled = vDictArgs.has_key( "-m" ); - eOSType = utilsOsType.determine_os_type(); if not bMakeFileCalled: - return (bOk, strErrMsg); + strSrc = os.path.normcase( "../../../LLDB" ); else: - strSrc = os.path.normcase( "../../../%s" % vstrSrcFile ); + strLibFileExtn = ".dll"; + strSrc = os.path.normcase( "../../../bin/liblldb%s" % strLibFileExtn ); - if eOSType == utilsOsType.EnumOsType.Unknown: - bOk = False; - strErrMsg = strErrMsgOsTypeUnknown; - elif eOSType == utilsOsType.EnumOsType.Windows: - if os.path.isfile( strTarget ): - if bDbg: - print strMsgSymlinkExists % vstrTargetFile; + if os.path.isfile( strTarget ): if bDbg: - print strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget); - bOk, strErrMsg = make_symlink_windows( strSrc, - strTarget ); - else: - if os.path.islink( strTarget ): - if bDbg: - print strMsgSymlinkExists % vstrTargetFile; - if bDbg: - print strMsgSymlinkMk % (vstrTargetFile, strSrc, strTarget); - return (bOk, strErrMsg); - bOk, strErrMsg = make_symlink_other_platforms( strSrc, - strTarget ); + print strMsglldbsoExists % strTarget; + return (bOk, strMsg); - return (bOk, strErrMsg); + if bDbg: + print strMsglldbsoMk % (os.path.abspath(strSrc), os.path.abspath(strTarget)); + + try: + csl = ctypes.windll.kernel32.CreateHardLinkW + csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32) + csl.restype = ctypes.c_ubyte + if csl(strTarget, strSrc, 0) == 0: + raise ctypes.WinError() + except Exception as e: + bOk = False; + strMsg = "WinError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink); + strMsg += " Src:'%s' Target:'%s'" % (strSrc, strTarget); + return (bOk, strMsg); + #++--------------------------------------------------------------------------- -# Details: Make the symbolic that the script bridge for Python will need in -# the Python framework directory. +# Details: Make the symbolic link that the script bridge for Python will need in +# the Python framework directory. Code for all platforms apart from +# Windows. # Args: vDictArgs - (R) Program input parameters. # vstrFrameworkPythonDir - (R) Python framework directory. -# vstrLiblldbName - (R) File name for _lldb library. +# vstrSoName - (R) File name for _lldb.so. # Returns: Bool - True = function success, False = failure. # Str - Error description on task failure. # Throws: None. #-- -def make_symlink_liblldb( vDictArgs, vstrFrameworkPythonDir, vstrLiblldbFileName ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_liblldb()" ); +def make_symlink_other_platforms( vDictArgs, vstrFrameworkPythonDir, vstrSoPath ): + dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" ); bOk = True; - strErrMsg = ""; - strTarget = vstrLiblldbFileName + strMsg = ""; + bDbg = vDictArgs.has_key( "-d" ); + strTarget = vstrSoPath + ".so"; + strSoPath = "%s/%s" % (vstrFrameworkPythonDir, strTarget); + strTarget = os.path.normcase( strSoPath ); strSrc = ""; - - eOSType = utilsOsType.determine_os_type(); - if eOSType == utilsOsType.EnumOsType.Windows: - # When importing an extension module using a debug version of python, you - # write, for example, "import foo", but the interpreter searches for - # "foo_d.pyd" - if vDictArgs["--buildConfig"].lower() == "debug": - strTarget += "_d"; - strTarget += ".pyd"; - else: - strTarget += ".so"; - + + os.chdir( vstrFrameworkPythonDir ); bMakeFileCalled = vDictArgs.has_key( "-m" ); if not bMakeFileCalled: - strSrc = "lib/LLDB"; + strSrc = os.path.normcase( "../../../LLDB" ); else: strLibFileExtn = ""; - if eOSType == utilsOsType.EnumOsType.Windows: - strLibFileExtn = ".dll"; - strSrc = "bin/liblldb%s" % strLibFileExtn; - else: - if eOSType == utilsOsType.EnumOsType.Linux: - strLibFileExtn = ".so"; - elif eOSType == utilsOsType.EnumOsType.Darwin: - strLibFileExtn = ".dylib"; - strSrc = "lib/liblldb%s" % strLibFileExtn; - - bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget ); - - return (bOk, strErrMsg); + eOSType = utilsOsType.determine_os_type(); + if eOSType == utilsOsType.EnumOsType.Linux: + strLibFileExtn = ".so"; + elif eOSType == utilsOsType.EnumOsType.Darwin: + strLibFileExtn = ".dylib"; + strSrc = os.path.normcase( "../../../liblldb%s" % strLibFileExtn ); + if os.path.islink( strTarget ): + if bDbg: + print strMsglldbsoExists % strTarget; + return (bOk, strMsg); + + if bDbg: + print strMsglldbsoMk; + + try: + os.symlink( strSrc, strTarget ); + except OSError as e: + bOk = False; + strMsg = "OSError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink); + strMsg += " Src:'%s' Target:'%s'" % (strSrc, strTarget); + except: + bOk = False; + strMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ]; + + return (bOk, strMsg); + #++--------------------------------------------------------------------------- -# Details: Make the symbolic link to the darwin-debug. +# Details: Make the symbolic link to the darwin-debug. Code for all platforms +# apart from Windows. # Args: vDictArgs - (R) Program input parameters. # vstrFrameworkPythonDir - (R) Python framework directory. # vstrDarwinDebugFileName - (R) File name for darwin-debug. @@ -379,51 +340,41 @@ def make_symlink_liblldb( vDictArgs, vstrFrameworkPythonDir, vstrLiblldbFileName # Throws: None. #-- def make_symlink_darwin_debug( vDictArgs, vstrFrameworkPythonDir, vstrDarwinDebugFileName ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_darwin_debug()" ); - bOk = True; - strErrMsg = ""; - strTarget = vstrDarwinDebugFileName; - strSrc = ""; - - bMakeFileCalled = vDictArgs.has_key( "-m" ); - if not bMakeFileCalled: - return (bOk, strErrMsg); - else: - strSrc = "bin/lldb-launcher"; - - bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget ); - - return (bOk, strErrMsg); - -#++--------------------------------------------------------------------------- -# Details: Make the symbolic link to the argdumper. -# Args: vDictArgs - (R) Program input parameters. -# vstrFrameworkPythonDir - (R) Python framework directory. -# vstrArgdumperFileName - (R) File name for argdumper. -# Returns: Bool - True = function success, False = failure. -# Str - Error description on task failure. -# Throws: None. -#-- -def make_symlink_argdumper( vDictArgs, vstrFrameworkPythonDir, vstrArgdumperFileName ): - dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_argdumper()" ); + dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink_other_platforms()" ); bOk = True; - strErrMsg = ""; - strTarget = vstrArgdumperFileName; + strMsg = ""; + bDbg = vDictArgs.has_key( "-d" ); + strTarget = vstrDarwinDebugFileName + strDarwinDebugPath = "%s/%s" % (vstrFrameworkPythonDir, strTarget); + strTarget = os.path.normcase( strDarwinDebugPath ); strSrc = ""; + os.chdir( vstrFrameworkPythonDir ); bMakeFileCalled = vDictArgs.has_key( "-m" ); if not bMakeFileCalled: - return (bOk, strErrMsg); + return (bOk, strMsg); else: - eOSType = utilsOsType.determine_os_type(); - strSrc = "bin/argdumper"; - if eOSType == utilsOsType.EnumOsType.Windows: - strSrc += ".exe" - strTarget += ".exe"; - - bOk, strErrMsg = make_symlink( vDictArgs, vstrFrameworkPythonDir, strSrc, strTarget ); + strSrc = os.path.normcase( "../../../../bin/lldb-launcher" ); - return (bOk, strErrMsg); + if os.path.islink( strTarget ): + if bDbg: + print strMsglldbsoExists % strTarget; + return (bOk, strMsg); + + if bDbg: + print strMsglldbsoMk; + + try: + os.symlink( strSrc, strTarget ); + except OSError as e: + bOk = False; + strMsg = "OSError( %d ): %s %s" % (e.errno, e.strerror, strErrMsgMakeSymlink); + strMsg += " Src:'%s' Target:'%s'" % (strSrc, strTarget); + except: + bOk = False; + strMsg = strErrMsgUnexpected % sys.exec_info()[ 0 ]; + + return (bOk, strMsg); #++--------------------------------------------------------------------------- # Details: Make the symlink that the script bridge for Python will need in @@ -434,34 +385,34 @@ def make_symlink_argdumper( vDictArgs, vstrFrameworkPythonDir, vstrArgdumperFile # strErrMsg - Error description on task failure. # Throws: None. #-- -def create_symlinks( vDictArgs, vstrFrameworkPythonDir ): - dbg = utilsDebug.CDebugFnVerbose( "Python script create_symlinks()" ); +def make_symlink( vDictArgs, vstrFrameworkPythonDir ): + dbg = utilsDebug.CDebugFnVerbose( "Python script make_symlink()" ); bOk = True; strWkDir = ""; strErrMsg = ""; eOSType = utilsOsType.determine_os_type(); - # Make symlink for _lldb + # Make symlink for _lldb strSoFileName = "_lldb"; - if bOk: - bOk, strErrMsg = make_symlink_liblldb( vDictArgs, + if eOSType == utilsOsType.EnumOsType.Unknown: + bOk = False; + strErrMsg = strErrMsgOsTypeUnknown; + elif eOSType == utilsOsType.EnumOsType.Windows: + bOk, strErrMsg = make_symlink_windows( vDictArgs, vstrFrameworkPythonDir, strSoFileName ); + else: + bOk, strErrMsg = make_symlink_other_platforms( vDictArgs, + vstrFrameworkPythonDir, + strSoFileName ); - # Make symlink for darwin-debug on Darwin + # Make symlink for darwin-debug strDarwinDebugFileName = "darwin-debug" if bOk and eOSType == utilsOsType.EnumOsType.Darwin: bOk, strErrMsg = make_symlink_darwin_debug( vDictArgs, vstrFrameworkPythonDir, strDarwinDebugFileName ); - # Make symlink for argdumper - strArgdumperFileName = "argdumper" - if bOk: - bOk, strErrMsg = make_symlink_argdumper( vDictArgs, - vstrFrameworkPythonDir, - strArgdumperFileName ); - return (bOk, strErrMsg); #++--------------------------------------------------------------------------- @@ -680,7 +631,7 @@ def main( vDictArgs ): bOk, strMsg = find_or_create_python_dir( vDictArgs, strFrameworkPythonDir ); if bOk: - bOk, strMsg = create_symlinks( vDictArgs, strFrameworkPythonDir ); + bOk, strMsg = make_symlink( vDictArgs, strFrameworkPythonDir ); if bOk: bOk, strMsg = copy_lldbpy_file_to_lldb_pkg_dir( vDictArgs, diff --git a/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py b/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py index cabe399..8d61e20 100644 --- a/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py +++ b/lldb/test/functionalities/launch_with_glob/TestLaunchWithGlob.py @@ -21,6 +21,7 @@ class LaunchWithGlobTestCase(TestBase): self.do_test () + @unittest2.skipUnless(sys.platform.startswith("darwin"), "requires Darwin") @dwarf_test def test_with_dwarf (self): self.buildDwarf() diff --git a/lldb/tools/CMakeLists.txt b/lldb/tools/CMakeLists.txt index e56cc9bc..bb3ce2d 100644 --- a/lldb/tools/CMakeLists.txt +++ b/lldb/tools/CMakeLists.txt @@ -2,7 +2,6 @@ if (CMAKE_SYSTEM_NAME MATCHES "Darwin") add_subdirectory(darwin-debug) add_subdirectory(debugserver) endif() - add_subdirectory(argdumper) add_subdirectory(driver) if (NOT __ANDROID_NDK__) add_subdirectory(lldb-mi) diff --git a/lldb/tools/argdumper/CMakeLists.txt b/lldb/tools/argdumper/CMakeLists.txt deleted file mode 100644 index d3ca654..0000000 --- a/lldb/tools/argdumper/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -add_lldb_executable(argdumper - argdumper.cpp - ) - -target_link_libraries(argdumper liblldb) - -install(TARGETS argdumper - RUNTIME DESTINATION bin) -- 2.7.4