Reworks the crate fetcher class to have it install the fetcher at recipe
finalization so that it is always available before SRC_URI is expanded.
In addition, override the value of SRCPV to also install the fetcher
when SRCPV is expanded so that AUTOREV works.
[YOCTO #10867]
Signed-off-by: Joshua Watt <JPEWhacker@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
# crate://<packagename>/<version>
#
-python () {
- import crate
- bb.fetch2.methods.append( crate.Crate() )
+def import_crate(d):
+ import crate
+ if not getattr(crate, 'imported', False):
+ bb.fetch2.methods.append(crate.Crate())
+ crate.imported = True
+
+python crate_import_handler() {
+ import_crate(d)
}
+
+addhandler crate_import_handler
+crate_import_handler[eventmask] = "bb.event.RecipePreFinalise"
+
+def crate_get_srcrev(d):
+ import_crate(d)
+ return bb.fetch2.get_srcrev(d)
+
+# Override SRCPV to make sure it imports the fetcher first
+SRCPV = "${@crate_get_srcrev(d)}"