diff options
Diffstat (limited to 'scripts/buildbot.py')
-rwxr-xr-x | scripts/buildbot.py | 122 |
1 files changed, 83 insertions, 39 deletions
diff --git a/scripts/buildbot.py b/scripts/buildbot.py index 0c04d9c4be82..29c383c306fd 100755 --- a/scripts/buildbot.py +++ b/scripts/buildbot.py @@ -7,7 +7,9 @@ import shutil import subprocess import sys + class BuildError(Exception): + def __init__(self, string=None, path=None, @@ -15,23 +17,28 @@ class BuildError(Exception): self.m_string = string self.m_path = path self.m_inferior_error = inferior_error + def __str__(self): if self.m_path and self.m_string: - return "Build error: %s (referring to %s)" % (self.m_string, self.m_path) + return "Build error: %s (referring to %s)" % ( + self.m_string, self.m_path) if self.m_path: return "Build error (referring to %s)" % (self.m_path) if self.m_string: return "Build error: %s" % (self.m_string) return "Build error" + class LLDBBuildBot: - def __init__(self, - build_directory_path, - log_path, - lldb_repository_url="http://llvm.org/svn/llvm-project/lldb/trunk", - llvm_repository_url="http://llvm.org/svn/llvm-project/llvm/trunk", - clang_repository_url="http://llvm.org/svn/llvm-project/cfe/trunk", - revision=None): + + def __init__( + self, + build_directory_path, + log_path, + lldb_repository_url="http://llvm.org/svn/llvm-project/lldb/trunk", + llvm_repository_url="http://llvm.org/svn/llvm-project/llvm/trunk", + clang_repository_url="http://llvm.org/svn/llvm-project/cfe/trunk", + revision=None): self.m_build_directory_path = os.path.abspath(build_directory_path) self.m_log_path = os.path.abspath(log_path) self.m_lldb_repository_url = lldb_repository_url @@ -39,34 +46,44 @@ class LLDBBuildBot: self.m_clang_repository_url = clang_repository_url self.m_revision = revision self.m_log_stream = None + def Setup(self): if os.path.exists(self.m_build_directory_path): - raise BuildError(string="Build directory exists", path=self.m_build_directory_path) + raise BuildError( + string="Build directory exists", + path=self.m_build_directory_path) if os.path.exists(self.m_log_path): raise BuildError(string="Log file exists", path=self.m_log_path) self.m_log_stream = open(self.m_log_path, 'w') os.mkdir(self.m_build_directory_path) + def Checkout(self): os.chdir(self.m_build_directory_path) - + cmdline_prefix = [] - - if self.m_revision != None: + + if self.m_revision is not None: cmdline_prefix = ["svn", "-r %s" % (self.m_revision), "co"] else: cmdline_prefix = ["svn", "co"] - returncode = subprocess.call(cmdline_prefix + [self.m_lldb_repository_url, "lldb"], - stdout=self.m_log_stream, - stderr=self.m_log_stream) + returncode = subprocess.call( + cmdline_prefix + [ + self.m_lldb_repository_url, + "lldb"], + stdout=self.m_log_stream, + stderr=self.m_log_stream) if returncode != 0: raise BuildError(string="Couldn't checkout LLDB") os.chdir("lldb") - returncode = subprocess.call(cmdline_prefix + [self.m_llvm_repository_url, "llvm.checkout"], - stdout=self.m_log_stream, - stderr=self.m_log_stream) + returncode = subprocess.call( + cmdline_prefix + [ + self.m_llvm_repository_url, + "llvm.checkout"], + stdout=self.m_log_stream, + stderr=self.m_log_stream) if returncode != 0: raise BuildError(string="Couldn't checkout LLVM") @@ -75,25 +92,32 @@ class LLDBBuildBot: os.chdir("llvm/tools") - returncode = subprocess.call(cmdline_prefix + [self.m_clang_repository_url, "clang"], - stdout=self.m_log_stream, - stderr=self.m_log_stream) + returncode = subprocess.call( + cmdline_prefix + [ + self.m_clang_repository_url, + "clang"], + stdout=self.m_log_stream, + stderr=self.m_log_stream) if returncode != 0: raise BuildError(string="Couldn't checkout Clang") + def Build(self): os.chdir(self.m_build_directory_path) os.chdir("lldb/llvm") - returncode = subprocess.call(["./configure", "--disable-optimized", "--enable-assertions", "--enable-targets=x86,x86_64,arm"], - stdout=self.m_log_stream, + returncode = subprocess.call(["./configure", + "--disable-optimized", + "--enable-assertions", + "--enable-targets=x86,x86_64,arm"], + stdout=self.m_log_stream, stderr=self.m_log_stream) if returncode != 0: raise BuildError(string="Couldn't configure LLVM/Clang") - returncode = subprocess.call(["make"], - stdout=self.m_log_stream, + returncode = subprocess.call(["make"], + stdout=self.m_log_stream, stderr=self.m_log_stream) if returncode != 0: @@ -102,41 +126,61 @@ class LLDBBuildBot: os.chdir(self.m_build_directory_path) os.chdir("lldb") - returncode = subprocess.call(["xcodebuild", - "-project", "lldb.xcodeproj", - "-target", "lldb-tool", - "-configuration", "Debug", + returncode = subprocess.call(["xcodebuild", + "-project", "lldb.xcodeproj", + "-target", "lldb-tool", + "-configuration", "Debug", "-arch", "x86_64", "LLVM_CONFIGURATION=Debug+Asserts", "OBJROOT=build"], - stdout=self.m_log_stream, - stderr=self.m_log_stream) + stdout=self.m_log_stream, + stderr=self.m_log_stream) if returncode != 0: raise BuildError(string="Couldn't build LLDB") + def Test(self): os.chdir(self.m_build_directory_path) os.chdir("lldb/test") - - returncode = subprocess.call(["./dotest.py", "-t"], - stdout=self.m_log_stream, + + returncode = subprocess.call(["./dotest.py", "-t"], + stdout=self.m_log_stream, stderr=self.m_log_stream) + def Takedown(self): os.chdir("/tmp") self.m_log_stream.close() shutil.rmtree(self.m_build_directory_path) + def Run(self): self.Setup() self.Checkout() self.Build() - #self.Test() + # self.Test() self.Takedown() + def GetArgParser(): - parser = argparse.ArgumentParser(description="Try to build LLDB/LLVM/Clang and run the full test suite.") - parser.add_argument("--build-path", "-b", required=True, help="A (nonexistent) path to put temporary build products into", metavar="path") - parser.add_argument("--log-file", "-l", required=True, help="The name of a (nonexistent) log file", metavar="file") - parser.add_argument("--revision", "-r", required=False, help="The LLVM revision to use", metavar="N") + parser = argparse.ArgumentParser( + description="Try to build LLDB/LLVM/Clang and run the full test suite.") + parser.add_argument( + "--build-path", + "-b", + required=True, + help="A (nonexistent) path to put temporary build products into", + metavar="path") + parser.add_argument( + "--log-file", + "-l", + required=True, + help="The name of a (nonexistent) log file", + metavar="file") + parser.add_argument( + "--revision", + "-r", + required=False, + help="The LLVM revision to use", + metavar="N") return parser parser = GetArgParser() |