From: <daniel.turull@ericsson.com>
To: <bitbake-devel@lists.openembedded.org>
Cc: Chen Qi <Qi.Chen@windriver.com>,
Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>,
Richard Purdie <richard.purdie@linuxfoundation.org>,
Daniel Turull <daniel.turull@ericsson.com>
Subject: [2.18][PATCH 2/5] fetch2/wget.py: add filter_regex parameter to latest_versionstring
Date: Wed, 2 Sep 2026 11:57:35 +0200 [thread overview]
Message-ID: <20260902095738.2840120-3-daniel.turull@ericsson.com> (raw)
In-Reply-To: <20260902095738.2840120-1-daniel.turull@ericsson.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>
Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit b1c4a431b080ee328fbf21543258e226a464c118)
Signed-off-by: Daniel Turull <daniel.turull@ericsson.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 fc83b301a..c292dfe7e 100644
--- a/lib/bb/fetch2/wget.py
+++ b/lib/bb/fetch2/wget.py
@@ -515,7 +515,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 ""
@@ -538,6 +538,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
@@ -555,7 +560,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.
"""
@@ -599,7 +604,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
@@ -660,7 +665,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
@@ -701,11 +706,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), '')
next prev parent reply other threads:[~2026-09-02 9:58 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-02 9:57 [2.18][PATCH 0/5] Add case for filter_regex parameter in latest_versionstring daniel.turull
2026-09-02 9:57 ` [2.18][PATCH 1/5] fetch2/git.py: add filter_regex parameter to latest_versionstring daniel.turull
2026-09-02 9:57 ` daniel.turull [this message]
2026-09-02 9:57 ` [2.18][PATCH 3/5] fetch2/crate.py: " daniel.turull
2026-09-02 9:57 ` [2.18][PATCH 4/5] fetch2/__init__.py: add filter_regex to default latest_versionstring daniel.turull
2026-09-02 9:57 ` [2.18][PATCH 5/5] bb/tests/fetch.py: add case for filter_regex parameter in latest_versionstring daniel.turull
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=20260902095738.2840120-3-daniel.turull@ericsson.com \
--to=daniel.turull@ericsson.com \
--cc=Qi.Chen@windriver.com \
--cc=bitbake-devel@lists.openembedded.org \
--cc=mathieu.dubois-briand@bootlin.com \
--cc=richard.purdie@linuxfoundation.org \
/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.