summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMing Liu <liu.ming50@gmail.com>2019-02-12 16:20:01 +0100
committerMing Liu <liu.ming50@gmail.com>2019-02-12 17:19:15 +0100
commit27ee48ec353caa5223b7a83c715dbe9757adb1bf (patch)
tree6b04f46757d069d99157921ddc0525510e32cbad
parent29c3476c8286649210ab8d731bfa063c76907f3b (diff)
downloadmeta-updater-27ee48ec353caa5223b7a83c715dbe9757adb1bf.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 4b30776..1f82af7 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") + ".ota-ext4"
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("IMGDEPLOYDIR")
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") + ".ota-ext4" 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