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

login
register
mail settings
Submitter Marius Avram
Date April 1, 2014, 10:59 a.m.
Message ID <1396349945-30180-1-git-send-email-marius.avram@intel.com>
Download mbox | patch
Permalink /patch/69817/
State New
Headers show

Comments

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
<original_recipe_name>-edited-timestamp-machine.rootfs.*
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

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:
             else:
                 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"
             imagefile.write(description_var)
 
+            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