| Message ID | 20251113181157.410053-1-corentin.guillevic@smile.fr |
|---|---|
| State | New |
| Headers | show |
| Series | [1/2] insane.bbclass: check revision for every git URI | expand |
It is still possible to specify revision by adding ";rev=<hash>" to SRC_URI. We should not error-out on valid configurations. Peter > -----Original Message----- > From: openembedded-core@lists.openembedded.org <openembedded- > core@lists.openembedded.org> On Behalf Of Corentin Guillevic via > lists.openembedded.org > Sent: Thursday, November 13, 2025 19:12 > To: openembedded-core@lists.openembedded.org > Cc: Corentin Guillevic <corentin.guillevic@smile.fr> > Subject: [OE-core] [PATCH 1/2] insane.bbclass: check revision for every git URI > > 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> > --- > meta/classes-global/insane.bbclass | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/meta/classes-global/insane.bbclass b/meta/classes- > global/insane.bbclass > index fed8163c3e..f6e9ed6347 100644 > --- a/meta/classes-global/insane.bbclass > +++ b/meta/classes-global/insane.bbclass > @@ -1495,7 +1495,26 @@ 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): > + 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', '') > + > + # git URI has a "name" parameter > + if 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) > -- > 2.49.0
diff --git a/meta/classes-global/insane.bbclass b/meta/classes-global/insane.bbclass index fed8163c3e..f6e9ed6347 100644 --- a/meta/classes-global/insane.bbclass +++ b/meta/classes-global/insane.bbclass @@ -1495,7 +1495,26 @@ 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): + 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', '') + + # git URI has a "name" parameter + if 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> --- meta/classes-global/insane.bbclass | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)