summaryrefslogtreecommitdiffstats
path: root/scripts/lib/mic
Commit message (Collapse)AuthorAgeFilesLines
* wic: Fix exec_native_cmd() pathTom Zanussi2014-02-201-1/+1
| | | | | | | | | | | The path exported in exec_native_cmd() includes bogus 'PATH=' which means the native paths for all but the first will be ignored. (From OE-Core rev: e10c1102d958ffc6b521fb36c6bc51d896503218) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Honor --size for --source partititionsTom Zanussi2014-02-094-10/+68
| | | | | | | | | | | | | | Instead of simply creating partitions large enough to contain the contents of a --source partition (and adding a pre-specified amount of padding), use the --size used in the partition .wks statement. If --size isn't used, or is smaller than the actual --source size, retain the current behavior. (From OE-Core rev: 23b6c5ea4d48cdf731e5202991961a0e4b10ff29) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Hook up BootimgEFIPlugin and BootimgPcbiosPlugin pluginsTom Zanussi2014-02-044-277/+84
| | | | | | | | | | | | | | | | | | | Remove all the Wic_PartData and DirectImageCreator code now implemented by the BootimgEFIPlugin and BootimgPcbiosPlugin plugins, as well as all the special-cased boot_type code, significantly cleaning up the code. Replace the calling code with general-purpose plugin invocations, in essence calling the appropriate implementations at run-time based on the --source value in effect. Change the directdisk.wks and mkefidisk.wks scripts to make use of the new plugins. (From OE-Core rev: 43558610a5793888ff2b18bd3a27c7ab558e5ad0) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Add BootimgEFIPlugin and BootimgPcbiosPluginTom Zanussi2014-02-042-0/+348
| | | | | | | | | | | | | | | Implement the BootimgPcbiosPlugin and BootimgEFIPlugin SourcePlugin classes. The configure/prepare_partition() methods are implemented using code derived from similar code in the Wic_PartData class. These classes have the corresponding names 'bootimg-pcbios' and 'bootimg-efi', which are the names that should be used in the --source parameters of the .wks partition commands. (From OE-Core rev: 6e147488b40f730e07f1e0f232083ed75388daa0) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Add SourcePlugin classTom Zanussi2014-02-042-3/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Define the SourcePlugin class, which is the class that should be subclassed to create a 'source' plugin. 'Source' plugins provide a mechanism to customize various aspects of the image generation process in wic, mainly the contents of partitions. The initial version of wic defined a --source param for partitions, which was in the first revision hard-coded to two possible values: rootfs and bootimg. This patch essentially removes the hard-coded --bootimg param and replaces it with a plugin system that maps the value specified as --source to a particular 'source' plugin instead. A 'source' plugin is created as a subclass of SourcePlugin and the plugin file containing it is added to scriptsl/lib/mic/plugins/source/ to make the plugin implementation available to the wic implementation. When the wic implementation needs to invoke a partition-specific implementation, it looks for the plugin that has the same name as the --source param given to that partition. For example, if the partition is set up like this: part /boot --source bootimg-pcbios ... then the methods defined as class members of the plugin having the matching .name class member would be used. To be more concrete, here's the plugin definition that would match a '--source bootimg-pcbios' usage, along with an example method that would be called by the wic implementation when it needed to invoke an implementation-specific partition-preparation function: class BootimgPcbiosPlugin(SourcePlugin): name = 'bootimg-pcbios' @classmethod def do_prepare_partition(self, part, ...) If the subclass itself doesn't implement a function, a 'default' version in a superclass will be located and used, which is why all plugins must be derived from SourcePlugin. This scheme is extensible - adding more hooks is a simple matter of adding more plugin methods to SourcePlugin and derived classes. The code that then needs to call the plugin methods the uses plugin.get_source_plugin_methods() to find the method(s) needed by the call; this is done by filling up a dict with keys containing the methon names of interest - on success, these will be filled in with the actual methods. fPlease see the implementation for examples and details. Note that a source plugin need not restrict itself to methods that apply directly to partitions - methods can also be defined for higher level processing such as at the 'disk' level. The get_default_source_plugin() of DirectImageCreator allows the default source plugin to be retrieved; by default this is set to be the same plugin used for the /boot partition, but that can be overridden by specifying a different --source and therefore different plugin on the 'bootloader' line. This isn't ideal, but it avoids forcing a new high-level object to be defined for that purpose. Note that the '--source rootfs' param remains as its current hard-coded value, which is just the rootfs to be used to populate the partition - by default, that's just the value of the bitbake ROOTFS_DIR variable (or whatever was passed in using the -r param). Note that this also could also be overridden by creating a source plugin using a different name; at this point, unlike with bootimg, there's been no need to do so. (From OE-Core rev: 663833d8ecccb36ab42150bc5c9c00be79fa5b93) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Add wic-specific bootloader subclassTom Zanussi2014-02-043-2/+65
| | | | | | | | | | | | | Add a new wic-specific bootloader subclass so we can add a --source param to hang non-partition plugin off of. By default, the bootloader gets the /boot partition source plugin, but this can be overridden by the --source bootloader param if needed. (From OE-Core rev: f90e4097c4e69d4f61c69923cb5d1ebb6b74d2ff) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Create and use new functions for getting bitbake variablesTom Zanussi2014-02-041-0/+16
| | | | | | | | | | Add get_bitbake_var() and bitbake_env_lines() functions for use by plugins, which will need access to them for customization. (From OE-Core rev: f0bb47b0d7ab6520c105ce131844269172de3efd) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Move some common items to oe.miscTom Zanussi2014-02-042-2/+12
| | | | | | | | | | Move a couple items into a more common location since they're going to need to be accessible from source plugins. (From OE-Core rev: 95ca523949e838850b5afa090ba16f91b8557c12) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Remove selinux_check()Tom Zanussi2013-10-301-4/+0
| | | | | | | | | | | This seems to be an obsolete check - we don't have any problems with image creation under selinux, so remove it. (From OE-Core rev: 12e81eceab9e0a483765566ad3791b14718195b5) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Update and generalize pseudo setup for rootfs generationTom Zanussi2013-10-231-13/+15
| | | | | | | | | | Remove unnecessary pseudo exports i.e. PSEUDO_DISABLED and move the setup to the top-level prepare_rootfs(). (From OE-Core rev: 4bf11cd7d7301da664c098c8a0ae9c0294a6f423) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Make find_binary_path() more user-friendlyTom Zanussi2013-10-231-1/+4
| | | | | | | | | | | | find_binary_path() is useful, but if the binary isn't found, it prints a stacktrace and a less-than-useful message. Users complain when they get stacktraces for things they can act on, so remove the stacktrace and tell the user what the problem is. (From OE-Core rev: 0d9eef0eaa267500e8eedab8b72ddf24eb0516db) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Remove binary dependenciesTom Zanussi2013-10-231-4/+0
| | | | | | | | | | Current functionality doesn't make use of kpartx, mount, or unmount, and we use native mkswap, so remove the binary checks for those. (From OE-Core rev: 76293d2d6bbdeacd7b34f39f26fb97c3d7f9496f) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Remove rpmmisc call from livecdTom Zanussi2013-10-231-1/+1
| | | | | | | | | | | | | | We don't currently use LiveCDImageCreator, but it makes calls when initialized via the plugin interface to rpmmisc module functions, which we don't want the dependency on. To make it (and LiveUSBImageCreator) happy, we give it the dummy "i386" value for now. (From OE-Core rev: e10ae516cfc10900ed12e84c743e3a7127372135) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Remove rpm and grabber dependencies from BaseImageCreatorTom Zanussi2013-10-231-3/+1
| | | | | | | | | | | | | | | | BaseImageCreator is a base class for DirectImageCreator and others, and imports rpm and grabber (which imports rpm). The various plugins e.g. DirectPlugin import the creators and therefore these dependencies, which manifest at run-time as e.g.: Warning: Failed to load plugin imager/direct_plugin: No module named rpm (From OE-Core rev: a1e24c4a5f5771b7ad35e53ce96c6d82212e4d7e) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: remove rpm warning code from BackendPluginTom Zanussi2013-10-231-5/+0
| | | | | | | | | | We don't currently use rpm functionality, so we don't need to silence rpm warnings. (From OE-Core rev: dd3cc03d4fa3347f8ef2db23d8ff98bdbdb73baa) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Remove dependency on myurlgrab moduleTom Zanussi2013-10-231-1/+0
| | | | | | | | | | | mylrlgrab is in grabber, which imports rpm. For current functionality, we don't need to grab urls or import rpm, so remove the dependency. (From OE-Core rev: 429ecc2afa499df35a1ae9da6f92b88c6f2d8d11) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Remove dependency on rpmmiscTom Zanussi2013-10-233-3/+2
| | | | | | | | | | | | rpmmisc imports rpm and contains misc rpm utilities related to packaging and determining arches based on the packaging. We should never run across this in the initial version of wic, so remove the dependency. (From OE-Core rev: 2d59b6eeb418cf23eef3e32b43354b4ab16a40b9) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Remove dependency on rt_util moduleTom Zanussi2013-10-237-7/+7
| | | | | | | | | | | | | | | | rt_util contains bootstrap_mic(), which imports rpm and other things we don't need because we don't do bootstrap i.e. runtime (set in wic.conf) is always set to 'native', which means use what's on the local host. bootstrap mode is for downloading and installing rpms that wic needs, which we may want to implement later; for now, we just want to use what's local. (From OE-Core rev: 3103f0cb908eced7b751128c2bba898d12017c80) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: add pseudo to the populate-extfs stepTom Zanussi2013-10-181-1/+8
| | | | | | | | | | Without this, files in the generated filesystem pick up the wrong ownership. (From OE-Core rev: 24a6b1324965080fef6c363edcb37768090eebea) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Force lba off for FAT16 partitionsDarren Hart2013-10-161-0/+10
| | | | | | | | | | | | | If fat16 is specified to the mkpart parted command, parted will default to setting the lba flag which causes certain EFI firmware to fail to detect the filesystem. lba shouldn't be necessary for FAT16 filesystems anyway, explicitly disable it. (From OE-Core rev: 30442d432e203e655b7d40b93f7307f475de1614) Signed-off-by: Darren Hart <dvhart@linux.intel.com> Cc: Tom Zanussi <tom.zanussi@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Add OpenEmbedded-specific implementationTom Zanussi2013-10-0115-225/+1201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Reuses the mic/livecd infrastructure but heavily subclasses and modifies it to adapt to the special needs of building images from existing OpenEmbedded build artifacts. In addition to the OE-specific mic objects and modifications to the underlying infrastructure, this adds a mechanism to allow OE kickstart files to be 'canned' and made available to users via the 'wic list images' command. Two initial OE kickstart files have been added as canned .wks files: directdisk, which implements the same thing as the images created by directdisk.bbclass, and mkefidisk, which can essentially be used as a replacement for mkefidisk.sh. Of course, since creation of these images are now driven by .wks files rather than being hard-coded into class files or scripts, they can be easily modified to generate different variations on those images. They also don't require root priveleges, since they don't use mount to create the images. They don't however write to media like mkefidisk.sh does, but rather create images that can be written onto media. (From OE-Core rev: f87acc5e59d3c2c39ff171b5557977dab4c8f4a6) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* wic: Add mic w/pykickstartTom Zanussi2013-10-01134-0/+29181
This is the starting point for the implemention described in [YOCTO 3847] which came to the conclusion that it would make sense to use kickstart syntax to implement image creation in OpenEmbedded. I subsequently realized that there was an existing tool that already implemented image creation using kickstart syntax, the Tizen/Meego mic tool. As such, it made sense to use that as a starting point - this commit essentially just copies the relevant Python code from the MIC tool to the scripts/lib dir, where it can be accessed by the previously created wic tool. Most of this will be removed or renamed by later commits, since we're initially focusing on partitioning only. Care should be taken so that we can easily add back any additional functionality should we decide later to expand the tool, though (we may also want to contribute our local changes to the mic tool to the Tizen project if it makes sense, and therefore should avoid gratuitous changes to the original code if possible). Added the /mic subdir from Tizen mic repo as a starting point: git clone git://review.tizen.org/tools/mic.git For reference, the top commit: commit 20164175ddc234a17b8a12c33d04b012347b1530 Author: Gui Chen <gui.chen@intel.com> Date: Sun Jun 30 22:32:16 2013 -0400 bump up to 0.19.2 Also added the /plugins subdir, moved to under the /mic subdir (to match the default plugin_dir location in mic.conf.in, which was renamed to yocto-image.conf (moved and renamed by later patches) and put into /scripts. (From OE-Core rev: 31f0360f1fd4ebc9dfcaed42d1c50d2448b4632e) Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>