From: Qi.Chen@windriver.com
To: bitbake-devel@lists.openembedded.org
Cc: alex.kanavin@gmail.com, randy.macleod@windriver.com
Subject: [bitbake-devel][PATCH V3 2/5] fetch2/wget.py: add filter_regex parameter to latest_versionstring
Date: Sat, 9 May 2026 13:29:47 +0800 [thread overview]
Message-ID: <20260509052950.1565384-2-Qi.Chen@windriver.com> (raw)
In-Reply-To: <20260509052950.1565384-1-Qi.Chen@windriver.com>
From: Chen Qi <Qi.Chen@windriver.com>
We want to be able to do stable version upgrade for recipes. For
example, 1.0.0 -> 1.0.1 instead of 1.0.0 -> 1.1.0.
To to this, we need an extra paramter to latest_versionstring
so that we are able to filter out the versions we need. Using regex
has the advantage of adapting to different version schemes.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
lib/bb/fetch2/wget.py | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/lib/bb/fetch2/wget.py b/lib/bb/fetch2/wget.py
index 6ac4306c0..6e186e1ca 100644
--- a/lib/bb/fetch2/wget.py
+++ b/lib/bb/fetch2/wget.py
@@ -492,7 +492,7 @@ class Wget(FetchMethod):
return fetchresult
- def _check_latest_version(self, url, package, package_regex, current_version, ud, d):
+ def _check_latest_version(self, url, package, package_regex, current_version, ud, d, filter_regex=None):
"""
Return the latest version of a package inside a given directory path
If error or no version, return ""
@@ -515,6 +515,11 @@ class Wget(FetchMethod):
newver = self._parse_path(package_regex, str(line))
if newver:
+ if filter_regex:
+ # filter_regex is derived from PV, and uses . as separator
+ # while upstream may be using _ as separator
+ if not re.match(filter_regex, re.sub('_', '.', newver[1])):
+ continue
bb.debug(3, "Upstream version found: %s" % newver[1])
if valid == 0:
version = newver
@@ -532,7 +537,7 @@ class Wget(FetchMethod):
return ""
- def _check_latest_version_by_dir(self, dirver, package, package_regex, current_version, ud, d):
+ def _check_latest_version_by_dir(self, dirver, package, package_regex, current_version, ud, d, filter_regex=None):
"""
Scan every directory in order to get upstream version.
"""
@@ -576,7 +581,7 @@ class Wget(FetchMethod):
ud.user, ud.pswd, {}])
pupver = self._check_latest_version(uri,
- package, package_regex, current_version, ud, d)
+ package, package_regex, current_version, ud, d, filter_regex)
if pupver:
version[1] = pupver
@@ -637,7 +642,7 @@ class Wget(FetchMethod):
return package_custom_regex_comp
- def latest_versionstring(self, ud, d):
+ def latest_versionstring(self, ud, d, filter_regex=None):
"""
Manipulate the URL and try to obtain the latest package version
@@ -678,11 +683,11 @@ class Wget(FetchMethod):
dirver_pn_regex = re.compile(r"%s\d?" % (re.escape(pn)))
if not dirver_pn_regex.search(dirver):
return (self._check_latest_version_by_dir(dirver,
- package, package_regex, current_version, ud, d), '')
+ package, package_regex, current_version, ud, d, filter_regex), '')
uri = bb.fetch.encodeurl([ud.type, ud.host, path, ud.user, ud.pswd, {}])
else:
uri = regex_uri
return (self._check_latest_version(uri, package, package_regex,
- current_version, ud, d), '')
+ current_version, ud, d, filter_regex), '')
--
2.34.1
next prev parent reply other threads:[~2026-05-09 5:30 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-09 5:29 [bitbake-devel][PATCH V3 1/5] fetch2/git.py: add filter_regex parameter to latest_versionstring Qi.Chen
2026-05-09 5:29 ` Qi.Chen [this message]
2026-05-09 5:29 ` [bitbake-devel][PATCH V3 3/5] fetch2/crate.py: " Qi.Chen
2026-05-09 5:29 ` [bitbake-devel][PATCH V3 4/5] fetch2/__init__.py: add filter_regex to default latest_versionstring Qi.Chen
2026-05-09 5:29 ` [bitbake-devel][PATCH V3 5/5] bb/tests/fetch.py: add case for filter_regex parameter in latest_versionstring Qi.Chen
2026-05-12 11:42 ` [bitbake-devel][PATCH V3 1/5] fetch2/git.py: add filter_regex parameter to latest_versionstring Mathieu Dubois-Briand
2026-05-13 2:44 ` ChenQi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260509052950.1565384-2-Qi.Chen@windriver.com \
--to=qi.chen@windriver.com \
--cc=alex.kanavin@gmail.com \
--cc=bitbake-devel@lists.openembedded.org \
--cc=randy.macleod@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.