<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On 9 March 2017 at 13:03, Richard Purdie <span dir="ltr">&lt;<a href="mailto:richard.purdie@linuxfoundation.org" target="_blank">richard.purdie@linuxfoundation.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div id="gmail-:s9" class="gmail-a3s gmail-aXjCH gmail-m15ab32c40988c0a4">I worry that making it support generic scms may make it fragile and<br>
hard to extend if we do end up needing to do scm specific work in here<br>
so I&#39;m torn. Having a class per scm would also be annoying...</div></blockquote></div><br>So I have this so far:</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">CLASSOVERRIDE = &quot;class-gitupstream&quot;</div><div class="gmail_extra"><br></div><div class="gmail_extra"># TODO doesn&#39;t let you gitupstream a native recipe yet</div><div class="gmail_extra"><br></div><div class="gmail_extra">python gitupstream_virtclass_handler () {</div><div class="gmail_extra">    # Do nothing if this is inherited, as it&#39;s for BBCLASSEXTEND</div><div class="gmail_extra">    if &quot;gitupstream&quot; not in (d.getVar(&#39;BBCLASSEXTEND&#39;) or &quot;&quot;):</div><div class="gmail_extra">        bb.error(&quot;Don&#39;t inherit gitupstream, use BBCLASSEXTEND&quot;)</div><div class="gmail_extra">        return</div><div class="gmail_extra"><br></div><div class="gmail_extra">    variant = d.getVar(&quot;BBEXTENDVARIANT&quot;)</div><div class="gmail_extra">    if variant not in (&quot;target&quot;):</div><div class="gmail_extra">        bb.error(&quot;Pass the variant when using gitupstream, for example gitupstream:target&quot;)</div><div class="gmail_extra"><br></div><div class="gmail_extra">    src_uri = d.getVar(&quot;SRC_URI&quot;).split()[0]</div><div class="gmail_extra">    uri = bb.fetch2.URI(src_uri)</div><div class="gmail_extra"><br></div><div class="gmail_extra">    d.setVar(&quot;DEFAULT_PREFERENCE&quot;, &quot;-1&quot;)</div><div class="gmail_extra"><br></div><div class="gmail_extra">    if uri.scheme == &quot;git&quot;:</div><div class="gmail_extra">        d.setVar(&quot;S&quot;, &quot;${WORKDIR}/git&quot;)</div><div class="gmail_extra">    elif uri.scheme == &quot;svn&quot;:</div><div class="gmail_extra">        d.setVar(&quot;S&quot;, &quot;${WORKDIR}/&quot; + uri.params[&quot;module&quot;])</div><div class="gmail_extra"><br></div><div class="gmail_extra">    # Modify the PV if the recipe hasn&#39;t already overridden it</div><div class="gmail_extra">    pv = d.getVar(&quot;PV&quot;)</div><div class="gmail_extra">    proto_marker = &quot;+&quot; + uri.scheme</div><div class="gmail_extra">    if proto_marker not in pv:</div><div class="gmail_extra">        d.setVar(&quot;PV&quot;, pv + proto_marker + &quot;${SRCPV}&quot;)</div><div class="gmail_extra">}</div><div class="gmail_extra"><br></div><div class="gmail_extra">addhandler gitupstream_virtclass_handler</div><div class="gmail_extra">gitupstream_virtclass_handler[eventmask] = &quot;bb.event.RecipePreFinalise&quot;</div><div><br></div><div><br></div><div>(obviously s/gitupstream/devupstream/ still needs to happen)</div><div><br></div><div>It&#39;s useful in that it adjust S automatically for svn fetches, but the problem is that bitbake looks for svn: URIs too early and so this doesn&#39;t cause subversion-native to be built.</div><div><br></div><div>I&#39;m thinking I&#39;ll finish renaming this to devupstream, remove the svn specific part, and make a note about attempting to fix the fetcher problem.</div><div><br></div><div>Ross</div></div></div>