<div dir="ltr">Please see:<div><a href="https://github.com/buildbot/buildbot/pull/2554/files">https://github.com/buildbot/buildbot/pull/2554/files</a><br><div><br></div></div><div>I hope you don't mind, I took your artifact name function as an concrete example.</div><div><br></div><div>Regards,</div><div>Pierre</div></div><br><div class="gmail_quote"><div dir="ltr">Le mar. 3 janv. 2017 à 11:42, Pierre Tardy <<a href="mailto:tardyp@gmail.com">tardyp@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">Hi Elliot,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">getRenderingFor is indeed returning a string, but via deferred (even if your actual usecase does not really need io, the generic renderable case may).</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">So if you insist in using Interpolate to build your string, you will need to make you renderer function an inlineCallbacks, and use</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><div class="gmail_msg">local_filename = yield local_filename.getRenderingFor(props)</div></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">That said, I would rather use string.format as you are only doing "prop" interpolation e.g:<br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><div class="gmail_msg">            local_filename = "contrib/mac/app/Julia-{version}-{shortcommit}.{os_pkg_ext}".format(props.getProperties())</div></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">This way you dont need to bother about deferred</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I like you proposal of manipulateProperties with full renderable implementation will give it a try soon.</div></div><div dir="ltr" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Pierre</div></div><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">Le mar. 3 janv. 2017 à 11:21, Elliot Saba <<a href="mailto:staticfloat@gmail.com" class="gmail_msg" target="_blank">staticfloat@gmail.com</a>> a écrit :<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">I would love a <font face="monospace, monospace" class="gmail_msg">manipulateProperties</font>, so that I don't have to use a workaround like this.  Something that would allow me to return a dictionary of new property values (akin to an <font face="monospace, monospace" class="gmail_msg">extract_fn</font>) would be ideal.  Although I should say, I'm having some troubles with the workaround right now because I'm not entirely certain how to get util.Interpolate() and setProperty() to play nicely together.  I have <a href="https://github.com/staticfloat/julia-buildbot/blob/57258667835271c27aba559033898d0000f623ad/master/package.py#L45-L75" class="gmail_msg" target="_blank">this snippet</a> right now, but I'm getting errors like this:<div class="gmail_msg"><br class="gmail_msg"></div><font face="monospace, monospace" class="gmail_msg">twisted.internet.defer.FirstError: FirstError[#14, [Failure instance: Traceback: <type 'exceptions.TypeError'>: <DeferredList at 0x7f9f3d3d9638 current result: u'tar.gz'> is not JSON serializable /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py:1299:_inlineCallbacks /usr/local/lib/python2.7/site-packages/buildbot/process/buildstep.py:508:startStep /usr/local/lib/python2.7/site-packages/buildbot/process/properties.py:198:render /usr/local/lib/python2.7/site-packages/buildbot/process/properties.py:157:render --- <exception caught here> --- /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py:150:maybeDeferred package.py:73:munge_artifact_filename /usr/local/lib/python2.7/site-packages/buildbot/process/properties.py:142:setProperty /usr/local/lib/python2.7/json/__init__.py:244:dumps /usr/local/lib/python2.7/json/encoder.py:207:encode /usr/local/lib/python2.7/json/encoder.py:270:iterencode /usr/local/lib/python2.7/json/encoder.py:184:default ]]<br class="gmail_msg">twisted.internet.defer.FirstError: FirstError[#14, [Failure instance: Traceback: <type 'exceptions.TypeError'>: <DeferredList at 0x7f9f3d3d9638 current result: u'tar.gz'> is not JSON serializable /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py:1299:_inlineCallbacks /usr/local/lib/python2.7/site-packages/buildbot/process/buildstep.py:508:startStep /usr/local/lib/python2.7/site-packages/buildbot/process/properties.py:198:render /usr/local/lib/python2.7/site-packages/buildbot/process/properties.py:157:render --- <exception caught here> --- /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py:150:maybeDeferred package.py:73:munge_artifact_filename /usr/local/lib/python2.7/site-packages/buildbot/process/properties.py:142:setProperty /usr/local/lib/python2.7/json/__init__.py:244:dumps /usr/local/lib/python2.7/json/encoder.py:207:encode /usr/local/lib/python2.7/json/encoder.py:270:iterencode /usr/local/lib/python2.7/json/encoder.py:184:default ]]</font><div class="gmail_msg"><font face="monospace, monospace" class="gmail_msg"><br class="gmail_msg"></font></div>It appears that the manual "rendering" step I'm attempting to perform in order to coerce my <font face="monospace, monospace" class="gmail_msg">util.Interpolate()</font> results to a string are not working; I'm getting a DeferredList instead of a string.  What do I need to do to massage my interpolation results into a form that I can pass into setProperty?</div><div dir="ltr" class="gmail_msg"><div class="gmail_extra gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg">On Tue, Jan 3, 2017 at 12:47 AM, Pierre Tardy <span dir="ltr" class="gmail_msg"><<a href="mailto:tardyp@gmail.com" class="gmail_msg" target="_blank">tardyp@gmail.com</a>></span> wrote:<br class="gmail_msg"><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">renderer looks good.<div class="gmail_msg">Maybe we need an extra step kind like manipulateProperties, which would only take a renderer and run it, so that we dont need the extra shell command on the worker.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">BTW, I like you master.cfg a lot. nice work!</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Would you like to make a blog post explaining it, like the nice folks at i3 did?</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><a href="https://i3wm.org/docs/buildbot.html" class="gmail_msg" target="_blank">https://i3wm.org/docs/buildbot.html</a><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">We can host it in buildbot's Medium publication:</div><div class="gmail_msg"><a href="https://medium.com/buildbot" class="gmail_msg" target="_blank">https://medium.com/buildbot</a></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Regards</div><span class="m_4270868685466793930m_5669578071169487364m_1099025013817234317HOEnZb gmail_msg"><font color="#888888" class="gmail_msg"><div class="gmail_msg">Pierre<br class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg"></div></div></font></span></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317HOEnZb gmail_msg"><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317h5 gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">Le mar. 3 janv. 2017 à 00:14, Elliot Saba <<a href="mailto:staticfloat@gmail.com" class="gmail_msg" target="_blank">staticfloat@gmail.com</a>> a écrit :<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Thanks Pierre,<div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">I have worked around this in a different way, with a dummy setPropertyFromCommand step (<a href="https://github.com/staticfloat/julia-buildbot/blob/level_up/master/package.py#L45-L77" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">my workaround is here</a>) that just runs `/bin/true`, but within the `command=` callback I manipulate the properties as I desire.</div></div><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">-E</div></div><div class="gmail_extra m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">On Thu, Dec 29, 2016 at 6:15 AM, Pierre Tardy <span dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><<a href="mailto:tardyp@gmail.com" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">tardyp@gmail.com</a>></span> wrote:<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><blockquote class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Hi Elliot,<div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Looking at the source code, it is not possible to get the properties from extract_fn.</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><a href="https://github.com/buildbot/buildbot/blob/master/master/buildbot/steps/shell.py#L335" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">https://github.com/buildbot/buildbot/blob/master/master/buildbot/steps/shell.py#L335</a><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">However, you could easily override commandComplete in order to make your implementation.</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">class mySetPropertyFromCommand(steps.SetPropertyFromCommand):</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">    def commandComplete(self, cmd):</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">        stdout = self.observer.getStdout()</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">        stderr = self.observer.getStderr()</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">        rc = cmd.rc</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">        os = self.getProperty("os")</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">        ...</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">        self.setProperty("prop_name", "value", "mySetPropertyFromCommand")</div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402HOEnZb m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402h5 m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Le mer. 28 déc. 2016 à 20:09, Elliot Saba <<a href="mailto:staticfloat@gmail.com" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">staticfloat@gmail.com</a>> a écrit :<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><blockquote class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Hi Pierre, </p>
<p dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">I mean the function that gets called to parse out the results of a setPropertyFromCommand call. </p>
<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">On Wed, Dec 28, 2016, 04:14 Pierre Tardy <<a href="mailto:tardyp@gmail.com" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">tardyp@gmail.com</a>> wrote:<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><blockquote class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><p dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Hi Elliot <br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">
What do you mean an extraction function?</p>
<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><div class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Le mer. 28 déc. 2016 12:16, Elliot Saba <<a href="mailto:staticfloat@gmail.com" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">staticfloat@gmail.com</a>> a écrit :<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div></div><div class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><blockquote class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><span style="font-size:12.8px" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">I want to access the properties of my build within a buildstep.  To do so, I need to use something like `step.getProperty('foo')`, but I don't know how to get the current step as a variable into my extraction function.  Is there an easy way to get this information?  The reason I need to do this is that I need to customize my extraction function based upon the operating system of the worker my step is executing on.</span><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><span style="font-size:12.8px" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></span></div><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><span style="font-size:12.8px" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">Thanks in advance,<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></span><div class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><span style="font-size:12.8px" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">-E</span></div></div></div></blockquote></div><div class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><blockquote class="gmail_quote m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
_______________________________________________<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">
users mailing list<br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">
<a href="mailto:users@buildbot.net" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">users@buildbot.net</a><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">
<a href="https://lists.buildbot.net/mailman/listinfo/users" rel="noreferrer" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg" target="_blank">https://lists.buildbot.net/mailman/listinfo/users</a></blockquote></div>
</blockquote></div><div dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">-- <br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div><div data-smartmail="gmail_signature" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"><p dir="ltr" class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223m_-5124253868229740402m_8220483909258124486gmail_msg m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg">-E</p>
</div>
</blockquote></div>
</div></div></blockquote></div><br class="m_4270868685466793930m_5669578071169487364m_1099025013817234317m_2057396654482510223gmail_msg gmail_msg"></div>
</blockquote></div>
</div></div></blockquote></div><br class="gmail_msg"></div></div></blockquote></div></blockquote></div>