mbox series

[AUH,v3,0/4] upgrade_helper: scarthgap compatibility and stable updates

Message ID 20260504063614.3831203-1-daniel.turull@ericsson.com
Headers show
Series upgrade_helper: scarthgap compatibility and stable updates | expand

Message

Daniel Turull May 4, 2026, 6:36 a.m. UTC
From: Daniel Turull <daniel.turull@ericsson.com>

This patch series allow to run upgrade-helper both in master and scarthgap.

This allows to be able to automatically generate patches for updating patched or
minor versions, which can help on the security work fixing vulnerabilities.

When --stable is used, AUH restricts upgrades to patch-level by default.
Per-recipe policy can be overridden via AUH_UPGRADE_POLICY, which can be
set in a configuration file (e.g. local.conf) for testing across LTS
branches without modifying recipes:

  AUH_UPGRADE_POLICY:pn-curl = "minor"

or directly in the recipe file for upstream inclusion:

  AUH_UPGRADE_POLICY = "minor"

Supported values: "patch" (default), "minor", "none"

Daniel Turull (4):
  steps.py: resolve symlinks in recipe_dir
  upgrade-helper.py: Add compatibility with Yocto scarthgap
  upgrade-helper.py: Add stable option for patch-only upgrades
  upgrade-helper.py: Add resume option to skip already attempted recipes

Tested with on openembedded-core with latest scarthgap version (2026-04-07)
../auto-upgrade-helper/upgrade-helper.py all --stable

    TOTAL: attempted=135 succeeded=81(60.00%) failed=54(40.00%)

[1] https://github.com/Nordix/meta-binaryaudit
[2] https://git.openembedded.org/openembedded-core-contrib/log/?h=dturull/scarthgap-auh

Changes in v2:
- Split scarthgap compat into two commits: compatibility and
  fetch error handling
- Split --stable into its own commit (was squashed into changelog)
- Reorder commits so each feature is independently functional

Changes in v3:
- Drop layer-dir, scan_workers, changelog, prebuild, and fetch-error
  patches as per Alex Kanavin feedback (changelog to be integrated
  into devtool; prebuild covered by buildhistory; fetch error to be
  fixed in oe-core's get_recipe_upgrade_status)
- Drop --minor as separate flag; replace with per-recipe
  AUH_UPGRADE_POLICY variable (patch/minor/none) read from tinfoil
- Add steps.py symlink fix (new patch, split from scarthgap compat)
- Rework scarthgap compat: use shutil.which for bitbake-config-build
  fallback with D() logging, add tuple length assertion, fix env
  string bug (MACHINE=foo None when TCLIBC unset)
- Rework --stable: use bb.fetch2.Fetch public API (not FetchData),
  fix is_patch_update off-by-one length guard, fix _get_git_versions
  break-on-blank-line dropping remaining tags, optimize quick-path
  to skip tinfoil for recipes already at patch version
- Rework --resume: use succeed/failed symlinks created immediately
  (not at end of run) as Alex suggested, use name-based comparison
  instead of object identity for symlink classification, add
  no-previous-run warning
- Series reduced from 9 to 4 patches

Daniel Turull (4):
  steps.py: resolve symlinks in recipe_dir
  upgrade-helper.py: Add compatibility with Yocto scarthgap
  upgrade-helper.py: Add stable option for patch-only upgrades
  upgrade-helper.py: Add resume option to skip already attempted recipes

 modules/steps.py         |   2 +-
 modules/utils/bitbake.py |  11 ++-
 modules/utils/version.py | 185 +++++++++++++++++++++++++++++++++++++++
 upgrade-helper.py        | 162 ++++++++++++++++++++++++++++++++--
 4 files changed, 348 insertions(+), 12 deletions(-)
 create mode 100644 modules/utils/version.py