aboutsummaryrefslogtreecommitdiffstats
path: root/documentation/kernel-dev/kernel-dev-advanced.xml
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2013-01-09 17:26:01 -0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-01-16 15:59:17 +0000
commit7eccfa6849a3ee870ceb59a28f590f6cfcb305fb (patch)
tree81ad60c89d89fd2628390f5a1f30d45b78af15da /documentation/kernel-dev/kernel-dev-advanced.xml
parentf42c87a1acd6419e78ad1567cb2e88720e63c4b5 (diff)
downloadopenembedded-core-contrib-7eccfa6849a3ee870ceb59a28f590f6cfcb305fb.tar.gz
kernel-dev: Created super section for Branches.
The sections for "Machine Branches" and "Feature Branches" really should be encapsulated within a section on branching. Much of the text in the "Machine Branches" section presents the rationale behind both types of branches. I have created a larger section to contain these and will edit the text to fit. (From yocto-docs rev: c7c67f5867f22ebbbd49cab79bb2d4e52422ecac) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/kernel-dev/kernel-dev-advanced.xml')
-rw-r--r--documentation/kernel-dev/kernel-dev-advanced.xml218
1 files changed, 115 insertions, 103 deletions
diff --git a/documentation/kernel-dev/kernel-dev-advanced.xml b/documentation/kernel-dev/kernel-dev-advanced.xml
index ff8374c635..d02654f13a 100644
--- a/documentation/kernel-dev/kernel-dev-advanced.xml
+++ b/documentation/kernel-dev/kernel-dev-advanced.xml
@@ -1373,47 +1373,58 @@ the KTYPE has changed, now set to "tiny".
</section>
</section>
-<section id='machine-branches'>
- <title>Machine Branches</title>
+<section id='working-with-branches'>
+ <title>Working with Branches</title>
<para>
- The "<link linkend='using-kernel-metadata-in-a-recipe'>Using Kernel Metadata in a Recipe</link>"
- section introduced the <filename>KBRANCH</filename> variable, which
- defines the source branch to use from the Linux kernel Git repository
- you are using.
- Many linux-yocto-custom derived recipes will be using Linux kernel
- sources with only a single branch: "master".
- However, when you are working with multiple boards and architectures,
- you are likely to run into the situation where a series of patches
- are needed for one board to boot.
- Sometimes, these patches are works-in-progress or fundamentally wrong,
- yet still necessary for specific boards.
- In these situations, you most likely do not want to include these
- patches in every kernel you build.
- You have a couple of options.
+ We need a top-level section here that introduces branches in general.
+ There is information that can be pulled from the embedded machine
+ and feature sections to introduce this stuff.
+ The two subsections should deal with each type of specific branch
+ that can be used.
</para>
- <para>
- First, you could encapsulate these patches in a feature description
- and only include them in the BSP description for the board(s) that
- require them.
- For more information, see the
- "<link linkend='patches'>Patches</link>" and
- "<link linkend='bsp-descriptions'>BSP Descriptions</link>" sections.
- </para>
+ <section id='machine-branches'>
+ <title>Machine Branches</title>
- <para>
- Alternatively, you can create a branch in your Linux kernel sources
- and apply the patches there.
- You can then specify this new branch as the
- <filename>KBRANCH</filename> to use for this board.
- You can do this in the recipe with the
- <filename>KBRANCH</filename> variable:
- <literallayout class='monospaced'>
+ <para>
+ The "<link linkend='using-kernel-metadata-in-a-recipe'>Using Kernel Metadata in a Recipe</link>"
+ section introduced the <filename>KBRANCH</filename> variable, which
+ defines the source branch to use from the Linux kernel Git repository
+ you are using.
+ Many linux-yocto-custom derived recipes will be using Linux kernel
+ sources with only a single branch: "master".
+ However, when you are working with multiple boards and architectures,
+ you are likely to run into the situation where a series of patches
+ are needed for one board to boot.
+ Sometimes, these patches are works-in-progress or fundamentally wrong,
+ yet still necessary for specific boards.
+ In these situations, you most likely do not want to include these
+ patches in every kernel you build.
+ You have a couple of options.
+ </para>
+
+ <para>
+ First, you could encapsulate these patches in a feature description
+ and only include them in the BSP description for the board(s) that
+ require them.
+ For more information, see the
+ "<link linkend='patches'>Patches</link>" and
+ "<link linkend='bsp-descriptions'>BSP Descriptions</link>" sections.
+ </para>
+
+ <para>
+ Alternatively, you can create a branch in your Linux kernel sources
+ and apply the patches there.
+ You can then specify this new branch as the
+ <filename>KBRANCH</filename> to use for this board.
+ You can do this in the recipe with the
+ <filename>KBRANCH</filename> variable:
+ <literallayout class='monospaced'>
KBRANCH = "mynewbranch"
- </literallayout>
- or in the BSP description using the "branch" command:
- <literallayout class='monospaced'>
+ </literallayout>
+ or in the BSP description using the "branch" command:
+ <literallayout class='monospaced'>
mybsp.scc:
define KMACHINE mybsp
define KTYPE standard
@@ -1423,35 +1434,35 @@ the KTYPE has changed, now set to "tiny".
branch mynewbranch
include mybsp-hw.scc
- </literallayout>
- </para>
+ </literallayout>
+ </para>
- <para>
- The approach you take, feature or branch, is entirely up to you
- and depends on what works best for your development model.
- If you are actively working on board support, you may find that
- working within a branch is more practical than trying to continually
- reintegrate your patches into a feature.
- On the other hand, if you are simply reusing some patches from an
- external tree and are not working on them, you may find the
- encapsulated feature to be appropriate as it does not require the
- additional complexity of branching in your Linux kernel sources.
- </para>
+ <para>
+ The approach you take, feature or branch, is entirely up to you
+ and depends on what works best for your development model.
+ If you are actively working on board support, you may find that
+ working within a branch is more practical than trying to continually
+ reintegrate your patches into a feature.
+ On the other hand, if you are simply reusing some patches from an
+ external tree and are not working on them, you may find the
+ encapsulated feature to be appropriate as it does not require the
+ additional complexity of branching in your Linux kernel sources.
+ </para>
- <para>
- If you are supporting multiple boards and architectures and find
- yourself with numerous branches, you might consider using a
- hierarchical branching system similar to what the linux-yocto Linux
- kernel repositories use:
- <literallayout class='monospaced'>
+ <para>
+ If you are supporting multiple boards and architectures and find
+ yourself with numerous branches, you might consider using a
+ hierarchical branching system similar to what the linux-yocto Linux
+ kernel repositories use:
+ <literallayout class='monospaced'>
&lt;common&gt;/&lt;ktype&gt;/&lt;machine&gt;
- </literallayout>
- </para>
+ </literallayout>
+ </para>
- <para>
- If you had two ktypes, standard and small for instance, and three
- machines, your Git tree might look like this:
- <literallayout class='monospaced'>
+ <para>
+ If you had two ktypes, standard and small for instance, and three
+ machines, your Git tree might look like this:
+ <literallayout class='monospaced'>
common/base
common/standard/base
common/standard/machine_a
@@ -1459,27 +1470,27 @@ the KTYPE has changed, now set to "tiny".
common/standard/machine_c
common/small/base
common/small/machine_a
- </literallayout>
- </para>
+ </literallayout>
+ </para>
- <para>
- This organization can help clarify the relationship of the branches to
- each other.
- In this case, "common/standard/machine_a" would include everything in
- "common/base" and "common/standard/base".
- The "standard" and "small" branches add sources specific to those
- kernel types that for whatever reason are not appropriate for the
- other branches.
- <note>The "base" branches are an artifact of the way Git manages
- its data internally on the filesystem: it will not allow you to use
- "common/standard" and "common/standard/machine_a" because it
- would have to create a file and a directory named "standard".
- </note>
- </para>
+ <para>
+ This organization can help clarify the relationship of the branches to
+ each other.
+ In this case, "common/standard/machine_a" would include everything in
+ "common/base" and "common/standard/base".
+ The "standard" and "small" branches add sources specific to those
+ kernel types that for whatever reason are not appropriate for the
+ other branches.
+ <note>The "base" branches are an artifact of the way Git manages
+ its data internally on the filesystem: it will not allow you to use
+ "common/standard" and "common/standard/machine_a" because it
+ would have to create a file and a directory named "standard".
+ </note>
+ </para>
- <para>
- Original text:
- <literallayout class='monospaced'>
+ <para>
+ Original text:
+ <literallayout class='monospaced'>
Section 3.1 introduced the KBRANCH variable which defines the source branch to
use from the Linux kernel git repository you are using. Many linux-yocto-custom
derived recipes will be using Linux kernel sources with only a single branch:
@@ -1548,26 +1559,26 @@ Note: The "base" branches are an artifact of the way git manages its data
internally on the filesystem: it will not allow you to use
"common/standard" and "common/standard/machine_a" because it would have to
create a file and a directory named "standard".
- </literallayout>
- </para>
-</section>
+ </literallayout>
+ </para>
+ </section>
-<section id='feature-branches'>
- <title>Feature Branches</title>
+ <section id='feature-branches'>
+ <title>Feature Branches</title>
- <para>
- During active development a new feature, it can be more efficient
- to work with that feature as a branch, rather than as a set of
- patches which have to be regularly updated.
- The Yocto Project Linux kernel tools provide for this with
- the <filename>git merge</filename> command.
- </para>
+ <para>
+ During active development a new feature, it can be more efficient
+ to work with that feature as a branch, rather than as a set of
+ patches which have to be regularly updated.
+ The Yocto Project Linux kernel tools provide for this with
+ the <filename>git merge</filename> command.
+ </para>
- <para>
- To merge a feature branch into a BSP, insert the
- <filename>git merge</filename> command after any
- <filename>branch</filename> commands:
- <literallayout class='monospaced'>
+ <para>
+ To merge a feature branch into a BSP, insert the
+ <filename>git merge</filename> command after any
+ <filename>branch</filename> commands:
+ <literallayout class='monospaced'>
mybsp.scc:
define KMACHINE mybsp
define KTYPE standard
@@ -1578,12 +1589,12 @@ Note: The "base" branches are an artifact of the way git manages its data
git merge myfeature
include mybsp-hw.scc
- </literallayout>
- </para>
+ </literallayout>
+ </para>
- <para>
- Original text:
- <literallayout class='monospaced'>
+ <para>
+ Original text:
+ <literallayout class='monospaced'>
During active development a new feature, it can be more efficient to work with
that feature as a branch, rather than as a set of patches which have to be
regularly updated. The Yocto Project Linux kernel tools provide for this with
@@ -1602,8 +1613,9 @@ mybsp.scc:
git merge myfeature
include mybsp.scc
- </literallayout>
- </para>
+ </literallayout>
+ </para>
+ </section>
</section>
<section id='scc-reference'>