@@ -1495,7 +1495,33 @@ python do_recipe_qa() {
error_msg = "%s: invalid PACKAGECONFIG(s): %s" % (pn, " ".join(sorted(invalid_pkgconfigs)))
oe.qa.handle_error("invalid-packageconfig", error_msg, d)
+ def test_git_missing_srcrev(pn, d):
+ sha1_re = re.compile(r'^[0-9a-f]{40}$')
+ for uri in d.getVar('SRC_URI').split():
+ if not uri.startswith('git://'):
+ continue
+
+ # Get parameters for the current URI
+ params = bb.fetch2.decodeurl(uri)[5]
+ name = params.get('name', '')
+ rev = params.get('rev', '')
+
+ # Revision is provided as a 'rev' parameter
+ if rev:
+ # Prevent any revision that doesn't look like a SHA-1
+ if not sha1_re.match(rev or ''):
+ oe.qa.handle_error("missing-srcrev", "%s: ;rev=%s URL parameter doesn't look like a SHA-1" % (pn, rev), d)
+ # git URI has a "name" parameter
+ elif name:
+ rev = d.getVar('SRCREV_' + name)
+ if not rev:
+ oe.qa.handle_error("missing-srcrev", "%s: no revision (%s) defined for URI %s" % (pn, 'SRCREV_' + name, uri), d)
+ else:
+ if d.getVar('SRCREV') == "INVALID":
+ oe.qa.handle_error("missing-srcrev", "%s: no revision (SRCREV) defined for URI %s" % (pn, uri), d)
+
pn = d.getVar('PN')
+ test_git_missing_srcrev(pn, d)
test_naming(pn, d)
test_missing_metadata(pn, d)
test_missing_maintainer(pn, d)
Every git URI into SRC_URI variable should have a revision. However, if the revision is missing (SRCREV), BitBake will perform a query on the remote repository every time it parses a recipe. This check will raise an error if a git URI is not provided alongside a revision. Signed-off-by: Corentin Guillevic <corentin.guillevic@smile.fr> --- v2: add support of rev= parameter meta/classes-global/insane.bbclass | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)