Hi,

I will be presenting in Nice 
https://github.com/Nordix/meta-binaryaudit/tree/devel which can help also 
identify more components that are good keeping backward compatibility. I could 
send the list of components that I have identified.

Qi, will you request to have this backported to the TSC? Once my devtool 
changelog patch get's merged I was planning to request it as well. Then we can 
have a powerful AUH tool to help to maintain version in LTS verifying backward 
compatibility or for selected components.

Best regards,
Daniel

> -----Original Message-----
> From: Alexander Kanavin <[email protected]>
> Sent: Wednesday, 13 May 2026 11:36
> To: [email protected]
> Cc: [email protected];
> [email protected]; Daniel Turull <[email protected]>
> Subject: Re: [OE-core][PATCH V5 1/7] recipeutils: add optional stable_upgrade
> parameter to get_recipe_upgrade_status
> 
> Thanks, I think this is good and ready. I'll pick the auh patch when bitbake 
> and
> core patches merge.
> 
> We can add more recipes over time (e.g. openssl, webkit, glib, ...), they 
> don't have
> to be in the initial patchset. Probably a review of
> scarthgap/whinlatter/walnascar/styhead commits can help identify more recipes
> with stable maintenance releases as well.
> 
> Daniel's changelog extraction patches will also help a lot, take a look at 
> them.
> 
> Alex
> 
> 
> On Wed, 13 May 2026 at 07:23, <[email protected]> wrote:
> >
> > From: Chen Qi <[email protected]>
> >
> > 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 <[email protected]>
> > ---
> >  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))
> >
> > --
> > 2.34.1
> >
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#236953): 
https://lists.openembedded.org/g/openembedded-core/message/236953
Mute This Topic: https://lists.openembedded.org/mt/119293054/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to