From: <daniel.turull@ericsson.com>
To: <openembedded-core@lists.openembedded.org>
Cc: Chen Qi <Qi.Chen@windriver.com>,
Antonin Godard <antonin.godard@bootlin.com>,
Richard Purdie <richard.purdie@linuxfoundation.org>,
Daniel Turull <daniel.turull@ericsson.com>
Subject: [wrynose][PATCH 01/20] recipeutils: add optional stable_upgrade parameter to get_recipe_upgrade_status
Date: Wed, 2 Sep 2026 11:59:01 +0200 [thread overview]
Message-ID: <20260902095920.2840293-2-daniel.turull@ericsson.com> (raw)
In-Reply-To: <20260902095920.2840293-1-daniel.turull@ericsson.com>
From: Chen Qi <Qi.Chen@windriver.com>
We want the ability to do stable version upgrades for recipes.
To this end, add an optional stable_upgrade parameter to the
get_recipe_upgrade_status function, which defaults to False and
when enabled will try to get the latest stable version of the recipe.
The UPSTREAM_STABLE_RELEASE_REGEX is respected. If a recipe sets
it, it will be used as the filter_regex. If it's not set explicitly,
it means that there's no stable updates or the recipe hasn't been
checked yet.
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Antonin Godard <antonin.godard@bootlin.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
(cherry picked from commit 1ed8fdda035dcc21f3df71c0c996973224f4f683)
Signed-off-by: Daniel Turull <daniel.turull@ericsson.com>
---
meta/lib/oe/recipeutils.py | 23 +++++++++++++++++------
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py
index c6604f536d..7c1df518a8 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -1009,7 +1009,7 @@ def get_recipe_pv_with_pfx_sfx(pv, uri_type):
return (pv, pfx, sfx)
-def get_recipe_upstream_version(rd):
+def get_recipe_upstream_version(rd, stable_upgrade):
"""
Get upstream version of recipe using bb.fetch2 methods with support for
http, https, ftp and git.
@@ -1080,7 +1080,15 @@ def get_recipe_upstream_version(rd):
except bb.fetch2.FetchError as e:
bb.warn("Unable to obtain latest revision: {}".format(e))
else:
- pupver = ud.method.latest_versionstring(ud, rd)
+ if stable_upgrade:
+ stable_release_regex = rd.getVar("UPSTREAM_STABLE_RELEASE_REGEX")
+ if stable_release_regex:
+ pupver = ud.method.latest_versionstring(ud, rd, filter_regex=stable_release_regex)
+ else:
+ # Not explicitly setting "UPSTREAM_STABLE_RELEASE_REGEX" means there's no stable upgrade
+ pupver = (ru['current_version'], None)
+ else:
+ pupver = ud.method.latest_versionstring(ud, rd)
(upversion, revision) = pupver
if upversion:
@@ -1094,8 +1102,8 @@ def get_recipe_upstream_version(rd):
return ru
-def _get_recipe_upgrade_status(data):
- uv = get_recipe_upstream_version(data)
+def _get_recipe_upgrade_status(data, stable_upgrade):
+ uv = get_recipe_upstream_version(data, stable_upgrade)
pn = data.getVar('PN')
cur_ver = uv['current_version']
@@ -1119,9 +1127,10 @@ def _get_recipe_upgrade_status(data):
return {'pn':pn, 'status':status, 'cur_ver':cur_ver, 'next_ver':next_ver, 'maintainer':maintainer, 'revision':revision, 'no_upgrade_reason':no_upgrade_reason}
-def get_recipe_upgrade_status(recipes=None):
+def get_recipe_upgrade_status(recipes=None, stable_upgrade=False):
pkgs_list = []
data_copy_list = []
+ stable_copy_list = []
copy_vars = ('SRC_URI',
'PV',
'DL_DIR',
@@ -1134,6 +1143,7 @@ def get_recipe_upgrade_status(recipes=None):
'UPSTREAM_CHECK_REGEX',
'UPSTREAM_CHECK_URI',
'UPSTREAM_VERSION_UNKNOWN',
+ 'UPSTREAM_STABLE_RELEASE_REGEX',
'RECIPE_MAINTAINER',
'RECIPE_NO_UPDATE_REASON',
'RECIPE_UPSTREAM_VERSION',
@@ -1180,12 +1190,13 @@ def get_recipe_upgrade_status(recipes=None):
data_copy.setVar(k, data.getVar(k))
data_copy_list.append(data_copy)
+ stable_copy_list.append(stable_upgrade)
recipeincludes[data.getVar('FILE')] = {'bbincluded':data.getVar('BBINCLUDED').split(),'pn':data.getVar('PN')}
from concurrent.futures import ProcessPoolExecutor
with ProcessPoolExecutor(max_workers=utils.cpu_count()) as executor:
- pkgs_list = executor.map(_get_recipe_upgrade_status, data_copy_list)
+ pkgs_list = executor.map(_get_recipe_upgrade_status, data_copy_list, stable_copy_list)
return _group_recipes(pkgs_list, _get_common_include_recipes(recipeincludes))
next prev parent reply other threads:[~2026-09-02 9:59 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-02 9:59 [wrynose][PATCH 00/20] backport inherit upstream-stable-release-point daniel.turull
2026-09-02 9:59 ` daniel.turull [this message]
2026-09-02 9:59 ` [wrynose][PATCH 02/20] upstream-stable-release-point.bbclass: add bbclass for stable point upgrade daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 03/20] devtool/upgrade.py: add --stable option daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 04/20] systemd: inherit upstream-stable-release-point daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 05/20] glib-2.0: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 06/20] dbus: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 07/20] xz: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 08/20] git: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 09/20] perl: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 10/20] libxml2: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 11/20] python3: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 12/20] openssl: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 13/20] binutils: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 14/20] libgcrypt: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 15/20] sqlite3: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 16/20] lttng-tools: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 17/20] util-linux: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 18/20] lttng-ust: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 19/20] babeltrace2: " daniel.turull
2026-09-02 9:59 ` [wrynose][PATCH 20/20] lttng-modules: " 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=20260902095920.2840293-2-daniel.turull@ericsson.com \
--to=daniel.turull@ericsson.com \
--cc=Qi.Chen@windriver.com \
--cc=antonin.godard@bootlin.com \
--cc=openembedded-core@lists.openembedded.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox