Index: zorg/buildbot/builders/LLDBBuilder.py =================================================================== --- zorg/buildbot/builders/LLDBBuilder.py +++ zorg/buildbot/builders/LLDBBuilder.py @@ -248,6 +248,113 @@ return f +#Cmake bulids on Ubuntu +#Build command sequnce - cmake, ninja, ninja check-lldb +def getLLDBUbuntuCMakeBuildFactory( + triple, + outOfDir=True, + jobs='%(jobs)s', + extra_configure_args=[], + env={}, + *args, + **kwargs): + + if outOfDir: + llvm_srcdir = "llvm" + llvm_builddir = "build" + else: + llvm_srcdir = "llvm" + llvm_objdir = "llvm" + + f = buildbot.process.factory.BuildFactory() + + # Determine the build directory. + f.addStep(SetProperty(name="get_builddir", + command=["pwd"], + property="builddir", + description="set build dir", + workdir=".")) + + # Find out what version of llvm and clang are needed to build this version + # of lldb. Right now we will assume they use the same version. + # XXX - could this be done directly on the master instead of the slave? + f.addStep(SetProperty(command='svn cat http://llvm.org/svn/llvm-project/lldb/trunk/scripts/build-llvm.pl | grep ^our.*llvm_revision | cut -d \\" -f 2', + property='llvmrev')) + + # The SVN build step provides no mechanism to check out a specific revision + # based on a property, so just run the commands directly here. + + svn_co = ['svn', 'checkout', '--force'] + svn_co += ['--revision', WithProperties('%(llvmrev)s')] + + # build llvm svn checkout command + svn_co_llvm = svn_co + \ + [WithProperties('http://llvm.org/svn/llvm-project/llvm/trunk@%(llvmrev)s'), + llvm_srcdir] + # build clang svn checkout command + svn_co_clang = svn_co + \ + [WithProperties('http://llvm.org/svn/llvm-project/cfe/trunk@%(llvmrev)s'), + '%s/tools/clang' % llvm_srcdir] + + f.addStep(ShellCommand(name='svn-llvm', + command=svn_co_llvm, + haltOnFailure=True, + workdir='.')) + f.addStep(ShellCommand(name='svn-clang', + command=svn_co_clang, + haltOnFailure=True, + workdir='.')) + + f.addStep(SVN(name='svn-lldb', + mode='update', + baseURL='http://llvm.org/svn/llvm-project/lldb/', + defaultBranch='trunk', + always_purge=True, + workdir='%s/tools/lldb' % llvm_srcdir)) + + # Run configure + config_args = ["cmake", + "-GNinja", + "-DCMAKE_C_COMPILER=clang", + "-DCMAKE_CXX_COMPILER=clang++", + "-DCMAKE_BUILD_TYPE=Debug", + WithProperties("../%s" %llvm_srcdir), + ] + if triple: + config_args += ['--build=%s' % triple] + config_args += extra_configure_args + + # Clean Build Folder + f.addStep(ShellCommand(name="clean", + command="rm -rf *", + description="clear build folder", + env=env, + workdir='%s' % llvm_builddir)) + + # Configure + f.addStep(Configure(name='configure/cmake', + command=config_args, + env=env, + workdir=llvm_builddir)) + # Compile + f.addStep(WarningCountingShellCommand(name="compile/ninja", + command=['nice', '-n', '10', + 'ninja', WithProperties("-j%s" % jobs)], + env=env, + haltOnFailure=True, + workdir=llvm_builddir)) + + # Test. + f.addStep(LitTestCommand(name="test lldb", + command=['nice', '-n', '10', + 'ninja', + 'check-lldb'], + description="test lldb", + env=env, + workdir='%s' % llvm_builddir)) + + return f + def getLLDBxcodebuildFactory(use_cc=None): f = buildbot.process.factory.BuildFactory() f.addStep(SetProperty(name='get_builddir',