]> code.ossystems Code Review - openembedded-core.git/commitdiff
devtool: update-recipe: handle where SRC_URI is appended to with +=
authorPaul Eggleton <paul.eggleton@linux.intel.com>
Thu, 14 Apr 2016 08:24:18 +0000 (20:24 +1200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 15 Apr 2016 05:57:47 +0000 (06:57 +0100)
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>
meta/lib/oe/recipeutils.py

index 5e0fda523569b7ba5b70275b84dc0531e3ef19be..6c7adb5bdbf967a69dfd8408c9e1dc08410bca11 100644 (file)
@@ -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: