[Checkins] SVN: gocept.bsquare/branches/adamg-bpf-layout/ try again with bpf -- now taken from a working version

Adam Groszer agroszer at gmail.com
Tue Oct 6 07:51:21 EDT 2009


Log message for revision 104836:
  try again with bpf -- now taken from a working version

Changed:
  U   gocept.bsquare/branches/adamg-bpf-layout/src/gocept/bsquare/master.py
  U   gocept.bsquare/branches/adamg-bpf-layout/update-config.py

-=-
Modified: gocept.bsquare/branches/adamg-bpf-layout/src/gocept/bsquare/master.py
===================================================================
--- gocept.bsquare/branches/adamg-bpf-layout/src/gocept/bsquare/master.py	2009-10-06 08:57:47 UTC (rev 104835)
+++ gocept.bsquare/branches/adamg-bpf-layout/src/gocept/bsquare/master.py	2009-10-06 11:51:21 UTC (rev 104836)
@@ -8,7 +8,7 @@
 from buildbot import locks
 
 from buildbot.changes.svnpoller import SVNPoller, split_file_branches
-from buildbot.steps.source import SVN
+from buildbot.steps import source
 from buildbot.steps.shell import Compile
 from buildbot.process.factory import BuildFactory
 
@@ -20,8 +20,15 @@
 
 is_win32 = sys.platform == 'win32'
 
-def split_file_pbf(path):
-    #PROJECT/BRANCHNAME/FILEPATH repositories
+class SVN(source.SVN):
+    def startVC(self, branch, revision, patch):
+        log.msg('startVC %s %s %s' % (branch, revision, patch))
+        if branch.startswith('trunk/'):
+            branch = 'trunk'
+        return source.SVN.startVC(self, branch, revision, patch)
+
+def split_file(path):
+    log.msg('split_file %s' % (path))
     pieces = path.split("/")
     if len(pieces) < 2:
         return None
@@ -30,40 +37,17 @@
         return None
     return ("%s/%s" % (project, branch), "/".join(pieces[2:]))
 
+def make_factory(svn_url, passOnNoTest=True, subfolder=''):
+    f = BuildFactory()
+    f.addStep(SVN(baseURL=svn_url, mode='clobber'))
+    if subfolder:
+        subfolder = os.path.join('build', subfolder)
+    else:
+        subfolder = 'build'
 
-def split_file_bpf(path):
-    #BRANCHNAME/PROJECT/FILEPATH repositories
-    pieces = path.split("/")
-    if len(pieces) < 2:
-        return None
-    project, branch = pieces[1], pieces[0]
-    if branch != "trunk":
-        return None
-    return ("%s/%s" % (project, branch), "/".join(pieces[2:]))
-
-def split_file_i(path):
-    #intelligent
-    log.msg("split_file_i: %s" % path)
-    pieces = path.split("/")
-    if len(pieces) < 2:
-        return None
-    project, branch = pieces[0], pieces[1]
-    #if project in ('trunk','branches','tags'):
-        #this is a BPF
-        #project, branch = branch, project
-    #if branch != "trunk":
-        #return None
-    rv = ("%s/%s" % (project, branch), "/".join(pieces[2:]))
-    log.msg("split_file_i: %s" % repr(rv))
-    return rv
-
-
-def make_factory(svn_url, passOnNoTest=True):
-    f = BuildFactory()
-    log.msg("make_factory svn_url: %s" % svn_url)
-    f.addStep(SVN(baseURL=svn_url, mode='clobber',defaultBranch=''))
     f.addStep(Compile(name='bootstrap',
-                command='buildout bootstrap .',
+                command='buildout bootstrap',
+                workdir=subfolder,
                 description=['bootstrapping'],
                 descriptionDone=['bootstrap']))
     if is_win32:
@@ -72,6 +56,7 @@
         command = 'bin/buildout'
     f.addStep(Compile(name="buildout",
                 command=command,
+                workdir=subfolder,
                 description=['building'],
                 descriptionDone=['build']))
 
@@ -89,18 +74,19 @@
 
     f.addStep(Compile(name="test",
                 command=command,
+                workdir=subfolder,
                 description=['testing'],
                 descriptionDone=['tests']))
 
     f.treeStableTimer = 300
     return f
 
-def make_factory_strict(svn_url):
+def make_factory_strict(svn_url, subfolder=''):
     """Same as make_factory, but will fail when no bin/test exists
     That's somehow a must be solution, because bin/buildout does NOT
     return an exitstatus on an error
     """
-    return make_factory(svn_url, passOnNoTest=False)
+    return make_factory(svn_url, passOnNoTest=False, subfolder=subfolder)
 
 def configure(svn_url, http_port=8010, allowForce=False,
               svnuser = None, svnpasswd = None,
@@ -138,7 +124,7 @@
     c['slavePortnum'] = 8989
     if poller is None:
         c['change_source'] = SVNPoller(svn_url,
-                                       split_file=split_file_i,
+                                       split_file=split_file,
                                        svnuser=svnuser,
                                        svnpasswd=svnpasswd,
                                        pollinterval=pollinterval,
@@ -150,19 +136,12 @@
 
     slow_lock = locks.SlaveLock("cpu", maxCount=maxConcurrent)
 
+    #'normal' pbf layouted projects
+
     projects = open("project-list.cfg", "rb").readlines()
     projects = [x.strip() for x in projects]
 
     for project in projects:
-        realsvn_url = svn_url
-        if '/' in project:
-            parts = project.split('/')
-            realsvn_url = svn_url+project+'/'
-            project = parts[-1]
-            branch = "trunk/%s" % project
-        else:
-            branch = "%s/trunk" % project
-
         if isinstance(make_factory, dict):
             f = makefactory.get(project,
                                 makefactory.get('__default__', make_factory))
@@ -179,12 +158,41 @@
         del f
 
         c['schedulers'].append(Scheduler(
-            project, branch, pollinterval+10, [project]))
+            project, "%s/trunk" % project, pollinterval+10, [project]))
         if nightlyhour is not None:
             c['schedulers'].append(Nightly(
                 "%s nightly" % project, [project], hour=[nightlyhour],
-                branch=branch))
+                branch="%s/trunk" % project))
 
+    #bpf layouted projects, there are tiny changes compared to above
+
+    projects = open("project-list-bpf.cfg", "rb").readlines()
+    projects = [x.strip() for x in projects]
+
+    for project in projects:
+        if isinstance(make_factory, dict):
+            f = makefactory.get(project,
+                                makefactory.get('__default__', make_factory))
+            f = f(svn_url, subfolder=project)
+        else:
+            f = makefactory(svn_url, subfolder=project)
+
+        c['builders'].append({
+            'name': project,
+            'slavename': 'local',
+            'builddir': project,
+            'factory': f,
+            'locks': [slow_lock],
+        })
+        del f
+
+        c['schedulers'].append(Scheduler(
+            project, "trunk/%s" % project, pollinterval+10, [project]))
+        if nightlyhour is not None:
+            c['schedulers'].append(Nightly(
+                "%s nightly" % project, [project], hour=[nightlyhour],
+                branch="trunk/%s" % project))
+
     # Status display(s)
     c['status'] = []
     c['status'].append(status.ExtendedWebStatus(http_port=http_port,

Modified: gocept.bsquare/branches/adamg-bpf-layout/update-config.py
===================================================================
--- gocept.bsquare/branches/adamg-bpf-layout/update-config.py	2009-10-06 08:57:47 UTC (rev 104835)
+++ gocept.bsquare/branches/adamg-bpf-layout/update-config.py	2009-10-06 11:51:21 UTC (rev 104836)
@@ -87,6 +87,7 @@
 
     projects = svnls(base)
     cleaned = []
+    cleaned_bpf = []
     for project in projects.splitlines():
         if project.endswith('/'):
             project = project[:-1]
@@ -99,7 +100,7 @@
 
                 try:
                     svnls("%strunk/%s/buildout.cfg" % (base, subproject))
-                    cleaned.append("trunk/"+subproject)
+                    cleaned_bpf.append(subproject)
                 except OSError:
                     pass
 
@@ -112,6 +113,8 @@
 
     open(os.path.join(home, 'project-list.cfg'), 'wb').write(
         '\n'.join(cleaned) )
+    open(os.path.join(home, 'project-list-bpf.cfg'), 'wb').write(
+        '\n'.join(cleaned_bpf) )
 
     if sys.platform == 'win32':
         #there is no make usually on win32 and reconfig is also not supported



More information about the checkins mailing list