[zorg] r216063 - Add Sphinx documentation Factory and builders to zorg.

Dan Liew dan at su-root.co.uk
Wed Aug 20 02:25:47 PDT 2014


Author: delcypher
Date: Wed Aug 20 04:25:47 2014
New Revision: 216063

URL: http://llvm.org/viewvc/llvm-project?rev=216063&view=rev
Log:
Add Sphinx documentation Factory and builders to zorg.

The *-sphinx-docs builders are being treated as experimental right now
so only myself and Sean Silva are notified. This is to avoid spamming
developers with documentation build failure notifications which might
discorage developers from writing documentation.

Added:
    zorg/trunk/zorg/buildbot/builders/SphinxDocsBuilder.py
Modified:
    zorg/trunk/buildbot/osuosl/master/config/builders.py
    zorg/trunk/buildbot/osuosl/master/config/status.py

Modified: zorg/trunk/buildbot/osuosl/master/config/builders.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/buildbot/osuosl/master/config/builders.py?rev=216063&r1=216062&r2=216063&view=diff
==============================================================================
--- zorg/trunk/buildbot/osuosl/master/config/builders.py (original)
+++ zorg/trunk/buildbot/osuosl/master/config/builders.py Wed Aug 20 04:25:47 2014
@@ -46,6 +46,10 @@ from zorg.buildbot.builders import Libcx
 reload(LibcxxAndAbiBuilder)
 from zorg.buildbot.builders import LibcxxAndAbiBuilder
 
+from zorg.buildbot.builders import SphinxDocsBuilder
+reload(SphinxDocsBuilder)
+from zorg.buildbot.builders import SphinxDocsBuilder
+
 # Plain LLVM builders.
 def _get_llvm_builders():
     return [
@@ -683,6 +687,32 @@ def _get_experimental_builders():
          'category' : 'clang'},
         ]
 
+# Builders responsible building Sphinix documentation
+def _get_documentation_builders():
+    return [
+             {
+               'name':"llvm-sphinx-docs",
+               'slavenames':["gribozavr4"],
+               'builddir':"llvm-sphinx-docs",
+               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(llvm_html=True, llvm_man=True),
+               'category' : 'llvm'
+             },
+             {
+               'name':"clang-sphinx-docs",
+               'slavenames':["gribozavr4"],
+               'builddir':"clang-sphinx-docs",
+               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(clang_html=True),
+               'category' : 'clang'
+             },
+             {
+               'name':"lld-sphinx-docs",
+               'slavenames':["gribozavr4"],
+               'builddir':"lld-sphinx-docs",
+               'factory': SphinxDocsBuilder.getSphinxDocsBuildFactory(lld_html=True),
+               'category' : 'lld'
+             },
+           ]
+
 def get_builders():
     for b in _get_llvm_builders():
         b['category'] = 'llvm'
@@ -723,6 +753,9 @@ def get_builders():
     for b in _get_experimental_builders():
         yield b
 
+    for b in _get_documentation_builders():
+        yield b
+
 # Random other unused builders...
 {'name': "clang-x86_64-openbsd",
  'slavenames':["ocean1"],

Modified: zorg/trunk/buildbot/osuosl/master/config/status.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/buildbot/osuosl/master/config/status.py?rev=216063&r1=216062&r2=216063&view=diff
==============================================================================
--- zorg/trunk/buildbot/osuosl/master/config/status.py (original)
+++ zorg/trunk/buildbot/osuosl/master/config/status.py Wed Aug 20 04:25:47 2014
@@ -37,6 +37,10 @@ def get_status_targets(standard_builders
     # will keep track of such.
     standard_builders = [b for b in standard_builders if not b.startswith('perf-x86_64')]
 
+    # The sphinx buildbots are currently experimental so we don't
+    # want to notify everyone about build failures
+    standard_builders = [b for b in standard_builders if not b.endswith('-sphinx-docs')]
+
     return [
         buildbot.status.html.WebStatus(
             http_port = 8011, authz=authz_cfg),
@@ -113,4 +117,16 @@ def get_status_targets(standard_builders
             builders = ["llvm-s390x-linux1"],
             addLogs=False,
             num_lines = 15),
+        InformativeMailNotifier(
+            fromaddr = "llvm.buildmaster at lab.llvm.org",
+            sendToInterestedUsers= False,
+            extraRecipients = ["dan at su-root.co.uk", "chisophugis at gmail.com"],
+            subject="Build %(builder)s Failure",
+            mode = "failing",
+            builders = ["llvm-sphinx-docs",
+                        "clang-sphinx-docs",
+                        "lld-sphinx-docs"
+                       ],
+            addLogs=False,
+            num_lines = 15),
         ]

Added: zorg/trunk/zorg/buildbot/builders/SphinxDocsBuilder.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/SphinxDocsBuilder.py?rev=216063&view=auto
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/SphinxDocsBuilder.py (added)
+++ zorg/trunk/zorg/buildbot/builders/SphinxDocsBuilder.py Wed Aug 20 04:25:47 2014
@@ -0,0 +1,95 @@
+import os
+import buildbot.process.factory
+from buildbot.steps.source import SVN
+from buildbot.steps.shell import ShellCommand
+from buildbot.process.properties import WithProperties
+from zorg.buildbot.commands.NinjaCommand import NinjaCommand
+
+def getSphinxDocsBuildFactory(
+        llvm_html  = False, # Build LLVM HTML documentation
+        llvm_man   = False, # Build LLVM man pages
+        clang_html = False, # Build Clang HTML documentation
+        lld_html   = False  # Build LLD HTML documentation
+        ):
+
+    f = buildbot.process.factory.BuildFactory()
+
+    llvm_srcdir = 'llvm/src'
+    llvm_objdir = 'llvm/build'
+    clang_srcdir = llvm_srcdir + '/tools/clang'
+    lld_srcdir = llvm_srcdir + '/tools/lld'
+
+    # Get LLVM. This is essential for all builds
+    # because we build all subprojects in tree
+    f.addStep(SVN(name='svn-llvm',
+                  mode='update',
+                  baseURL='http://llvm.org/svn/llvm-project/llvm/',
+                  defaultBranch='trunk',
+                  workdir=llvm_srcdir))
+
+    if clang_html:
+        f.addStep(SVN(name='svn-clang',
+                      mode='update',
+                      baseURL='http://llvm.org/svn/llvm-project/cfe/',
+                      defaultBranch='trunk',
+                      workdir=clang_srcdir))
+
+    if lld_html:
+        f.addStep(SVN(name='svn-lld',
+                      mode='update',
+                      baseURL='http://llvm.org/svn/llvm-project/lld/',
+                      defaultBranch='trunk',
+                      workdir=lld_srcdir))
+
+    f.addStep(ShellCommand(name="create-build-dir",
+                               command=["mkdir", "-p", llvm_objdir],
+                               haltOnFailure=False, # We might of already created the directory in a previous build
+                               description=["create build dir"],
+                               workdir="."))
+
+    # Use CMake to configure
+    cmakeCommand = [ "cmake",
+                     WithProperties('%s/' + llvm_srcdir, 'workdir'),
+                     '-G', 'Ninja',
+                     '-DLLVM_ENABLE_SPHINX:BOOL=ON',
+                     '-DSPHINX_OUTPUT_HTML:BOOL=ON',
+                     '-DSPHINX_OUTPUT_MAN:BOOL=ON'
+                   ]
+    f.addStep(ShellCommand(name="cmake-configure",
+                               command=cmakeCommand,
+                               description=["cmake configure"],
+                               workdir=llvm_objdir))
+
+    if llvm_html:
+        f.addStep(NinjaCommand(name="docs-llvm-html",
+                               haltOnFailure=True,
+                               description=["Build LLVM Sphinx HTML documentation"],
+                               workdir=llvm_objdir,
+                               targets=['docs-llvm-html']
+                              ))
+
+    if llvm_man:
+        f.addStep(NinjaCommand(name="docs-llvm-man",
+                               haltOnFailure=True,
+                               description=["Build LLVM Sphinx man pages"],
+                               workdir=llvm_objdir,
+                               targets=['docs-llvm-man']
+                              ))
+
+    if clang_html:
+        f.addStep(NinjaCommand(name="docs-clang-html",
+                               haltOnFailure=True,
+                               description=["Build Clang Sphinx HTML documentation"],
+                               workdir=llvm_objdir,
+                               targets=['docs-clang-html']
+                              ))
+
+    if lld_html:
+        f.addStep(NinjaCommand(name="docs-lld-html",
+                               haltOnFailure=True,
+                               description=["Build LLD Sphinx HTML documentation"],
+                               workdir=llvm_objdir,
+                               targets=['docs-lld-html']
+                              ))
+
+    return f





More information about the llvm-commits mailing list