Patchwork [0/3] 'wic'- OpenEmbedded Image Creator

login
register
mail settings
Submitter tom.zanussi@linux.intel.com
Date Sept. 27, 2013, 2:17 a.m.
Message ID <cover.1380234931.git.tom.zanussi@linux.intel.com>
Download mbox
Permalink /patch/59059/
State New
Headers show

Pull-request

git://git.yoctoproject.org/poky-contrib.git tzanussi/wic-v1

Comments

tom.zanussi@linux.intel.com - Sept. 27, 2013, 2:17 a.m.
This patchset implements a new command named 'wic' (for OpenEmbedded
Image Creator).  Please see [YOCTO #3847] for extensive background on
what's implemented here.

This is a completely independent standalone utility that initially
provides easier-to-use and more flexible replacements for a couple
bits of existing functionality in oe-core: directdisk.bbclass and
mkefidisk.sh.  The more interesting aspect of the current patchset
though is that the replaced (this patchset doesn't actually replace
those scripts, however) scripts are implemented by a general-purpose
partitioning 'language' based on Redhat kickstart syntax (with the
underlying code borrowed from Tizen mic, which in turn was borrowed
from Meego mic, in turn borrowed from Fedora livecd, etc.).

Though this patchset only uses the kickstart syntax related to
partitioning and bootloaders and only for creating images, because the
code is based on the mic/pykickstart code, future deployment efforts
such as those partially described by [YOCTO #4106], but also others
including package selection (from e.g. binary feeds) and deployment
configuration of users/network/services, etc, could be implemented
under this framework, considering that all of those are implemented
in some form by the base system.

The current patchset has successfully been used to generate and boot
images from core-image-minimal build artifacts using the 'mkefidisk'
kickstart file (in scripts/lib/image/canned-wks) on minnow and the
'directdisk' kickstart file using both core-image-minimal and
core-image-sato artifacts for crownbay.

The 'wic' command generates partitioned images from existing
OpenEmbedded build artifacts.  Image generation is driven by
partitioning commands contained in an 'Openembedded kickstart' (.wks)
file specified either directly on the command-line or as one of a
selection of canned .wks files (see 'wic list images').  When applied
to a given set of build artifacts, the result is an image or set of
images that can be directly written onto media and used on a
particular system.

It can be used in 'raw' mode, where artifacts are explicitly specified
via command-line arguments (see example below), or it can be used in a
more easily usable 'cooked' mode which uses the current MACHINE
setting and a specified image name to automatically locate the
artifacts used to create the image.

OE kickstart files (.wks) can of course be specified directly on the
command-line, but the user can also choose from a set of 'canned' .wks
files available via the 'wic list images' command (example below).

In any case, the prerequisite for generating any image is to have the
build artifacts already available.  The below examples assume the user
has already build a 'core-image-minimal' for a specific machine
(future versions won't require this redundant step, but for now that's
typically how build artifacts get generated).

The other prerequisite is to source the build environment:

$ source oe-init-build-env

To start out with, we'll generate an image from one of the canned .wks
files.  The following generates a list of availailable images:

$ wic list images
  mkefidisk             Create an EFI disk image
  directdisk            Create a 'pcbios' direct disk image

You can get more information about any of the available images by typing
'wic list xxx help', where 'xxx' is one of the image names:

$ wic list mkefidisk help

Creates a partitioned EFI disk image that the user
can directly dd to boot media.

At any time, you can get help on the 'wic' command or any subcommand
(currently 'list' and 'create').  For instance, to get the description
of 'wic create' command and its parameters:

$ wic create

Usage: 

 Create a new OpenEmbedded image

 usage: wic create <wks file or image name> [-o <DIRNAME> | --outdir <DIRNAME>]
            [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
            [-e | --image-name] [-r, --rootfs-dir] [-b, --bootimg-dir]
            [-k, --kernel-dir] [-n, --native-sysroot] [-s, --skip-build-check]

 This command creates an OpenEmbedded image based on the 'OE kickstart
 commands' found in the <wks file>.

 The -o option can be used to place the image in a directory with a
 different name and location.

 See 'wic help create' for more detailed instructions.

...

As mentioned in the command, you can get even more detailed information
by adding 'help' to the above:

$ wic help create

NAME
    wic create - Create a new OpenEmbedded image

SYNOPSIS
    wic create <wks file or image name> [-o <DIRNAME> | --outdir
<DIRNAME>]
        [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
        [-e | --image-name] [-r, --rootfs-dir] [-b, --bootimg-dir]
        [-k, --kernel-dir] [-n, --native-sysroot] [-s,
--skip-build-check]

DESCRIPTION
    This command creates an OpenEmbedded image based on the 'OE
    kickstart commands' found in the <wks file>.

    In order to do this, wic needs to know the locations of the
    various build artifacts required to build the image.

    Users can explicitly specify the build artifact locations using
    the -r, -b, -k, and -n options.  See below for details on where
    the corresponding artifacts are typically found in a normal
    OpenEmbedded build.

    Alternatively, users can use the -e option to have 'mic' determine
    those locations for a given image.  If the -e option is used, the
    user needs to have set the appropriate MACHINE variable in
    local.conf, and have sourced the build environment.

    The -e option is used to specify the name of the image to use the
    artifacts from e.g. core-image-sato.

    The -r option is used to specify the path to the /rootfs dir to
    use as the .wks rootfs source.

    The -b option is used to specify the path to the dir containing
    the boot artifacts (e.g. /EFI or /syslinux dirs) to use as the
    .wks bootimg source.

    The -k option is used to specify the path to the dir containing
    the kernel to use in the .wks bootimg.

    The -n option is used to specify the path to the native sysroot
    containing the tools to use to build the image.

    The -s option is used to skip the build check.  The build check is
    a simple sanity check used to determine whether the user has
    sourced the build environment so that the -e option can operate
    correctly.  If the user has specified the build artifact locations
    explicitly, 'wic' assumes the user knows what he or she is doing
    and skips the build check.

    When 'wic -e' is used, the locations for the build artifacts
    values are determined by 'wic -e' from the output of the 'bitbake
    -e' command given an image name e.g. 'core-image-minimal' and a
    given machine set in local.conf.  In that case, the image is
    created as if the following 'bitbake -e' variables were used:

    -r:        IMAGE_ROOTFS
    -k:        STAGING_KERNEL_DIR
    -n:        STAGING_DIR_NATIVE
    -b:        HDDDIR and STAGING_DATA_DIR (handlers decide which to
use)

    If 'wic -e' is not used, the user needs to select the appropriate
    value for -b (as well as -r, -k, and -n).

    The -o option can be used to place the image in a directory with a
    different name and location.

    As an alternative to the wks file, the image-specific properties
    that define the values that will be used to generate a particular
    image can be specified on the command-line using the -i option and
    supplying a JSON object consisting of the set of name:value pairs
    needed by image creation.

    The set of properties available for a given image type can be
    listed using the 'wic list' command.

So, the easiest way to create an image is to use the -e option with a
canned .wks file.  To use the -e option, you need to specify the image
used to generate the artifacts and you actually need to have the MACHINE
used to build them specified in your local.conf (these requirements
aren't necessary if you aren't using the -e options.  Below, we generate
a directdisk image, pointing the process at the core-image-minimal
artifacts for the current MACHINE:

$ wic create directdisk -e core-image-minimal

Checking basic build environment...
Done.

Creating image(s)...

Info: The new image(s) can be found here:
  /var/tmp/wic/build/directdisk-201309252350-sda.direct

The following build artifacts were used to create the image(s):

ROOTFS_DIR:      /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs
BOOTIMG_DIR:     /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share
KERNEL_DIR:      /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
NATIVE_SYSROOT:  /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel

The image(s) were created using OE kickstart file:
  /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisk.wks

The output shows the name and location of the image created, and so that
you know exactly what was used to generate the image, each of the
artifacts and the kickstart file used.

Similarly, I can create a 'mkefidisk' image in the same way (notice that
I'm using a different machine - because I'm using the -e option, I
needed to change the MACHINE in my local.conf):

$ wic create mkefidisk -e core-image-minimal
Checking basic build environment...
Done.

Creating image(s)...

Info: The new image(s) can be found here:
  /var/tmp/wic/build/mkefidisk-201309260027-sda.direct

The following build artifacts were used to create the image(s):

ROOTFS_DIR:      /home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/rootfs
BOOTIMG_DIR:     /home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/core-image-minimal-1.0/hddimg
KERNEL_DIR:      /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel
NATIVE_SYSROOT:  /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel

The image(s) were created using OE kickstart file:
  /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/mkefidisk.wks

Here's an example that doesn't take the easy way out and manually
specifies each build artifact, along with a non-canned .wks file, and
also uses the -o option to have wic create the output somewhere other
than the default /var/tmp/wic:

$ wic create ~/test.wks -o /home/trz/testwic
--rootfs-dir /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs --bootimg-dir /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share --kernel-dir /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel --native-sysroot /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux

Creating image(s)...

Info: The new image(s) can be found here:
  /home/trz/testwic/build/test-201309260032-sda.direct

The following build artifacts were used to create the image(s):

ROOTFS_DIR:      /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs
BOOTIMG_DIR:     /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share
KERNEL_DIR:      /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
NATIVE_SYSROOT:  /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel

The image(s) were created using OE kickstart file:
  /home/trz/test.wks

Finally, here's an example of the actual partition language commands
used to generate the mkefidisk image i.e. these are the contents of the
mkefidisk.wks OE kickstart file:

# short-description: Create an EFI disk image
# long-description: Creates a partitioned EFI disk image that the user
# can directly dd to boot media.

part /boot --source bootimg --ondisk sda --fstype=efi --label msdos --active --align 1024

part / --source rootfs --ondisk sda --fstype=ext3 --label platform --align 1024

part swap --ondisk sda --size 44 --label swap1 --fstype=swap

bootloader  --timeout=10  --append="rootwait rootfstype=ext3 console=ttyPCH0,115200 console=tty0 vmalloc=256MB snd-hda-intel.enable_msi=0"

The initial 'wic' implementation here supports only the basic
kickstart partitioning commands: 'partition' (or 'part' for short) and
'bootloader'.

Currently, only the options used in the 'canned' scripts (in
scripts/lib/image/canned-wks) are supported.

They're listed below and mostly follow the syntax and meaning of the
standard kickstart options for those commands:

http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition
http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader

For the 'partition' ('part') command, here are the supported options:

--source
	bootimg
	rootfs
--ondisk sda
--size size (in mB)
--fstype
	msdos
	efi
	ext4
	ext3
	ext2
	btrfs
	swap
--label label
--active
---align (in kB)

The --source option is a wic-specific option that can currently have
one of two values, 'bootimg' or 'rootfs'.

If '--source rootfs' is used, it tells the wic command to create a
partition as large as needed to fill with the contents of /rootfs
(specified by the -r 'wic' option) and to fill it with the contents of
/rootfs.

If '--source bootimg' is used, it tells the wic command to create a
partition as large as needed to fill with the contents of the boot
partition (specified by the -b 'wic' option).  Exactly what those
contents are depend on the value of the --fstype option for that
partition.  If '--fstype=efi' is specified, the boot artifacts
contained in HDDDIR are used, and if '--fstype=msdos' is specified,
the boot artifacts found in STAGING_DATADIR are used.

The '--align' option is a mic-specific option that says to start a
partition on an x kB boundary.

For the 'bootloader' command, these are the supported options:

--timeout
--append

Future updates will implement more options - using anything not
explicitly supported can result in unpredicable results.


The following changes since commit b049d532f6e0ab9e458e486f81b00be47ee69acf:

  testimage: Exclude BB_ORIGENV variable (2013-09-26 17:27:02 +0100)

are available in the git repository at:

  git://git.yoctoproject.org/poky-contrib.git tzanussi/wic-v1
  http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=tzanussi/wic-v1

Tom Zanussi (3):
  wic: Initial code for wic (OpenEmbedded Image Creator)
  wic: Add mic w/pykickstart
  wic: Add OpenEmbedded-specific implementation

 scripts/lib/image/__init__.py                      |   22 +
 scripts/lib/image/canned-wks/directdisk.wks        |   10 +
 scripts/lib/image/canned-wks/mkefidisk.wks         |   11 +
 scripts/lib/image/config/wic.conf                  |    7 +
 scripts/lib/image/engine.py                        |  280 ++++
 scripts/lib/image/help.py                          |  311 ++++
 scripts/lib/mic/3rdparty/pykickstart/base.py       |  466 ++++++
 .../mic/3rdparty/pykickstart/commands/__init__.py  |   26 +
 .../3rdparty/pykickstart/commands/authconfig.py    |   40 +
 .../mic/3rdparty/pykickstart/commands/autopart.py  |  119 ++
 .../mic/3rdparty/pykickstart/commands/autostep.py  |   55 +
 .../3rdparty/pykickstart/commands/bootloader.py    |  265 ++++
 .../mic/3rdparty/pykickstart/commands/clearpart.py |   86 ++
 .../mic/3rdparty/pykickstart/commands/device.py    |  125 ++
 .../3rdparty/pykickstart/commands/deviceprobe.py   |   40 +
 .../3rdparty/pykickstart/commands/displaymode.py   |   68 +
 .../mic/3rdparty/pykickstart/commands/dmraid.py    |   91 ++
 .../3rdparty/pykickstart/commands/driverdisk.py    |  184 +++
 .../lib/mic/3rdparty/pykickstart/commands/fcoe.py  |  114 ++
 .../mic/3rdparty/pykickstart/commands/firewall.py  |  193 +++
 .../mic/3rdparty/pykickstart/commands/firstboot.py |   62 +
 .../lib/mic/3rdparty/pykickstart/commands/group.py |   88 ++
 .../3rdparty/pykickstart/commands/ignoredisk.py    |  139 ++
 .../3rdparty/pykickstart/commands/interactive.py   |   58 +
 .../lib/mic/3rdparty/pykickstart/commands/iscsi.py |  133 ++
 .../mic/3rdparty/pykickstart/commands/iscsiname.py |   54 +
 .../lib/mic/3rdparty/pykickstart/commands/key.py   |   64 +
 .../mic/3rdparty/pykickstart/commands/keyboard.py  |   55 +
 .../lib/mic/3rdparty/pykickstart/commands/lang.py  |   60 +
 .../3rdparty/pykickstart/commands/langsupport.py   |   58 +
 .../mic/3rdparty/pykickstart/commands/lilocheck.py |   54 +
 .../mic/3rdparty/pykickstart/commands/logging.py   |   66 +
 .../mic/3rdparty/pykickstart/commands/logvol.py    |  304 ++++
 .../3rdparty/pykickstart/commands/mediacheck.py    |   53 +
 .../mic/3rdparty/pykickstart/commands/method.py    |  186 +++
 .../mic/3rdparty/pykickstart/commands/monitor.py   |  106 ++
 .../lib/mic/3rdparty/pykickstart/commands/mouse.py |   70 +
 .../mic/3rdparty/pykickstart/commands/multipath.py |  111 ++
 .../mic/3rdparty/pykickstart/commands/network.py   |  363 +++++
 .../mic/3rdparty/pykickstart/commands/partition.py |  353 +++++
 .../lib/mic/3rdparty/pykickstart/commands/raid.py  |  365 +++++
 .../mic/3rdparty/pykickstart/commands/reboot.py    |   79 +
 .../lib/mic/3rdparty/pykickstart/commands/repo.py  |  249 +++
 .../mic/3rdparty/pykickstart/commands/rescue.py    |   68 +
 .../mic/3rdparty/pykickstart/commands/rootpw.py    |   93 ++
 .../mic/3rdparty/pykickstart/commands/selinux.py   |   64 +
 .../mic/3rdparty/pykickstart/commands/services.py  |   71 +
 .../lib/mic/3rdparty/pykickstart/commands/skipx.py |   54 +
 .../lib/mic/3rdparty/pykickstart/commands/sshpw.py |  105 ++
 .../mic/3rdparty/pykickstart/commands/timezone.py  |   86 ++
 .../mic/3rdparty/pykickstart/commands/updates.py   |   60 +
 .../mic/3rdparty/pykickstart/commands/upgrade.py   |  106 ++
 .../lib/mic/3rdparty/pykickstart/commands/user.py  |  173 +++
 .../lib/mic/3rdparty/pykickstart/commands/vnc.py   |  114 ++
 .../mic/3rdparty/pykickstart/commands/volgroup.py  |  102 ++
 .../mic/3rdparty/pykickstart/commands/xconfig.py   |  184 +++
 .../mic/3rdparty/pykickstart/commands/zerombr.py   |   69 +
 .../lib/mic/3rdparty/pykickstart/commands/zfcp.py  |  134 ++
 scripts/lib/mic/3rdparty/pykickstart/constants.py  |   57 +
 scripts/lib/mic/3rdparty/pykickstart/errors.py     |  103 ++
 .../mic/3rdparty/pykickstart/handlers/control.py   | 1307 ++++++++++++++++
 .../lib/mic/3rdparty/pykickstart/handlers/f10.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f11.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f12.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f13.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f14.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f15.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f16.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f7.py    |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f8.py    |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/f9.py    |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/fc3.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/fc4.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/fc5.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/fc6.py   |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/rhel3.py |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/rhel4.py |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/rhel5.py |   24 +
 .../lib/mic/3rdparty/pykickstart/handlers/rhel6.py |   24 +
 scripts/lib/mic/3rdparty/pykickstart/ko.py         |   37 +
 scripts/lib/mic/3rdparty/pykickstart/options.py    |  204 +++
 scripts/lib/mic/3rdparty/pykickstart/parser.py     |  702 +++++++++
 scripts/lib/mic/3rdparty/pykickstart/sections.py   |  244 +++
 .../3rdparty/pykickstart/urlgrabber/__init__.py    |   53 +
 .../3rdparty/pykickstart/urlgrabber/byterange.py   |  463 ++++++
 .../mic/3rdparty/pykickstart/urlgrabber/grabber.py | 1477 ++++++++++++++++++
 .../3rdparty/pykickstart/urlgrabber/keepalive.py   |  617 ++++++++
 .../mic/3rdparty/pykickstart/urlgrabber/mirror.py  |  458 ++++++
 .../3rdparty/pykickstart/urlgrabber/progress.py    |  530 +++++++
 .../3rdparty/pykickstart/urlgrabber/sslfactory.py  |   90 ++
 scripts/lib/mic/3rdparty/pykickstart/version.py    |  197 +++
 scripts/lib/mic/__init__.py                        |    4 +
 scripts/lib/mic/__version__.py                     |    1 +
 scripts/lib/mic/bootstrap.py                       |  279 ++++
 scripts/lib/mic/chroot.py                          |  343 +++++
 scripts/lib/mic/conf.py                            |  201 +++
 scripts/lib/mic/creator.py                         |  351 +++++
 scripts/lib/mic/imager/baseimager.py               | 1265 ++++++++++++++++
 scripts/lib/mic/imager/direct.py                   |  472 ++++++
 scripts/lib/mic/imager/fs.py                       |   99 ++
 scripts/lib/mic/imager/livecd.py                   |  750 +++++++++
 scripts/lib/mic/imager/liveusb.py                  |  308 ++++
 scripts/lib/mic/imager/loop.py                     |  418 ++++++
 scripts/lib/mic/imager/raw.py                      |  501 +++++++
 scripts/lib/mic/kickstart/__init__.py              |  892 +++++++++++
 .../lib/mic/kickstart/custom_commands/__init__.py  |   17 +
 .../lib/mic/kickstart/custom_commands/desktop.py   |   95 ++
 .../mic/kickstart/custom_commands/installerfw.py   |   63 +
 .../lib/mic/kickstart/custom_commands/micboot.py   |   49 +
 .../mic/kickstart/custom_commands/micpartition.py  |   57 +
 .../lib/mic/kickstart/custom_commands/micrepo.py   |  127 ++
 .../lib/mic/kickstart/custom_commands/partition.py |  370 +++++
 scripts/lib/mic/msger.py                           |  309 ++++
 scripts/lib/mic/plugin.py                          |  102 ++
 scripts/lib/mic/pluginbase.py                      |  101 ++
 scripts/lib/mic/plugins/backend/yumpkgmgr.py       |  490 ++++++
 scripts/lib/mic/plugins/backend/zypppkgmgr.py      |  973 ++++++++++++
 scripts/lib/mic/plugins/hook/empty_hook.py         |    3 +
 scripts/lib/mic/plugins/imager/direct_plugin.py    |   92 ++
 scripts/lib/mic/plugins/imager/fs_plugin.py        |  143 ++
 scripts/lib/mic/plugins/imager/livecd_plugin.py    |  255 ++++
 scripts/lib/mic/plugins/imager/liveusb_plugin.py   |  260 ++++
 scripts/lib/mic/plugins/imager/loop_plugin.py      |  255 ++++
 scripts/lib/mic/plugins/imager/raw_plugin.py       |  275 ++++
 scripts/lib/mic/rt_util.py                         |  223 +++
 scripts/lib/mic/test                               |    1 +
 scripts/lib/mic/utils/BmapCreate.py                |  298 ++++
 scripts/lib/mic/utils/Fiemap.py                    |  252 ++++
 scripts/lib/mic/utils/cmdln.py                     | 1586 ++++++++++++++++++++
 scripts/lib/mic/utils/errors.py                    |   71 +
 scripts/lib/mic/utils/fs_related.py                | 1057 +++++++++++++
 scripts/lib/mic/utils/gpt_parser.py                |  331 ++++
 scripts/lib/mic/utils/grabber.py                   |   97 ++
 scripts/lib/mic/utils/misc.py                      | 1067 +++++++++++++
 scripts/lib/mic/utils/oe/__init__.py               |   22 +
 scripts/lib/mic/utils/oe/misc.py                   |  108 ++
 scripts/lib/mic/utils/partitionedfs.py             |  776 ++++++++++
 scripts/lib/mic/utils/proxy.py                     |  183 +++
 scripts/lib/mic/utils/rpmmisc.py                   |  600 ++++++++
 scripts/lib/mic/utils/runner.py                    |  109 ++
 scripts/wic                                        |  185 +++
 141 files changed, 30983 insertions(+)
 create mode 100644 scripts/lib/image/__init__.py
 create mode 100644 scripts/lib/image/canned-wks/directdisk.wks
 create mode 100644 scripts/lib/image/canned-wks/mkefidisk.wks
 create mode 100644 scripts/lib/image/config/wic.conf
 create mode 100644 scripts/lib/image/engine.py
 create mode 100644 scripts/lib/image/help.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/__init__.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/base.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/__init__.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/authconfig.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/autopart.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/autostep.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/bootloader.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/clearpart.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/device.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/deviceprobe.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/displaymode.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/dmraid.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/driverdisk.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/fcoe.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/firewall.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/firstboot.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/group.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/ignoredisk.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/interactive.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/iscsi.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/iscsiname.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/key.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/keyboard.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/lang.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/langsupport.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/lilocheck.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/logging.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/logvol.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/mediacheck.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/method.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/monitor.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/mouse.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/multipath.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/network.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/partition.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/raid.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/reboot.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/repo.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/rescue.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/rootpw.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/selinux.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/services.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/skipx.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/sshpw.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/timezone.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/updates.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/upgrade.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/user.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/vnc.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/volgroup.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/xconfig.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/zerombr.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/zfcp.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/constants.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/errors.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/__init__.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/control.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f10.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f11.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f12.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f13.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f14.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f15.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f16.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f7.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f8.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f9.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc3.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc4.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc5.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc6.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel3.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel4.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel5.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel6.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/ko.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/options.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/parser.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/sections.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/urlgrabber/__init__.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/urlgrabber/byterange.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/urlgrabber/grabber.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/urlgrabber/keepalive.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/urlgrabber/mirror.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/urlgrabber/progress.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/urlgrabber/sslfactory.py
 create mode 100644 scripts/lib/mic/3rdparty/pykickstart/version.py
 create mode 100644 scripts/lib/mic/__init__.py
 create mode 100644 scripts/lib/mic/__version__.py
 create mode 100644 scripts/lib/mic/bootstrap.py
 create mode 100644 scripts/lib/mic/chroot.py
 create mode 100644 scripts/lib/mic/conf.py
 create mode 100644 scripts/lib/mic/creator.py
 create mode 100644 scripts/lib/mic/imager/__init__.py
 create mode 100644 scripts/lib/mic/imager/baseimager.py
 create mode 100644 scripts/lib/mic/imager/direct.py
 create mode 100644 scripts/lib/mic/imager/fs.py
 create mode 100644 scripts/lib/mic/imager/livecd.py
 create mode 100644 scripts/lib/mic/imager/liveusb.py
 create mode 100644 scripts/lib/mic/imager/loop.py
 create mode 100644 scripts/lib/mic/imager/raw.py
 create mode 100644 scripts/lib/mic/kickstart/__init__.py
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/__init__.py
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/desktop.py
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/installerfw.py
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/micboot.py
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/micpartition.py
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/micrepo.py
 create mode 100644 scripts/lib/mic/kickstart/custom_commands/partition.py
 create mode 100644 scripts/lib/mic/msger.py
 create mode 100644 scripts/lib/mic/plugin.py
 create mode 100644 scripts/lib/mic/pluginbase.py
 create mode 100644 scripts/lib/mic/plugins/backend/yumpkgmgr.py
 create mode 100755 scripts/lib/mic/plugins/backend/zypppkgmgr.py
 create mode 100644 scripts/lib/mic/plugins/hook/.py
 create mode 100644 scripts/lib/mic/plugins/hook/empty_hook.py
 create mode 100644 scripts/lib/mic/plugins/imager/direct_plugin.py
 create mode 100644 scripts/lib/mic/plugins/imager/fs_plugin.py
 create mode 100644 scripts/lib/mic/plugins/imager/livecd_plugin.py
 create mode 100644 scripts/lib/mic/plugins/imager/liveusb_plugin.py
 create mode 100644 scripts/lib/mic/plugins/imager/loop_plugin.py
 create mode 100644 scripts/lib/mic/plugins/imager/raw_plugin.py
 create mode 100644 scripts/lib/mic/rt_util.py
 create mode 100644 scripts/lib/mic/test
 create mode 100644 scripts/lib/mic/utils/BmapCreate.py
 create mode 100644 scripts/lib/mic/utils/Fiemap.py
 create mode 100644 scripts/lib/mic/utils/__init__.py
 create mode 100644 scripts/lib/mic/utils/cmdln.py
 create mode 100644 scripts/lib/mic/utils/errors.py
 create mode 100644 scripts/lib/mic/utils/fs_related.py
 create mode 100644 scripts/lib/mic/utils/gpt_parser.py
 create mode 100644 scripts/lib/mic/utils/grabber.py
 create mode 100644 scripts/lib/mic/utils/misc.py
 create mode 100644 scripts/lib/mic/utils/oe/__init__.py
 create mode 100644 scripts/lib/mic/utils/oe/misc.py
 create mode 100644 scripts/lib/mic/utils/partitionedfs.py
 create mode 100644 scripts/lib/mic/utils/proxy.py
 create mode 100644 scripts/lib/mic/utils/rpmmisc.py
 create mode 100644 scripts/lib/mic/utils/runner.py
 create mode 100755 scripts/wic
David Nyström - Sept. 27, 2013, 6:48 a.m.
On Sep 27, 2013 4:17 AM, "Tom Zanussi" <tom.zanussi@linux.intel.com> wrote:
>
> This patchset implements a new command named 'wic' (for OpenEmbedded
> Image Creator).  Please see [YOCTO #3847] for extensive background on
> what's implemented here.

Nice !

Would it be possible to add the MIC as a recipe for native and nativesdk,
with wic patches applied(easier to maintain), and could also enable wic to
use a package repo when built for nativesdk.

Br,
David

> This is a completely independent standalone utility that initially
> provides easier-to-use and more flexible replacements for a couple
> bits of existing functionality in oe-core: directdisk.bbclass and
> mkefidisk.sh.  The more interesting aspect of the current patchset
> though is that the replaced (this patchset doesn't actually replace
> those scripts, however) scripts are implemented by a general-purpose
> partitioning 'language' based on Redhat kickstart syntax (with the
> underlying code borrowed from Tizen mic, which in turn was borrowed
> from Meego mic, in turn borrowed from Fedora livecd, etc.).
>
> Though this patchset only uses the kickstart syntax related to
> partitioning and bootloaders and only for creating images, because the
> code is based on the mic/pykickstart code, future deployment efforts
> such as those partially described by [YOCTO #4106], but also others
> including package selection (from e.g. binary feeds) and deployment
> configuration of users/network/services, etc, could be implemented
> under this framework, considering that all of those are implemented
> in some form by the base system.
>
> The current patchset has successfully been used to generate and boot
> images from core-image-minimal build artifacts using the 'mkefidisk'
> kickstart file (in scripts/lib/image/canned-wks) on minnow and the
> 'directdisk' kickstart file using both core-image-minimal and
> core-image-sato artifacts for crownbay.
>
> The 'wic' command generates partitioned images from existing
> OpenEmbedded build artifacts.  Image generation is driven by
> partitioning commands contained in an 'Openembedded kickstart' (.wks)
> file specified either directly on the command-line or as one of a
> selection of canned .wks files (see 'wic list images').  When applied
> to a given set of build artifacts, the result is an image or set of
> images that can be directly written onto media and used on a
> particular system.
>
> It can be used in 'raw' mode, where artifacts are explicitly specified
> via command-line arguments (see example below), or it can be used in a
> more easily usable 'cooked' mode which uses the current MACHINE
> setting and a specified image name to automatically locate the
> artifacts used to create the image.
>
> OE kickstart files (.wks) can of course be specified directly on the
> command-line, but the user can also choose from a set of 'canned' .wks
> files available via the 'wic list images' command (example below).
>
> In any case, the prerequisite for generating any image is to have the
> build artifacts already available.  The below examples assume the user
> has already build a 'core-image-minimal' for a specific machine
> (future versions won't require this redundant step, but for now that's
> typically how build artifacts get generated).
>
> The other prerequisite is to source the build environment:
>
> $ source oe-init-build-env
>
> To start out with, we'll generate an image from one of the canned .wks
> files.  The following generates a list of availailable images:
>
> $ wic list images
>   mkefidisk             Create an EFI disk image
>   directdisk            Create a 'pcbios' direct disk image
>
> You can get more information about any of the available images by typing
> 'wic list xxx help', where 'xxx' is one of the image names:
>
> $ wic list mkefidisk help
>
> Creates a partitioned EFI disk image that the user
> can directly dd to boot media.
>
> At any time, you can get help on the 'wic' command or any subcommand
> (currently 'list' and 'create').  For instance, to get the description
> of 'wic create' command and its parameters:
>
> $ wic create
>
> Usage:
>
>  Create a new OpenEmbedded image
>
>  usage: wic create <wks file or image name> [-o <DIRNAME> | --outdir
<DIRNAME>]
>             [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
>             [-e | --image-name] [-r, --rootfs-dir] [-b, --bootimg-dir]
>             [-k, --kernel-dir] [-n, --native-sysroot] [-s,
--skip-build-check]
>
>  This command creates an OpenEmbedded image based on the 'OE kickstart
>  commands' found in the <wks file>.
>
>  The -o option can be used to place the image in a directory with a
>  different name and location.
>
>  See 'wic help create' for more detailed instructions.
>
> ...
>
> As mentioned in the command, you can get even more detailed information
> by adding 'help' to the above:
>
> $ wic help create
>
> NAME
>     wic create - Create a new OpenEmbedded image
>
> SYNOPSIS
>     wic create <wks file or image name> [-o <DIRNAME> | --outdir
> <DIRNAME>]
>         [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
>         [-e | --image-name] [-r, --rootfs-dir] [-b, --bootimg-dir]
>         [-k, --kernel-dir] [-n, --native-sysroot] [-s,
> --skip-build-check]
>
> DESCRIPTION
>     This command creates an OpenEmbedded image based on the 'OE
>     kickstart commands' found in the <wks file>.
>
>     In order to do this, wic needs to know the locations of the
>     various build artifacts required to build the image.
>
>     Users can explicitly specify the build artifact locations using
>     the -r, -b, -k, and -n options.  See below for details on where
>     the corresponding artifacts are typically found in a normal
>     OpenEmbedded build.
>
>     Alternatively, users can use the -e option to have 'mic' determine
>     those locations for a given image.  If the -e option is used, the
>     user needs to have set the appropriate MACHINE variable in
>     local.conf, and have sourced the build environment.
>
>     The -e option is used to specify the name of the image to use the
>     artifacts from e.g. core-image-sato.
>
>     The -r option is used to specify the path to the /rootfs dir to
>     use as the .wks rootfs source.
>
>     The -b option is used to specify the path to the dir containing
>     the boot artifacts (e.g. /EFI or /syslinux dirs) to use as the
>     .wks bootimg source.
>
>     The -k option is used to specify the path to the dir containing
>     the kernel to use in the .wks bootimg.
>
>     The -n option is used to specify the path to the native sysroot
>     containing the tools to use to build the image.
>
>     The -s option is used to skip the build check.  The build check is
>     a simple sanity check used to determine whether the user has
>     sourced the build environment so that the -e option can operate
>     correctly.  If the user has specified the build artifact locations
>     explicitly, 'wic' assumes the user knows what he or she is doing
>     and skips the build check.
>
>     When 'wic -e' is used, the locations for the build artifacts
>     values are determined by 'wic -e' from the output of the 'bitbake
>     -e' command given an image name e.g. 'core-image-minimal' and a
>     given machine set in local.conf.  In that case, the image is
>     created as if the following 'bitbake -e' variables were used:
>
>     -r:        IMAGE_ROOTFS
>     -k:        STAGING_KERNEL_DIR
>     -n:        STAGING_DIR_NATIVE
>     -b:        HDDDIR and STAGING_DATA_DIR (handlers decide which to
> use)
>
>     If 'wic -e' is not used, the user needs to select the appropriate
>     value for -b (as well as -r, -k, and -n).
>
>     The -o option can be used to place the image in a directory with a
>     different name and location.
>
>     As an alternative to the wks file, the image-specific properties
>     that define the values that will be used to generate a particular
>     image can be specified on the command-line using the -i option and
>     supplying a JSON object consisting of the set of name:value pairs
>     needed by image creation.
>
>     The set of properties available for a given image type can be
>     listed using the 'wic list' command.
>
> So, the easiest way to create an image is to use the -e option with a
> canned .wks file.  To use the -e option, you need to specify the image
> used to generate the artifacts and you actually need to have the MACHINE
> used to build them specified in your local.conf (these requirements
> aren't necessary if you aren't using the -e options.  Below, we generate
> a directdisk image, pointing the process at the core-image-minimal
> artifacts for the current MACHINE:
>
> $ wic create directdisk -e core-image-minimal
>
> Checking basic build environment...
> Done.
>
> Creating image(s)...
>
> Info: The new image(s) can be found here:
>   /var/tmp/wic/build/directdisk-201309252350-sda.direct
>
> The following build artifacts were used to create the image(s):
>
> ROOTFS_DIR:
 /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs
> BOOTIMG_DIR:
/home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share
> KERNEL_DIR:
 /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
> NATIVE_SYSROOT:
 /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
>
> The image(s) were created using OE kickstart file:
>   /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisk.wks
>
> The output shows the name and location of the image created, and so that
> you know exactly what was used to generate the image, each of the
> artifacts and the kickstart file used.
>
> Similarly, I can create a 'mkefidisk' image in the same way (notice that
> I'm using a different machine - because I'm using the -e option, I
> needed to change the MACHINE in my local.conf):
>
> $ wic create mkefidisk -e core-image-minimal
> Checking basic build environment...
> Done.
>
> Creating image(s)...
>
> Info: The new image(s) can be found here:
>   /var/tmp/wic/build/mkefidisk-201309260027-sda.direct
>
> The following build artifacts were used to create the image(s):
>
> ROOTFS_DIR:
 /home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/rootfs
> BOOTIMG_DIR:
/home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/core-image-minimal-1.0/hddimg
> KERNEL_DIR:
 /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel
> NATIVE_SYSROOT:
 /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel
>
> The image(s) were created using OE kickstart file:
>   /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/mkefidisk.wks
>
> Here's an example that doesn't take the easy way out and manually
> specifies each build artifact, along with a non-canned .wks file, and
> also uses the -o option to have wic create the output somewhere other
> than the default /var/tmp/wic:
>
> $ wic create ~/test.wks -o /home/trz/testwic
> --rootfs-dir
/home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs
--bootimg-dir
/home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share
--kernel-dir
/home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
--native-sysroot /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux
>
> Creating image(s)...
>
> Info: The new image(s) can be found here:
>   /home/trz/testwic/build/test-201309260032-sda.direct
>
> The following build artifacts were used to create the image(s):
>
> ROOTFS_DIR:
 /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs
> BOOTIMG_DIR:
/home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share
> KERNEL_DIR:
 /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
> NATIVE_SYSROOT:
 /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
>
> The image(s) were created using OE kickstart file:
>   /home/trz/test.wks
>
> Finally, here's an example of the actual partition language commands
> used to generate the mkefidisk image i.e. these are the contents of the
> mkefidisk.wks OE kickstart file:
>
> # short-description: Create an EFI disk image
> # long-description: Creates a partitioned EFI disk image that the user
> # can directly dd to boot media.
>
> part /boot --source bootimg --ondisk sda --fstype=efi --label msdos
--active --align 1024
>
> part / --source rootfs --ondisk sda --fstype=ext3 --label platform
--align 1024
>
> part swap --ondisk sda --size 44 --label swap1 --fstype=swap
>
> bootloader  --timeout=10  --append="rootwait rootfstype=ext3
console=ttyPCH0,115200 console=tty0 vmalloc=256MB
snd-hda-intel.enable_msi=0"
>
> The initial 'wic' implementation here supports only the basic
> kickstart partitioning commands: 'partition' (or 'part' for short) and
> 'bootloader'.
>
> Currently, only the options used in the 'canned' scripts (in
> scripts/lib/image/canned-wks) are supported.
>
> They're listed below and mostly follow the syntax and meaning of the
> standard kickstart options for those commands:
>
> http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition
> http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader
>
> For the 'partition' ('part') command, here are the supported options:
>
> --source
>         bootimg
>         rootfs
> --ondisk sda
> --size size (in mB)
> --fstype
>         msdos
>         efi
>         ext4
>         ext3
>         ext2
>         btrfs
>         swap
> --label label
> --active
> ---align (in kB)
>
> The --source option is a wic-specific option that can currently have
> one of two values, 'bootimg' or 'rootfs'.
>
> If '--source rootfs' is used, it tells the wic command to create a
> partition as large as needed to fill with the contents of /rootfs
> (specified by the -r 'wic' option) and to fill it with the contents of
> /rootfs.
>
> If '--source bootimg' is used, it tells the wic command to create a
> partition as large as needed to fill with the contents of the boot
> partition (specified by the -b 'wic' option).  Exactly what those
> contents are depend on the value of the --fstype option for that
> partition.  If '--fstype=efi' is specified, the boot artifacts
> contained in HDDDIR are used, and if '--fstype=msdos' is specified,
> the boot artifacts found in STAGING_DATADIR are used.
>
> The '--align' option is a mic-specific option that says to start a
> partition on an x kB boundary.
>
> For the 'bootloader' command, these are the supported options:
>
> --timeout
> --append
>
> Future updates will implement more options - using anything not
> explicitly supported can result in unpredicable results.
>
>
> The following changes since commit
b049d532f6e0ab9e458e486f81b00be47ee69acf:
>
>   testimage: Exclude BB_ORIGENV variable (2013-09-26 17:27:02 +0100)
>
> are available in the git repository at:
>
>   git://git.yoctoproject.org/poky-contrib.git tzanussi/wic-v1
>
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=tzanussi/wic-v1
>
> Tom Zanussi (3):
>   wic: Initial code for wic (OpenEmbedded Image Creator)
>   wic: Add mic w/pykickstart
>   wic: Add OpenEmbedded-specific implementation
>
>  scripts/lib/image/__init__.py                      |   22 +
>  scripts/lib/image/canned-wks/directdisk.wks        |   10 +
>  scripts/lib/image/canned-wks/mkefidisk.wks         |   11 +
>  scripts/lib/image/config/wic.conf                  |    7 +
>  scripts/lib/image/engine.py                        |  280 ++++
>  scripts/lib/image/help.py                          |  311 ++++
>  scripts/lib/mic/3rdparty/pykickstart/base.py       |  466 ++++++
>  .../mic/3rdparty/pykickstart/commands/__init__.py  |   26 +
>  .../3rdparty/pykickstart/commands/authconfig.py    |   40 +
>  .../mic/3rdparty/pykickstart/commands/autopart.py  |  119 ++
>  .../mic/3rdparty/pykickstart/commands/autostep.py  |   55 +
>  .../3rdparty/pykickstart/commands/bootloader.py    |  265 ++++
>  .../mic/3rdparty/pykickstart/commands/clearpart.py |   86 ++
>  .../mic/3rdparty/pykickstart/commands/device.py    |  125 ++
>  .../3rdparty/pykickstart/commands/deviceprobe.py   |   40 +
>  .../3rdparty/pykickstart/commands/displaymode.py   |   68 +
>  .../mic/3rdparty/pykickstart/commands/dmraid.py    |   91 ++
>  .../3rdparty/pykickstart/commands/driverdisk.py    |  184 +++
>  .../lib/mic/3rdparty/pykickstart/commands/fcoe.py  |  114 ++
>  .../mic/3rdparty/pykickstart/commands/firewall.py  |  193 +++
>  .../mic/3rdparty/pykickstart/commands/firstboot.py |   62 +
>  .../lib/mic/3rdparty/pykickstart/commands/group.py |   88 ++
>  .../3rdparty/pykickstart/commands/ignoredisk.py    |  139 ++
>  .../3rdparty/pykickstart/commands/interactive.py   |   58 +
>  .../lib/mic/3rdparty/pykickstart/commands/iscsi.py |  133 ++
>  .../mic/3rdparty/pykickstart/commands/iscsiname.py |   54 +
>  .../lib/mic/3rdparty/pykickstart/commands/key.py   |   64 +
>  .../mic/3rdparty/pykickstart/commands/keyboard.py  |   55 +
>  .../lib/mic/3rdparty/pykickstart/commands/lang.py  |   60 +
>  .../3rdparty/pykickstart/commands/langsupport.py   |   58 +
>  .../mic/3rdparty/pykickstart/commands/lilocheck.py |   54 +
>  .../mic/3rdparty/pykickstart/commands/logging.py   |   66 +
>  .../mic/3rdparty/pykickstart/commands/logvol.py    |  304 ++++
>  .../3rdparty/pykickstart/commands/mediacheck.py    |   53 +
>  .../mic/3rdparty/pykickstart/commands/method.py    |  186 +++
>  .../mic/3rdparty/pykickstart/commands/monitor.py   |  106 ++
>  .../lib/mic/3rdparty/pykickstart/commands/mouse.py |   70 +
>  .../mic/3rdparty/pykickstart/commands/multipath.py |  111 ++
>  .../mic/3rdparty/pykickstart/commands/network.py   |  363 +++++
>  .../mic/3rdparty/pykickstart/commands/partition.py |  353 +++++
>  .../lib/mic/3rdparty/pykickstart/commands/raid.py  |  365 +++++
>  .../mic/3rdparty/pykickstart/commands/reboot.py    |   79 +
>  .../lib/mic/3rdparty/pykickstart/commands/repo.py  |  249 +++
>  .../mic/3rdparty/pykickstart/commands/rescue.py    |   68 +
>  .../mic/3rdparty/pykickstart/commands/rootpw.py    |   93 ++
>  .../mic/3rdparty/pykickstart/commands/selinux.py   |   64 +
>  .../mic/3rdparty/pykickstart/commands/services.py  |   71 +
>  .../lib/mic/3rdparty/pykickstart/commands/skipx.py |   54 +
>  .../lib/mic/3rdparty/pykickstart/commands/sshpw.py |  105 ++
>  .../mic/3rdparty/pykickstart/commands/timezone.py  |   86 ++
>  .../mic/3rdparty/pykickstart/commands/updates.py   |   60 +
>  .../mic/3rdparty/pykickstart/commands/upgrade.py   |  106 ++
>  .../lib/mic/3rdparty/pykickstart/commands/user.py  |  173 +++
>  .../lib/mic/3rdparty/pykickstart/commands/vnc.py   |  114 ++
>  .../mic/3rdparty/pykickstart/commands/volgroup.py  |  102 ++
>  .../mic/3rdparty/pykickstart/commands/xconfig.py   |  184 +++
>  .../mic/3rdparty/pykickstart/commands/zerombr.py   |   69 +
>  .../lib/mic/3rdparty/pykickstart/commands/zfcp.py  |  134 ++
>  scripts/lib/mic/3rdparty/pykickstart/constants.py  |   57 +
>  scripts/lib/mic/3rdparty/pykickstart/errors.py     |  103 ++
>  .../mic/3rdparty/pykickstart/handlers/control.py   | 1307
++++++++++++++++
>  .../lib/mic/3rdparty/pykickstart/handlers/f10.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f11.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f12.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f13.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f14.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f15.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f16.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f7.py    |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f8.py    |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/f9.py    |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/fc3.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/fc4.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/fc5.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/fc6.py   |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/rhel3.py |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/rhel4.py |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/rhel5.py |   24 +
>  .../lib/mic/3rdparty/pykickstart/handlers/rhel6.py |   24 +
>  scripts/lib/mic/3rdparty/pykickstart/ko.py         |   37 +
>  scripts/lib/mic/3rdparty/pykickstart/options.py    |  204 +++
>  scripts/lib/mic/3rdparty/pykickstart/parser.py     |  702 +++++++++
>  scripts/lib/mic/3rdparty/pykickstart/sections.py   |  244 +++
>  .../3rdparty/pykickstart/urlgrabber/__init__.py    |   53 +
>  .../3rdparty/pykickstart/urlgrabber/byterange.py   |  463 ++++++
>  .../mic/3rdparty/pykickstart/urlgrabber/grabber.py | 1477
++++++++++++++++++
>  .../3rdparty/pykickstart/urlgrabber/keepalive.py   |  617 ++++++++
>  .../mic/3rdparty/pykickstart/urlgrabber/mirror.py  |  458 ++++++
>  .../3rdparty/pykickstart/urlgrabber/progress.py    |  530 +++++++
>  .../3rdparty/pykickstart/urlgrabber/sslfactory.py  |   90 ++
>  scripts/lib/mic/3rdparty/pykickstart/version.py    |  197 +++
>  scripts/lib/mic/__init__.py                        |    4 +
>  scripts/lib/mic/__version__.py                     |    1 +
>  scripts/lib/mic/bootstrap.py                       |  279 ++++
>  scripts/lib/mic/chroot.py                          |  343 +++++
>  scripts/lib/mic/conf.py                            |  201 +++
>  scripts/lib/mic/creator.py                         |  351 +++++
>  scripts/lib/mic/imager/baseimager.py               | 1265
++++++++++++++++
>  scripts/lib/mic/imager/direct.py                   |  472 ++++++
>  scripts/lib/mic/imager/fs.py                       |   99 ++
>  scripts/lib/mic/imager/livecd.py                   |  750 +++++++++
>  scripts/lib/mic/imager/liveusb.py                  |  308 ++++
>  scripts/lib/mic/imager/loop.py                     |  418 ++++++
>  scripts/lib/mic/imager/raw.py                      |  501 +++++++
>  scripts/lib/mic/kickstart/__init__.py              |  892 +++++++++++
>  .../lib/mic/kickstart/custom_commands/__init__.py  |   17 +
>  .../lib/mic/kickstart/custom_commands/desktop.py   |   95 ++
>  .../mic/kickstart/custom_commands/installerfw.py   |   63 +
>  .../lib/mic/kickstart/custom_commands/micboot.py   |   49 +
>  .../mic/kickstart/custom_commands/micpartition.py  |   57 +
>  .../lib/mic/kickstart/custom_commands/micrepo.py   |  127 ++
>  .../lib/mic/kickstart/custom_commands/partition.py |  370 +++++
>  scripts/lib/mic/msger.py                           |  309 ++++
>  scripts/lib/mic/plugin.py                          |  102 ++
>  scripts/lib/mic/pluginbase.py                      |  101 ++
>  scripts/lib/mic/plugins/backend/yumpkgmgr.py       |  490 ++++++
>  scripts/lib/mic/plugins/backend/zypppkgmgr.py      |  973 ++++++++++++
>  scripts/lib/mic/plugins/hook/empty_hook.py         |    3 +
>  scripts/lib/mic/plugins/imager/direct_plugin.py    |   92 ++
>  scripts/lib/mic/plugins/imager/fs_plugin.py        |  143 ++
>  scripts/lib/mic/plugins/imager/livecd_plugin.py    |  255 ++++
>  scripts/lib/mic/plugins/imager/liveusb_plugin.py   |  260 ++++
>  scripts/lib/mic/plugins/imager/loop_plugin.py      |  255 ++++
>  scripts/lib/mic/plugins/imager/raw_plugin.py       |  275 ++++
>  scripts/lib/mic/rt_util.py                         |  223 +++
>  scripts/lib/mic/test                               |    1 +
>  scripts/lib/mic/utils/BmapCreate.py                |  298 ++++
>  scripts/lib/mic/utils/Fiemap.py                    |  252 ++++
>  scripts/lib/mic/utils/cmdln.py                     | 1586
++++++++++++++++++++
>  scripts/lib/mic/utils/errors.py                    |   71 +
>  scripts/lib/mic/utils/fs_related.py                | 1057 +++++++++++++
>  scripts/lib/mic/utils/gpt_parser.py                |  331 ++++
>  scripts/lib/mic/utils/grabber.py                   |   97 ++
>  scripts/lib/mic/utils/misc.py                      | 1067 +++++++++++++
>  scripts/lib/mic/utils/oe/__init__.py               |   22 +
>  scripts/lib/mic/utils/oe/misc.py                   |  108 ++
>  scripts/lib/mic/utils/partitionedfs.py             |  776 ++++++++++
>  scripts/lib/mic/utils/proxy.py                     |  183 +++
>  scripts/lib/mic/utils/rpmmisc.py                   |  600 ++++++++
>  scripts/lib/mic/utils/runner.py                    |  109 ++
>  scripts/wic                                        |  185 +++
>  141 files changed, 30983 insertions(+)
>  create mode 100644 scripts/lib/image/__init__.py
>  create mode 100644 scripts/lib/image/canned-wks/directdisk.wks
>  create mode 100644 scripts/lib/image/canned-wks/mkefidisk.wks
>  create mode 100644 scripts/lib/image/config/wic.conf
>  create mode 100644 scripts/lib/image/engine.py
>  create mode 100644 scripts/lib/image/help.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/__init__.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/base.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/__init__.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/authconfig.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/autopart.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/autostep.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/bootloader.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/clearpart.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/device.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/deviceprobe.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/displaymode.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/dmraid.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/driverdisk.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/fcoe.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/firewall.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/firstboot.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/group.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/ignoredisk.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/interactive.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/iscsi.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/iscsiname.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/key.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/keyboard.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/lang.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/langsupport.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/lilocheck.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/logging.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/logvol.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/mediacheck.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/method.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/monitor.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/mouse.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/multipath.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/network.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/partition.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/raid.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/reboot.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/repo.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/rescue.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/rootpw.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/selinux.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/services.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/skipx.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/sshpw.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/timezone.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/updates.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/upgrade.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/user.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/vnc.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/volgroup.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/xconfig.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/commands/zerombr.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/commands/zfcp.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/constants.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/errors.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/handlers/__init__.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/handlers/control.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f10.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f11.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f12.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f13.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f14.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f15.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f16.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f7.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f8.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/f9.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc3.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc4.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc5.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/fc6.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel3.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel4.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel5.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/handlers/rhel6.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/ko.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/options.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/parser.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/sections.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/urlgrabber/__init__.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/urlgrabber/byterange.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/urlgrabber/grabber.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/urlgrabber/keepalive.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/urlgrabber/mirror.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/urlgrabber/progress.py
>  create mode 100644
scripts/lib/mic/3rdparty/pykickstart/urlgrabber/sslfactory.py
>  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/version.py
>  create mode 100644 scripts/lib/mic/__init__.py
>  create mode 100644 scripts/lib/mic/__version__.py
>  create mode 100644 scripts/lib/mic/bootstrap.py
>  create mode 100644 scripts/lib/mic/chroot.py
>  create mode 100644 scripts/lib/mic/conf.py
>  create mode 100644 scripts/lib/mic/creator.py
>  create mode 100644 scripts/lib/mic/imager/__init__.py
>  create mode 100644 scripts/lib/mic/imager/baseimager.py
>  create mode 100644 scripts/lib/mic/imager/direct.py
>  create mode 100644 scripts/lib/mic/imager/fs.py
>  create mode 100644 scripts/lib/mic/imager/livecd.py
>  create mode 100644 scripts/lib/mic/imager/liveusb.py
>  create mode 100644 scripts/lib/mic/imager/loop.py
>  create mode 100644 scripts/lib/mic/imager/raw.py
>  create mode 100644 scripts/lib/mic/kickstart/__init__.py
>  create mode 100644 scripts/lib/mic/kickstart/custom_commands/__init__.py
>  create mode 100644 scripts/lib/mic/kickstart/custom_commands/desktop.py
>  create mode 100644
scripts/lib/mic/kickstart/custom_commands/installerfw.py
>  create mode 100644 scripts/lib/mic/kickstart/custom_commands/micboot.py
>  create mode 100644
scripts/lib/mic/kickstart/custom_commands/micpartition.py
>  create mode 100644 scripts/lib/mic/kickstart/custom_commands/micrepo.py
>  create mode 100644 scripts/lib/mic/kickstart/custom_commands/partition.py
>  create mode 100644 scripts/lib/mic/msger.py
>  create mode 100644 scripts/lib/mic/plugin.py
>  create mode 100644 scripts/lib/mic/pluginbase.py
>  create mode 100644 scripts/lib/mic/plugins/backend/yumpkgmgr.py
>  create mode 100755 scripts/lib/mic/plugins/backend/zypppkgmgr.py
>  create mode 100644 scripts/lib/mic/plugins/hook/.py
>  create mode 100644 scripts/lib/mic/plugins/hook/empty_hook.py
>  create mode 100644 scripts/lib/mic/plugins/imager/direct_plugin.py
>  create mode 100644 scripts/lib/mic/plugins/imager/fs_plugin.py
>  create mode 100644 scripts/lib/mic/plugins/imager/livecd_plugin.py
>  create mode 100644 scripts/lib/mic/plugins/imager/liveusb_plugin.py
>  create mode 100644 scripts/lib/mic/plugins/imager/loop_plugin.py
>  create mode 100644 scripts/lib/mic/plugins/imager/raw_plugin.py
>  create mode 100644 scripts/lib/mic/rt_util.py
>  create mode 100644 scripts/lib/mic/test
>  create mode 100644 scripts/lib/mic/utils/BmapCreate.py
>  create mode 100644 scripts/lib/mic/utils/Fiemap.py
>  create mode 100644 scripts/lib/mic/utils/__init__.py
>  create mode 100644 scripts/lib/mic/utils/cmdln.py
>  create mode 100644 scripts/lib/mic/utils/errors.py
>  create mode 100644 scripts/lib/mic/utils/fs_related.py
>  create mode 100644 scripts/lib/mic/utils/gpt_parser.py
>  create mode 100644 scripts/lib/mic/utils/grabber.py
>  create mode 100644 scripts/lib/mic/utils/misc.py
>  create mode 100644 scripts/lib/mic/utils/oe/__init__.py
>  create mode 100644 scripts/lib/mic/utils/oe/misc.py
>  create mode 100644 scripts/lib/mic/utils/partitionedfs.py
>  create mode 100644 scripts/lib/mic/utils/proxy.py
>  create mode 100644 scripts/lib/mic/utils/rpmmisc.py
>  create mode 100644 scripts/lib/mic/utils/runner.py
>  create mode 100755 scripts/wic
>
> --
> 1.7.11.4
>
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
tom.zanussi@linux.intel.com - Sept. 27, 2013, 1:32 p.m.
On Fri, 2013-09-27 at 08:48 +0200, David Nystrom wrote:
> 
> On Sep 27, 2013 4:17 AM, "Tom Zanussi" <tom.zanussi@linux.intel.com>
> wrote:
> >
> > This patchset implements a new command named 'wic' (for OpenEmbedded
> > Image Creator).  Please see [YOCTO #3847] for extensive background
> on
> > what's implemented here.
> 
> Nice !
> 
> Would it be possible to add the MIC as a recipe for native and
> nativesdk, with wic patches applied(easier to maintain), and could
> also enable wic to use a package repo when built for nativesdk.
> 

Yes, I think something like that would make sense - for 1.5, the design
goal was to make it a completely standalone thing, with any integration
work and other enhancements coming in 1.6...

Tom

> Br,
> David
> 
> 
> 
> > This is a completely independent standalone utility that initially
> > provides easier-to-use and more flexible replacements for a couple
> > bits of existing functionality in oe-core: directdisk.bbclass and
> > mkefidisk.sh.  The more interesting aspect of the current patchset
> > though is that the replaced (this patchset doesn't actually replace
> > those scripts, however) scripts are implemented by a general-purpose
> > partitioning 'language' based on Redhat kickstart syntax (with the
> > underlying code borrowed from Tizen mic, which in turn was borrowed
> > from Meego mic, in turn borrowed from Fedora livecd, etc.).
> >
> > Though this patchset only uses the kickstart syntax related to
> > partitioning and bootloaders and only for creating images, because
> the
> > code is based on the mic/pykickstart code, future deployment efforts
> > such as those partially described by [YOCTO #4106], but also others
> > including package selection (from e.g. binary feeds) and deployment
> > configuration of users/network/services, etc, could be implemented
> > under this framework, considering that all of those are implemented
> > in some form by the base system.
> >
> > The current patchset has successfully been used to generate and boot
> > images from core-image-minimal build artifacts using the 'mkefidisk'
> > kickstart file (in scripts/lib/image/canned-wks) on minnow and the
> > 'directdisk' kickstart file using both core-image-minimal and
> > core-image-sato artifacts for crownbay.
> >
> > The 'wic' command generates partitioned images from existing
> > OpenEmbedded build artifacts.  Image generation is driven by
> > partitioning commands contained in an 'Openembedded
> kickstart' (.wks)
> > file specified either directly on the command-line or as one of a
> > selection of canned .wks files (see 'wic list images').  When
> applied
> > to a given set of build artifacts, the result is an image or set of
> > images that can be directly written onto media and used on a
> > particular system.
> >
> > It can be used in 'raw' mode, where artifacts are explicitly
> specified
> > via command-line arguments (see example below), or it can be used in
> a
> > more easily usable 'cooked' mode which uses the current MACHINE
> > setting and a specified image name to automatically locate the
> > artifacts used to create the image.
> >
> > OE kickstart files (.wks) can of course be specified directly on the
> > command-line, but the user can also choose from a set of
> 'canned' .wks
> > files available via the 'wic list images' command (example below).
> >
> > In any case, the prerequisite for generating any image is to have
> the
> > build artifacts already available.  The below examples assume the
> user
> > has already build a 'core-image-minimal' for a specific machine
> > (future versions won't require this redundant step, but for now
> that's
> > typically how build artifacts get generated).
> >
> > The other prerequisite is to source the build environment:
> >
> > $ source oe-init-build-env
> >
> > To start out with, we'll generate an image from one of the
> canned .wks
> > files.  The following generates a list of availailable images:
> >
> > $ wic list images
> >   mkefidisk             Create an EFI disk image
> >   directdisk            Create a 'pcbios' direct disk image
> >
> > You can get more information about any of the available images by
> typing
> > 'wic list xxx help', where 'xxx' is one of the image names:
> >
> > $ wic list mkefidisk help
> >
> > Creates a partitioned EFI disk image that the user
> > can directly dd to boot media.
> >
> > At any time, you can get help on the 'wic' command or any subcommand
> > (currently 'list' and 'create').  For instance, to get the
> description
> > of 'wic create' command and its parameters:
> >
> > $ wic create
> >
> > Usage:
> >
> >  Create a new OpenEmbedded image
> >
> >  usage: wic create <wks file or image name> [-o <DIRNAME> | --outdir
> <DIRNAME>]
> >             [-i <JSON PROPERTY FILE> | --infile <JSON
> PROPERTY_FILE>]
> >             [-e | --image-name] [-r, --rootfs-dir] [-b,
> --bootimg-dir]
> >             [-k, --kernel-dir] [-n, --native-sysroot] [-s,
> --skip-build-check]
> >
> >  This command creates an OpenEmbedded image based on the 'OE
> kickstart
> >  commands' found in the <wks file>.
> >
> >  The -o option can be used to place the image in a directory with a
> >  different name and location.
> >
> >  See 'wic help create' for more detailed instructions.
> >
> > ...
> >
> > As mentioned in the command, you can get even more detailed
> information
> > by adding 'help' to the above:
> >
> > $ wic help create
> >
> > NAME
> >     wic create - Create a new OpenEmbedded image
> >
> > SYNOPSIS
> >     wic create <wks file or image name> [-o <DIRNAME> | --outdir
> > <DIRNAME>]
> >         [-i <JSON PROPERTY FILE> | --infile <JSON PROPERTY_FILE>]
> >         [-e | --image-name] [-r, --rootfs-dir] [-b, --bootimg-dir]
> >         [-k, --kernel-dir] [-n, --native-sysroot] [-s,
> > --skip-build-check]
> >
> > DESCRIPTION
> >     This command creates an OpenEmbedded image based on the 'OE
> >     kickstart commands' found in the <wks file>.
> >
> >     In order to do this, wic needs to know the locations of the
> >     various build artifacts required to build the image.
> >
> >     Users can explicitly specify the build artifact locations using
> >     the -r, -b, -k, and -n options.  See below for details on where
> >     the corresponding artifacts are typically found in a normal
> >     OpenEmbedded build.
> >
> >     Alternatively, users can use the -e option to have 'mic'
> determine
> >     those locations for a given image.  If the -e option is used,
> the
> >     user needs to have set the appropriate MACHINE variable in
> >     local.conf, and have sourced the build environment.
> >
> >     The -e option is used to specify the name of the image to use
> the
> >     artifacts from e.g. core-image-sato.
> >
> >     The -r option is used to specify the path to the /rootfs dir to
> >     use as the .wks rootfs source.
> >
> >     The -b option is used to specify the path to the dir containing
> >     the boot artifacts (e.g. /EFI or /syslinux dirs) to use as the
> >     .wks bootimg source.
> >
> >     The -k option is used to specify the path to the dir containing
> >     the kernel to use in the .wks bootimg.
> >
> >     The -n option is used to specify the path to the native sysroot
> >     containing the tools to use to build the image.
> >
> >     The -s option is used to skip the build check.  The build check
> is
> >     a simple sanity check used to determine whether the user has
> >     sourced the build environment so that the -e option can operate
> >     correctly.  If the user has specified the build artifact
> locations
> >     explicitly, 'wic' assumes the user knows what he or she is doing
> >     and skips the build check.
> >
> >     When 'wic -e' is used, the locations for the build artifacts
> >     values are determined by 'wic -e' from the output of the
> 'bitbake
> >     -e' command given an image name e.g. 'core-image-minimal' and a
> >     given machine set in local.conf.  In that case, the image is
> >     created as if the following 'bitbake -e' variables were used:
> >
> >     -r:        IMAGE_ROOTFS
> >     -k:        STAGING_KERNEL_DIR
> >     -n:        STAGING_DIR_NATIVE
> >     -b:        HDDDIR and STAGING_DATA_DIR (handlers decide which to
> > use)
> >
> >     If 'wic -e' is not used, the user needs to select the
> appropriate
> >     value for -b (as well as -r, -k, and -n).
> >
> >     The -o option can be used to place the image in a directory with
> a
> >     different name and location.
> >
> >     As an alternative to the wks file, the image-specific properties
> >     that define the values that will be used to generate a
> particular
> >     image can be specified on the command-line using the -i option
> and
> >     supplying a JSON object consisting of the set of name:value
> pairs
> >     needed by image creation.
> >
> >     The set of properties available for a given image type can be
> >     listed using the 'wic list' command.
> >
> > So, the easiest way to create an image is to use the -e option with
> a
> > canned .wks file.  To use the -e option, you need to specify the
> image
> > used to generate the artifacts and you actually need to have the
> MACHINE
> > used to build them specified in your local.conf (these requirements
> > aren't necessary if you aren't using the -e options.  Below, we
> generate
> > a directdisk image, pointing the process at the core-image-minimal
> > artifacts for the current MACHINE:
> >
> > $ wic create directdisk -e core-image-minimal
> >
> > Checking basic build environment...
> > Done.
> >
> > Creating image(s)...
> >
> > Info: The new image(s) can be found here:
> >   /var/tmp/wic/build/directdisk-201309252350-sda.direct
> >
> > The following build artifacts were used to create the image(s):
> >
> > ROOTFS_DIR:
>  /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs
> > BOOTIMG_DIR:
>   /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share
> > KERNEL_DIR:
>  /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
> > NATIVE_SYSROOT:
>  /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
> >
> > The image(s) were created using OE kickstart file:
> >
>   /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/directdisk.wks
> >
> > The output shows the name and location of the image created, and so
> that
> > you know exactly what was used to generate the image, each of the
> > artifacts and the kickstart file used.
> >
> > Similarly, I can create a 'mkefidisk' image in the same way (notice
> that
> > I'm using a different machine - because I'm using the -e option, I
> > needed to change the MACHINE in my local.conf):
> >
> > $ wic create mkefidisk -e core-image-minimal
> > Checking basic build environment...
> > Done.
> >
> > Creating image(s)...
> >
> > Info: The new image(s) can be found here:
> >   /var/tmp/wic/build/mkefidisk-201309260027-sda.direct
> >
> > The following build artifacts were used to create the image(s):
> >
> > ROOTFS_DIR:
>  /home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/rootfs
> > BOOTIMG_DIR:
>   /home/trz/yocto/yocto-image/build/tmp/work/minnow-poky-linux/core-image-minimal/1.0-r0/core-image-minimal-1.0/hddimg
> > KERNEL_DIR:
>  /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel
> > NATIVE_SYSROOT:
>  /home/trz/yocto/yocto-image/build/tmp/sysroots/minnow/usr/src/kernel
> >
> > The image(s) were created using OE kickstart file:
> >
>   /home/trz/yocto/yocto-image/scripts/lib/image/canned-wks/mkefidisk.wks
> >
> > Here's an example that doesn't take the easy way out and manually
> > specifies each build artifact, along with a non-canned .wks file,
> and
> > also uses the -o option to have wic create the output somewhere
> other
> > than the default /var/tmp/wic:
> >
> > $ wic create ~/test.wks -o /home/trz/testwic
> >
> --rootfs-dir /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs --bootimg-dir /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share --kernel-dir /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel --native-sysroot /home/trz/yocto/yocto-image/build/tmp/sysroots/x86_64-linux
> >
> > Creating image(s)...
> >
> > Info: The new image(s) can be found here:
> >   /home/trz/testwic/build/test-201309260032-sda.direct
> >
> > The following build artifacts were used to create the image(s):
> >
> > ROOTFS_DIR:
>  /home/trz/yocto/yocto-image/build/tmp/work/crownbay_noemgd-poky-linux/core-image-minimal/1.0-r0/rootfs
> > BOOTIMG_DIR:
>   /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/share
> > KERNEL_DIR:
>  /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
> > NATIVE_SYSROOT:
>  /home/trz/yocto/yocto-image/build/tmp/sysroots/crownbay-noemgd/usr/src/kernel
> >
> > The image(s) were created using OE kickstart file:
> >   /home/trz/test.wks
> >
> > Finally, here's an example of the actual partition language commands
> > used to generate the mkefidisk image i.e. these are the contents of
> the
> > mkefidisk.wks OE kickstart file:
> >
> > # short-description: Create an EFI disk image
> > # long-description: Creates a partitioned EFI disk image that the
> user
> > # can directly dd to boot media.
> >
> > part /boot --source bootimg --ondisk sda --fstype=efi --label msdos
> --active --align 1024
> >
> > part / --source rootfs --ondisk sda --fstype=ext3 --label platform
> --align 1024
> >
> > part swap --ondisk sda --size 44 --label swap1 --fstype=swap
> >
> > bootloader  --timeout=10  --append="rootwait rootfstype=ext3
> console=ttyPCH0,115200 console=tty0 vmalloc=256MB
> snd-hda-intel.enable_msi=0"
> >
> > The initial 'wic' implementation here supports only the basic
> > kickstart partitioning commands: 'partition' (or 'part' for short)
> and
> > 'bootloader'.
> >
> > Currently, only the options used in the 'canned' scripts (in
> > scripts/lib/image/canned-wks) are supported.
> >
> > They're listed below and mostly follow the syntax and meaning of the
> > standard kickstart options for those commands:
> >
> > http://fedoraproject.org/wiki/Anaconda/Kickstart#part_or_partition
> > http://fedoraproject.org/wiki/Anaconda/Kickstart#bootloader
> >
> > For the 'partition' ('part') command, here are the supported
> options:
> >
> > --source
> >         bootimg
> >         rootfs
> > --ondisk sda
> > --size size (in mB)
> > --fstype
> >         msdos
> >         efi
> >         ext4
> >         ext3
> >         ext2
> >         btrfs
> >         swap
> > --label label
> > --active
> > ---align (in kB)
> >
> > The --source option is a wic-specific option that can currently have
> > one of two values, 'bootimg' or 'rootfs'.
> >
> > If '--source rootfs' is used, it tells the wic command to create a
> > partition as large as needed to fill with the contents of /rootfs
> > (specified by the -r 'wic' option) and to fill it with the contents
> of
> > /rootfs.
> >
> > If '--source bootimg' is used, it tells the wic command to create a
> > partition as large as needed to fill with the contents of the boot
> > partition (specified by the -b 'wic' option).  Exactly what those
> > contents are depend on the value of the --fstype option for that
> > partition.  If '--fstype=efi' is specified, the boot artifacts
> > contained in HDDDIR are used, and if '--fstype=msdos' is specified,
> > the boot artifacts found in STAGING_DATADIR are used.
> >
> > The '--align' option is a mic-specific option that says to start a
> > partition on an x kB boundary.
> >
> > For the 'bootloader' command, these are the supported options:
> >
> > --timeout
> > --append
> >
> > Future updates will implement more options - using anything not
> > explicitly supported can result in unpredicable results.
> >
> >
> > The following changes since commit
> b049d532f6e0ab9e458e486f81b00be47ee69acf:
> >
> >   testimage: Exclude BB_ORIGENV variable (2013-09-26 17:27:02 +0100)
> >
> > are available in the git repository at:
> >
> >   git://git.yoctoproject.org/poky-contrib.git tzanussi/wic-v1
> >
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=tzanussi/wic-v1
> >
> > Tom Zanussi (3):
> >   wic: Initial code for wic (OpenEmbedded Image Creator)
> >   wic: Add mic w/pykickstart
> >   wic: Add OpenEmbedded-specific implementation
> >
> >  scripts/lib/image/__init__.py                      |   22 +
> >  scripts/lib/image/canned-wks/directdisk.wks        |   10 +
> >  scripts/lib/image/canned-wks/mkefidisk.wks         |   11 +
> >  scripts/lib/image/config/wic.conf                  |    7 +
> >  scripts/lib/image/engine.py                        |  280 ++++
> >  scripts/lib/image/help.py                          |  311 ++++
> >  scripts/lib/mic/3rdparty/pykickstart/base.py       |  466 ++++++
> >  .../mic/3rdparty/pykickstart/commands/__init__.py  |   26 +
> >  .../3rdparty/pykickstart/commands/authconfig.py    |   40 +
> >  .../mic/3rdparty/pykickstart/commands/autopart.py  |  119 ++
> >  .../mic/3rdparty/pykickstart/commands/autostep.py  |   55 +
> >  .../3rdparty/pykickstart/commands/bootloader.py    |  265 ++++
> >  .../mic/3rdparty/pykickstart/commands/clearpart.py |   86 ++
> >  .../mic/3rdparty/pykickstart/commands/device.py    |  125 ++
> >  .../3rdparty/pykickstart/commands/deviceprobe.py   |   40 +
> >  .../3rdparty/pykickstart/commands/displaymode.py   |   68 +
> >  .../mic/3rdparty/pykickstart/commands/dmraid.py    |   91 ++
> >  .../3rdparty/pykickstart/commands/driverdisk.py    |  184 +++
> >  .../lib/mic/3rdparty/pykickstart/commands/fcoe.py  |  114 ++
> >  .../mic/3rdparty/pykickstart/commands/firewall.py  |  193 +++
> >  .../mic/3rdparty/pykickstart/commands/firstboot.py |   62 +
> >  .../lib/mic/3rdparty/pykickstart/commands/group.py |   88 ++
> >  .../3rdparty/pykickstart/commands/ignoredisk.py    |  139 ++
> >  .../3rdparty/pykickstart/commands/interactive.py   |   58 +
> >  .../lib/mic/3rdparty/pykickstart/commands/iscsi.py |  133 ++
> >  .../mic/3rdparty/pykickstart/commands/iscsiname.py |   54 +
> >  .../lib/mic/3rdparty/pykickstart/commands/key.py   |   64 +
> >  .../mic/3rdparty/pykickstart/commands/keyboard.py  |   55 +
> >  .../lib/mic/3rdparty/pykickstart/commands/lang.py  |   60 +
> >  .../3rdparty/pykickstart/commands/langsupport.py   |   58 +
> >  .../mic/3rdparty/pykickstart/commands/lilocheck.py |   54 +
> >  .../mic/3rdparty/pykickstart/commands/logging.py   |   66 +
> >  .../mic/3rdparty/pykickstart/commands/logvol.py    |  304 ++++
> >  .../3rdparty/pykickstart/commands/mediacheck.py    |   53 +
> >  .../mic/3rdparty/pykickstart/commands/method.py    |  186 +++
> >  .../mic/3rdparty/pykickstart/commands/monitor.py   |  106 ++
> >  .../lib/mic/3rdparty/pykickstart/commands/mouse.py |   70 +
> >  .../mic/3rdparty/pykickstart/commands/multipath.py |  111 ++
> >  .../mic/3rdparty/pykickstart/commands/network.py   |  363 +++++
> >  .../mic/3rdparty/pykickstart/commands/partition.py |  353 +++++
> >  .../lib/mic/3rdparty/pykickstart/commands/raid.py  |  365 +++++
> >  .../mic/3rdparty/pykickstart/commands/reboot.py    |   79 +
> >  .../lib/mic/3rdparty/pykickstart/commands/repo.py  |  249 +++
> >  .../mic/3rdparty/pykickstart/commands/rescue.py    |   68 +
> >  .../mic/3rdparty/pykickstart/commands/rootpw.py    |   93 ++
> >  .../mic/3rdparty/pykickstart/commands/selinux.py   |   64 +
> >  .../mic/3rdparty/pykickstart/commands/services.py  |   71 +
> >  .../lib/mic/3rdparty/pykickstart/commands/skipx.py |   54 +
> >  .../lib/mic/3rdparty/pykickstart/commands/sshpw.py |  105 ++
> >  .../mic/3rdparty/pykickstart/commands/timezone.py  |   86 ++
> >  .../mic/3rdparty/pykickstart/commands/updates.py   |   60 +
> >  .../mic/3rdparty/pykickstart/commands/upgrade.py   |  106 ++
> >  .../lib/mic/3rdparty/pykickstart/commands/user.py  |  173 +++
> >  .../lib/mic/3rdparty/pykickstart/commands/vnc.py   |  114 ++
> >  .../mic/3rdparty/pykickstart/commands/volgroup.py  |  102 ++
> >  .../mic/3rdparty/pykickstart/commands/xconfig.py   |  184 +++
> >  .../mic/3rdparty/pykickstart/commands/zerombr.py   |   69 +
> >  .../lib/mic/3rdparty/pykickstart/commands/zfcp.py  |  134 ++
> >  scripts/lib/mic/3rdparty/pykickstart/constants.py  |   57 +
> >  scripts/lib/mic/3rdparty/pykickstart/errors.py     |  103 ++
> >  .../mic/3rdparty/pykickstart/handlers/control.py   | 1307
> ++++++++++++++++
> >  .../lib/mic/3rdparty/pykickstart/handlers/f10.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f11.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f12.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f13.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f14.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f15.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f16.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f7.py    |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f8.py    |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/f9.py    |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/fc3.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/fc4.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/fc5.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/fc6.py   |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/rhel3.py |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/rhel4.py |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/rhel5.py |   24 +
> >  .../lib/mic/3rdparty/pykickstart/handlers/rhel6.py |   24 +
> >  scripts/lib/mic/3rdparty/pykickstart/ko.py         |   37 +
> >  scripts/lib/mic/3rdparty/pykickstart/options.py    |  204 +++
> >  scripts/lib/mic/3rdparty/pykickstart/parser.py     |  702 +++++++++
> >  scripts/lib/mic/3rdparty/pykickstart/sections.py   |  244 +++
> >  .../3rdparty/pykickstart/urlgrabber/__init__.py    |   53 +
> >  .../3rdparty/pykickstart/urlgrabber/byterange.py   |  463 ++++++
> >  .../mic/3rdparty/pykickstart/urlgrabber/grabber.py | 1477
> ++++++++++++++++++
> >  .../3rdparty/pykickstart/urlgrabber/keepalive.py   |  617 ++++++++
> >  .../mic/3rdparty/pykickstart/urlgrabber/mirror.py  |  458 ++++++
> >  .../3rdparty/pykickstart/urlgrabber/progress.py    |  530 +++++++
> >  .../3rdparty/pykickstart/urlgrabber/sslfactory.py  |   90 ++
> >  scripts/lib/mic/3rdparty/pykickstart/version.py    |  197 +++
> >  scripts/lib/mic/__init__.py                        |    4 +
> >  scripts/lib/mic/__version__.py                     |    1 +
> >  scripts/lib/mic/bootstrap.py                       |  279 ++++
> >  scripts/lib/mic/chroot.py                          |  343 +++++
> >  scripts/lib/mic/conf.py                            |  201 +++
> >  scripts/lib/mic/creator.py                         |  351 +++++
> >  scripts/lib/mic/imager/baseimager.py               | 1265
> ++++++++++++++++
> >  scripts/lib/mic/imager/direct.py                   |  472 ++++++
> >  scripts/lib/mic/imager/fs.py                       |   99 ++
> >  scripts/lib/mic/imager/livecd.py                   |  750 +++++++++
> >  scripts/lib/mic/imager/liveusb.py                  |  308 ++++
> >  scripts/lib/mic/imager/loop.py                     |  418 ++++++
> >  scripts/lib/mic/imager/raw.py                      |  501 +++++++
> >  scripts/lib/mic/kickstart/__init__.py              |  892
> +++++++++++
> >  .../lib/mic/kickstart/custom_commands/__init__.py  |   17 +
> >  .../lib/mic/kickstart/custom_commands/desktop.py   |   95 ++
> >  .../mic/kickstart/custom_commands/installerfw.py   |   63 +
> >  .../lib/mic/kickstart/custom_commands/micboot.py   |   49 +
> >  .../mic/kickstart/custom_commands/micpartition.py  |   57 +
> >  .../lib/mic/kickstart/custom_commands/micrepo.py   |  127 ++
> >  .../lib/mic/kickstart/custom_commands/partition.py |  370 +++++
> >  scripts/lib/mic/msger.py                           |  309 ++++
> >  scripts/lib/mic/plugin.py                          |  102 ++
> >  scripts/lib/mic/pluginbase.py                      |  101 ++
> >  scripts/lib/mic/plugins/backend/yumpkgmgr.py       |  490 ++++++
> >  scripts/lib/mic/plugins/backend/zypppkgmgr.py      |  973
> ++++++++++++
> >  scripts/lib/mic/plugins/hook/empty_hook.py         |    3 +
> >  scripts/lib/mic/plugins/imager/direct_plugin.py    |   92 ++
> >  scripts/lib/mic/plugins/imager/fs_plugin.py        |  143 ++
> >  scripts/lib/mic/plugins/imager/livecd_plugin.py    |  255 ++++
> >  scripts/lib/mic/plugins/imager/liveusb_plugin.py   |  260 ++++
> >  scripts/lib/mic/plugins/imager/loop_plugin.py      |  255 ++++
> >  scripts/lib/mic/plugins/imager/raw_plugin.py       |  275 ++++
> >  scripts/lib/mic/rt_util.py                         |  223 +++
> >  scripts/lib/mic/test                               |    1 +
> >  scripts/lib/mic/utils/BmapCreate.py                |  298 ++++
> >  scripts/lib/mic/utils/Fiemap.py                    |  252 ++++
> >  scripts/lib/mic/utils/cmdln.py                     | 1586
> ++++++++++++++++++++
> >  scripts/lib/mic/utils/errors.py                    |   71 +
> >  scripts/lib/mic/utils/fs_related.py                | 1057
> +++++++++++++
> >  scripts/lib/mic/utils/gpt_parser.py                |  331 ++++
> >  scripts/lib/mic/utils/grabber.py                   |   97 ++
> >  scripts/lib/mic/utils/misc.py                      | 1067
> +++++++++++++
> >  scripts/lib/mic/utils/oe/__init__.py               |   22 +
> >  scripts/lib/mic/utils/oe/misc.py                   |  108 ++
> >  scripts/lib/mic/utils/partitionedfs.py             |  776
> ++++++++++
> >  scripts/lib/mic/utils/proxy.py                     |  183 +++
> >  scripts/lib/mic/utils/rpmmisc.py                   |  600 ++++++++
> >  scripts/lib/mic/utils/runner.py                    |  109 ++
> >  scripts/wic                                        |  185 +++
> >  141 files changed, 30983 insertions(+)
> >  create mode 100644 scripts/lib/image/__init__.py
> >  create mode 100644 scripts/lib/image/canned-wks/directdisk.wks
> >  create mode 100644 scripts/lib/image/canned-wks/mkefidisk.wks
> >  create mode 100644 scripts/lib/image/config/wic.conf
> >  create mode 100644 scripts/lib/image/engine.py
> >  create mode 100644 scripts/lib/image/help.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/__init__.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/base.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/__init__.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/authconfig.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/autopart.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/autostep.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/bootloader.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/clearpart.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/device.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/deviceprobe.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/displaymode.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/dmraid.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/driverdisk.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/fcoe.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/firewall.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/firstboot.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/group.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/ignoredisk.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/interactive.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/iscsi.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/iscsiname.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/key.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/keyboard.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/lang.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/langsupport.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/lilocheck.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/logging.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/logvol.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/mediacheck.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/method.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/monitor.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/mouse.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/multipath.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/network.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/partition.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/raid.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/reboot.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/repo.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/rescue.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/rootpw.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/selinux.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/services.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/skipx.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/sshpw.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/timezone.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/updates.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/upgrade.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/user.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/vnc.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/volgroup.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/xconfig.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/zerombr.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/commands/zfcp.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/constants.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/errors.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/__init__.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/control.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f10.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f11.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f12.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f13.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f14.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f15.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f16.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f7.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f8.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/f9.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/fc3.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/fc4.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/fc5.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/fc6.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/rhel3.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/rhel4.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/rhel5.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/handlers/rhel6.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/ko.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/options.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/parser.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/sections.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/urlgrabber/__init__.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/urlgrabber/byterange.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/urlgrabber/grabber.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/urlgrabber/keepalive.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/urlgrabber/mirror.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/urlgrabber/progress.py
> >  create mode 100644
> scripts/lib/mic/3rdparty/pykickstart/urlgrabber/sslfactory.py
> >  create mode 100644 scripts/lib/mic/3rdparty/pykickstart/version.py
> >  create mode 100644 scripts/lib/mic/__init__.py
> >  create mode 100644 scripts/lib/mic/__version__.py
> >  create mode 100644 scripts/lib/mic/bootstrap.py
> >  create mode 100644 scripts/lib/mic/chroot.py
> >  create mode 100644 scripts/lib/mic/conf.py
> >  create mode 100644 scripts/lib/mic/creator.py
> >  create mode 100644 scripts/lib/mic/imager/__init__.py
> >  create mode 100644 scripts/lib/mic/imager/baseimager.py
> >  create mode 100644 scripts/lib/mic/imager/direct.py
> >  create mode 100644 scripts/lib/mic/imager/fs.py
> >  create mode 100644 scripts/lib/mic/imager/livecd.py
> >  create mode 100644 scripts/lib/mic/imager/liveusb.py
> >  create mode 100644 scripts/lib/mic/imager/loop.py
> >  create mode 100644 scripts/lib/mic/imager/raw.py
> >  create mode 100644 scripts/lib/mic/kickstart/__init__.py
> >  create mode 100644
> scripts/lib/mic/kickstart/custom_commands/__init__.py
> >  create mode 100644
> scripts/lib/mic/kickstart/custom_commands/desktop.py
> >  create mode 100644
> scripts/lib/mic/kickstart/custom_commands/installerfw.py
> >  create mode 100644
> scripts/lib/mic/kickstart/custom_commands/micboot.py
> >  create mode 100644
> scripts/lib/mic/kickstart/custom_commands/micpartition.py
> >  create mode 100644
> scripts/lib/mic/kickstart/custom_commands/micrepo.py
> >  create mode 100644
> scripts/lib/mic/kickstart/custom_commands/partition.py
> >  create mode 100644 scripts/lib/mic/msger.py
> >  create mode 100644 scripts/lib/mic/plugin.py
> >  create mode 100644 scripts/lib/mic/pluginbase.py
> >  create mode 100644 scripts/lib/mic/plugins/backend/yumpkgmgr.py
> >  create mode 100755 scripts/lib/mic/plugins/backend/zypppkgmgr.py
> >  create mode 100644 scripts/lib/mic/plugins/hook/.py
> >  create mode 100644 scripts/lib/mic/plugins/hook/empty_hook.py
> >  create mode 100644 scripts/lib/mic/plugins/imager/direct_plugin.py
> >  create mode 100644 scripts/lib/mic/plugins/imager/fs_plugin.py
> >  create mode 100644 scripts/lib/mic/plugins/imager/livecd_plugin.py
> >  create mode 100644 scripts/lib/mic/plugins/imager/liveusb_plugin.py
> >  create mode 100644 scripts/lib/mic/plugins/imager/loop_plugin.py
> >  create mode 100644 scripts/lib/mic/plugins/imager/raw_plugin.py
> >  create mode 100644 scripts/lib/mic/rt_util.py
> >  create mode 100644 scripts/lib/mic/test
> >  create mode 100644 scripts/lib/mic/utils/BmapCreate.py
> >  create mode 100644 scripts/lib/mic/utils/Fiemap.py
> >  create mode 100644 scripts/lib/mic/utils/__init__.py
> >  create mode 100644 scripts/lib/mic/utils/cmdln.py
> >  create mode 100644 scripts/lib/mic/utils/errors.py
> >  create mode 100644 scripts/lib/mic/utils/fs_related.py
> >  create mode 100644 scripts/lib/mic/utils/gpt_parser.py
> >  create mode 100644 scripts/lib/mic/utils/grabber.py
> >  create mode 100644 scripts/lib/mic/utils/misc.py
> >  create mode 100644 scripts/lib/mic/utils/oe/__init__.py
> >  create mode 100644 scripts/lib/mic/utils/oe/misc.py
> >  create mode 100644 scripts/lib/mic/utils/partitionedfs.py
> >  create mode 100644 scripts/lib/mic/utils/proxy.py
> >  create mode 100644 scripts/lib/mic/utils/rpmmisc.py
> >  create mode 100644 scripts/lib/mic/utils/runner.py
> >  create mode 100755 scripts/wic
> >
> > --
> > 1.7.11.4
> >
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core@lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
> 
>
Trevor Woerner - Sept. 28, 2013, 5:10 p.m.
On 26 September 2013 22:17, Tom Zanussi <tom.zanussi@linux.intel.com> wrote:
> This patchset implements a new command named 'wic' (for OpenEmbedded
> Image Creator).  Please see [YOCTO #3847] for extensive background on
> what's implemented here.

Wow Tom, this is really AWESOME work! And thanks for the excellent
detailed description of the current system which you documented in
[YOCTO #3847]!

One question comes to mind: if I have a package which installs files
to two (or more) different directories and I have decided (for
whatever reason) that those directories should be on separate
partitions, is this supported?
tom.zanussi@linux.intel.com - Sept. 30, 2013, 1:18 a.m.
On Sat, 2013-09-28 at 13:10 -0400, Trevor Woerner wrote:
> On 26 September 2013 22:17, Tom Zanussi <tom.zanussi@linux.intel.com> wrote:
> > This patchset implements a new command named 'wic' (for OpenEmbedded
> > Image Creator).  Please see [YOCTO #3847] for extensive background on
> > what's implemented here.
> 
> Wow Tom, this is really AWESOME work! And thanks for the excellent
> detailed description of the current system which you documented in
> [YOCTO #3847]!
> 

Thanks!

> One question comes to mind: if I have a package which installs files
> to two (or more) different directories and I have decided (for
> whatever reason) that those directories should be on separate
> partitions, is this supported?

No, the current code doesn't, but what I had planned on doing was adding
hyphenated suffixes onto the --source rootfs param which would be
treated as subdividing the rootfs (passed in using -r) and creating
separate partitions with those contents e.g.

--source rootfs-home
--source rootfs-usr-local

So in the above, the contents of /home would be split out into a
separate partition (and subtracted from rootfs) as well as /usr/local,
and fstab entries would be created to mount those partitions as /home
and /usr/local...

Tom 

> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core@lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core