[gnome-continuous-yocto/gnomeostree-3.28-rocko: 8009/8267] dev-manual: Updated the plug-ins section.
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-continuous-yocto/gnomeostree-3.28-rocko: 8009/8267] dev-manual: Updated the plug-ins section.
- Date: Sun, 17 Dec 2017 07:03:00 +0000 (UTC)
commit 7cf82df8b09dbdf999f9b85c33a7f3be10efc5ba
Author: Scott Rifenbark <srifenbark gmail com>
Date: Tue Oct 10 12:24:01 2017 -0700
dev-manual: Updated the plug-ins section.
(From yocto-docs rev: d1a4ff5ee177c7b9442d805b6e20a8ba8410d91d)
Signed-off-by: Scott Rifenbark <srifenbark gmail com>
Signed-off-by: Richard Purdie <richard purdie linuxfoundation org>
.../dev-manual/dev-manual-common-tasks.xml | 198 ++++++++++++--------
1 files changed, 118 insertions(+), 80 deletions(-)
---
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml
b/documentation/dev-manual/dev-manual-common-tasks.xml
index c788a8d..a5fe63a 100644
--- a/documentation/dev-manual/dev-manual-common-tasks.xml
+++ b/documentation/dev-manual/dev-manual-common-tasks.xml
@@ -5467,22 +5467,22 @@
<title>Plug-ins</title>
<para>
- Plug-ins allow Wic functionality to
- be extended and specialized by users.
- This section documents the plug-in interface, which is
- currently restricted to source plug-ins.
+ You can extend and specialize Wic functionality by using
+ Wic plug-ins.
+ This section explains the Wic plug-in interface.
+ <note>
+ Wic plug-ins consist of "source" and "imager" plug-ins.
+ Imager plug-ins are beyond the scope of this section.
+ </note>
</para>
<para>
- Source plug-ins provide a mechanism to customize
- various aspects of the image generation process in
- Wic, mainly the contents of
- partitions.
- The plug-ins provide a mechanism for mapping values
- specified in <filename>.wks</filename> files using the
- <filename>--source</filename> keyword to a
- particular plug-in implementation that populates a
- corresponding partition.
+ Source plug-ins provide a mechanism to customize partition
+ content during the Wic image generation process.
+ You can use source plug-ins to map values that you specify
+ using <filename>--source</filename> commands in kickstart
+ files (i.e. <filename>*.wks</filename>) to a plug-in
+ implementation used to populate a given partition.
<note>
If you use plug-ins that have build-time dependencies
(e.g. native tools, bootloaders, and so forth)
@@ -5494,80 +5494,119 @@
</para>
<para>
- A source plug-in is created as a subclass of
- <filename>SourcePlugin</filename>.
- The plug-in file containing it is added to
- <filename>scripts/lib/wic/plugins/source/</filename> to
- make the plug-in implementation available to the
- Wic implementation.
- For more information, see
- <filename>scripts/lib/wic/pluginbase.py</filename>.
+ Source plug-ins are subclasses defined in plug-in files.
+ As shipped, the Yocto Project provides several plug-in
+ files.
+ You can see the source plug-in files that ship with the
+ Yocto Project
+ <ulink
url='&YOCTO_GIT_URL;/cgit/cgit.cgi/poky/tree/scripts/lib/wic/plugins/source'>here</ulink>.
+ Each of these plug-in files contain source plug-ins that
+ are designed to populate a specific Wic image partition.
+ </para>
+
+ <para>
+ Source plug-ins are subclasses of the
+ <filename>SourcePlugin</filename> class, which is
+ defined in the
+ <filename>poky/scripts/lib/wic/pluginbase.py</filename>
+ file.
+ For example, the <filename>BootimgEFIPlugin</filename>
+ source plug-in found in the
+ <filename>bootimg-efi.py</filename> file is a subclass of
+ the <filename>SourcePlugin</filename> class, which is found
+ in the <filename>pluginbase.py</filename> file.
</para>
<para>
- Source plug-ins can also be implemented and added by
- external layers.
- As such, any plug-ins found in a
+ You can also implement source plug-ins in a layer outside
+ of the Source Repositories (external layer).
+ To do so, be sure that your plug-in files are located in
+ a directory whose path is
<filename>scripts/lib/wic/plugins/source/</filename>
- directory in an external layer are also made
- available.
+ within your external layer.
+ When the plug-in files are located there, the source
+ plug-ins they contain are made available to Wic.
</para>
<para>
- When the Wic implementation needs
- to invoke a partition-specific implementation, it looks
- for the plug-in that has the same name as the
- <filename>--source</filename> parameter given to
- that partition.
- For example, if the partition is set up as follows:
+ When the Wic implementation needs to invoke a
+ partition-specific implementation, it looks for the plug-in
+ with the same name as the <filename>--source</filename>
+ parameter used in the kickstart file given to that
+ partition.
+ For example, if the partition is set up using the following
+ command in a kickstart file:
<literallayout class='monospaced'>
- part /boot --source bootimg-pcbios ...
+ part /boot --source bootimg-pcbios --ondisk sda --label boot --active --align 1024
</literallayout>
- The methods defined as class members of the plug-in
- having the matching <filename>bootimg-pcbios.name</filename>
- class member are used.
+ The methods defined as class members of the matching
+ source plug-in (i.e. <filename>bootimg-pcbios</filename>)
+ in the <filename>bootimg-pcbios.py</filename> plug-in file
+ are used.
</para>
<para>
- To be more concrete, here is the plug-in definition that
- matches a
- <filename>--source bootimg-pcbios</filename> usage,
- along with an example
- method called by the Wic implementation
- when it needs to invoke an implementation-specific
- partition-preparation function:
+ To be more concrete, here is the corresponding plug-in
+ definition from the <filename>bootimg-pcbios.py</filename>
+ file for the previous command along with an example
+ method called by the Wic implementation when it needs to
+ prepare a partition using an implementation-specific
+ function:
<literallayout class='monospaced'>
- class BootimgPcbiosPlugin(SourcePlugin):
- name = 'bootimg-pcbios'
+ bootimg-pcbios.py
+ .
+ .
+ .
+ class BootimgPcbiosPlugin(SourcePlugin):
+ """
+ Create MBR boot partition and install syslinux on it.
+ """
- @classmethod
- def do_prepare_partition(self, part, ...)
+ name = 'bootimg-pcbios'
+ .
+ .
+ .
+ @classmethod
+ def do_prepare_partition(cls, part, source_params, creator, cr_workdir,
+ oe_builddir, bootimg_dir, kernel_dir,
+ rootfs_dir, native_sysroot):
+ """
+ Called to do the actual content population for a partition i.e. it
+ 'prepares' the partition to be incorporated into the image.
+ In this case, prepare content for legacy bios boot partition.
+ """
+ .
+ .
+ .
</literallayout>
- If the subclass itself does not implement a function, a
- default version in a superclass is located and
- used, which is why all plug-ins must be derived from
- <filename>SourcePlugin</filename>.
+ If a subclass (plug-in) itself does not implement a
+ particular function, Wic locates and uses the default
+ version in the superclass.
+ It is for this reason that all source plug-ins are derived
+ from the <filename>SourcePlugin</filename> class.
</para>
<para>
- The <filename>SourcePlugin</filename> class defines the
- following methods, which is the current set of methods
- that can be implemented or overridden by
- <filename>--source</filename> plug-ins.
- Any methods not implemented by a
- <filename>SourcePlugin</filename> subclass inherit the
- implementations present in the
- <filename>SourcePlugin</filename> class.
+ The <filename>SourcePlugin</filename> class defined in
+ the <filename>pluginbase.py</filename> file defines
+ a set of methods that source plug-ins can implement or
+ override.
+ Any plug-ins (subclass of
+ <filename>SourcePlugin</filename>) that do not implement
+ a particular method inherit the implementation of the
+ method from the <filename>SourcePlugin</filename> class.
For more information, see the
- <filename>SourcePlugin</filename> source for details:
+ <filename>SourcePlugin</filename> class in the
+ <filename>pluginbase.py</filename> file for details:
</para>
<para>
+ The following list describes the methods implemented in the
+ <filename>SourcePlugin</filename> class:
<itemizedlist>
<listitem><para>
<emphasis><filename>do_prepare_partition()</filename>:</emphasis>
- Called to do the actual content population for a
- partition.
+ Called to populate a partition with actual content.
In other words, the method prepares the final
partition image that is incorporated into the
disk image.
@@ -5575,27 +5614,27 @@
<listitem><para>
<emphasis><filename>do_configure_partition()</filename>:</emphasis>
Called before
- <filename>do_prepare_partition()</filename>.
- This method is typically used to create custom
- configuration files for a partition (e.g. syslinux
- or grub configuration files).
+ <filename>do_prepare_partition()</filename> to
+ create custom configuration files for a partition
+ (e.g. syslinux or grub configuration files).
</para></listitem>
<listitem><para>
<emphasis><filename>do_install_disk()</filename>:</emphasis>
Called after all partitions have been prepared and
assembled into a disk image.
This method provides a hook to allow finalization
- of a disk image, (e.g. writing an MBR).
+ of a disk image (e.g. writing an MBR).
</para></listitem>
<listitem><para>
<emphasis><filename>do_stage_partition()</filename>:</emphasis>
Special content-staging hook called before
<filename>do_prepare_partition()</filename>.
This method is normally empty.</para>
+
<para>Typically, a partition just uses the passed-in
parameters (e.g. the unmodified value of
<filename>bootimg_dir</filename>).
- However, in some cases things might need to be
+ However, in some cases, things might need to be
more tailored.
As an example, certain files might additionally
need to be taken from
@@ -5605,27 +5644,26 @@
<note>
<filename>get_bitbake_var()</filename>
allows you to access non-standard variables
- that you might want to use for this.
+ that you might want to use for this
+ behavior.
</note>
</para></listitem>
</itemizedlist>
</para>
<para>
- This scheme is extensible.
- Adding more hooks is a simple matter of adding more
- plug-in methods to <filename>SourcePlugin</filename> and
- derived classes.
- The code that then needs to call the plug-in methods uses
+ You can extend the source plug-in mechanism.
+ To add more hooks, create more source plug-in methods
+ within <filename>SourcePlugin</filename> and the
+ corresponding derived subclasses.
+ The code that calls the plug-in methods uses the
<filename>plugin.get_source_plugin_methods()</filename>
- to find the method or methods needed by the call.
- Retrieval of those methods is accomplished
- by filling up a dict with keys
- containing the method names of interest.
+ function to find the method or methods needed by the call.
+ Retrieval of those methods is accomplished by filling up
+ a dict with keys that contain the method names of interest.
On success, these will be filled in with the actual
methods.
- Please see the Wic
- implementation for examples and details.
+ See the Wic implementation for examples and details.
</para>
</section>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]