summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2016-04-14 20:24:18 +1200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-04-15 06:57:47 +0100
commitda5cd84794e1ab5c4efcd6250d3b93a46f610744 (patch)
tree833968d3db84499b590745b83db1a611bd2936a0
parent5d3d6224ec2abbbeb5b9a292d208040b89cc4b98 (diff)
downloadopenembedded-core-contrib-da5cd84794e1ab5c4efcd6250d3b93a46f610744.tar.gz
openembedded-core-contrib-da5cd84794e1ab5c4efcd6250d3b93a46f610744.tar.bz2
openembedded-core-contrib-da5cd84794e1ab5c4efcd6250d3b93a46f610744.zip
devtool: update-recipe: handle where SRC_URI is appended to with +=
If a recipe sets SRC_URI and then appends more items to it with += (such as the current rpm recipe in OE-Core), the code in patch_recipe_file() was failing with a traceback. Work around the problem for now by dropping the existing lines if we understand the operation, else just set the value outright at the end. This leaves something to be desired as it either doesn't respect the existing structure or leaves a mess but it's better than the current breakage. We'll need to come up with a better solution later. Part of the problem is the existing code structure doesn't allow for patch_recipe_file() to know what's being added or removed - it only knows the final value that the caller wants set. Fixes [YOCTO #9458]. Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oe/recipeutils.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/meta/lib/oe/recipeutils.py b/meta/lib/oe/recipeutils.py
index 5e0fda5235..6c7adb5bdb 100644
--- a/meta/lib/oe/recipeutils.py
+++ b/meta/lib/oe/recipeutils.py
@@ -235,9 +235,10 @@ def patch_recipe_file(fn, values, patch=False, relpath=''):
outputvalue(k, newlines, rewindcomments=True)
del remainingnames[k]
# Now change this variable, if it needs to be changed
- if varname in existingnames:
- outputvalue(varname, newlines)
- del remainingnames[varname]
+ if varname in existingnames and op in ['+=', '=', '=+']:
+ if varname in remainingnames:
+ outputvalue(varname, newlines)
+ del remainingnames[varname]
return None, None, 0, True
else:
if varname in values: