summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
authorTom Zanussi <tom.zanussi@linux.intel.com>2014-07-07 16:05:44 -0500
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-07-10 17:38:34 +0100
commitd8ef35557e2ff9ac80cbfa471c675405ead9c69c (patch)
tree7813c8fecd615449a8cefcaf5effe4de7ee0c98e /scripts
parentf2ab61968129c6c15b0a61968a7761ccce5a469a (diff)
downloadpoky-d8ef35557e2ff9ac80cbfa471c675405ead9c69c.tar.gz
wic: Add general 'plugins' help topic
Add a category for help topics with an initial help topic discussing source plugins. (From OE-Core rev: a3dbe46dd28a6fd9e6c21f6bbb6a12578df9dff3) 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>
Diffstat (limited to 'scripts')
-rw-r--r--scripts/lib/image/help.py101
-rwxr-xr-xscripts/wic15
2 files changed, 109 insertions, 7 deletions
diff --git a/scripts/lib/image/help.py b/scripts/lib/image/help.py
index 6de7ab023e..a4f27ab68e 100644
--- a/scripts/lib/image/help.py
+++ b/scripts/lib/image/help.py
@@ -87,7 +87,11 @@ wic_usage = """
87 create Create a new OpenEmbedded image 87 create Create a new OpenEmbedded image
88 list List available values for options and image properties 88 list List available values for options and image properties
89 89
90 See 'wic help COMMAND' for more information on a specific command. 90 Help topics:
91 plugins wic plugins - Overview and API
92
93 See 'wic help <COMMAND or HELP TOPIC>' for more information on a specific
94 command or help topic.
91""" 95"""
92 96
93wic_help_usage = """ 97wic_help_usage = """
@@ -323,3 +327,98 @@ DESCRIPTION
323 ["offset", "offset of the partition within the image"] 327 ["offset", "offset of the partition within the image"]
324 328
325""" 329"""
330
331wic_plugins_help = """
332
333NAME
334 wic plugins - Overview and API
335
336DESCRIPTION
337 plugins allow wic functionality to be extended and specialized by
338 users. This section documents the plugin interface, which is
339 currently restricted to 'source' plugins.
340
341 'Source' plugins provide a mechanism to customize various aspects
342 of the image generation process in wic, mainly the contents of
343 partitions.
344
345 Source plugins provide a mechanism for mapping values specified in
346 .wks files using the --source keyword to a particular plugin
347 implementation that populates a corresponding partition.
348
349 A source plugin is created as a subclass of SourcePlugin (see
350 scripts/lib/mic/pluginbase.py) and the plugin file containing it
351 is added to scripts/lib/mic/plugins/source/ to make the plugin
352 implementation available to the wic implementation.
353
354 Source plugins can also be implemented and added by external
355 layers - any plugins found in a scripts/lib/mic/plugins/source/
356 directory in an external layer will also be made available.
357
358 When the wic implementation needs to invoke a partition-specific
359 implementation, it looks for the plugin that has the same name as
360 the --source param given to that partition. For example, if the
361 partition is set up like this:
362
363 part /boot --source bootimg-pcbios ...
364
365 then the methods defined as class members of the plugin having the
366 matching bootimg-pcbios .name class member would be used.
367
368 To be more concrete, here's the plugin definition that would match
369 a '--source bootimg-pcbios' usage, along with an example method
370 that would be called by the wic implementation when it needed to
371 invoke an implementation-specific partition-preparation function:
372
373 class BootimgPcbiosPlugin(SourcePlugin):
374 name = 'bootimg-pcbios'
375
376 @classmethod
377 def do_prepare_partition(self, part, ...)
378
379 If the subclass itself doesn't implement a function, a 'default'
380 version in a superclass will be located and used, which is why all
381 plugins must be derived from SourcePlugin.
382
383 The SourcePlugin class defines the following methods, which is the
384 current set of methods that can be implemented/overridden by
385 --source plugins. Any methods not implemented by a SourcePlugin
386 subclass inherit the implementations present in the SourcePlugin
387 class (see the SourcePlugin source for details):
388
389 do_prepare_partition()
390 Called to do the actual content population for a partition
391 i.e. it 'prepares' the final partition image which will be
392 incorporated into the disk image.
393
394 do_configure_partition()
395 Called before do_prepare_partition(), typically used to
396 create custom configuration files for a partition, for
397 example syslinux or grub config files.
398
399 do_install_disk()
400 Called after all partitions have been prepared and assembled
401 into a disk image. This provides a hook to allow
402 finalization of a disk image e.g. to write an MBR to it.
403
404 do_stage_partition()
405 Special content staging hook called before
406 do_prepare_partition(), normally empty.
407
408 Typically, a partition will just use the passed-in parame
409 e.g straight bootimg_dir, etc, but in some cases, things
410 need to be more tailored e.g. to use a deploy dir + /boot,
411 etc. This hook allows those files to be staged in a
412 customized fashion. Not that get_bitbake_var() allows you
413 to acces non-standard variables that you might want to use
414 for this.
415
416 This scheme is extensible - adding more hooks is a simple matter
417 of adding more plugin methods to SourcePlugin and derived classes.
418 The code that then needs to call the plugin methods the uses
419 plugin.get_source_plugin_methods() to find the method(s) needed by
420 the call; this is done by filling up a dict with keys containing
421 the method names of interest - on success, these will be filled in
422 with the actual methods. Please see the implementation for
423 examples and details.
424"""
diff --git a/scripts/wic b/scripts/wic
index 00eddfd7bc..ac3ed160d9 100755
--- a/scripts/wic
+++ b/scripts/wic
@@ -240,12 +240,15 @@ wic_help_topic_usage = """
240""" 240"""
241 241
242subcommands = { 242subcommands = {
243 "create": [wic_create_subcommand, 243 "create": [wic_create_subcommand,
244 wic_create_usage, 244 wic_create_usage,
245 wic_create_help], 245 wic_create_help],
246 "list": [wic_list_subcommand, 246 "list": [wic_list_subcommand,
247 wic_list_usage, 247 wic_list_usage,
248 wic_list_help], 248 wic_list_help],
249 "plugins": [wic_help_topic_subcommand,
250 wic_help_topic_usage,
251 wic_plugins_help],
249} 252}
250 253
251 254