<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.hoenzb
        {mso-style-name:hoenzb;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#943634;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#943634'>You seem to have missed a couple of comments.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#943634'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#943634'>//Peter<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#943634'><o:p>&nbsp;</o:p></span></p><div style='border:none;border-left:solid blue 1.5pt;padding:0cm 0cm 0cm 4.0pt'><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal><b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'>From:</span></b><span style='font-size:11.0pt;font-family:"Calibri",sans-serif'> Zoltan Kuscsik [mailto:zoltan.kuscsik@linaro.org] <br><b>Sent:</b> den 4 november 2015 05:08<br><b>To:</b> Peter Kjellerstedt<br><b>Cc:</b> bitbake-devel@lists.openembedded.org<br><b>Subject:</b> Re: [bitbake-devel] [PATCH] bb.fetch2: added support for gclient<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><div><p class=MsoNormal>Thanks Peter, all comments addressed in PATCHv2. &nbsp;<o:p></o:p></p></div><div><p class=MsoNormal>I also created a test for the patch:<o:p></o:p></p><div><div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal><a href="https://github.com/kuscsik/meta-testing/tree/master/recipes-core/fetcher">https://github.com/kuscsik/meta-testing/tree/master/recipes-core/fetcher</a><o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></div></div><div><p class=MsoNormal>Br,<o:p></o:p></p></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><div><p class=MsoNormal>Z<o:p></o:p></p></div></div></div><div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><p class=MsoNormal>On 4 November 2015 at 01:36, Peter Kjellerstedt &lt;<a href="mailto:peter.kjellerstedt@axis.com" target="_blank">peter.kjellerstedt@axis.com</a>&gt; wrote:<o:p></o:p></p><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><p class=MsoNormal>&gt; -----Original Message-----<br>&gt; From: <a href="mailto:bitbake-devel-bounces@lists.openembedded.org">bitbake-devel-bounces@lists.openembedded.org</a> [mailto:<a href="mailto:bitbake-">bitbake-</a><br>&gt; <a href="mailto:devel-bounces@lists.openembedded.org">devel-bounces@lists.openembedded.org</a>] On Behalf Of Zoltan Kuscsik<br>&gt; Sent: den 3 november 2015 17:11<br>&gt; To: <a href="mailto:bitbake-devel@lists.openembedded.org">bitbake-devel@lists.openembedded.org</a><br>&gt; Subject: [bitbake-devel] [PATCH] bb.fetch2: added support for gclient<br>&gt;<br>&gt; Gclient is tool for updating source code from<br>&gt; multiple SCM repository locations.<br>&gt;<br>&gt; Signed-off-by: Zoltan Kuscsik &lt;<a href="mailto:zoltan.kuscsik@linaro.org">zoltan.kuscsik@linaro.org</a>&gt;<br>&gt; ---<br>&gt;&nbsp; lib/bb/fetch2/__init__.py |&nbsp; &nbsp;3 +-<br>&gt;&nbsp; lib/bb/fetch2/gclient.py&nbsp; | 151<br>&gt; ++++++++++++++++++++++++++++++++++++++++++++++<br>&gt;&nbsp; 2 files changed, 153 insertions(+), 1 deletion(-)<br>&gt;&nbsp; create mode 100644 lib/bb/fetch2/gclient.py<br>&gt;<br>&gt; diff --git a/lib/bb/fetch2/__init__.py b/lib/bb/fetch2/__init__.py<br>&gt; index 288a1c8..5ca3bc7 100644<br>&gt; --- a/lib/bb/fetch2/__init__.py<br>&gt; +++ b/lib/bb/fetch2/__init__.py<br>&gt; @@ -1529,7 +1529,6 @@ class Fetch(object):<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fn = d.getVar('FILE', True)<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if cache and fn and fn in urldata_cache:<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.ud = urldata_cache[fn]<br>&gt; -<br><br>Restore the empty line.<o:p></o:p></p><div><div><p class=MsoNormal><br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for url in urls:<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if url not in self.ud:<br>&gt;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try:<br>&gt; @@ -1775,6 +1774,7 @@ from . import hg<br>&gt;&nbsp; from . import osc<br>&gt;&nbsp; from . import repo<br>&gt;&nbsp; from . import clearcase<br>&gt; +from . import gclient<br>&gt;<br>&gt;&nbsp; methods.append(local.Local())<br>&gt;&nbsp; methods.append(wget.Wget())<br>&gt; @@ -1791,3 +1791,4 @@ methods.append(hg.Hg())<br>&gt;&nbsp; methods.append(osc.Osc())<br>&gt;&nbsp; methods.append(repo.Repo())<br>&gt;&nbsp; methods.append(clearcase.ClearCase())<br>&gt; +methods.append(gclient.Gclient())<br>&gt; diff --git a/lib/bb/fetch2/gclient.py b/lib/bb/fetch2/gclient.py<br>&gt; new file mode 100644<br>&gt; index 0000000..de06eb5<br>&gt; --- /dev/null<br>&gt; +++ b/lib/bb/fetch2/gclient.py<br>&gt; @@ -0,0 +1,151 @@<br>&gt; +# ex:ts=4:sw=4:sts=4:et<br>&gt; +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-<br>&gt; +&quot;&quot;&quot;<br>&gt; +BitBake &quot;Fetch&quot; gclient implementation<br>&gt; +<br>&gt; +gclient fetcher support the SRCU_URI in the following format:<o:p></o:p></p></div></div><p class=MsoNormal>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^^^^^^^^<br>Correct the spelling of SRC_URI.<br><br>&gt; +<br>&gt; +&nbsp; &nbsp; SRC_URI = &quot;gclient://some.host/path/;optionA=xxx,optionB=xy&quot;<br>&gt; +<br>&gt; +Supported SRC_UIR options are:<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^^^^^^^<br>Correct the spelling of SRC_URI.<br><br>&gt; +<br>&gt; +- branch<br>&gt; +&nbsp; The git branch of the root gclient project. The default is<br>&gt; +&nbsp; &quot;master&quot;.<br>&gt; +<br>&gt; +- tag<br>&gt; +&nbsp; Git tag for gclient to retrieve.<br>&gt; +<br>&gt; +- protocol<br>&gt; +&nbsp; The method to use for accessing the gclient core project. The default<br>&gt; +&nbsp; &nbsp;is https.<br>&gt; +<br>&gt; +- project-name<br>&gt; +&nbsp; Passing the --name command line argument to gclient. Not default is empty.<br><br>Change &quot;Passing&quot; to &quot;Pass&quot; and &quot;Not&quot; to &quot;The&quot;.<o:p></o:p></p><div><div><p class=MsoNormal><br>&gt; +<br>&gt; +- rev<br>&gt; +&nbsp; Specify git commit id for gclient. Default is empty.<br>&gt; +<br>&gt; +- deps-file<br>&gt; +&nbsp; Set the --deps-file command line argument for gclient.<br>&gt; +<br>&gt; +&quot;&quot;&quot;<br>&gt; +<br>&gt; +# Copyright (C) 2015 Zoltan Kuscsik &lt;<a href="mailto:zoltan.kuscsik@linaro.org">zoltan.kuscsik@linaro.org</a>&gt;<br>&gt; +#<br>&gt; +# Based on git.py which is:<br>&gt; +# Copyright (C) 2005 Richard Purdie<br>&gt; +#<br>&gt; +# This program is free software; you can redistribute it and/or modify<br>&gt; +# it under the terms of the GNU General Public License version 2 as<br>&gt; +# published by the Free Software Foundation.<br>&gt; +#<br>&gt; +# This program is distributed in the hope that it will be useful,<br>&gt; +# but WITHOUT ANY WARRANTY; without even the implied warranty of<br>&gt; +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&nbsp; See the<br>&gt; +# GNU General Public License for more details.<br>&gt; +#<br>&gt; +# You should have received a copy of the GNU General Public License along<br>&gt; +# with this program; if not, write to the Free Software Foundation, Inc.,<br>&gt; +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.<br>&gt; +<br>&gt; +import os<br>&gt; +import bb<br>&gt; +from&nbsp; &nbsp;bb&nbsp; &nbsp; import data<br>&gt; +from&nbsp; &nbsp;bb.fetch2 import FetchMethod<br>&gt; +from&nbsp; &nbsp;bb.fetch2 import runfetchcmd<br>&gt; +import string<br>&gt; +<br>&gt; +class Gclient(FetchMethod):<br>&gt; +&nbsp; &nbsp; &quot;&quot;&quot;Class to fetch a module or modules using gclient&quot;&quot;&quot;<br>&gt; +<br>&gt; +&nbsp; &nbsp; def __fetch_url(self, ud):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; return &quot;%s://%s%s&quot; % (ud.proto, ud.host, ud.path)<br>&gt; +<br>&gt; +&nbsp; &nbsp; def supports(self, ud, d):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; Check to see if a given url can be fetched with repo.<o:p></o:p></p></div></div><p class=MsoNormal>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^^^^<br>Repo? I thought this was for gclient...<br><br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; return ud.type in [&quot;gclient&quot;]<br>&gt; +<br>&gt; +&nbsp; &nbsp; def urldata_init(self, ud, d):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; Init gclient<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.proto = ud.parm.get('protocol', 'https')<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.branch = ud.parm.get('branch', 'master')<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.tag = ud.parm.get('tag','')<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.rev = ud.parm.get('rev','')<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.deps_file = ud.parm.get('deps-file', '')<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.project_name = ud.parm.get('project-name', '')<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; if( ( ('tag' in ud.parm) + ('branch' in ud.parm) + ('res' in ud.parm)) &gt; 1):<br><br>Rewrite as:<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if ('tag' in ud.parm) + ('branch' in ud.parm) + ('res' in ud.parm) &gt; 1:<br><br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; raise bb.fetch2.ParameterError(&quot;Confliting revision setting SRC_URI. Setting only one of the options: 'branch', 'tag', 'res'.&quot;, ud.url)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^^^^^^^^^^<br>Correct the spelling of &quot;Conflicting&quot;. Change &quot;revision setting SRC_URI&quot;<br>to &quot;revisions specified in SRC_URI&quot; and &quot;Setting only&quot; to &quot;Specify only&quot;.<br><br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; dldir = d.getVar(&quot;DL_DIR&quot;, True)<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; gclient_src_name = 'gclient_%s%s' % (ud.host.replace(':', '.'), ud.path.replace('/', '.').replace('*', '.'))<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.syncdir = os.path.join(dldir, gclient_src_name)<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; ud.localfile = ud.syncdir<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; if ud.tag:<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ud.revision =&nbsp; &quot;refs/tags/%s&quot; % ud.tag<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;^<br>Remove unnecessary space.<br><br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; elif ud.rev:<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ud.revision = ud.rev<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; else:<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ud.revision = &quot;refs/heads/%s&quot; % ud.branch<br>&gt; +<br>&gt; +&nbsp; &nbsp; def download(self, ud, d):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;Fetch url&quot;&quot;&quot;<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; if not os.path.exists(ud.localpath):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bb.utils.mkdirhier(ud.localpath)<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; os.chdir(ud.localpath)<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; gclient_url = self.__fetch_url(ud)<br>&gt; +<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # Add optional parameters<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; extra_params=[]<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; if(ud.deps_file):<br><br>Rewrite as:<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if ud.deps_file:<br><br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; extra_params.append(&quot;--deps-file=%s&quot; % ud.deps_file)<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; if(ud.project_name):<br><br>Rewrite as:<br><br>&nbsp; &nbsp; &nbsp; &nbsp; if ud.project_name:<o:p></o:p></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'><br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; extra_params.append(&quot;--name=%s&quot; % ud.project_name)<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; extra_args = string.join(extra_params, sep = &quot; &quot;)<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; runfetchcmd(&quot;gclient config %s %s &quot; % (gclient_url, extra_args), d)<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # Gclient parameters used<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # -f&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - force sync<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # -nohooks&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; - skip hooks execution at this time<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # --with_branch_heads&nbsp; &nbsp;- gclient can't find a commit ID if it is not in a branch<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; #<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # Note: We should enable --no-history after some more testing<br>&gt; +<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; runfetchcmd(&quot;gclient sync --with_branch_heads -f&nbsp; --nohooks --revision %s&quot; % ud.revision, d)<br>&gt; +<br>&gt; +&nbsp; &nbsp; def unpack(self, ud, destdir, d):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot; Unpack the src to destdir &quot;&quot;&quot;<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; destsuffix = &quot;gclient/&quot;<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; destdir = ud.destdir = os.path.join(destdir, destsuffix)<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # Use rsync for copying. Creating a tar package here would be very<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; # time consuming.<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; runfetchcmd(&quot;rsync -av %s/ %s/&quot; %(ud.syncdir, destdir), d)<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; return True<br>&gt; +<br>&gt; +&nbsp; &nbsp; def need_update(self, ud, d):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; return True<br>&gt; +<br>&gt; +&nbsp; &nbsp; def clean(self, ud, d):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot; Clean the gclient directory &quot;&quot;&quot;<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; bb.utils.remove(ud.localpath, True)<br>&gt; +<br>&gt; +&nbsp; &nbsp; def localpath(self, ud, dr):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; return ud.syncdir<br>&gt; +<br>&gt; +&nbsp; &nbsp; def supports_srcrev(self):<br>&gt; +&nbsp; &nbsp; &nbsp; &nbsp; return False<br>&gt; --<br>&gt; 1.9.1<o:p></o:p></p></div></div><p class=MsoNormal style='margin-bottom:12.0pt'><span class=hoenzb><span style='color:#888888'>//Peter</span></span><o:p></o:p></p></blockquote></div><p class=MsoNormal><br><br clear=all><o:p></o:p></p><div><p class=MsoNormal><o:p>&nbsp;</o:p></p></div><p class=MsoNormal>-- <o:p></o:p></p><div><div><div><p class=MsoNormal><span style='color:#888888'>Zoltan Kuscsik<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#888888'><o:p>&nbsp;</o:p></span></p></div><div><p class=MsoNormal><span style='color:#888888'>Senior Software Developer, Linaro Digital Home Group<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='color:#888888'>email: <a href="mailto:zoltan.kuscsik@linaro.org" target="_blank">zoltan.kuscsik@linaro.org</a><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:9.5pt;color:#888888'>IRC: zoli_ on&nbsp;</span><span style='color:#888888'><a href="http://irc.linaro.org/" target="_blank"><span style='font-size:9.5pt;color:#1155CC'>irc.linaro.org</span></a><o:p></o:p></span></p></div></div></div></div></div></div></body></html>