From: Babanpreet Singh <bbnpreetsingh@gmail.com>
To: openembedded-core@lists.openembedded.org
Cc: Randy MacLeod <randy.macleod@windriver.com>,
Gyorgy Sarvari <skandigraun@gmail.com>,
Chris Laplante <chris.laplante@agilent.com>,
Adrian Freihofer <adrian.freihofer@siemens.com>,
Peter Kjellerstedt <pkj@axis.com>,
Babanpreet Singh <bbnpreetsingh@gmail.com>
Subject: [PATCH 1/2] devtool: standard: fix finish/update-recipe for recipes using AUTOREV
Date: Mon, 13 Jul 2026 06:04:43 +0000 [thread overview]
Message-ID: <20260713060444.7-2-bbnpreetsingh@gmail.com> (raw)
In-Reply-To: <20260713060444.7-1-bbnpreetsingh@gmail.com>
For a recipe with SRCREV = "${AUTOREV}" (e.g. created by devtool add
--autorev), devtool finish and devtool update-recipe in srcrev mode
crash:
INFO: Updating SRCREV in recipe minit_git.bb
...
oe.patch.CmdError: Command Error: 'git format-patch --no-signature
--no-numbered AUTOINC -o /tmp/oepatchxu0ig0v0 -- .' exited with 128
Output: stderr: fatal: bad revision 'AUTOINC'
_update_recipe_srcrev() uses the recipe's SRCREV as the base revision
for exporting patches from the source tree, but for AUTOREV recipes
getVar('SRCREV') expands to the literal placeholder "AUTOINC", which is
not a valid git revision. Use the initial revision(s) recorded in the
workspace bbappend instead, as patch mode already does via
_get_patchset_revs().
Do not replace SRCREV with the current source tree HEAD for such
recipes either: pinning the revision on finish would silently drop the
floating revision the user explicitly asked for.
This is not a recent regression: the same crash reproduces at least as
far back as kirkstone, so it most likely dates back to the introduction
of devtool add --autorev.
[YOCTO #16354]
Reported-by: Gyorgy Sarvari <skandigraun@gmail.com>
AI-Generated: Uses Claude (claude-sonnet-5)
Signed-off-by: Babanpreet Singh <bbnpreetsingh@gmail.com>
---
scripts/lib/devtool/standard.py | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/scripts/lib/devtool/standard.py b/scripts/lib/devtool/standard.py
index 2a3a62d081..386e628d88 100644
--- a/scripts/lib/devtool/standard.py
+++ b/scripts/lib/devtool/standard.py
@@ -1530,7 +1530,18 @@ def _update_recipe_srcrev(recipename, workspace, srctree, rd, appendlayerdir, wi
old_srcrev = rd.getVar('SRCREV') or ''
if old_srcrev == "INVALID":
raise DevtoolError('Update mode srcrev is only valid for recipe fetched from an SCM repository')
- old_srcrev = {'.': old_srcrev}
+ autorev = old_srcrev == 'AUTOINC'
+ if autorev:
+ # SRCREV is set to "${AUTOREV}" so there is no fixed revision to
+ # use as the base for exporting patches; use the initial revision(s)
+ # recorded when the source tree was set up, as patch mode does
+ append = workspace[recipename]['bbappend']
+ old_srcrev, _, _, _ = _get_patchset_revs(srctree, append)
+ if not old_srcrev:
+ raise DevtoolError('Unable to find the initial revision of the '
+ 'source tree for %s in the workspace' % recipename)
+ else:
+ old_srcrev = {'.': old_srcrev}
# Get HEAD revision
try:
@@ -1545,7 +1556,8 @@ def _update_recipe_srcrev(recipename, workspace, srctree, rd, appendlayerdir, wi
destpath = None
remove_files = []
patchfields = {}
- patchfields['SRCREV'] = srcrev
+ if not autorev:
+ patchfields['SRCREV'] = srcrev
orig_src_uri = rd.getVar('SRC_URI', False) or ''
srcuri = orig_src_uri.split()
tempdir = tempfile.mkdtemp(prefix='devtool')
--
2.43.0
next prev parent reply other threads:[~2026-07-13 6:04 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-13 6:04 [PATCH 0/2] devtool: fix finish for recipes using AUTOREV Babanpreet Singh
2026-07-13 6:04 ` Babanpreet Singh [this message]
2026-07-13 6:04 ` [PATCH 2/2] oeqa/selftest/devtool: add test for finishing a recipe " Babanpreet Singh
2026-07-13 13:22 ` [OE-core] " Alexander Kanavin
2026-07-14 2:32 ` Babanpreet Singh
2026-07-14 3:20 ` [PATCH v2 1/2] devtool: standard: fix finish/update-recipe for recipes " Babanpreet Singh
2026-07-14 3:20 ` [PATCH v2 2/2] oeqa/selftest/devtool: exercise devtool finish on an AUTOREV recipe Babanpreet Singh
2026-07-14 10:16 ` Alexander Kanavin
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=20260713060444.7-2-bbnpreetsingh@gmail.com \
--to=bbnpreetsingh@gmail.com \
--cc=adrian.freihofer@siemens.com \
--cc=chris.laplante@agilent.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=pkj@axis.com \
--cc=randy.macleod@windriver.com \
--cc=skandigraun@gmail.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.