<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On 9 March 2017 at 13:03, Richard Purdie <span dir="ltr"><<a href="mailto:richard.purdie@linuxfoundation.org" target="_blank">richard.purdie@linuxfoundation.org</a>></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'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 = "class-gitupstream"</div><div class="gmail_extra"><br></div><div class="gmail_extra"># TODO doesn'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's for BBCLASSEXTEND</div><div class="gmail_extra"> if "gitupstream" not in (d.getVar('BBCLASSEXTEND') or ""):</div><div class="gmail_extra"> bb.error("Don't inherit gitupstream, use BBCLASSEXTEND")</div><div class="gmail_extra"> return</div><div class="gmail_extra"><br></div><div class="gmail_extra"> variant = d.getVar("BBEXTENDVARIANT")</div><div class="gmail_extra"> if variant not in ("target"):</div><div class="gmail_extra"> bb.error("Pass the variant when using gitupstream, for example gitupstream:target")</div><div class="gmail_extra"><br></div><div class="gmail_extra"> src_uri = d.getVar("SRC_URI").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("DEFAULT_PREFERENCE", "-1")</div><div class="gmail_extra"><br></div><div class="gmail_extra"> if uri.scheme == "git":</div><div class="gmail_extra"> d.setVar("S", "${WORKDIR}/git")</div><div class="gmail_extra"> elif uri.scheme == "svn":</div><div class="gmail_extra"> d.setVar("S", "${WORKDIR}/" + uri.params["module"])</div><div class="gmail_extra"><br></div><div class="gmail_extra"> # Modify the PV if the recipe hasn't already overridden it</div><div class="gmail_extra"> pv = d.getVar("PV")</div><div class="gmail_extra"> proto_marker = "+" + uri.scheme</div><div class="gmail_extra"> if proto_marker not in pv:</div><div class="gmail_extra"> d.setVar("PV", pv + proto_marker + "${SRCPV}")</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] = "bb.event.RecipePreFinalise"</div><div><br></div><div><br></div><div>(obviously s/gitupstream/devupstream/ still needs to happen)</div><div><br></div><div>It'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't cause subversion-native to be built.</div><div><br></div><div>I'm thinking I'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>