[bitbake-devel] cooker: Overwrite IMAGE_BASENAME to default in custom image

Submitted by Marius Avram on April 1, 2014, 10:59 a.m.


Message ID 1396349945-30180-1-git-send-email-marius.avram@intel.com
State New
Headers show

Commit Message

Marius Avram April 1, 2014, 10:59 a.m.
This solves a problem of custom images which inherit a base
image with IMAGE_BASENAME overwritten in their recipe by a
different value than its default one: ${PN}.

The value of IMAGE_BASE causes a crash when hob will try to
create symbolic links to the resulting images from the deploy
directory, because it will look for names similar to
which might be different from the actual resulting image.

The solution is to simply overwrite IMAGE_BASENAME in the
custom recipe to the default value in the case IMAGE_BASENAME
is found in the base recipe.

Some recipes which were affected by this problem are those
from meta-fsl-demos (e.g.: fsl-image-test).

[YOCTO #6017]

Signed-off-by: Marius Avram <marius.avram@intel.com>
 bitbake/lib/bb/cooker.py |   11 +++++++++++
 1 file changed, 11 insertions(+)

Patch hide | download patch | download mbox

diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 07202e3..ea861fa 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -1219,6 +1219,7 @@  class BBCooker:
         Create a new image with a "require"/"inherit" base_image statement
+        import re
         if timestamp:
             image_name = os.path.splitext(image)[0]
             timestr = time.strftime("-%Y%m%d-%H%M%S")
@@ -1229,9 +1230,14 @@  class BBCooker:
                 dest = image
+        basename = False
         if base_image:
             with open(base_image, 'r') as f:
                 require_line = f.readline()
+                p = re.compile("IMAGE_BASENAME *=")
+                for line in f:
+                    if p.search(line):
+                        basename = True
         with open(dest, "w") as imagefile:
             if base_image is None:
@@ -1250,6 +1256,11 @@  class BBCooker:
             description_var = "DESCRIPTION = \"" + description + "\"\n"
+            if basename:
+                # If this is overwritten in a inherited image, reset it to default
+                image_basename = "IMAGE_BASENAME = \"${PN}\"\n"
+                imagefile.write(image_basename)
         self.state = state.initial
         if timestamp:
             return timestr