Hi Stefan!
On Thu, Feb 10 2022 at 17:17 +0100, "Stefan Herbrechtsmeier"
<[email protected]> wrote:
> From: Stefan Herbrechtsmeier <[email protected]>
>
> Add support for packed images to wic rawcopy handler do minimize disk
> usage in deploy directory and reuse of packed images between wic and
> swupdate. Add `unpack` to sourceparams to unpack an bz2, gz and xz
> archives.
>
> Example:
> part / --source rawcopy
> --sourceparams="file=core-image-minimal-qemu.ext4.gz,unpack"
>
> Signed-off-by: Stefan Herbrechtsmeier <[email protected]>
>
> ---
>
> scripts/lib/wic/plugins/source/rawcopy.py | 28 ++++++++++++++++++++++-
> 1 file changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/lib/wic/plugins/source/rawcopy.py
> b/scripts/lib/wic/plugins/source/rawcopy.py
> index fa7b1eb8ac..7816e00e49 100644
> --- a/scripts/lib/wic/plugins/source/rawcopy.py
> +++ b/scripts/lib/wic/plugins/source/rawcopy.py
> @@ -4,6 +4,8 @@
>
> import logging
> import os
> +import signal
> +import subprocess
>
> from wic import WicError
> from wic.pluginbase import SourcePlugin
> @@ -38,6 +40,24 @@ class RawCopyPlugin(SourcePlugin):
>
> exec_cmd(cmd)
>
> + @staticmethod
> + def do_image_uncompression(src, dst, workdir):
> + def subprocess_setup():
> + # Python installs a SIGPIPE handler by default. This is usually
> not what
> + # non-Python subprocesses expect.
> + # SIGPIPE errors are known issues with gzip/bash
> + signal.signal(signal.SIGPIPE, signal.SIG_DFL)
> +
> + decompressor = {
> + ".bz2": "bzip2",
> + ".gz": "gzip",
> + ".xz": "xz"
> + }.get(os.path.splitext(src)[1])
> + if not decompressor:
> + raise WicError("Compression not support")
Here is a small typo: s/support/supported/ .
And what about substituting "Compression" by "Compressor" to express
that not compression in general but only this individual compressor is
currently unsupported? (Or even better: in addition explicitely name the
currently unsupported compressor in the error message?)
Best regards
Ulrich
> + cmd = "%s -dc %s > %s" % (decompressor, src, dst)
> + subprocess.call(cmd, preexec_fn=subprocess_setup, shell=True,
> cwd=workdir)
> +
> @classmethod
> def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
> oe_builddir, bootimg_dir, kernel_dir,
> @@ -56,7 +76,13 @@ class RawCopyPlugin(SourcePlugin):
> if 'file' not in source_params:
> raise WicError("No file specified")
>
> - src = os.path.join(kernel_dir, source_params['file'])
> + if 'unpack' in source_params:
> + img = os.path.join(kernel_dir, source_params['file'])
> + src = os.path.join(cr_workdir,
> os.path.splitext(source_params['file'])[0])
> + RawCopyPlugin.do_image_uncompression(img, src, cr_workdir)
> + else:
> + src = os.path.join(kernel_dir, source_params['file'])
> +
> dst = os.path.join(cr_workdir, "%s.%s" %
> (os.path.basename(source_params['file']), part.lineno))
>
> if not os.path.exists(os.path.dirname(dst)):
--
Pengutronix e.K. | Ulrich Ölmann |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#161657):
https://lists.openembedded.org/g/openembedded-core/message/161657
Mute This Topic: https://lists.openembedded.org/mt/89049086/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-