summaryrefslogtreecommitdiffstats
path: root/documentation/dev-manual/dev-manual-common-tasks.xml
diff options
context:
space:
mode:
authorScott Rifenbark <scott.m.rifenbark@intel.com>2012-03-05 13:09:31 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-03-08 12:08:07 -0800
commit2cae64b94fa07f690879810c3b5226d3abbf3d44 (patch)
tree19369a8b5644502fa2bc4268e6638d6278a3a0c8 /documentation/dev-manual/dev-manual-common-tasks.xml
parent25f74b31b70b07a0d67d57c4c031d50d61f98a3b (diff)
downloadpoky-2cae64b94fa07f690879810c3b5226d3abbf3d44.tar.gz
documentation/dev-manual: Re-org of topics
Several topics in the "Common Tasks" chapter really fit better in the "Newbie" chapter. I moved these sections out. I also combined information from the section on submitting changes from the "Common Tasks" and the "Newbie" chapter to live in the "Newbie" chapter only. (From yocto-docs rev: 90fa8c125e545c57a5a994dd59715b73c5c4882f) Signed-off-by: Scott Rifenbark <scott.m.rifenbark@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'documentation/dev-manual/dev-manual-common-tasks.xml')
-rw-r--r--documentation/dev-manual/dev-manual-common-tasks.xml297
1 files changed, 85 insertions, 212 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml
index cedab513bb..9f7d04244a 100644
--- a/documentation/dev-manual/dev-manual-common-tasks.xml
+++ b/documentation/dev-manual/dev-manual-common-tasks.xml
@@ -1774,6 +1774,91 @@ so that there are some definite steps on how to do this. I need more detail her
1774 </section> 1774 </section>
1775 </section> 1775 </section>
1776 1776
1777 <section id="usingpoky-changes-updatingimages">
1778 <title>Updating Existing Images</title>
1779
1780 <para>
1781 Often, rather than re-flashing a new image, you might wish to install updated
1782 packages into an existing running system.
1783 You can do this by first sharing the <filename>tmp/deploy/ipk/</filename> directory
1784 through a web server and then by changing <filename>/etc/opkg/base-feeds.conf</filename>
1785 to point at the shared server.
1786 Following is an example:
1787 <literallayout class='monospaced'>
1788 $ src/gz all http://www.mysite.com/somedir/deploy/ipk/all
1789 $ src/gz armv7a http://www.mysite.com/somedir/deploy/ipk/armv7a
1790 $ src/gz beagleboard http://www.mysite.com/somedir/deploy/ipk/beagleboard
1791 </literallayout>
1792 </para>
1793 </section>
1794
1795 <section id="usingpoky-changes-prbump">
1796 <title>Incrementing a Package Revision Number</title>
1797
1798 <para>
1799 If a committed change results in changing the package output,
1800 then the value of the
1801 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-PR'>PR</ulink></filename>
1802 variable needs to be increased
1803 (or "bumped") as part of that commit.
1804 This means that for new recipes you must be sure to add the <filename>PR</filename>
1805 variable and set its initial value equal to "r0".
1806 Failing to define <filename>PR</filename> makes it easy to miss when you bump a package.
1807 Note that you can only use integer values following the "r" in the
1808 <filename>PR</filename> variable.
1809 </para>
1810
1811 <para>
1812 If you are sharing a common <filename>.inc</filename> file with multiple recipes,
1813 you can also use the
1814 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-INC_PR'>INC_PR</ulink></filename>
1815 variable to ensure that
1816 the recipes sharing the <filename>.inc</filename> file are rebuilt when the
1817 <filename>.inc</filename> file itself is changed.
1818 The <filename>.inc</filename> file must set <filename>INC_PR</filename>
1819 (initially to "r0"), and all recipes referring to it should set <filename>PR</filename>
1820 to "$(INC_PR).0" initially, incrementing the last number when the recipe is changed.
1821 If the <filename>.inc</filename> file is changed then its
1822 <filename>INC_PR</filename> should be incremented.
1823 </para>
1824
1825 <para>
1826 When upgrading the version of a package, assuming the
1827 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-PV'>PV</ulink></filename>
1828 changes, the <filename>PR</filename> variable should be reset to "r0"
1829 (or "$(INC_PR).0" if you are using <filename>INC_PR</filename>).
1830 </para>
1831
1832 <para>
1833 Usually, version increases occur only to packages.
1834 However, if for some reason <filename>PV</filename> changes but does not
1835 increase, you can increase the
1836 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-PE'>PE</ulink></filename>
1837 variable (Package Epoch).
1838 The <filename>PE</filename> variable defaults to "0".
1839 </para>
1840
1841 <para>
1842 Version numbering strives to follow the
1843 <ulink url='http://www.debian.org/doc/debian-policy/ch-controlfields.html'>
1844 Debian Version Field Policy Guidelines</ulink>.
1845 These guidelines define how versions are compared and what "increasing" a version means.
1846 </para>
1847
1848 <para>
1849 There are two reasons for following the previously mentioned guidelines.
1850 First, to ensure that when a developer updates and rebuilds, they get all the changes to
1851 the repository and do not have to remember to rebuild any sections.
1852 Second, to ensure that target users are able to upgrade their
1853 devices using package manager commands such as <filename>opkg upgrade</filename>
1854 (or similar commands for dpkg/apt or rpm-based systems).
1855 </para>
1856
1857 <para>
1858 The goal is to ensure the Yocto Project has packages that can be upgraded in all cases.
1859 </para>
1860 </section>
1861
1777 <section id="usingpoky-configuring-DISTRO_PN_ALIAS"> 1862 <section id="usingpoky-configuring-DISTRO_PN_ALIAS">
1778 <title>Handling a Package Name Alias</title> 1863 <title>Handling a Package Name Alias</title>
1779 <para> 1864 <para>
@@ -1870,218 +1955,6 @@ so that there are some definite steps on how to do this. I need more detail her
1870 build directory that is different than the source directory. 1955 build directory that is different than the source directory.
1871 </para> 1956 </para>
1872 </section> 1957 </section>
1873
1874 <section id="usingpoky-changes">
1875 <title>Making and Maintaining Changes</title>
1876 <para>
1877 Because the Yocto Project is extremely configurable and flexible,
1878 we recognize that developers will want
1879 to extend, configure or optimize it for their specific uses.
1880 To best keep pace with future Yocto Project changes,
1881 we recommend you make controlled changes to the Yocto Project.
1882 </para>
1883
1884 <para>
1885 The Yocto Project supports a "<link linkend='understanding-and-creating-layers'>layers</link>" concept.
1886 If you use layers properly, you can ease future upgrades and allow segregation
1887 between the Yocto Project core and a given developer's changes.
1888 The following section provides more advice on managing changes to the Yocto Project.
1889 </para>
1890
1891 <section id="usingpoky-changes-commits">
1892 <title>Committing Changes</title>
1893
1894 <para>
1895 Modifications to the Yocto Project are often managed under some kind of source
1896 revision control system.
1897 Because some simple practices can significantly improve usability, policy for committing changes
1898 is important.
1899 It helps to use a consistent documentation style when committing changes.
1900 The Yocto Project development team has found the following practices work well:
1901 <itemizedlist>
1902 <listitem><para>The first line of the commit summarizes the change and begins with the
1903 name of the affected package or packages.
1904 However, not all changes apply to specific packages.
1905 Consequently, the prefix could also be a machine name or class name.</para></listitem>
1906 <listitem><para>The second part of the commit (if needed) is a longer more detailed
1907 description of the changes.
1908 Placing a blank line between the first and second parts helps with
1909 readability.</para></listitem>
1910 </itemizedlist>
1911 </para>
1912
1913 <para>
1914 Following is an example commit:
1915 <literallayout class='monospaced'>
1916 bitbake/data.py: Add emit_func() and generate_dependencies() functions
1917
1918 These functions allow generation of dependency data between functions and
1919 variables allowing moves to be made towards generating checksums and allowing
1920 use of the dependency information in other parts of BitBake.
1921
1922 Signed-off-by: Richard Purdie richard.purdie@linuxfoundation.org
1923 </literallayout>
1924 </para>
1925
1926 <para>
1927 All commits should be self-contained such that they leave the
1928 metadata in a consistent state that builds both before and after the
1929 commit is made.
1930 Besides being a good practice to follow, it helps ensure autobuilder test results
1931 are valid.
1932 </para>
1933 </section>
1934
1935 <section id="usingpoky-changes-prbump">
1936 <title>Package Revision Incrementing</title>
1937
1938 <para>
1939 If a committed change results in changing the package output,
1940 then the value of the
1941 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-PR'>PR</ulink></filename>
1942 variable needs to be increased
1943 (or "bumped") as part of that commit.
1944 This means that for new recipes you must be sure to add the <filename>PR</filename>
1945 variable and set its initial value equal to "r0".
1946 Failing to define <filename>PR</filename> makes it easy to miss when you bump a package.
1947 Note that you can only use integer values following the "r" in the
1948 <filename>PR</filename> variable.
1949 </para>
1950
1951 <para>
1952 If you are sharing a common <filename>.inc</filename> file with multiple recipes,
1953 you can also use the
1954 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-INC_PR'>INC_PR</ulink></filename>
1955 variable to ensure that
1956 the recipes sharing the <filename>.inc</filename> file are rebuilt when the
1957 <filename>.inc</filename> file itself is changed.
1958 The <filename>.inc</filename> file must set <filename>INC_PR</filename>
1959 (initially to "r0"), and all recipes referring to it should set <filename>PR</filename>
1960 to "$(INC_PR).0" initially, incrementing the last number when the recipe is changed.
1961 If the <filename>.inc</filename> file is changed then its
1962 <filename>INC_PR</filename> should be incremented.
1963 </para>
1964
1965 <para>
1966 When upgrading the version of a package, assuming the
1967 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-PV'>PV</ulink></filename>
1968 changes, the <filename>PR</filename> variable should be reset to "r0"
1969 (or "$(INC_PR).0" if you are using <filename>INC_PR</filename>).
1970 </para>
1971
1972 <para>
1973 Usually, version increases occur only to packages.
1974 However, if for some reason <filename>PV</filename> changes but does not
1975 increase, you can increase the
1976 <filename><ulink url='http://www.yoctoproject.org/docs/latest/poky-ref-manual/poky-ref-manual.html#var-PE'>PE</ulink></filename>
1977 variable (Package Epoch).
1978 The <filename>PE</filename> variable defaults to "0".
1979 </para>
1980
1981 <para>
1982 Version numbering strives to follow the
1983 <ulink url='http://www.debian.org/doc/debian-policy/ch-controlfields.html'>
1984 Debian Version Field Policy Guidelines</ulink>.
1985 These guidelines define how versions are compared and what "increasing" a version means.
1986 </para>
1987
1988 <para>
1989 There are two reasons for following the previously mentioned guidelines.
1990 First, to ensure that when a developer updates and rebuilds, they get all the changes to
1991 the repository and do not have to remember to rebuild any sections.
1992 Second, to ensure that target users are able to upgrade their
1993 devices using package manager commands such as <filename>opkg upgrade</filename>
1994 (or similar commands for dpkg/apt or rpm-based systems).
1995 </para>
1996
1997 <para>
1998 The goal is to ensure the Yocto Project has packages that can be upgraded in all cases.
1999 </para>
2000 </section>
2001
2002 <section id="usingpoky-changes-collaborate">
2003 <title>Using The Yocto Project in a Team Environment</title>
2004
2005 <para>
2006 It might not be immediately clear how you can use the Yocto Project in a team environment,
2007 or scale it for a large team of developers.
2008 The specifics of any situation determine the best solution.
2009 Granted that the Yocto Project offers immense flexibility regarding this, practices do exist
2010 that experience has shown work well.
2011 </para>
2012
2013 <para>
2014 The core component of any development effort with the Yocto Project is often an
2015 automated build and testing framework along with an image generation process.
2016 You can use these core components to check that the metadata can be built,
2017 highlight when commits break the build, and provide up-to-date images that
2018 allow developers to test the end result and use it as a base platform for further
2019 development.
2020 Experience shows that buildbot is a good fit for this role.
2021 What works well is to configure buildbot to make two types of builds:
2022 incremental and full (from scratch).
2023 See <ulink url='http://autobuilder.yoctoproject.org:8010/'>the buildbot for the
2024 Yocto Project</ulink> for an example implementation that uses buildbot.
2025 </para>
2026
2027 <para>
2028 You can tie incremental builds to a commit hook that triggers the build
2029 each time a commit is made to the metadata.
2030 This practice results in useful acid tests that determine whether a given commit
2031 breaks the build in some serious way.
2032 Associating a build to a commit can catch a lot of simple errors.
2033 Furthermore, the tests are fast so developers can get quick feedback on changes.
2034 </para>
2035
2036 <para>
2037 Full builds build and test everything from the ground up.
2038 These types of builds usually happen at predetermined times like during the
2039 night when the machine load is low.
2040 </para>
2041
2042 <para>
2043 Most teams have many pieces of software undergoing active development at any given time.
2044 You can derive large benefits by putting these pieces under the control of a source
2045 control system that is compatible with the Yocto Project (i.e. Git or Subversion (SVN).
2046 You can then set the autobuilder to pull the latest revisions of the packages
2047 and test the latest commits by the builds.
2048 This practice quickly highlights issues.
2049 The Yocto Project easily supports testing configurations that use both a
2050 stable known good revision and a floating revision.
2051 The Yocto Project can also take just the changes from specific source control branches.
2052 This capability allows you to track and test specific changes.
2053 </para>
2054
2055 <para>
2056 Perhaps the hardest part of setting this up is defining the software project or
2057 the Yocto Project metadata policies that surround the different source control systems.
2058 Of course circumstances will be different in each case.
2059 However, this situation reveals one of the Yocto Project's advantages -
2060 the system itself does not
2061 force any particular policy on users, unlike a lot of build systems.
2062 The system allows the best policies to be chosen for the given circumstances.
2063 </para>
2064 </section>
2065
2066 <section id="usingpoky-changes-updatingimages">
2067 <title>Updating Existing Images</title>
2068
2069 <para>
2070 Often, rather than re-flashing a new image, you might wish to install updated
2071 packages into an existing running system.
2072 You can do this by first sharing the <filename>tmp/deploy/ipk/</filename> directory
2073 through a web server and then by changing <filename>/etc/opkg/base-feeds.conf</filename>
2074 to point at the shared server.
2075 Following is an example:
2076 <literallayout class='monospaced'>
2077 $ src/gz all http://www.mysite.com/somedir/deploy/ipk/all
2078 $ src/gz armv7a http://www.mysite.com/somedir/deploy/ipk/armv7a
2079 $ src/gz beagleboard http://www.mysite.com/somedir/deploy/ipk/beagleboard
2080 </literallayout>
2081 </para>
2082 </section>
2083 </section>
2084
2085</chapter> 1958</chapter>
2086 1959
2087<!-- 1960<!--