diff mbox series

[bitbake-devel,RFC,3/3] lib/bb/fetch2/crate.py: add optional major_version parameter to latest_versionstring

Message ID 20260429032436.1075831-3-Qi.Chen@windriver.com
State New
Headers show
Series [bitbake-devel,RFC,1/3] lib/bb/fetch2/git.py: add optional major_version parameter to latest_versionstring | expand

Commit Message

Chen, Qi April 29, 2026, 3:24 a.m. UTC
From: Chen Qi <Qi.Chen@windriver.com>

We need to handle the situation of LTS upgrades. This means for version
such as 1.0.0, we need to find the upgradable version of 1.0.1 instead of
something like 1.1.0.

Add optional major_version parameter to crate fetcher to support such
case.

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
 lib/bb/fetch2/crate.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/lib/bb/fetch2/crate.py b/lib/bb/fetch2/crate.py
index 2d3078899..4ac71946d 100644
--- a/lib/bb/fetch2/crate.py
+++ b/lib/bb/fetch2/crate.py
@@ -144,10 +144,16 @@  class Crate(Wget):
             with open(mdpath, "w") as f:
                 json.dump(metadata, f)
 
-    def latest_versionstring(self, ud, d):
+    def latest_versionstring(self, ud, d, major_version=None):
         from functools import cmp_to_key
         json_data = json.loads(self._fetch_index(ud.versionsurl, ud, d))
         versions = [(0, i["num"], "") for i in json_data["versions"]]
+        if major_version:
+            filtered_versions = []
+            for v in versions:
+                if v[1].startswith(major_version+'.'):
+                    filtered_versions.append(v)
+            versions = filtered_versions
         versions = sorted(versions, key=cmp_to_key(bb.utils.vercmp))
 
         return (versions[-1][1], "")