[Libreoffice-commits] buildbot.git: 9 commits - tb3/build-scripts tb3/dist-packages tb3/replay-branch tb3/tb3 tb3/tb3-local-client

Bjoern Michaelsen bjoern.michaelsen at canonical.com
Wed Jul 24 15:04:16 PDT 2013


 tb3/build-scripts/dev-bibisect-build |    6 +++---
 tb3/dist-packages/tb3/scheduler.py   |   14 ++++++++------
 tb3/replay-branch                    |    3 +--
 tb3/tb3                              |    5 ++++-
 tb3/tb3-local-client                 |   19 ++++++++++++-------
 5 files changed, 28 insertions(+), 19 deletions(-)

New commits:
commit 9b585153fef2fb9266ba325929f82a2f7c9ce4c3
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Thu Jul 25 00:03:38 2013 +0200

    just force set the branch, no checkout needed

diff --git a/tb3/replay-branch b/tb3/replay-branch
index f891e11..79fdfcc 100755
--- a/tb3/replay-branch
+++ b/tb3/replay-branch
@@ -34,8 +34,7 @@ class Syncer:
             except IndexError:
                 commit = commits[0]
                 more_commits = False
-            self.git.checkout(self.to_branch)
-            self.git.pull(commit)
+            self.git.branch('-f', self.to_branch, commit)
         return more_commits
     def execute(self):
         if self.count > 0:
commit f9df322bdd0b1762bb67325f5ff923facfc9007f
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Jul 24 23:56:49 2013 +0200

    pragmatic solution to clean the binary

diff --git a/tb3/build-scripts/dev-bibisect-build b/tb3/build-scripts/dev-bibisect-build
index 1fc00fb..5722215 100755
--- a/tb3/build-scripts/dev-bibisect-build
+++ b/tb3/build-scripts/dev-bibisect-build
@@ -27,7 +27,7 @@ export BINREPO_BRANCH=builder-$BUILDER
 export BINREPO_TAG=source-hash-$COMMIT
 (cd $BINREPO && git branch $BINREPO_BRANCH initial) || true
 git clone $BINREPO $BUILDER_HOME/artifactdir --branch $BINREPO_BRANCH
-(cd $BUILDER_HOME/artifactdir && git rm -r `git ls-tree --name-only HEAD`)
+(cd $BUILDER_HOME/artifactdir && git rm -r * || true)
 git --git-dir=$REPO log -1 --pretty=format:"source-hash-%H%n%n" $COMMIT > $BUILDER_HOME/commitmsg
 git --git-dir=$REPO log -1 --pretty=fuller $COMMIT >> $BUILDER_HOME/commitmsg
 ccache -M$CCACHE_SIZE
commit db696ff988f0cdc480ae29c6b9e91003d916a0a3
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Jul 24 23:18:28 2013 +0200

    sync master before getting proposals

diff --git a/tb3/tb3-local-client b/tb3/tb3-local-client
index 0b1b23b..16a7b1f 100755
--- a/tb3/tb3-local-client
+++ b/tb3/tb3-local-client
@@ -30,6 +30,7 @@ class LocalClient:
         self.workdir = tempfile.mkdtemp()
     def get_proposal(self):
         data = ''
+        self.tb3(sync=True)
         for line in self.tb3(show_proposals=True):
             data+=line
         proposals = json.loads(data)
commit f537329bba2c3f7a879264e5c3cc9536f35c8449
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Jul 24 23:17:53 2013 +0200

    we are not storing a bibisect, its unsorted

diff --git a/tb3/build-scripts/dev-bibisect-build b/tb3/build-scripts/dev-bibisect-build
index e7d6c29..1fc00fb 100755
--- a/tb3/build-scripts/dev-bibisect-build
+++ b/tb3/build-scripts/dev-bibisect-build
@@ -58,7 +58,7 @@ ccache -s
 echo
 echo
 
-echo "==== Storing bibisect ===="
+echo "==== Storing binary ===="
 `grep DEVINSTALLDIR $BUILDER_HOME/builddir/config_host.mk`
 echo archiving installation at $DEVINSTALLDIR ...
 git --git-dir=$BUILDER_HOME/artifactdir/.git --work-tree=$DEVINSTALLDIR add -A
commit 1fcbb9cf3433d06832325f1a8c5ada5b4d0d25d0
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Jul 24 22:48:16 2013 +0200

    build-scripts/
    
    we are not storing a bibisect, its unsorted

diff --git a/tb3/build-scripts/dev-bibisect-build b/tb3/build-scripts/dev-bibisect-build
index 8e7326f..e7d6c29 100755
--- a/tb3/build-scripts/dev-bibisect-build
+++ b/tb3/build-scripts/dev-bibisect-build
@@ -64,7 +64,7 @@ echo archiving installation at $DEVINSTALLDIR ...
 git --git-dir=$BUILDER_HOME/artifactdir/.git --work-tree=$DEVINSTALLDIR add -A
 git --git-dir=$BUILDER_HOME/artifactdir/.git --work-tree=$DEVINSTALLDIR commit -F $BUILDER_HOME/commitmsg
 git --git-dir=$BUILDER_HOME/artifactdir/.git tag $BINREPO_TAG || true
-git --git-dir=$BUILDER_HOME/artifactdir/.git push origin $BINREPO_TAG:$BINREPO_TAG $BINREPO_BRANCH:$BINREPO_BRANCH
+git --git-dir=$BUILDER_HOME/artifactdir/.git push origin $BINREPO_TAG:$BINREPO_TAG $BINREPO_BRANCH:$BINREPO_BRANCH || true
 echo done.
 echo
 echo
commit a4c57aefd1ed8cfe4e46d6ffe808d49150bd8a00
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Jul 24 22:46:21 2013 +0200

    introduce a minimum score limit before building, subst interval to poll-time

diff --git a/tb3/tb3-local-client b/tb3/tb3-local-client
index 9babafe..0b1b23b 100755
--- a/tb3/tb3-local-client
+++ b/tb3/tb3-local-client
@@ -61,12 +61,15 @@ class LocalClient:
     def report_result(self, proposal, result):
         self.tb3(set_commit_finished=proposal['commit'], result=result[0], result_reference=result[1])
     def __one_run(self):
-        time.sleep(self.args['interval'])
-        proposal = self.get_proposal()
-        if proposal:
-            self.report_start(proposal)
-            result = self.run_build(proposal)
-            self.report_result(proposal, result)
+        proposal = None
+        while not proposal:
+            proposal = self.get_proposal()
+            print proposal
+            if not proposal or float(proposal['score']) < self.args['min_score']:
+                time.sleep(self.args['poll_idle_time'])
+        self.report_start(proposal)
+        result = self.run_build(proposal)
+        self.report_result(proposal, result)
     def execute(self):
         if self.args['count']:
             for x in range(self.args['count']):
@@ -85,8 +88,9 @@ if __name__ == '__main__':
     parser.add_argument('--script', help='path to the build script', required=True)
     parser.add_argument('--logdir', help='path to the to store the logs', default=None)
     parser.add_argument('--estimated-duration', help='the estimated time to complete in minutes (default: 120)', type=float, default=120.0)
-    parser.add_argument('--interval', help='the time to sleep between builds/polls in seconds (default: 1)', type=float, default=1.0)
     parser.add_argument('--count', help='the number of builds to try, 0 for unlimited builds  (default: unlimited)', type=int, default=0)
+    parser.add_argument('--poll-idle-time', help='the number seconds to wait before a retry when not getting a good proposal (default: 60)', type=float, default=60.0)
+    parser.add_argument('--min-score', help='the minimum score of a proposal to be tried (default: 0)', type=float, default=1.0)
     args = vars(parser.parse_args())
     LocalClient(args).execute()
     
commit 06f097bd4c2fb1ce85159bb156d4f87756f27cac
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Wed Jul 24 22:12:40 2013 +0200

    builder arg is only needed for set-commit-finished and set-commit-running

diff --git a/tb3/tb3 b/tb3/tb3
index b05521b..52df868 100755
--- a/tb3/tb3
+++ b/tb3/tb3
@@ -107,7 +107,7 @@ if __name__ == '__main__':
     parser.add_argument('--repo', help='location of the LibreOffice core git repository', required=True)
     parser.add_argument('--platform', help='platform for which coordination is requested', required=True)
     parser.add_argument('--branch', help='branch for which coordination is requested', required=True)
-    parser.add_argument('--builder', help='name of the build machine interacting with the coordinator', required=True)
+    parser.add_argument('--builder', help='name of the build machine interacting with the coordinator (required for --set-commit-finished and --set-commit-running)')
     if fullcommand:
         parser.add_argument('--sync', help='syncs the repository from its origin', action='store_true')
         parser.add_argument('--set-commit-finished', help='set the result for this commit')
@@ -128,6 +128,9 @@ if __name__ == '__main__':
     if fullcommand or commandname == 'tb3-show-proposals' or commandname == 'tb3-show-history':
         parser.add_argument('--format', help='set format for proposals and history (default: text)', choices=['text', 'json'], default='text')
     args = vars(parser.parse_args())
+    if not args.has_key('builder') and (args.has_key('set_commit_running') or args.has_key('set_commit_finished')):
+        parser.print_help()
+        sys.exit(1)
     if not fullcommand:
         args['sync'] = commandname == 'tb3-sync'
         args['show_proposals'] = commandname == 'tb3-show-proposals'
commit 3ba8d1ed6aa79680e2425674940b6d40334418a6
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Tue Jul 23 19:29:38 2013 +0200

    actually better to wrap the proposal generation

diff --git a/tb3/dist-packages/tb3/scheduler.py b/tb3/dist-packages/tb3/scheduler.py
index c6847a8..474eecd 100644
--- a/tb3/dist-packages/tb3/scheduler.py
+++ b/tb3/dist-packages/tb3/scheduler.py
@@ -29,6 +29,8 @@ class Scheduler:
         self.repostate = tb3.repostate.RepoState(self.platform, self.branch, self.repo)
         self.repohistory = tb3.repostate.RepoHistory(self.platform, self.repo)
         self.git = sh.git.bake(_cwd=repo)
+    def make_proposal(self, score, commit):
+        return Proposal(score, commit, self.__class__.__name__, self.platform, self.branch)
     def count_commits(self, start, to):
         return int(self.git('rev-list', '%s..%s' % (start, to), count=True))
     def get_commits(self, begin, end):
@@ -63,10 +65,10 @@ class HeadScheduler(Scheduler):
         if not last_build is None:
             commits = self.get_commits(last_build, head)
             for commit in commits:
-                proposals.append(Proposal(1-1/((len(commits)-float(commit[0]))**2+1), commit[1], self.__class__.__name__, self.platform, self.branch))
+                proposals.append(self.make_proposal(1-1/((len(commits)-float(commit[0]))**2+1), commit[1]))
             self.dampen_running_commits(commits, proposals, time)
         else:
-            proposals.append(Proposal(float(1), head, self.__class__.__name__, self.platform, self.branch))
+            proposals.append(self.make_proposal(float(1), head))
         self.norm_results(proposals)
         return proposals
 
@@ -81,7 +83,7 @@ class BisectScheduler(Scheduler):
         commits = self.get_commits(last_good, '%s^' % first_bad)
         proposals = []
         for commit in commits:
-            proposals.append(Proposal(1.0, commit[1], self.__class__.__name__, self.platform, self.branch))
+            proposals.append(self.make_proposal(1.0, commit[1]))
         for idx in range(len(proposals)):
             proposals[idx].score *= (1-1/(float(idx)**2+1)) * (1-1/((float(idx-len(proposals)))**2+1))
         self.dampen_running_commits(commits, proposals, time)
commit 7a63055c8f9882b80e4770d6a061c5b2208c3789
Author: Bjoern Michaelsen <bjoern.michaelsen at canonical.com>
Date:   Tue Jul 23 19:19:51 2013 +0200

    add platform and branch to each proposal in master

diff --git a/tb3/dist-packages/tb3/scheduler.py b/tb3/dist-packages/tb3/scheduler.py
index e3accab..c6847a8 100644
--- a/tb3/dist-packages/tb3/scheduler.py
+++ b/tb3/dist-packages/tb3/scheduler.py
@@ -14,10 +14,10 @@ import functools
 import datetime
 
 class Proposal:
-    def __init__(self, score, commit, scheduler):
-        (self.score, self.commit, self.scheduler) = (score, commit, scheduler)
+    def __init__(self, score, commit, scheduler, platform, branch):
+        (self.score, self.commit, self.scheduler, self.platform, self.branch) = (score, commit, scheduler, platform, branch)
     def __repr__(self):
-        return 'Proposal(%f, %s, %s)' % (self.score, self.commit, self.scheduler)
+        return 'Proposal(%f, %s, %s, %s, %s)' % (self.score, self.commit, self.scheduler, self.platform, self.branch)
     def __cmp__(self, other):
         return other.score - self.score
 
@@ -63,10 +63,10 @@ class HeadScheduler(Scheduler):
         if not last_build is None:
             commits = self.get_commits(last_build, head)
             for commit in commits:
-                proposals.append(Proposal(1-1/((len(commits)-float(commit[0]))**2+1), commit[1], self.__class__.__name__))
+                proposals.append(Proposal(1-1/((len(commits)-float(commit[0]))**2+1), commit[1], self.__class__.__name__, self.platform, self.branch))
             self.dampen_running_commits(commits, proposals, time)
         else:
-            proposals.append(Proposal(float(1), head, self.__class__.__name__))
+            proposals.append(Proposal(float(1), head, self.__class__.__name__, self.platform, self.branch))
         self.norm_results(proposals)
         return proposals
 
@@ -81,7 +81,7 @@ class BisectScheduler(Scheduler):
         commits = self.get_commits(last_good, '%s^' % first_bad)
         proposals = []
         for commit in commits:
-            proposals.append(Proposal(1.0, commit[1], self.__class__.__name__))
+            proposals.append(Proposal(1.0, commit[1], self.__class__.__name__, self.platform, self.branch))
         for idx in range(len(proposals)):
             proposals[idx].score *= (1-1/(float(idx)**2+1)) * (1-1/((float(idx-len(proposals)))**2+1))
         self.dampen_running_commits(commits, proposals, time)


More information about the Libreoffice-commits mailing list