<div dir="ltr">LGTM</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jan 30, 2017 at 10:42 AM, Ed Bartosh <span dir="ltr">&lt;<a href="mailto:ed.bartosh@linux.intel.com" target="_blank">ed.bartosh@linux.intel.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, Jan 30, 2017 at 10:41:27AM -0800, Rick Altherr wrote:<br>
&gt; Agreed.  What if it was image_types_wic.bbclass and you did something<br>
&gt; similar to build_uboot() in image.bbclass?<br>
&gt;<br>
<br>
</span>I can do this for now:<br>
IMAGE_TYPE_wic = &quot;image_type_wic&quot;<br>
inherit ${IMAGE_TYPE_wic}<br>
<br>
which is the same as &#39;inherit image_type_wic&#39;, just takes 2 lines, but<br>
looks more consistent.<br>
<br>
does this look ok?<br>
<div class="HOEnZb"><div class="h5"><br>
&gt; On Mon, Jan 30, 2017 at 10:15 AM, Ed Bartosh &lt;<a href="mailto:ed.bartosh@linux.intel.com">ed.bartosh@linux.intel.com</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt; &gt; On Mon, Jan 30, 2017 at 10:25:59AM -0800, Rick Altherr wrote:<br>
&gt; &gt; &gt; I&#39;m not clear on which path is the preferred one.  There are lots of bits<br>
&gt; &gt; &gt; and pieces in image_types.bbclass that implement various image types.<br>
&gt; &gt; &gt;  uboot got added as a separate class at some point.  The comments in<br>
&gt; &gt; &gt; local.conf.sample.extended imply IMAGE_CLASSES should be used to load<br>
&gt; &gt; &gt; additional image_types_* classes to add support for additional image<br>
&gt; &gt; &gt; types.  Having the wic image type implemented in a separate<br>
&gt; &gt; &gt; image-wic.bbclass that is directly inherited by image.bbclass adds a 3rd<br>
&gt; &gt; &gt; approach.  Which one do we want contributors to use in the future?<br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; I didn&#39;t want to create even more confusion. What I wanted is stated in the<br>
&gt; &gt; commit message - to put existing wic code into a file for better<br>
&gt; &gt; maintenance. If this is more confusing than having wic code in different<br>
&gt; &gt; places of image.class and image_types.class then we can just drop this<br>
&gt; &gt; patch. However, I personally find it more maintainable this way.<br>
&gt; &gt;<br>
&gt; &gt; Suggesting people to change machine configs just because wic code is<br>
&gt; &gt; moved to separate file doesn&#39;t look good to me either.<br>
&gt; &gt;<br>
&gt; &gt; &gt; On Mon, Jan 30, 2017 at 9:45 AM, Ed Bartosh &lt;<a href="mailto:ed.bartosh@linux.intel.com">ed.bartosh@linux.intel.com</a>&gt;<br>
&gt; &gt; &gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; On Mon, Jan 30, 2017 at 09:47:42AM -0800, Rick Altherr wrote:<br>
&gt; &gt; &gt; &gt; &gt; Hmm.  In local.conf.sample.extended, I find:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; # Additional image generation features<br>
&gt; &gt; &gt; &gt; &gt; #<br>
&gt; &gt; &gt; &gt; &gt; # The following is a list of classes to import to use in the<br>
&gt; &gt; generation<br>
&gt; &gt; &gt; &gt; of<br>
&gt; &gt; &gt; &gt; &gt; images<br>
&gt; &gt; &gt; &gt; &gt; # currently an example class is image_types_uboot<br>
&gt; &gt; &gt; &gt; &gt; # IMAGE_CLASSES = &quot; image_types_uboot&quot;<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; Indeed, image_types_uboot isn&#39;t part of IMAGE_CLASSES by default.<br>
&gt; &gt; I&#39;d<br>
&gt; &gt; &gt; &gt; &gt; expect a machine config to add wic to IMAGE_CLASSES if it needs wic<br>
&gt; &gt; &gt; &gt; output.<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; So far all machine configs add wic to IMAGE_TYPES and it works just<br>
&gt; &gt; &gt; &gt; fine. Why to change?<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; On Mon, Jan 30, 2017 at 9:18 AM, Ed Bartosh &lt;<br>
&gt; &gt; <a href="mailto:ed.bartosh@linux.intel.com">ed.bartosh@linux.intel.com</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; On Mon, Jan 30, 2017 at 09:27:54AM -0800, Rick Altherr wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; Why didn&#39;t you make this image_types_wic.bbclass and use<br>
&gt; &gt; &gt; &gt; IMAGE_CLASSES to<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; load it?<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; Because of the following:<br>
&gt; &gt; &gt; &gt; &gt; &gt; - IMAGE_CLASSES[doc] = &quot;A list of classes that all images should<br>
&gt; &gt; &gt; &gt; &gt; &gt;   inherit.&quot; I&#39;m not sure all images should include wic class. I&#39;ll<br>
&gt; &gt; &gt; &gt; probably<br>
&gt; &gt; &gt; &gt; &gt; &gt;   make this inheritance conditional.<br>
&gt; &gt; &gt; &gt; &gt; &gt; - so far IMAGE_CLASSES is used for qemuboot, image_types,<br>
&gt; &gt; &gt; &gt; &gt; &gt;   image_types_uboot and testimage,<br>
&gt; &gt; &gt; &gt; &gt; &gt;   so the usage is more or less follows the description. wic is out<br>
&gt; &gt; of<br>
&gt; &gt; &gt; &gt; &gt; &gt;   that usage scenario, I believe.<br>
&gt; &gt; &gt; &gt; &gt; &gt; - &#39;inherit image_wic&#39; is more explicit than IMAGE_CLASSES +=<br>
&gt; &gt; &gt; &gt; &gt; &gt;   &quot;image_types&quot;\n inherit ${IMAGE_CLASSES}<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; On Fri, Jan 27, 2017 at 12:19 PM, Ed Bartosh &lt;<br>
&gt; &gt; &gt; &gt; <a href="mailto:ed.bartosh@linux.intel.com">ed.bartosh@linux.intel.com</a><br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; wrote:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; There is a lot of wic code in image.bbclass and<br>
&gt; &gt; image_types.bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Having all code separated in one file should make it more<br>
&gt; &gt; readable<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; and easier to maintain.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Signed-off-by: Ed Bartosh &lt;<a href="mailto:ed.bartosh@linux.intel.com">ed.bartosh@linux.intel.com</a>&gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ---<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  meta/classes/image-wic.bbclass   | 120<br>
&gt; &gt; &gt; &gt; ++++++++++++++++++++++++++++++<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +++++++++<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  meta/classes/image.bbclass       |  25 +-------<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  meta/classes/image_types.<wbr>bbclass |  95<br>
&gt; &gt; &gt; &gt; ------------------------------<br>
&gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  3 files changed, 122 insertions(+), 118 deletions(-)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  create mode 100644 meta/classes/image-wic.bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; diff --git a/meta/classes/image-wic.<wbr>bbclass<br>
&gt; &gt; &gt; &gt; b/meta/classes/image-wic.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; new file mode 100644<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; index 0000000..2acfd65<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; --- /dev/null<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +++ b/meta/classes/image-wic.<wbr>bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; @@ -0,0 +1,120 @@<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +# The WICVARS variable is used to define list of bitbake<br>
&gt; &gt; variables<br>
&gt; &gt; &gt; &gt; &gt; &gt; used<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; in wic code<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +# variables from this list is written to &lt;image&gt;.env file<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +WICVARS ?= &quot;\<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +           BBLAYERS IMGDEPLOYDIR DEPLOY_DIR_IMAGE FAKEROOTCMD<br>
&gt; &gt; &gt; &gt; HDDDIR<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; IMAGE_BASENAME IMAGE_BOOT_FILES \<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +           IMAGE_LINK_NAME IMAGE_ROOTFS INITRAMFS_FSTYPES<br>
&gt; &gt; INITRD<br>
&gt; &gt; &gt; &gt; &gt; &gt; ISODIR<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; MACHINE_ARCH RECIPE_SYSROOT_NATIVE \<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +           ROOTFS_SIZE STAGING_DATADIR STAGING_DIR<br>
&gt; &gt; STAGING_LIBDIR<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; TARGET_SYS&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +WKS_FILE ??= &quot;${IMAGE_BASENAME}.${MACHINE}.<wbr>wks&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +WKS_FILES ?= &quot;${WKS_FILE} ${IMAGE_BASENAME}.wks&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +WKS_SEARCH_PATH ?= &quot;${THISDIR}:${@&#39;:&#39;.join(&#39;%s/<wbr>wic&#39; % p for<br>
&gt; &gt; p in<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;${BBPATH}&#39;.split(&#39;:&#39;))}:${@&#39;:<wbr>&#39;.join(&#39;%s/scripts/lib/wic/<br>
&gt; &gt; &gt; &gt; canned-wks&#39;<br>
&gt; &gt; &gt; &gt; &gt; &gt; % l<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; for l in &#39;${BBPATH}:${COREBASE}&#39;.split(<wbr>&#39;:&#39;))}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +WKS_FULL_PATH = &quot;${@wks_search(&#39;${WKS_FILES}&#39;.<wbr>split(),<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;${WKS_SEARCH_PATH}&#39;) or &#39;&#39;}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +def wks_search(files, search_path):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    for f in files:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        if os.path.isabs(f):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            if os.path.exists(f):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                return f<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        else:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            searched = bb.utils.which(search_path, f)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            if searched:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                return searched<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +WIC_CREATE_EXTRA_ARGS ?= &quot;&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +IMAGE_CMD_wic () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +       out=&quot;${IMGDEPLOYDIR}/${IMAGE_<wbr>NAME}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +       wks=&quot;${WKS_FULL_PATH}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +       if [ -z &quot;$wks&quot; ]; then<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +               bbfatal &quot;No kickstart files from WKS_FILES were<br>
&gt; &gt; &gt; &gt; found:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ${WKS_FILES}. Please set WKS_FILE or WKS_FILES appropriately.&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +       fi<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +       BUILDDIR=&quot;${TOPDIR}&quot; wic create &quot;$wks&quot; --vars<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &quot;${STAGING_DIR}/${MACHINE}/<wbr>imgdata/&quot; -e &quot;${IMAGE_BASENAME}&quot; -o<br>
&gt; &gt; &gt; &gt; &quot;$out/&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ${WIC_CREATE_EXTRA_ARGS}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +       mv &quot;$out/$(basename &quot;${wks%.wks}&quot;)&quot;*.direct<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &quot;$out${IMAGE_NAME_SUFFIX}.wic&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +       rm -rf &quot;$out/&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +IMAGE_CMD_wic[vardepsexclude] = &quot;WKS_FULL_PATH WKS_FILES&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +# Rebuild when the wks file or vars in WICVARS change<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +USING_WIC = &quot;${@bb.utils.contains_any(&#39;<wbr>IMAGE_FSTYPES&#39;, &#39;wic<br>
&gt; &gt; &#39; + &#39;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;.join(&#39;wic.%s&#39; % c for c in &#39;${CONVERSIONTYPES}&#39;.split()),<br>
&gt; &gt; &#39;1&#39;,<br>
&gt; &gt; &gt; &gt; &#39;&#39;,<br>
&gt; &gt; &gt; &gt; &gt; &gt; d)}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +WKS_FILE_CHECKSUM = &quot;${@&#39;${WKS_FULL_PATH}:%s&#39; %<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; os.path.exists(&#39;${WKS_FULL_<wbr>PATH}&#39;) if &#39;${USING_WIC}&#39; else &#39;&#39;}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +do_image_wic[file-checksums] += &quot;${WKS_FILE_CHECKSUM}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +do_image_wic[depends] += &quot;wic-tools:do_build&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +python () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    if d.getVar(&#39;USING_WIC&#39;) and &#39;do_bootimg&#39; in d:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        bb.build.addtask(&#39;do_image_<wbr>wic&#39;, &#39;&#39;, &#39;do_bootimg&#39;, d)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +python do_write_wks_template () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    &quot;&quot;&quot;Write out expanded template contents to<br>
&gt; &gt; WKS_FULL_PATH.&quot;&quot;&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    import re<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    template_body = d.getVar(&#39;_WKS_TEMPLATE&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    # Remove any remnant variable references left behind by<br>
&gt; &gt; the<br>
&gt; &gt; &gt; &gt; &gt; &gt; expansion<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    # due to undefined variables<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    expand_var_regexp = re.compile(r&quot;\${[^{}@\n\t :]+}&quot;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    while True:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        new_body = re.sub(expand_var_regexp, &#39;&#39;,<br>
&gt; &gt; template_body)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        if new_body == template_body:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            break<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        else:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            template_body = new_body<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    wks_file = d.getVar(&#39;WKS_FULL_PATH&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    with open(wks_file, &#39;w&#39;) as f:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        f.write(template_body)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +python () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    if d.getVar(&#39;USING_WIC&#39;):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        wks_file_u = d.getVar(&#39;WKS_FULL_PATH&#39;, False)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        wks_file = d.expand(wks_file_u)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        base, ext = os.path.splitext(wks_file)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        if ext == &#39;.in&#39; and os.path.exists(wks_file):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            wks_out_file = os.path.join(d.getVar(&#39;<wbr>WORKDIR&#39;),<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; os.path.basename(base))<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            d.setVar(&#39;WKS_FULL_PATH&#39;, wks_out_file)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            d.setVar(&#39;WKS_TEMPLATE_PATH&#39;, wks_file_u)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            d.setVar(&#39;WKS_FILE_CHECKSUM&#39;,<br>
&gt; &gt; &gt; &gt; &#39;${WKS_TEMPLATE_PATH}:True&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            # We need to re-parse each time the file changes,<br>
&gt; &gt; and<br>
&gt; &gt; &gt; &gt; &gt; &gt; bitbake<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            # needs to be told about that explicitly.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            bb.parse.mark_dependency(d, wks_file)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            try:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                with open(wks_file, &#39;r&#39;) as f:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                    body = f.read()<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            except (IOError, OSError) as exc:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                pass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            else:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                # Previously, I used expandWithRefs to get the<br>
&gt; &gt; &gt; &gt; &gt; &gt; dependency<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; list<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                # and add it to WICVARS, but there&#39;s no point<br>
&gt; &gt; &gt; &gt; &gt; &gt; re-parsing<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; the<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                # file in process_wks_template as well, so<br>
&gt; &gt; just<br>
&gt; &gt; &gt; &gt; put<br>
&gt; &gt; &gt; &gt; &gt; &gt; it in<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                # a variable and let the metadata deal with<br>
&gt; &gt; the<br>
&gt; &gt; &gt; &gt; deps.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                d.setVar(&#39;_WKS_TEMPLATE&#39;, body)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                bb.build.addtask(&#39;do_write_<wbr>wks_template&#39;,<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;do_image_wic&#39;, None, d)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +#<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +# Write environment variables used by wic<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +# to tmp/sysroots/&lt;machine&gt;/<wbr>imgdata/&lt;image&gt;.env<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +#<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +python do_rootfs_wicenv () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    wicvars = d.getVar(&#39;WICVARS&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    if not wicvars:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        return<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    stdir = d.getVar(&#39;STAGING_DIR&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    outdir = os.path.join(stdir, d.getVar(&#39;MACHINE&#39;),<br>
&gt; &gt; &#39;imgdata&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    bb.utils.mkdirhier(outdir)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    basename = d.getVar(&#39;IMAGE_BASENAME&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +    with open(os.path.join(outdir, basename) + &#39;.env&#39;, &#39;w&#39;) as<br>
&gt; &gt; &gt; &gt; envf:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +        for var in wicvars.split():<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            value = d.getVar(var)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +            if value:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +                envf.write(&#39;%s=&quot;%s&quot;\n&#39; % (var, value.strip()))<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +addtask do_rootfs_wicenv after do_image before do_image_wic<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +do_rootfs_wicenv[vardeps] += &quot;${WICVARS}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +do_rootfs_wicenv[prefuncs] = &#39;set_image_size&#39;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; diff --git a/meta/classes/image.bbclass<br>
&gt; &gt; &gt; &gt; b/meta/classes/image.bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; index 13fd996..1a549e9 100644<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; --- a/meta/classes/image.bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +++ b/meta/classes/image.bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; @@ -192,6 +192,8 @@ python () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  IMAGE_CLASSES += &quot;image_types&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  inherit ${IMAGE_CLASSES}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +inherit image-wic<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  IMAGE_POSTPROCESS_COMMAND ?= &quot;&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  # some default locales<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; @@ -332,29 +334,6 @@ fakeroot python do_image_qa () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  }<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  addtask do_image_qa after do_image_complete before do_build<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -#<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -# Write environment variables used by wic<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -# to tmp/sysroots/&lt;machine&gt;/<wbr>imgdata/&lt;image&gt;.env<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -#<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -python do_rootfs_wicenv () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    wicvars = d.getVar(&#39;WICVARS&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    if not wicvars:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        return<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    stdir = d.getVar(&#39;STAGING_DIR&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    outdir = os.path.join(stdir, d.getVar(&#39;MACHINE&#39;),<br>
&gt; &gt; &#39;imgdata&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    bb.utils.mkdirhier(outdir)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    basename = d.getVar(&#39;IMAGE_BASENAME&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    with open(os.path.join(outdir, basename) + &#39;.env&#39;, &#39;w&#39;) as<br>
&gt; &gt; &gt; &gt; envf:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        for var in wicvars.split():<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            value = d.getVar(var)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            if value:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                envf.write(&#39;%s=&quot;%s&quot;\n&#39; % (var, value.strip()))<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -addtask do_rootfs_wicenv after do_image before do_image_wic<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -do_rootfs_wicenv[vardeps] += &quot;${WICVARS}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -do_rootfs_wicenv[prefuncs] = &#39;set_image_size&#39;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  def setup_debugfs_variables(d):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;      d.appendVar(&#39;IMAGE_ROOTFS&#39;, &#39;-dbg&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;      d.appendVar(&#39;IMAGE_LINK_NAME&#39;, &#39;-dbg&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; diff --git a/meta/classes/image_types.<wbr>bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; b/meta/classes/image_types.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; index ad95dc6..e2ecf93 100644<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; --- a/meta/classes/image_types.<wbr>bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; +++ b/meta/classes/image_types.<wbr>bbclass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; @@ -192,97 +192,6 @@ IMAGE_CMD_ubi () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  IMAGE_CMD_ubifs = &quot;mkfs.ubifs -r ${IMAGE_ROOTFS} -o<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ${IMGDEPLOYDIR}/${IMAGE_NAME}$<wbr>{IMAGE_NAME_SUFFIX}.ubifs<br>
&gt; &gt; &gt; &gt; &gt; &gt; ${MKUBIFS_ARGS}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -WKS_FILE ??= &quot;${IMAGE_BASENAME}.${MACHINE}.<wbr>wks&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -WKS_FILES ?= &quot;${WKS_FILE} ${IMAGE_BASENAME}.wks&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -WKS_SEARCH_PATH ?= &quot;${THISDIR}:${@&#39;:&#39;.join(&#39;%s/<wbr>wic&#39; % p for<br>
&gt; &gt; p in<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;${BBPATH}&#39;.split(&#39;:&#39;))}:${@&#39;:<wbr>&#39;.join(&#39;%s/scripts/lib/wic/<br>
&gt; &gt; &gt; &gt; canned-wks&#39;<br>
&gt; &gt; &gt; &gt; &gt; &gt; % l<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; for l in &#39;${BBPATH}:${COREBASE}&#39;.split(<wbr>&#39;:&#39;))}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -WKS_FULL_PATH = &quot;${@wks_search(&#39;${WKS_FILES}&#39;.<wbr>split(),<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;${WKS_SEARCH_PATH}&#39;) or &#39;&#39;}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -def wks_search(files, search_path):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    for f in files:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        if os.path.isabs(f):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            if os.path.exists(f):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                return f<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        else:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            searched = bb.utils.which(search_path, f)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            if searched:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                return searched<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -WIC_CREATE_EXTRA_ARGS ?= &quot;&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -IMAGE_CMD_wic () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -       out=&quot;${IMGDEPLOYDIR}/${IMAGE_<wbr>NAME}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -       wks=&quot;${WKS_FULL_PATH}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -       if [ -z &quot;$wks&quot; ]; then<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -               bbfatal &quot;No kickstart files from WKS_FILES were<br>
&gt; &gt; &gt; &gt; found:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ${WKS_FILES}. Please set WKS_FILE or WKS_FILES appropriately.&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -       fi<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -       BUILDDIR=&quot;${TOPDIR}&quot; wic create &quot;$wks&quot; --vars<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &quot;${STAGING_DIR}/${MACHINE}/<wbr>imgdata/&quot; -e &quot;${IMAGE_BASENAME}&quot; -o<br>
&gt; &gt; &gt; &gt; &quot;$out/&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ${WIC_CREATE_EXTRA_ARGS}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -       mv &quot;$out/$(basename &quot;${wks%.wks}&quot;)&quot;*.direct<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &quot;$out${IMAGE_NAME_SUFFIX}.wic&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -       rm -rf &quot;$out/&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -IMAGE_CMD_wic[vardepsexclude] = &quot;WKS_FULL_PATH WKS_FILES&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -# Rebuild when the wks file or vars in WICVARS change<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -USING_WIC = &quot;${@bb.utils.contains_any(&#39;<wbr>IMAGE_FSTYPES&#39;, &#39;wic<br>
&gt; &gt; &#39; + &#39;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;.join(&#39;wic.%s&#39; % c for c in &#39;${CONVERSIONTYPES}&#39;.split()),<br>
&gt; &gt; &#39;1&#39;,<br>
&gt; &gt; &gt; &gt; &#39;&#39;,<br>
&gt; &gt; &gt; &gt; &gt; &gt; d)}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -WKS_FILE_CHECKSUM = &quot;${@&#39;${WKS_FULL_PATH}:%s&#39; %<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; os.path.exists(&#39;${WKS_FULL_<wbr>PATH}&#39;) if &#39;${USING_WIC}&#39; else &#39;&#39;}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -do_image_wic[file-checksums] += &quot;${WKS_FILE_CHECKSUM}&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -do_image_wic[depends] += &quot;wic-tools:do_build&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -python () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    if d.getVar(&#39;USING_WIC&#39;) and &#39;do_bootimg&#39; in d:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        bb.build.addtask(&#39;do_image_<wbr>wic&#39;, &#39;&#39;, &#39;do_bootimg&#39;, d)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -python do_write_wks_template () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    &quot;&quot;&quot;Write out expanded template contents to<br>
&gt; &gt; WKS_FULL_PATH.&quot;&quot;&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    import re<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    template_body = d.getVar(&#39;_WKS_TEMPLATE&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    # Remove any remnant variable references left behind by<br>
&gt; &gt; the<br>
&gt; &gt; &gt; &gt; &gt; &gt; expansion<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    # due to undefined variables<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    expand_var_regexp = re.compile(r&quot;\${[^{}@\n\t :]+}&quot;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    while True:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        new_body = re.sub(expand_var_regexp, &#39;&#39;,<br>
&gt; &gt; template_body)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        if new_body == template_body:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            break<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        else:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            template_body = new_body<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    wks_file = d.getVar(&#39;WKS_FULL_PATH&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    with open(wks_file, &#39;w&#39;) as f:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        f.write(template_body)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -python () {<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -    if d.getVar(&#39;USING_WIC&#39;):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        wks_file_u = d.getVar(&#39;WKS_FULL_PATH&#39;, False)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        wks_file = d.expand(wks_file_u)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        base, ext = os.path.splitext(wks_file)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -        if ext == &#39;.in&#39; and os.path.exists(wks_file):<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            wks_out_file = os.path.join(d.getVar(&#39;<wbr>WORKDIR&#39;),<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; os.path.basename(base))<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            d.setVar(&#39;WKS_FULL_PATH&#39;, wks_out_file)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            d.setVar(&#39;WKS_TEMPLATE_PATH&#39;, wks_file_u)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            d.setVar(&#39;WKS_FILE_CHECKSUM&#39;,<br>
&gt; &gt; &gt; &gt; &#39;${WKS_TEMPLATE_PATH}:True&#39;)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            # We need to re-parse each time the file changes,<br>
&gt; &gt; and<br>
&gt; &gt; &gt; &gt; &gt; &gt; bitbake<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            # needs to be told about that explicitly.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            bb.parse.mark_dependency(d, wks_file)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            try:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                with open(wks_file, &#39;r&#39;) as f:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                    body = f.read()<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            except (IOError, OSError) as exc:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                pass<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -            else:<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                # Previously, I used expandWithRefs to get the<br>
&gt; &gt; &gt; &gt; &gt; &gt; dependency<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; list<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                # and add it to WICVARS, but there&#39;s no point<br>
&gt; &gt; &gt; &gt; &gt; &gt; re-parsing<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; the<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                # file in process_wks_template as well, so<br>
&gt; &gt; just<br>
&gt; &gt; &gt; &gt; put<br>
&gt; &gt; &gt; &gt; &gt; &gt; it in<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                # a variable and let the metadata deal with<br>
&gt; &gt; the<br>
&gt; &gt; &gt; &gt; deps.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                d.setVar(&#39;_WKS_TEMPLATE&#39;, body)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -                bb.build.addtask(&#39;do_write_<wbr>wks_template&#39;,<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &#39;do_image_wic&#39;, None, d)<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -}<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  EXTRA_IMAGECMD = &quot;&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  inherit siteinfo<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; @@ -380,7 +289,3 @@ IMAGE_EXTENSION_live = &quot;hddimg iso&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  # The IMAGE_TYPES_MASKED variable will be used to mask out<br>
&gt; &gt; from<br>
&gt; &gt; &gt; &gt; the<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; IMAGE_FSTYPES,<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  # images that will not be built at do_rootfs time: vmdk, vdi,<br>
&gt; &gt; &gt; &gt; qcow2,<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; hdddirect, hddimg, iso, etc.<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;  IMAGE_TYPES_MASKED ?= &quot;&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -# The WICVARS variable is used to define list of bitbake<br>
&gt; &gt; variables<br>
&gt; &gt; &gt; &gt; &gt; &gt; used<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; in wic code<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -# variables from this list is written to &lt;image&gt;.env file<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; -WICVARS ?= &quot;BBLAYERS IMGDEPLOYDIR DEPLOY_DIR_IMAGE FAKEROOTCMD<br>
&gt; &gt; &gt; &gt; HDDDIR<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; IMAGE_BASENAME IMAGE_BOOT_FILES IMAGE_LINK_NAME IMAGE_ROOTFS<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; INITRAMFS_FSTYPES INITRD ISODIR MACHINE_ARCH<br>
&gt; &gt; RECIPE_SYSROOT_NATIVE<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ROOTFS_SIZE STAGING_DATADIR STAGING_DIR STAGING_LIBDIR<br>
&gt; &gt; TARGET_SYS&quot;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; 2.1.4<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; ______________________________<wbr>_________________<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; Openembedded-core mailing list<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; <a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; <a href="http://lists.openembedded.org/mailman/listinfo/openembedded-" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-</a><br>
&gt; &gt; core<br>
&gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; &gt; &gt; Regards,<br>
&gt; &gt; &gt; &gt; &gt; &gt; Ed<br>
&gt; &gt; &gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; --<br>
&gt; &gt; &gt; &gt; Regards,<br>
&gt; &gt; &gt; &gt; Ed<br>
&gt; &gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; --<br>
&gt; &gt; Regards,<br>
&gt; &gt; Ed<br>
&gt; &gt;<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888">--<br>
--<br>
Regards,<br>
Ed<br>
</font></span></blockquote></div><br></div>