]> code.ossystems Code Review - openembedded-core.git/commitdiff
image_types.bbclass: Don't try to create ubi symlink twice
authorMike Looijmans <mike.looijmans@topic.nl>
Tue, 15 Sep 2015 09:50:39 +0000 (11:50 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 22 Sep 2015 17:05:53 +0000 (18:05 +0100)
Fixes b6e64de541b37 "Restore compatibility with previous UBI filesystems"

The multivolume UBI code creates symlinks for each volume. If the volume name
is empty, it will create a symlink that the rootfs code will attempt to
create again later, resulting in a crash like this (unless IMAGE_LINK_NAME
is blank):
  ERROR: Error executing a python function in .../recipes-core/images/my-image.bb:
  File: '.../oe-core/meta/lib/oe/image.py', lineno: 203, function: _create_symlinks
   *** 0203:                    os.symlink(src, dst)
  Exception: OSError: [Errno 17] File exists

To prevent this from happening, only create symlinks to volumes that have
a name, and let the rootfs script create the default symlink later.

Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl>
Signed-off-by: Ross Burton <ross.burton@intel.com>
meta/classes/image_types.bbclass

index 306403e310826d0d004fdd1cea68e241f4e8fddb..afa2e8eb8f107cc7715b8b1dbb5abb46f941d36f 100644 (file)
@@ -139,17 +139,19 @@ multiubi_mkfs() {
        # Cleanup cfg file
        mv ubinize${vname}.cfg ${DEPLOY_DIR_IMAGE}/
 
-       # Create own symlink
-       cd ${DEPLOY_DIR_IMAGE}
-       if [ -e ${IMAGE_NAME}${vname}.rootfs.ubifs ]; then
-               ln -sf ${IMAGE_NAME}${vname}.rootfs.ubifs \
-               ${IMAGE_LINK_NAME}${vname}.ubifs
-       fi
-       if [ -e ${IMAGE_NAME}${vname}.rootfs.ubi ]; then
-               ln -sf ${IMAGE_NAME}${vname}.rootfs.ubi \
-               ${IMAGE_LINK_NAME}${vname}.ubi
+       # Create own symlinks for 'named' volumes
+       if [ -n "$vname" ]; then
+               cd ${DEPLOY_DIR_IMAGE}
+               if [ -e ${IMAGE_NAME}${vname}.rootfs.ubifs ]; then
+                       ln -sf ${IMAGE_NAME}${vname}.rootfs.ubifs \
+                       ${IMAGE_LINK_NAME}${vname}.ubifs
+               fi
+               if [ -e ${IMAGE_NAME}${vname}.rootfs.ubi ]; then
+                       ln -sf ${IMAGE_NAME}${vname}.rootfs.ubi \
+                       ${IMAGE_LINK_NAME}${vname}.ubi
+               fi
+               cd -
        fi
-       cd -
 }
 
 IMAGE_CMD_multiubi () {