[llvm-commits] [zorg] r89838 - in /zorg/trunk/zorg/buildbot/builders: ClangBuilder.py LLVMGCCBuilder.py Util.py
Daniel Dunbar
daniel at zuster.org
Tue Nov 24 20:27:32 PST 2009
Author: ddunbar
Date: Tue Nov 24 22:27:32 2009
New Revision: 89838
URL: http://llvm.org/viewvc/llvm-project?rev=89838&view=rev
Log:
Add support for two stage clang builds.
Added:
zorg/trunk/zorg/buildbot/builders/Util.py
Modified:
zorg/trunk/zorg/buildbot/builders/ClangBuilder.py
zorg/trunk/zorg/buildbot/builders/LLVMGCCBuilder.py
Modified: zorg/trunk/zorg/buildbot/builders/ClangBuilder.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/ClangBuilder.py?rev=89838&r1=89837&r2=89838&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/ClangBuilder.py (original)
+++ zorg/trunk/zorg/buildbot/builders/ClangBuilder.py Tue Nov 24 22:27:32 2009
@@ -11,9 +11,25 @@
from zorg.buildbot.commands.ClangTestCommand import ClangTestCommand
from zorg.buildbot.commands.BatchFileDownload import BatchFileDownload
-def getClangBuildFactory(triple=None, clean=True, test=True,
- expensive_checks=False, run_cxx_tests=False, valgrind=False,
- make='make', jobs="%(jobs)s"):
+from Util import getConfigArgs
+
+def getClangBuildFactory(triple=None, clean=True, test=True, run_cxx_tests=False,
+ valgrind=False, useTwoStage=False,
+ make='make', jobs="%(jobs)s",
+ stage1_config='Debug', stage2_config='Release',
+ extra_configure_args=[]):
+ # Don't use in-dir builds with a two stage build process.
+ inDir = not useTwoStage
+ if inDir:
+ llvm_srcdir = "llvm"
+ llvm_1_objdir = "llvm"
+ llvm_1_installdir = None
+ else:
+ llvm_srcdir = "llvm.src"
+ llvm_1_objdir = "llvm.obj"
+ llvm_1_installdir = "llvm.install.1"
+ llvm_2_objdir = "llvm.obj.2"
+
f = buildbot.process.factory.BuildFactory()
# Determine the build directory.
@@ -27,40 +43,52 @@
f.addStep(SVN(name='svn-llvm',
mode='update', baseURL='http://llvm.org/svn/llvm-project/llvm/',
defaultBranch='trunk',
- workdir='llvm'))
+ workdir=llvm_srcdir))
f.addStep(SVN(name='svn-clang',
mode='update', baseURL='http://llvm.org/svn/llvm-project/cfe/',
defaultBranch='trunk',
- workdir='llvm/tools/clang'))
+ workdir='%s/tools/clang' % llvm_srcdir))
+ # Clean up llvm (stage 1); unless in-dir.
+ if clean and llvm_srcdir != llvm_1_objdir:
+ f.addStep(ShellCommand(name="rm-llvm.obj.stage1",
+ command=["rm", "-rf", llvm_1_objdir],
+ haltOnFailure=True,
+ description=["rm build dir", "llvm"],
+ workdir="."))
+
# Force without llvm-gcc so we don't run afoul of Frontend test failures.
- configure_args = ["./configure", "--without-llvmgcc", "--without-llvmgxx"]
- config_name = 'Debug'
- if expensive_checks:
- configure_args.append('--enable-expensive-checks')
- config_name += '+Checks'
+ base_configure_args = [WithProperties("%%(builddir)s/%s/configure" % llvm_srcdir),
+ WithProperties("--prefix=%%(builddir)s/%s" % llvm_1_installdir),
+ '--disable-bindings']
+ base_configure_args += extra_configure_args
if triple:
- configure_args += ['--build=%s' % triple,
- '--host=%s' % triple,
- '--target=%s' % triple]
- f.addStep(Configure(command=configure_args,
- workdir='llvm',
- description=['configuring',config_name],
- descriptionDone=['configure',config_name]))
- if clean:
+ base_configure_args += ['--build=%s' % triple,
+ '--host=%s' % triple,
+ '--target=%s' % triple]
+ args = base_configure_args + ["--without-llvmgcc", "--without-llvmgxx"]
+ args += getConfigArgs(stage1_config)
+ f.addStep(Configure(command=args,
+ workdir=llvm_1_objdir,
+ description=['configuring',stage1_config],
+ descriptionDone=['configure',stage1_config]))
+
+ # Make clean if using in-dir builds.
+ if clean and llvm_srcdir == llvm_1_objdir:
f.addStep(WarningCountingShellCommand(name="clean-llvm",
command=[make, "clean"],
haltOnFailure=True,
description="cleaning llvm",
descriptionDone="clean llvm",
- workdir='llvm'))
+ workdir=llvm_1_objdir))
+
f.addStep(WarningCountingShellCommand(name="compile",
command=['nice', '-n', '10',
make, WithProperties("-j%s" % jobs)],
haltOnFailure=True,
- description="compiling llvm & clang",
- descriptionDone="compile llvm & clang",
- workdir='llvm'))
+ description=["compiling", stage1_config],
+ descriptionDone=["compile", stage1_config],
+ workdir=llvm_1_objdir))
clangTestArgs = '-v'
if valgrind:
clangTestArgs += ' --vg '
@@ -74,11 +102,67 @@
command=[make, "check-lit", "VERBOSE=1"],
description=["testing", "llvm"],
descriptionDone=["test", "llvm"],
- workdir='llvm'))
+ workdir=llvm_1_objdir))
+ f.addStep(ClangTestCommand(name='test-clang',
+ command=[make, 'test', WithProperties('TESTARGS=%s' % clangTestArgs),
+ WithProperties('EXTRA_TESTDIRS=%s' % extraTestDirs)],
+ workdir='%s/tools/clang' % llvm_1_objdir))
+
+ # Install llvm and clang.
+ if llvm_1_installdir:
+ f.addStep(WarningCountingShellCommand(name="install.llvm.1",
+ command=['nice', '-n', '10',
+ make, WithProperties("-j%s" % jobs),
+ 'install'],
+ haltOnFailure=True,
+ description=["install", "llvm & clang"],
+ workdir=llvm_1_objdir))
+
+ if not useTwoStage:
+ return f
+
+ # Clean up llvm (stage 2).
+ if clean:
+ f.addStep(ShellCommand(name="rm-llvm.obj.stage2",
+ command=["rm", "-rf", llvm_2_objdir],
+ haltOnFailure=True,
+ description=["rm build dir", "llvm", "(stage 2)"],
+ workdir="."))
+
+ # Configure llvm (stage 2).
+ args = base_configure_args + ["--without-llvmgcc", "--without-llvmgxx"]
+ args += getConfigArgs(stage2_config)
+ f.addStep(Configure(name="configure.llvm.stage2",
+ command=args,
+ env={'CC' : WithProperties("%%(builddir)s/%s/bin/clang" % llvm_1_installdir),
+ 'CXX' : WithProperties("%%(builddir)s/%s/bin/clang++" % llvm_1_installdir),},
+ haltOnFailure=True,
+ workdir=llvm_2_objdir,
+ description=["configure", "llvm", "(stage 2)",
+ stage2_config]))
+
+ # Build llvm (stage 2).
+ f.addStep(WarningCountingShellCommand(name="compile.llvm.stage2",
+ command=['nice', '-n', '10',
+ make, WithProperties("-j%s" % jobs)],
+ haltOnFailure=True,
+ description=["compiling", "(stage 2)",
+ stage2_config],
+ descriptionDone=["compile", "(stage 2)",
+ stage2_config],
+ workdir=llvm_2_objdir))
+
+ if test:
+ f.addStep(ClangTestCommand(name='test-llvm',
+ command=[make, "check-lit", "VERBOSE=1"],
+ description=["testing", "llvm"],
+ descriptionDone=["test", "llvm"],
+ workdir=llvm_2_objdir))
f.addStep(ClangTestCommand(name='test-clang',
command=[make, 'test', WithProperties('TESTARGS=%s' % clangTestArgs),
WithProperties('EXTRA_TESTDIRS=%s' % extraTestDirs)],
- workdir='llvm/tools/clang'))
+ workdir='%s/tools/clang' % llvm_2_objdir))
+
return f
def getClangMSVCBuildFactory(update=True, clean=True, vcDrive='c', jobs=1):
Modified: zorg/trunk/zorg/buildbot/builders/LLVMGCCBuilder.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/LLVMGCCBuilder.py?rev=89838&r1=89837&r2=89838&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/LLVMGCCBuilder.py (original)
+++ zorg/trunk/zorg/buildbot/builders/LLVMGCCBuilder.py Tue Nov 24 22:27:32 2009
@@ -6,29 +6,7 @@
from zorg.buildbot.commands.ClangTestCommand import ClangTestCommand
-def getConfigArgs(origname):
- name = origname
- args = []
- if name.startswith('Release'):
- name = name[len('Release'):]
- args.append('--enable-optimized')
- elif name.startswith('Debug'):
- name = name[len('Debug'):]
- else:
- raise ValueError,'Unknown config name: %r' % origname
-
- if name.startswith('-Asserts'):
- name = name[len('-Asserts'):]
- args.append('--disable-assertions')
-
- if name.startswith('+Checks'):
- name = name[len('+Checks'):]
- args.append('--enable-expensive-checks')
-
- if name:
- raise ValueError,'Unknown config name: %r' % origname
-
- return args
+from Util import getConfigArgs
def getLLVMGCCBuildFactory(jobs=1, update=True, clean=True,
gxxincludedir=None,
Added: zorg/trunk/zorg/buildbot/builders/Util.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/Util.py?rev=89838&view=auto
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/Util.py (added)
+++ zorg/trunk/zorg/buildbot/builders/Util.py Tue Nov 24 22:27:32 2009
@@ -0,0 +1,23 @@
+def getConfigArgs(origname):
+ name = origname
+ args = []
+ if name.startswith('Release'):
+ name = name[len('Release'):]
+ args.append('--enable-optimized')
+ elif name.startswith('Debug'):
+ name = name[len('Debug'):]
+ else:
+ raise ValueError,'Unknown config name: %r' % origname
+
+ if name.startswith('-Asserts'):
+ name = name[len('-Asserts'):]
+ args.append('--disable-assertions')
+
+ if name.startswith('+Checks'):
+ name = name[len('+Checks'):]
+ args.append('--enable-expensive-checks')
+
+ if name:
+ raise ValueError,'Unknown config name: %r' % origname
+
+ return args
More information about the llvm-commits
mailing list