summaryrefslogtreecommitdiffstats
path: root/meta/classes/crate-fetch.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'meta/classes/crate-fetch.bbclass')
-rw-r--r--meta/classes/crate-fetch.bbclass24
1 files changed, 21 insertions, 3 deletions
diff --git a/meta/classes/crate-fetch.bbclass b/meta/classes/crate-fetch.bbclass
index c0ed434a96..04d76c0de8 100644
--- a/meta/classes/crate-fetch.bbclass
+++ b/meta/classes/crate-fetch.bbclass
@@ -7,7 +7,25 @@
# 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)
+ srcuri = d.getVar("SRC_URI")
+ if "crate://" not in srcuri and "git://" not in srcuri:
+ return "Invalid"
+ return bb.fetch2.get_srcrev(d)
+
+# Override SRCPV to make sure it imports the fetcher first
+SRCPV = "${@crate_get_srcrev(d)}"