aboutsummaryrefslogtreecommitdiff
path: root/scripts/buildbot.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/buildbot.py')
-rwxr-xr-xscripts/buildbot.py122
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()