[Buildbot-devel] Renderable locks in 0.8.8

Vitali Lovich vlovich at gmail.com
Mon Jun 8 10:51:45 UTC 2015


Found the problem.
Pull request updated: https://github.com/buildbot/buildbot/pull/1711

Here’s the patch you need.  Pretty simple:

git show -p 4cb7c03bac475b2597d7df9ed94a3a165314351c
commit 4cb7c03bac475b2597d7df9ed94a3a165314351c
Author: Vitali Lovich <lovich at apple.com>
Date:   Mon Jun 8 03:47:56 2015 -0700

    Make ComparableMixin extend from object
    
    Backport change in 89365c81 (merged in 'Merge branch 'pull1100' into
    nine') that makes it so that allows LockAccess to be renderable.

diff --git a/master/buildbot/util/__init__.py b/master/buildbot/util/__init__.py
index 55ef96e..4c95c0a 100644
--- a/master/buildbot/util/__init__.py
+++ b/master/buildbot/util/__init__.py
@@ -77,7 +77,7 @@ def formatInterval(eta):
     return ", ".join(eta_parts)
 
 
-class ComparableMixin:
+class ComparableMixin(object):
 
     compare_attrs = []

> On Jun 8, 2015, at 2:49 AM, Vitali Lovich <vlovich at gmail.com> wrote:
> 
> Phew.  I see the same error when I backport the change.  So it does look like something is missing from eight that makes this work on nine.
> Let me see if I can figure out a fix.
> 
>> On Jun 8, 2015, at 2:43 AM, Thomas Middeldorp <thomas at ranzer.geek.nz <mailto:thomas at ranzer.geek.nz>> wrote:
>> 
>> I haven't tried the unit tests yet - the exception from my last email is from a regular lock. I haven't made any changes to master.cfg yet, I figured I would see if I can get it to work with normal locks before I tried it with an actual renderable. I still haven't been able to figure out why the normal lock isn't being handled by _DefaultRenderer though. Any thoughts?
>> 
>> - Thomas
>> 
>> On 8 June 2015 at 21:34, Vitali Lovich <vlovich at gmail.com <mailto:vlovich at gmail.com>> wrote:
>> Do the unit tests pass with your changes?  That would be my starting point.  I’ve been meaning to backport this to eight but I haven’t tried.
>> Hopefully I didn’t accidentally break anything.
>> 
>> Is it just renderable locks that aren’t working or are regular locks broken too?
>> 
>> > On Jun 7, 2015, at 11:33 PM, Thomas Middeldorp <thomas at ranzer.geek.nz <mailto:thomas at ranzer.geek.nz>> wrote:
>> >
>> > Hi,
>> >
>> > I'm trying to figure out how to implement renderable locks in 0.8.8, after seeing the feature was recently added to the master git version.
>> >
>> > So far I've tried adding the changes from commits 83bf42c098da83d6e54746ed9c5cef5274749088 and 1444e324f4b032365029f0128a3d0af874b61b46 (as well as changing startStep to use inline callbacks) but all it's got me is the following error when trying to start a build:
>> >
>> > 2015-06-07 23:11:16+1200 [-] <Build asset-tests-linux-incr>.startBuild
>> > 2015-06-07 23:11:17+1200 [-] <Build asset-tests-linux-incr>.buildException
>> > 2015-06-07 23:11:17+1200 [-] Unhandled Error
>> >         Traceback (most recent call last):
>> >           File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 1039, in _inlineCallbacks
>> >             result = g.send(result)
>> >           File "/home/buildmaster/buildbot_devel/local/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/buildstep.py", line 527, in startStep
>> >             self.locks = yield self.build.render(self.locks)
>> >           File "/home/buildmaster/buildbot_devel/local/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/properties.py", line 191, in render
>> >             return props.render(value)
>> >           File "/home/buildmaster/buildbot_devel/local/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/properties.py", line 151, in render
>> >             return defer.maybeDeferred(renderable.getRenderingFor, self)
>> >         --- <exception caught here> ---
>> >           File "/usr/lib/python2.7/dist-packages/twisted/internet/defer.py", line 134, in maybeDeferred
>> >             result = f(*args, **kw)
>> >           File "/home/buildmaster/buildbot_devel/local/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/properties.py", line 651, in getRenderingFor
>> >             return defer.gatherResults([ build.render(e) for e in self.value ])
>> >           File "/home/buildmaster/buildbot_devel/local/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/properties.py", line 150, in render
>> >             renderable = IRenderable(value)
>> >         exceptions.TypeError: ('Could not adapt', <buildbot.locks.LockAccess instance at 0x351c320>, <InterfaceClass buildbot.interfaces.IRenderable>)
>> >
>> > I'm having trouble figuring out what has actually changed since 0.8.8 that allows this to work in master. As far as I can tell 0.8.8 already has _DefaultRenderer registered for the object type, which I would have thought would allow this to adapt. Does anyone know what I'm missing? I'm hoping this doesn't depend on a significant refactor as I'd really like to have this feature in 0.8.8.
>> >
>> > Thanks,
>> > Thomas
>> >
>> > ------------------------------------------------------------------------------
>> > _______________________________________________
>> > Buildbot-devel mailing list
>> > Buildbot-devel at lists.sourceforge.net <mailto:Buildbot-devel at lists.sourceforge.net>
>> > https://lists.sourceforge.net/lists/listinfo/buildbot-devel <https://lists.sourceforge.net/lists/listinfo/buildbot-devel>
>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20150608/1787dca3/attachment.html>


More information about the devel mailing list