From b5dd8c128624cb77576d692b68e24691d4d9a96d Mon Sep 17 00:00:00 2001 From: John Klug Date: Tue, 31 Jul 2018 17:48:08 -0500 Subject: mLinux 4 --- scripts/lib/wic/plugins/imager/direct_plugin.py | 102 ++++++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 scripts/lib/wic/plugins/imager/direct_plugin.py (limited to 'scripts/lib/wic/plugins/imager/direct_plugin.py') diff --git a/scripts/lib/wic/plugins/imager/direct_plugin.py b/scripts/lib/wic/plugins/imager/direct_plugin.py new file mode 100644 index 0000000..6d3f46c --- /dev/null +++ b/scripts/lib/wic/plugins/imager/direct_plugin.py @@ -0,0 +1,102 @@ +# ex:ts=4:sw=4:sts=4:et +# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- +# +# Copyright (c) 2013, Intel Corporation. +# All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# DESCRIPTION +# This implements the 'direct' imager plugin class for 'wic' +# +# AUTHORS +# Tom Zanussi +# + +from wic.utils import errors +from wic.conf import configmgr + +import wic.imager.direct as direct +from wic.pluginbase import ImagerPlugin + +class DirectPlugin(ImagerPlugin): + """ + Install a system into a file containing a partitioned disk image. + + An image file is formatted with a partition table, each partition + created from a rootfs or other OpenEmbedded build artifact and dd'ed + into the virtual disk. The disk image can subsequently be dd'ed onto + media and used on actual hardware. + """ + + name = 'direct' + + @classmethod + def __rootfs_dir_to_dict(cls, rootfs_dirs): + """ + Gets a string that contain 'connection=dir' splitted by + space and return a dict + """ + krootfs_dir = {} + for rootfs_dir in rootfs_dirs.split(' '): + key, val = rootfs_dir.split('=') + krootfs_dir[key] = val + + return krootfs_dir + + @classmethod + def do_create(cls, opts, *args): + """ + Create direct image, called from creator as 'direct' cmd + """ + if len(args) != 8: + raise errors.Usage("Extra arguments given") + + native_sysroot = args[0] + kernel_dir = args[1] + bootimg_dir = args[2] + rootfs_dir = args[3] + + creatoropts = configmgr.create + ksconf = args[4] + + image_output_dir = args[5] + oe_builddir = args[6] + compressor = args[7] + + krootfs_dir = cls.__rootfs_dir_to_dict(rootfs_dir) + + configmgr._ksconf = ksconf + + creator = direct.DirectImageCreator(oe_builddir, + image_output_dir, + krootfs_dir, + bootimg_dir, + kernel_dir, + native_sysroot, + compressor, + creatoropts) + + try: + creator.create() + creator.assemble() + creator.finalize() + creator.print_outimage_info() + + except errors.CreatorError: + raise + finally: + creator.cleanup() + + return 0 -- cgit v1.2.3