summaryrefslogtreecommitdiffstats
path: root/handbook
diff options
context:
space:
mode:
authorRichard Purdie <richard@ted.(none)>2009-04-28 08:24:47 +0100
committerRichard Purdie <richard@ted.(none)>2009-04-28 08:24:47 +0100
commit4f8346442c3b7ab3abe54362d844171f7f865ba1 (patch)
treee189c90a9b3bde2814a72a7b2bb2f976b397d9f9 /handbook
parent3927e38eba96a172c7df2c7270c31728b83612eb (diff)
downloadpoky-4f8346442c3b7ab3abe54362d844171f7f865ba1.tar.gz
handbook: Add more information about extending Poky
Add more details on using in a team environment and how collections can be used to manage groups of different kinds of changes Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'handbook')
-rw-r--r--handbook/extendpoky.xml95
1 files changed, 92 insertions, 3 deletions
diff --git a/handbook/extendpoky.xml b/handbook/extendpoky.xml
index f259d2ef0a..fa789d4afb 100644
--- a/handbook/extendpoky.xml
+++ b/handbook/extendpoky.xml
@@ -26,7 +26,15 @@
26 </para> 26 </para>
27 27
28 <para> 28 <para>
29 The simplest way to add a new package is to base it on a similar 29 Before writing a recipe from scratch it is often useful to check
30 someone else hasn't written one already. OpenEmbedded is a good place
31 to look as it has a wider scope and hence a wider range of packages.
32 Poky aims to be compatible with OpenEmbedded so most recipes should
33 just work in Poky.
34 </para>
35
36 <para>
37 For new packages, the simplest way to add a recipe is to base it on a similar
30 pre-existing recipe. There are some examples below of how to add 38 pre-existing recipe. There are some examples below of how to add
31 standard types of packages: 39 standard types of packages:
32 </para> 40 </para>
@@ -556,6 +564,37 @@ BBFILE_PRIORITY_extras = "5"</literallayout>
556 </para> 564 </para>
557 </section> 565 </section>
558 566
567 <section id="usingpoky-changes-supplement">
568 <title>Supplementry Metadata Repositories</title>
569
570 <para>
571 Often when developing a project based on Poky there will be components
572 that are not ready for public consumption for whatever reason. By making
573 use of the collections mechanism and other functionality within Poky, it
574 is possible to have a public repository which is supplemented by a private
575 one just containing the pieces that need to be kept private.
576 </para>
577 <para>
578 The usual approach with these is to create a separate git repository called
579 "meta-prvt-XXX" which is checked out alongside the other meta-*
580 directories included in Poky. Under this directory there can be several
581 different directories such as classes, conf and packages which all
582 function as per the usual Poky directory structure.
583 </para>
584 <para>
585 If extra meta-* directories are found, Poky will automatically add them
586 into the BBPATH variable so the conf and class files contained there
587 are found. If a file called poky-extra-environment is found within the
588 meta-* directory, this will be sourced as the environment is setup,
589 allowing certain configuration to be overridden such as the location of the
590 local.conf.sample file that is used.
591 </para>
592 <para>
593 Note that at present, BBFILES is not automatically changed and this needs
594 to be adjusted to find files in the packages/ directory. Usually a custom
595 local.conf.sample file will be used to handle this instead.
596 </para>
597 </section>
559 598
560 <section id='usingpoky-changes-commits'> 599 <section id='usingpoky-changes-commits'>
561 <title>Committing Changes</title> 600 <title>Committing Changes</title>
@@ -564,8 +603,8 @@ BBFILE_PRIORITY_extras = "5"</literallayout>
564 Modifications to Poky are often managed under some kind of source 603 Modifications to Poky are often managed under some kind of source
565 revision control system. The policy for committing to such systems 604 revision control system. The policy for committing to such systems
566 is important as some simple policy can significantly improve 605 is important as some simple policy can significantly improve
567 usability. The tips below are based on the policy that OpenedHand 606 usability. The tips below are based on the policy followed for the
568 uses for commits to Poky. 607 Poky core.
569 </para> 608 </para>
570 609
571 <para> 610 <para>
@@ -622,6 +661,56 @@ BBFILE_PRIORITY_extras = "5"</literallayout>
622 upgradable packages in all cases. 661 upgradable packages in all cases.
623 </para> 662 </para>
624 </section> 663 </section>
664 <section id='usingpoky-changes-collaborate'>
665 <title>Using Poky in a Team Environment</title>
666
667 <para>
668 It may not be immediately clear how Poky can work in a team environment,
669 or scale to a large team of developers. The specifics of any situation
670 will determine the best solution and poky offers immense flexibility in
671 that aspect but there are some practises that experience has shown to work
672 well.
673 </para>
674
675 <para>
676 The core component of any development effort with Poky is often an
677 automated build testing framework and image generation process. This
678 can be used to check that the metadata is buildable, highlight when
679 commits break the builds and provide up to date images allowing people
680 to test the end result and use them as a base platform for further
681 development. Experience shows that buildbot is a good fit for this role
682 and that it works well to configure it to make two types of build -
683 incremental builds and 'from scratch'/full builds. The incremental builds
684 can be tied to a commit hook which triggers them each time a commit is
685 made to the metadata and are a useful acid test of whether a given commit
686 breaks the build in some serious way. They catch lots of simple errors
687 and whilst they won't catch 100% of failures, the tests are fast so
688 developers can get feedback on their changes quickly. The full builds
689 are builds that build everything from the ground up and test everything.
690 They usually happen at preset times such as at night when the machine
691 load isn't high from the incremental builds.
692 </para>
693
694 <para>
695 Most teams have pieces of software undergoing active development. It is of
696 significant benefit to put these under control of a source control system
697 compatible with Poky such as git or svn. The autobuilder can then be set to
698 pull the latest revisions of these packages so the latest commits get tested
699 by the builds allowing any issues to be highlighted quickly. Poky easily
700 supports configurations where there is both a stable known good revision
701 and a floating revision to test. Poky can also only take changes from specific
702 source control branches giving another way it can be used to track/test only
703 specified changes.
704 </para>
705 <para>
706 Perhaps the hardest part of setting this up is the policy that surrounds
707 the different source control systems, be them software projects or the Poky
708 metadata itself. The circumstances will be different in each case but this is
709 one of Poky's advantages - the system itself doesn't force any particular policy
710 unlike a lot of build systems, allowing the best policy to be chosen for the
711 circumstances.
712 </para>
713 </section>
625 </section> 714 </section>
626 715
627 <section id='usingpoky-modifing-packages'> 716 <section id='usingpoky-modifing-packages'>