summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMing Liu <liu.ming50@gmail.com>2019-02-12 16:20:01 +0100
committerPatrick Vacek <patrickvacek@gmail.com>2019-04-29 09:17:37 +0200
commit8da4dd635cf5284998d1770ddb18d98d2fe5b2dd (patch)
tree9577860d0e3ca95fa59eab57ed877b69a2c9d51f
parentc9ed994ecd24a13b2177cfd7813490f90b004efb (diff)
downloadmeta-updater-8da4dd635cf5284998d1770ddb18d98d2fe5b2dd.tar.gz
wic:plugins:otaimage.py: fix a potential issue
do_image_wic task is a standalone task that depending on do_image_ota_ext4, so it's possible that do_image_wic runs (taskhash contaminated) but do_image_ota_ext4 does not (taskhash not contaminated), in which case, the otaimage would be in DEPLOY_DIR_IMAGE instead of in IMGDEPLOYDIR, so we need check both of them. Also, the logger.error is not supposed to raise a error, it just prints out a error message, so we should use WicError. And another typo is it checks IMGDEPLOYDIR but reports DEPLOY_DIR_IMAGE not exist, also fix that. Signed-off-by: Ming Liu <liu.ming50@gmail.com>
-rw-r--r--scripts/lib/wic/plugins/source/otaimage.py24
1 files changed, 18 insertions, 6 deletions
diff --git a/scripts/lib/wic/plugins/source/otaimage.py b/scripts/lib/wic/plugins/source/otaimage.py
index ee8088b..e7f3e75 100644
--- a/scripts/lib/wic/plugins/source/otaimage.py
+++ b/scripts/lib/wic/plugins/source/otaimage.py
@@ -19,6 +19,7 @@ import logging
19import os 19import os
20import sys 20import sys
21 21
22from wic import WicError
22from wic.plugins.source.rawcopy import RawCopyPlugin 23from wic.plugins.source.rawcopy import RawCopyPlugin
23from wic.misc import get_bitbake_var 24from wic.misc import get_bitbake_var
24 25
@@ -32,6 +33,18 @@ class OTAImagePlugin(RawCopyPlugin):
32 name = 'otaimage' 33 name = 'otaimage'
33 34
34 @classmethod 35 @classmethod
36 def _get_src_file(cls, image_dir_var):
37 """
38 Get OTA image file from image directory variable.
39 """
40 image_dir = get_bitbake_var(image_dir_var)
41 if not image_dir:
42 raise WicError("Couldn't find %s, exiting" % image_dir_var)
43
44 image_file = image_dir + "/" + get_bitbake_var("IMAGE_LINK_NAME") + ".otaimg"
45 return image_file if os.path.exists(image_file) else ""
46
47 @classmethod
35 def do_prepare_partition(cls, part, source_params, cr, cr_workdir, 48 def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
36 oe_builddir, bootimg_dir, kernel_dir, 49 oe_builddir, bootimg_dir, kernel_dir,
37 rootfs_dir, native_sysroot): 50 rootfs_dir, native_sysroot):
@@ -39,13 +52,12 @@ class OTAImagePlugin(RawCopyPlugin):
39 Called to do the actual content population for a partition i.e. it 52 Called to do the actual content population for a partition i.e. it
40 'prepares' the partition to be incorporated into the image. 53 'prepares' the partition to be incorporated into the image.
41 """ 54 """
42 bootimg_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
43 if not bootimg_dir:
44 logger.error("Couldn't find DEPLOY_DIR_IMAGE, exiting\n")
45
46 logger.debug('Bootimg dir: %s' % bootimg_dir)
47 55
48 src = bootimg_dir + "/" + get_bitbake_var("IMAGE_LINK_NAME") + ".otaimg" 56 src = cls._get_src_file("IMGDEPLOYDIR")
57 if not src:
58 src = cls._get_src_file("DEPLOY_DIR_IMAGE")
59 if not src:
60 raise WicError("Couldn't find ota image in IMGDEPLOYDIR or DEPLOY_DIR_IMAGE, exiting")
49 61
50 logger.debug('Preparing partition using image %s' % (src)) 62 logger.debug('Preparing partition using image %s' % (src))
51 source_params['file'] = src 63 source_params['file'] = src