diff options
| author | Scott Rifenbark <srifenbark@gmail.com> | 2016-01-29 13:07:47 -0800 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-03-03 17:40:12 +0000 |
| commit | 9582da61de441ba2c5b347a299c6e66a04b087a7 (patch) | |
| tree | 1615c9047852f35c9944ac46555c5323dd9c0e79 | |
| parent | 740369fa145e056ecba89cfde62d7d250fec1352 (diff) | |
| download | poky-9582da61de441ba2c5b347a299c6e66a04b087a7.tar.gz | |
dev-manual: Edits to the devtool-add section.
(From yocto-docs rev: f7f3cfa4a6faa556650b5ab8a04e68c585c30107)
Signed-off-by: Scott Rifenbark <srifenbark@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | documentation/dev-manual/dev-manual-model.xml | 543 |
1 files changed, 273 insertions, 270 deletions
diff --git a/documentation/dev-manual/dev-manual-model.xml b/documentation/dev-manual/dev-manual-model.xml index d2ab2d7f41..d3fadbd1f7 100644 --- a/documentation/dev-manual/dev-manual-model.xml +++ b/documentation/dev-manual/dev-manual-model.xml | |||
| @@ -6,6 +6,10 @@ | |||
| 6 | 6 | ||
| 7 | <title>Common Development Models</title> | 7 | <title>Common Development Models</title> |
| 8 | 8 | ||
| 9 | <para role='writernotes'> | ||
| 10 | Test paragraph. | ||
| 11 | </para> | ||
| 12 | |||
| 9 | <para> | 13 | <para> |
| 10 | Many development models exist for which you can use the Yocto Project. | 14 | Many development models exist for which you can use the Yocto Project. |
| 11 | This chapter overviews simple methods that use tools provided by the | 15 | This chapter overviews simple methods that use tools provided by the |
| @@ -1743,212 +1747,211 @@ | |||
| 1743 | As mentioned earlier, <filename>devtool</filename> helps | 1747 | As mentioned earlier, <filename>devtool</filename> helps |
| 1744 | you easily develop projects whose build output must be part of | 1748 | you easily develop projects whose build output must be part of |
| 1745 | an image built using the OpenEmbedded build system. | 1749 | an image built using the OpenEmbedded build system. |
| 1746 | The remainder of this section presents the workflow you would | ||
| 1747 | use that includes <filename>devtool</filename>. | ||
| 1748 | <footnote> | ||
| 1749 | <para> | ||
| 1750 | Kudos and thanks to | ||
| 1751 | <ulink url='mailto:twoerner@gmail.com'>Trevor Woerner</ulink> | ||
| 1752 | whose | ||
| 1753 | "<ulink url='https://drive.google.com/file/d/0B3KGzY5fW7laTDVxUXo3UDRvd2s/view'>Yocto Project Developer Workflow Tutorial</ulink>" | ||
| 1754 | paper contributed nicely towards the development of this | ||
| 1755 | section. | ||
| 1756 | </para> | ||
| 1757 | </footnote> | ||
| 1758 | </para> | 1750 | </para> |
| 1759 | 1751 | ||
| 1760 | <para> | 1752 | <para> |
| 1761 | The steps in this section assume you have a previously built | 1753 | Three entry points exist that allow you develop using |
| 1762 | image that is already either running in QEMU or running on actual | 1754 | <filename>devtool</filename>: |
| 1763 | hardware. | 1755 | <itemizedlist> |
| 1764 | Also, it is assumed that for deployment of the image to the | 1756 | <listitem><para><emphasis><filename>devtool add</filename></emphasis> |
| 1765 | target, SSH is installed in the image and if the image is running | 1757 | </para></listitem> |
| 1766 | on real hardware that you have network access to and from your | 1758 | <listitem><para><emphasis><filename>devtool modify</filename></emphasis> |
| 1767 | development machine. | 1759 | </para></listitem> |
| 1760 | <listitem><para><emphasis><filename>devtool upgrade</filename></emphasis> | ||
| 1761 | </para></listitem> | ||
| 1762 | </itemizedlist> | ||
| 1768 | </para> | 1763 | </para> |
| 1769 | 1764 | ||
| 1770 | <section id='update-your-external-source'> | 1765 | <para> |
| 1771 | <title>Update Your External Source</title> | 1766 | The remainder of this section presents these workflows. |
| 1772 | 1767 | <note> | |
| 1773 | <para> | 1768 | The steps in this section assume you have a previously built |
| 1774 | Part of the development flow using | 1769 | image that is already either running in QEMU or running on actual |
| 1775 | <filename>devtool</filename> of course involves updating | 1770 | hardware. |
| 1776 | your source files. | 1771 | Also, it is assumed that for deployment of the image to the |
| 1777 | Several opportunities exist in the workflow to extract and | 1772 | target, SSH is installed in the image and if the image is running |
| 1778 | work on the files. | 1773 | on real hardware that you have network access to and from your |
| 1779 | For now, just realize that you need to be able to have | 1774 | development machine. |
| 1780 | access to and edit files. | 1775 | </note> |
| 1781 | One obvious solution is to initially extract the code into an | 1776 | </para> |
| 1782 | isolated area in preparation for modification. | ||
| 1783 | </para> | ||
| 1784 | |||
| 1785 | <para> | ||
| 1786 | Another option is to use the | ||
| 1787 | <filename>devtool modify</filename> command. | ||
| 1788 | This command makes use of a "workspace" layer where much of | ||
| 1789 | the transitional work occurs, which is needed for setting up | ||
| 1790 | Metadata used by the OpenEmbedded build system that lets you | ||
| 1791 | build your software. | ||
| 1792 | Options (i.e. "-x") exist using <filename>devtool</filename> | ||
| 1793 | that enable you to use the tool to extract source code. | ||
| 1794 | </para> | ||
| 1795 | </section> | ||
| 1796 | |||
| 1797 | <section id='use-devtool-to-integrate-your-code-with-the-image'> | ||
| 1798 | <title>Use <filename>devtool add</filename> to Integrate Your Code with the Image</title> | ||
| 1799 | |||
| 1800 | <para> | ||
| 1801 | The <filename>devtool add</filename> command automatically | ||
| 1802 | generates the needed Metadata that allows the OpenEmbedded | ||
| 1803 | build system to build your code into the image. | ||
| 1804 | <note> | ||
| 1805 | If a package or packages produced by the recipe on which | ||
| 1806 | you are working are not already in | ||
| 1807 | <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_INSTALL'><filename>IMAGE_INSTALL</filename></ulink> | ||
| 1808 | for the image, you must add them. | ||
| 1809 | The <filename>devtool add</filename> command does not | ||
| 1810 | add them for you. | ||
| 1811 | </note> | ||
| 1812 | Use the following command form: | ||
| 1813 | <literallayout class='monospaced'> | ||
| 1814 | $ devtool add <replaceable>your-project-name</replaceable> <replaceable>path-to-source</replaceable> | ||
| 1815 | </literallayout> | ||
| 1816 | </para> | ||
| 1817 | |||
| 1818 | <para> | ||
| 1819 | Running <filename>devtool</filename> for the first time | ||
| 1820 | creates a workspace layer through the | ||
| 1821 | <filename>bblayers.conf</filename> file that | ||
| 1822 | is based on your project's location: | ||
| 1823 | <literallayout class='monospaced'> | ||
| 1824 | <replaceable>path-to-source</replaceable>/<replaceable>build-directory</replaceable>/<replaceable>workspace-layer</replaceable> | ||
| 1825 | </literallayout> | ||
| 1826 | By default, the name of the workspace layer is "workspace". | ||
| 1827 | </para> | ||
| 1828 | |||
| 1829 | <para> | ||
| 1830 | For details on the workspace layer created in the | ||
| 1831 | <replaceable>build-directory</replaceable>, | ||
| 1832 | see the | ||
| 1833 | "<link linkend='devtool-adding-a-new-recipe-to-the-workspace'>Adding a New Recipe to the Workspace Layer</link>" | ||
| 1834 | section. | ||
| 1835 | </para> | ||
| 1836 | |||
| 1837 | <!-- | ||
| 1838 | <para> | ||
| 1839 | Of course, each layer must have a | ||
| 1840 | <filename>layer.conf</filename> configuration file. | ||
| 1841 | <filename>devtool</filename> also creates this configuration | ||
| 1842 | file: | ||
| 1843 | <literallayout class='monospaced'> | ||
| 1844 | $ cat workspace/conf/layer.conf | ||
| 1845 | # ### workspace layer autogenerated by devtool ### | ||
| 1846 | BBPATH =. "${LAYERDIR}:" | ||
| 1847 | BBFILES += "${LAYERDIR}/recipes/*/*.bb \ | ||
| 1848 | ${LAYERDIR}/appends/*.bbappend" | ||
| 1849 | BBFILE_COLLECTIONS += "workspacelayer" | ||
| 1850 | BBFILE_PATTERN_workspacelayer = "^${LAYERDIR}/" | ||
| 1851 | BBFILE_PATTERN_IGNORE_EMPTY_workspacelayer = "1" | ||
| 1852 | BBFILE_PRIORITY_workspacelayer = "99" | ||
| 1853 | </literallayout> | ||
| 1854 | </para> | ||
| 1855 | --> | ||
| 1856 | |||
| 1857 | <para> | ||
| 1858 | Running <filename>devtool add</filename> automatically | ||
| 1859 | generates your recipe: | ||
| 1860 | <literallayout class='monospaced'> | ||
| 1861 | $ cat workspace/recipes/<replaceable>your-project-name</replaceable>/<replaceable>your-project-name</replaceable>.bb | ||
| 1862 | # Recipe created by recipetool | ||
| 1863 | # This is the basis of a recipe and may need further editing in order to be fully functional. | ||
| 1864 | # (Feel free to remove these comments when editing.) | ||
| 1865 | # | ||
| 1866 | # Unable to find any files that looked like license statements. Check the accompanying | ||
| 1867 | # documentation and source headers and set LICENSE and LIC_FILES_CHKSUM accordingly. | ||
| 1868 | LICENSE = "CLOSED" | ||
| 1869 | LIC_FILES_CHKSUM = "" | ||
| 1870 | |||
| 1871 | # No information for SRC_URI yet (only an external source tree was | ||
| 1872 | # specified) | ||
| 1873 | SRC_URI = "" | ||
| 1874 | |||
| 1875 | DEPENDS = "libx11" | ||
| 1876 | # NOTE: if this software is not capable of being built in a separate build directory | ||
| 1877 | # from the source, you should replace autotools with autotools-brokensep in the | ||
| 1878 | # inherit line | ||
| 1879 | inherit autotools | ||
| 1880 | |||
| 1881 | # Specify any options you want to pass to the configure script using EXTRA_OECONF: | ||
| 1882 | EXTRA_OECONF = "" | ||
| 1883 | </literallayout> | ||
| 1884 | </para> | ||
| 1885 | |||
| 1886 | <para> | ||
| 1887 | Lastly, the <filename>devtool add</filename> command creates the | ||
| 1888 | <filename>.bbappend</filename> file: | ||
| 1889 | <literallayout class='monospaced'> | ||
| 1890 | $ cat workspace/appends/<replaceable>your-project-name</replaceable>.bbappend | ||
| 1891 | inherit externalsrc | ||
| 1892 | EXTERNALSRC = "/<replaceable>path-to-source</replaceable>/<replaceable>your-project-name</replaceable>" | ||
| 1893 | |||
| 1894 | # initial_rev: <replaceable>commit-ID</replaceable> | ||
| 1895 | </literallayout> | ||
| 1896 | </para> | ||
| 1897 | </section> | ||
| 1898 | 1777 | ||
| 1899 | <section id='build-your-project'> | 1778 | <section id='use-devtool-to-integrate-new-code'> |
| 1900 | <title>Build Your Project</title> | 1779 | <title>Use <filename>devtool add</filename> to Integrate New Code</title> |
| 1901 | 1780 | ||
| 1902 | <para> | 1781 | <para> |
| 1903 | You can use BitBake or <filename>devtool build</filename> to | 1782 | This section describes the <filename>devtool</filename> |
| 1904 | build your modified project. | 1783 | workflow to integrate new code. |
| 1784 | With this workflow, you can either build and deploy | ||
| 1785 | your code or rebuild an image that contains your code. | ||
| 1905 | </para> | 1786 | </para> |
| 1906 | 1787 | ||
| 1907 | <para> | 1788 | <para> |
| 1908 | To use BitBake, use the following: | 1789 | <imagedata fileref="figures/devtool-add-flow.png" align="center" /> |
| 1909 | <literallayout class='monospaced'> | ||
| 1910 | $ bitbake <replaceable>your-project-name</replaceable> | ||
| 1911 | </literallayout> | ||
| 1912 | Alternatively, you can use | ||
| 1913 | <filename>devtool build</filename>, which is equivalent to | ||
| 1914 | <filename>bitbake -c populate_sysroot</filename>. | ||
| 1915 | For example: | ||
| 1916 | <literallayout class='monospaced'> | ||
| 1917 | $ devtool build <replaceable>your-project-name</replaceable> | ||
| 1918 | </literallayout> | ||
| 1919 | </para> | 1790 | </para> |
| 1920 | </section> | ||
| 1921 | |||
| 1922 | <!-- | ||
| 1923 | <section id='dev-build-the-image'> | ||
| 1924 | <title>Build the Image</title> | ||
| 1925 | 1791 | ||
| 1926 | <para> | 1792 | <para> |
| 1927 | The final step before testing is to rebuild the base image | 1793 | <orderedlist> |
| 1928 | with your project changes as part of the image. | 1794 | <listitem><para><emphasis>Add a New Recipe</emphasis>: |
| 1929 | Simply run BitBake again on your image. | 1795 | The <filename>devtool add</filename> command automatically |
| 1930 | Here is an example: | 1796 | generates the needed Metadata that allows the OpenEmbedded |
| 1931 | <literallayout class='monospaced'> | 1797 | build system to build your code. |
| 1932 | $ bitbake <replaceable>image</replaceable> | 1798 | Following are some forms you can use to enter the command: |
| 1933 | </literallayout> | 1799 | <literallayout class='monospaced'> |
| 1934 | </para> | 1800 | $ devtool add [<replaceable>recipe_name</replaceable>] <replaceable>source_path</replaceable> |
| 1935 | </section> | 1801 | $ devtool add [<replaceable>recipe_name</replaceable>] <replaceable>source_path remote_URL</replaceable> |
| 1936 | 1802 | $ devtool add [<replaceable>recipe_name</replaceable>] <replaceable>remote_URL</replaceable> | |
| 1937 | <section id='dev-testing-the-image'> | 1803 | </literallayout> |
| 1938 | <title>Testing the Image</title> | 1804 | The <filename>devtool</filename> command automatically detects the |
| 1939 | 1805 | <replaceable>recipe_name</replaceable> and, in many cases, the | |
| 1940 | <para> | 1806 | version if you do not supply a name or version with the command.</para> |
| 1941 | Once you have the image, you can test it using QEMU. | 1807 | <para>Running <filename>devtool</filename> for the first time |
| 1942 | Here is an example assuming "qemux86": | 1808 | creates a workspace layer, which by default is named |
| 1943 | <literallayout class='monospaced'> | 1809 | "workspace", and adds it to your |
| 1944 | $ runqemu qemux86 <replaceable>image</replaceable> | 1810 | <filename>conf/bblayers.conf</filename> file: |
| 1945 | </literallayout> | 1811 | <literallayout class='monospaced'> |
| 1946 | For information on how to test an image using QEMU, see the | 1812 | <replaceable>source_path</replaceable>/<replaceable>build_directory</replaceable>/<replaceable>workspace_layer</replaceable> |
| 1947 | "<link linkend='dev-manual-qemu'>Using the Quick EMUlator (QEMU)</link>" | 1813 | </literallayout> |
| 1948 | section. | 1814 | For details on the workspace layer created in the |
| 1815 | <replaceable>build-directory</replaceable>, | ||
| 1816 | see the | ||
| 1817 | "<link linkend='devtool-the-workspace-layer-structure'>The Workspace Layer Structure</link>" | ||
| 1818 | section.</para> | ||
| 1819 | <para>You can also specify a <replaceable>remote_URL</replaceable> | ||
| 1820 | from which to download source instead of (or in addition | ||
| 1821 | to) specifying a <replaceable>source_path</replaceable>. | ||
| 1822 | If you specify a URL but not a <replaceable>source_path</replaceable>, | ||
| 1823 | <filename>devtool</filename> uses a subdirectory called "sources" | ||
| 1824 | within <filename>workspace</filename> to house the source files.</para> | ||
| 1825 | <para>Here is an example command that provides the | ||
| 1826 | <replaceable>remote_URL</replaceable> only: | ||
| 1827 | <literallayout class='monospaced'> | ||
| 1828 | $ devtool add ftp://ftp.bitwizard.nl/mtr/mtr-0.86.tar.gz | ||
| 1829 | NOTE: Creating workspace layer in /home/scottrif/poky/build/workspace | ||
| 1830 | NOTE: Enabling workspace layer in bblayers.conf | ||
| 1831 | NOTE: Using default source tree path /home/scottrif/poky/build/workspace/sources/mtr | ||
| 1832 | NOTE: Recipe /home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb | ||
| 1833 | has been automatically created; further editing may be required to | ||
| 1834 | make it fully functional | ||
| 1835 | $ | ||
| 1836 | </literallayout> | ||
| 1837 | In this example, <filename>devtool</filename> detected both | ||
| 1838 | a recipe name and version from the software for use when | ||
| 1839 | creating the <filename>mtr_0.86.bb</filename> recipe file. | ||
| 1840 | Because no <filename>source_path</filename> was provided, the | ||
| 1841 | tool also created the default directory | ||
| 1842 | <filename>sources/mtr/</filename> in the created | ||
| 1843 | <filename>workspace</filename> directory.</para> | ||
| 1844 | <para>If you are using <filename>devtool add</filename> | ||
| 1845 | to fetch source from a remote URL, the command turns | ||
| 1846 | the source directory into a Git repository if one does | ||
| 1847 | not already exist. | ||
| 1848 | You can disable this behavior by using the "--no-git" | ||
| 1849 | option. | ||
| 1850 | The <filename>devtool add</filename> command does this in | ||
| 1851 | order to support using | ||
| 1852 | <filename>devtool update-recipe</filename>, shown as step | ||
| 1853 | 5 in the flow diagram, to later create patches. | ||
| 1854 | <tip> | ||
| 1855 | In case you ever need to locate the directory in which | ||
| 1856 | <filename>devtool</filename> creates the recipe or, you | ||
| 1857 | need to locate the source, you can use <filename>devtool</filename> | ||
| 1858 | to check status: | ||
| 1859 | <literallayout class='monospaced'> | ||
| 1860 | $ devtool status | ||
| 1861 | mtr: /home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb) | ||
| 1862 | $ | ||
| 1863 | </literallayout> | ||
| 1864 | Continuing with the example, the tool returns the location | ||
| 1865 | for the source followed by the location and name of the | ||
| 1866 | recipe. | ||
| 1867 | </tip> | ||
| 1868 | </para></listitem> | ||
| 1869 | <listitem><para><emphasis>Edit the Recipe</emphasis>: | ||
| 1870 | At this point, you can use <filename>devtool edit-recipe</filename> | ||
| 1871 | to open up the editor as defined by the | ||
| 1872 | <filename>$EDITOR</filename> environment variable | ||
| 1873 | and modify the file: | ||
| 1874 | <literallayout class='monospaced'> | ||
| 1875 | $ devtool edit-recipe <replaceable>recipe</replaceable> | ||
| 1876 | </literallayout> | ||
| 1877 | From within the editor, you can make modifications to the | ||
| 1878 | recipe that take affect when you build it later. | ||
| 1879 | </para></listitem> | ||
| 1880 | <listitem><para><emphasis>Build the Recipe or Rebuild the Image</emphasis>: | ||
| 1881 | At this point in the flow, the next step you | ||
| 1882 | take depends on what you are going to do with | ||
| 1883 | the new code.</para> | ||
| 1884 | <para>If you need to take the build output and eventually | ||
| 1885 | move it to the target hardware, you would use | ||
| 1886 | <filename>devtool build</filename>: | ||
| 1887 | <literallayout class='monospaced'> | ||
| 1888 | $ devtool build <replaceable>recipe</replaceable> | ||
| 1889 | </literallayout></para> | ||
| 1890 | <para>On the other hand, if you want an image to | ||
| 1891 | contain the recipe's packages for immediate deployment | ||
| 1892 | onto a device (e.g. for testing purposes), you can use | ||
| 1893 | the <filename>devtool build-image</filename> command: | ||
| 1894 | <literallayout class='monospaced'> | ||
| 1895 | $ devtool build-image <replaceable>image</replaceable> | ||
| 1896 | </literallayout> | ||
| 1897 | </para></listitem> | ||
| 1898 | <listitem><para><emphasis>Deploy the Build Output</emphasis>: | ||
| 1899 | When you use the <filename>devtool build</filename> | ||
| 1900 | command to build out your recipe, you probably want to | ||
| 1901 | see if the resulting build output works as expected on target | ||
| 1902 | hardware. | ||
| 1903 | You can deploy your build output to that target hardware by | ||
| 1904 | using the <filename>devtool deploy-target</filename> command: | ||
| 1905 | <literallayout class='monospaced'> | ||
| 1906 | $ devtool deploy-target <replaceable>recipe target</replaceable> | ||
| 1907 | </literallayout> | ||
| 1908 | The <replaceable>target</replaceable> is a live target machine | ||
| 1909 | running as an SSH server.</para> | ||
| 1910 | |||
| 1911 | <para>You can, of course, also deploy the image you build | ||
| 1912 | using the <filename>devtool build-image</filename> command | ||
| 1913 | to actual hardware. | ||
| 1914 | However, <filename>devtool</filename> does not provide a | ||
| 1915 | specific command that allows you to do this. | ||
| 1916 | </para></listitem> | ||
| 1917 | <listitem><para><emphasis>Optionally Update the Recipe With Patch Files</emphasis>: | ||
| 1918 | Once you are satisfied with the recipe you probably want | ||
| 1919 | to generate patch files that go with the recipe. | ||
| 1920 | You do this before moving the recipe | ||
| 1921 | to its final layer and cleaning up the workspace area | ||
| 1922 | <filename>devtool</filename> uses. | ||
| 1923 | This optional step is especially relevant if you are | ||
| 1924 | using or adding third-party software.</para> | ||
| 1925 | <para>To convert commits created using Git to patch files, | ||
| 1926 | use the <filename>devtool update-recipe</filename> command. | ||
| 1927 | <note> | ||
| 1928 | Any patches added, removed, or otherwise must be | ||
| 1929 | previously committed to the upstream Git repository. | ||
| 1930 | </note> | ||
| 1931 | <literallayout class='monospaced'> | ||
| 1932 | $ devtool update-recipe <replaceable>recipe_name</replaceable> | ||
| 1933 | </literallayout> | ||
| 1934 | </para></listitem> | ||
| 1935 | <listitem><para><emphasis>Move the Recipe to its Permanent Layer</emphasis>: | ||
| 1936 | Before cleaning up the workspace, you need to move the | ||
| 1937 | final recipe to its permanent layer. | ||
| 1938 | You must do this before using the | ||
| 1939 | <filename>devtool reset</filename> command if you want to | ||
| 1940 | retain the recipe. | ||
| 1941 | </para></listitem> | ||
| 1942 | <listitem><para><emphasis>Reset the Recipe</emphasis>: | ||
| 1943 | As a final step, you can restore the state such that | ||
| 1944 | standard layers and the upstream source is used to build | ||
| 1945 | the recipe rather than data in the workspace. | ||
| 1946 | To reset the recipe, use the <filename>devtool reset</filename> | ||
| 1947 | command: | ||
| 1948 | <literallayout class='monospaced'> | ||
| 1949 | $ devtool reset <replaceable>recipe</replaceable> | ||
| 1950 | </literallayout> | ||
| 1951 | </para></listitem> | ||
| 1952 | </orderedlist> | ||
| 1949 | </para> | 1953 | </para> |
| 1950 | </section> | 1954 | </section> |
| 1951 | --> | ||
| 1952 | </section> | 1955 | </section> |
| 1953 | 1956 | ||
| 1954 | <section id='devtool-quick-reference'> | 1957 | <section id='devtool-quick-reference'> |
| @@ -1959,7 +1962,7 @@ | |||
| 1959 | adding a new recipe and the supporting Metadata to a temporary | 1962 | adding a new recipe and the supporting Metadata to a temporary |
| 1960 | workspace layer. | 1963 | workspace layer. |
| 1961 | This section provides a short reference on | 1964 | This section provides a short reference on |
| 1962 | <filename>devtool</filename> for most of the commands. | 1965 | <filename>devtool</filename> and its commands. |
| 1963 | </para> | 1966 | </para> |
| 1964 | 1967 | ||
| 1965 | <section id='devtool-getting-help'> | 1968 | <section id='devtool-getting-help'> |
| @@ -1993,6 +1996,8 @@ | |||
| 1993 | undeploy-target Undeploy recipe output files in live target machine | 1996 | undeploy-target Undeploy recipe output files in live target machine |
| 1994 | search Search available recipes | 1997 | search Search available recipes |
| 1995 | build Build a recipe | 1998 | build Build a recipe |
| 1999 | edit-recipe Edit a recipe file in your workspace | ||
| 2000 | configure-help Get help on configure script options | ||
| 1996 | add Add a new recipe | 2001 | add Add a new recipe |
| 1997 | modify Modify the source for an existing recipe | 2002 | modify Modify the source for an existing recipe |
| 1998 | extract Extract the source for an existing recipe | 2003 | extract Extract the source for an existing recipe |
| @@ -2000,7 +2005,6 @@ | |||
| 2000 | update-recipe Apply changes from external source tree to recipe | 2005 | update-recipe Apply changes from external source tree to recipe |
| 2001 | status Show workspace status | 2006 | status Show workspace status |
| 2002 | reset Remove a recipe from your workspace | 2007 | reset Remove a recipe from your workspace |
| 2003 | edit-recipe Edit a recipe file in your workspace | ||
| 2004 | build-image Build image including workspace recipe packages | 2008 | build-image Build image including workspace recipe packages |
| 2005 | 2009 | ||
| 2006 | Use devtool <subcommand> --help to get help on a specific command | 2010 | Use devtool <subcommand> --help to get help on a specific command |
| @@ -2015,6 +2019,7 @@ | |||
| 2015 | $ devtool add --help | 2019 | $ devtool add --help |
| 2016 | usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI] | 2020 | usage: devtool add [-h] [--same-dir | --no-same-dir] [--fetch URI] |
| 2017 | [--version VERSION] [--no-git] [--binary] [--also-native] | 2021 | [--version VERSION] [--no-git] [--binary] [--also-native] |
| 2022 | [--src-subdir SUBDIR] | ||
| 2018 | [recipename] [srctree] [fetchuri] | 2023 | [recipename] [srctree] [fetchuri] |
| 2019 | 2024 | ||
| 2020 | Adds a new recipe to the workspace to build a specified source tree. Can | 2025 | Adds a new recipe to the workspace to build a specified source tree. Can |
| @@ -2026,7 +2031,7 @@ | |||
| 2026 | auto-detect it. | 2031 | auto-detect it. |
| 2027 | srctree Path to external source tree. If not specified, a | 2032 | srctree Path to external source tree. If not specified, a |
| 2028 | subdirectory of | 2033 | subdirectory of |
| 2029 | /home/<replaceable>user</replaceable>/poky/build/workspace/sources will be | 2034 | /home/scottrif/poky/build/workspace/sources will be |
| 2030 | used. | 2035 | used. |
| 2031 | fetchuri Fetch the specified URI and extract it to create the | 2036 | fetchuri Fetch the specified URI and extract it to create the |
| 2032 | source tree | 2037 | source tree |
| @@ -2047,44 +2052,29 @@ | |||
| 2047 | structure). Useful with binary packages e.g. RPMs. | 2052 | structure). Useful with binary packages e.g. RPMs. |
| 2048 | --also-native Also add native variant (i.e. support building recipe | 2053 | --also-native Also add native variant (i.e. support building recipe |
| 2049 | for the build host as well as the target machine) | 2054 | for the build host as well as the target machine) |
| 2055 | --src-subdir SUBDIR Specify subdirectory within source tree to use | ||
| 2050 | </literallayout> | 2056 | </literallayout> |
| 2051 | </para> | 2057 | </para> |
| 2052 | </section> | 2058 | </section> |
| 2053 | 2059 | ||
| 2054 | <section id='devtool-adding-a-new-recipe-to-the-workspace'> | 2060 | <section id='devtool-the-workspace-layer-structure'> |
| 2055 | <title>Adding a New Recipe to the Workspace Layer</title> | 2061 | <title>The Workspace Layer Structure</title> |
| 2056 | 2062 | ||
| 2057 | <para> | 2063 | <para> |
| 2058 | Use the <filename>devtool add</filename> command to add a new recipe | 2064 | <filename>devtool</filename> uses a "Workspace" layer |
| 2059 | to the workspace layer. | 2065 | in which to accomplish builds. |
| 2060 | The recipe you add should not exist - | 2066 | This layer is not specific to any single |
| 2061 | <filename>devtool</filename> creates it for you. | 2067 | <filename>devtool</filename> command but is rather a common |
| 2062 | The source files the recipe uses should exist in an external | 2068 | working area used across the tool. |
| 2063 | area. | ||
| 2064 | </para> | 2069 | </para> |
| 2065 | 2070 | ||
| 2066 | <para> | 2071 | <para> |
| 2067 | The following example creates and adds a new recipe named | 2072 | The following figure shows the workspace structure: |
| 2068 | <filename>jackson</filename> to the workspace layer. | ||
| 2069 | The source code built by the recipes resides in | ||
| 2070 | <filename>/home/scottrif/sources/jackson</filename>: | ||
| 2071 | <literallayout class='monospaced'> | ||
| 2072 | $ devtool add jackson /home/scottrif/sources/jackson | ||
| 2073 | </literallayout> | ||
| 2074 | <note> | ||
| 2075 | For complete syntax, use the | ||
| 2076 | <filename>devtool add --help</filename> command. | ||
| 2077 | </note> | ||
| 2078 | </para> | ||
| 2079 | |||
| 2080 | <para> | ||
| 2081 | If you add a recipe and the workspace layer does not exist, | ||
| 2082 | the command creates the layer and populates it as follows: | ||
| 2083 | </para> | 2073 | </para> |
| 2084 | 2074 | ||
| 2085 | <para> | 2075 | <para> |
| 2086 | <imagedata fileref="figures/build-workspace-directory.png" | 2076 | <imagedata fileref="figures/build-workspace-directory.png" |
| 2087 | width="6in" depth="4in" align="center" scale="100" /> | 2077 | width="6in" depth="5in" align="left" scale="70" /> |
| 2088 | </para> | 2078 | </para> |
| 2089 | 2079 | ||
| 2090 | <para> | 2080 | <para> |
| @@ -2092,6 +2082,8 @@ | |||
| 2092 | README - Provides information on what is in workspace layer and how to | 2082 | README - Provides information on what is in workspace layer and how to |
| 2093 | manage it. | 2083 | manage it. |
| 2094 | 2084 | ||
| 2085 | .devtool_md5 - A checksum file used by devtool. | ||
| 2086 | |||
| 2095 | appends - A directory that contains *.bbappend files, which point to | 2087 | appends - A directory that contains *.bbappend files, which point to |
| 2096 | external source. | 2088 | external source. |
| 2097 | 2089 | ||
| @@ -2101,13 +2093,49 @@ | |||
| 2101 | folder for each directory added whose name matches that of the | 2093 | folder for each directory added whose name matches that of the |
| 2102 | added recipe. devtool places the <replaceable>recipe</replaceable>.bb file | 2094 | added recipe. devtool places the <replaceable>recipe</replaceable>.bb file |
| 2103 | within that sub-directory. | 2095 | within that sub-directory. |
| 2096 | |||
| 2097 | sources - A directory containing a working copy of the source files used | ||
| 2098 | when building the recipe. This directory contains a | ||
| 2099 | folder for each set of source files matched to a corresponding | ||
| 2100 | recipe. | ||
| 2104 | </literallayout> | 2101 | </literallayout> |
| 2105 | </para> | 2102 | </para> |
| 2103 | </section> | ||
| 2104 | |||
| 2105 | <section id='devtool-adding-a-new-recipe-to-the-workspace'> | ||
| 2106 | <title>Adding a New Recipe to the Workspace Layer</title> | ||
| 2107 | |||
| 2108 | <para> | ||
| 2109 | Use the <filename>devtool add</filename> command to add a new recipe | ||
| 2110 | to the workspace layer. | ||
| 2111 | The recipe you add should not exist - | ||
| 2112 | <filename>devtool</filename> creates it for you. | ||
| 2113 | The source files the recipe uses should exist in an external | ||
| 2114 | area. | ||
| 2115 | </para> | ||
| 2116 | |||
| 2117 | <para> | ||
| 2118 | The following example creates and adds a new recipe named | ||
| 2119 | <filename>jackson</filename> to a workspace layer the tool creates. | ||
| 2120 | The source code built by the recipes resides in | ||
| 2121 | <filename>/home/scottrif/sources/jackson</filename>: | ||
| 2122 | <literallayout class='monospaced'> | ||
| 2123 | $ devtool add jackson /home/scottrif/sources/jackson | ||
| 2124 | </literallayout> | ||
| 2125 | </para> | ||
| 2126 | |||
| 2127 | <para> | ||
| 2128 | If you add a recipe and the workspace layer does not exist, | ||
| 2129 | the command creates the layer and populates it as | ||
| 2130 | described in | ||
| 2131 | "<link linkend='devtool-the-workspace-layer-structure'>The Workspace Layer Structure</link>" | ||
| 2132 | section. | ||
| 2133 | </para> | ||
| 2106 | 2134 | ||
| 2107 | <para> | 2135 | <para> |
| 2108 | Running <filename>devtool add</filename> when the | 2136 | Running <filename>devtool add</filename> when the |
| 2109 | workspace layer exists causes the tool to add the recipe | 2137 | workspace layer exists causes the tool to add the recipe, |
| 2110 | and append files into the existing workspace layer. | 2138 | append files, and source files into the existing workspace layer. |
| 2111 | The <filename>.bbappend</filename> file is created to point | 2139 | The <filename>.bbappend</filename> file is created to point |
| 2112 | to the external source tree. | 2140 | to the external source tree. |
| 2113 | </para> | 2141 | </para> |
| @@ -2130,10 +2158,6 @@ | |||
| 2130 | development branch into which you can checkout the source | 2158 | development branch into which you can checkout the source |
| 2131 | and whether or not to keep a temporary directory, which is | 2159 | and whether or not to keep a temporary directory, which is |
| 2132 | useful for debugging. | 2160 | useful for debugging. |
| 2133 | <note> | ||
| 2134 | For complete syntax, use the | ||
| 2135 | <filename>devtool extract --help</filename> command. | ||
| 2136 | </note> | ||
| 2137 | </para> | 2161 | </para> |
| 2138 | </section> | 2162 | </section> |
| 2139 | 2163 | ||
| @@ -2155,10 +2179,6 @@ | |||
| 2155 | development branch into which you can checkout the source | 2179 | development branch into which you can checkout the source |
| 2156 | and whether or not to keep a temporary directory, which is | 2180 | and whether or not to keep a temporary directory, which is |
| 2157 | useful for debugging. | 2181 | useful for debugging. |
| 2158 | <note> | ||
| 2159 | For complete syntax, use the | ||
| 2160 | <filename>devtool sync --help</filename> command. | ||
| 2161 | </note> | ||
| 2162 | </para> | 2182 | </para> |
| 2163 | </section> | 2183 | </section> |
| 2164 | 2184 | ||
| @@ -2188,10 +2208,6 @@ | |||
| 2188 | </literallayout> | 2208 | </literallayout> |
| 2189 | Using the above command form, the default development branch | 2209 | Using the above command form, the default development branch |
| 2190 | would be "devtool". | 2210 | would be "devtool". |
| 2191 | <note> | ||
| 2192 | For complete syntax, use the | ||
| 2193 | <filename>devtool modify --help</filename> command. | ||
| 2194 | </note> | ||
| 2195 | </para> | 2211 | </para> |
| 2196 | </section> | 2212 | </section> |
| 2197 | 2213 | ||
| @@ -2215,10 +2231,6 @@ | |||
| 2215 | "-a" or "--any-recipe" option. | 2231 | "-a" or "--any-recipe" option. |
| 2216 | Using either of these options allows you to edit any recipe | 2232 | Using either of these options allows you to edit any recipe |
| 2217 | regardless of its location. | 2233 | regardless of its location. |
| 2218 | <note> | ||
| 2219 | For complete syntax, use the | ||
| 2220 | <filename>devtool edit-recipe --help</filename> command. | ||
| 2221 | </note> | ||
| 2222 | </para> | 2234 | </para> |
| 2223 | </section> | 2235 | </section> |
| 2224 | 2236 | ||
| @@ -2268,10 +2280,6 @@ | |||
| 2268 | file. | 2280 | file. |
| 2269 | If an append file already exists, the command updates it | 2281 | If an append file already exists, the command updates it |
| 2270 | appropriately. | 2282 | appropriately. |
| 2271 | <note> | ||
| 2272 | For complete syntax, use the | ||
| 2273 | <filename>devtool update-recipe --help</filename> command. | ||
| 2274 | </note> | ||
| 2275 | </para> | 2283 | </para> |
| 2276 | </section> | 2284 | </section> |
| 2277 | 2285 | ||
| @@ -2298,10 +2306,6 @@ | |||
| 2298 | the source revision to which you want to upgrade (i.e. the | 2306 | the source revision to which you want to upgrade (i.e. the |
| 2299 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>, | 2307 | <ulink url='&YOCTO_DOCS_REF_URL;#var-SRCREV'><filename>SRCREV</filename></ulink>, |
| 2300 | whether or not to apply patches, and so forth. | 2308 | whether or not to apply patches, and so forth. |
| 2301 | <note> | ||
| 2302 | For complete syntax, use the | ||
| 2303 | <filename>devtool upgrade --help</filename> command. | ||
| 2304 | </note> | ||
| 2305 | </para> | 2309 | </para> |
| 2306 | </section> | 2310 | </section> |
| 2307 | 2311 | ||
| @@ -2326,10 +2330,18 @@ | |||
| 2326 | the recipe or the append files have been modified, the | 2330 | the recipe or the append files have been modified, the |
| 2327 | command preserves the modified files in a separate "attic" | 2331 | command preserves the modified files in a separate "attic" |
| 2328 | subdirectory under the workspace layer. | 2332 | subdirectory under the workspace layer. |
| 2329 | <note> | 2333 | </para> |
| 2330 | For complete syntax, use the | 2334 | |
| 2331 | <filename>devtool reset --help</filename> command. | 2335 | <para> |
| 2332 | </note> | 2336 | Here is an example that resets the workspace directory that |
| 2337 | contains the <filename>mtr</filename> recipe: | ||
| 2338 | <literallayout class='monospaced'> | ||
| 2339 | $ devtool reset mtr | ||
| 2340 | NOTE: Cleaning sysroot for recipe mtr... | ||
| 2341 | NOTE: Leaving source tree /home/scottrif/poky/build/workspace/sources/mtr as-is; if you no | ||
| 2342 | longer need it then please delete it manually | ||
| 2343 | $ | ||
| 2344 | </literallayout> | ||
| 2333 | </para> | 2345 | </para> |
| 2334 | </section> | 2346 | </section> |
| 2335 | 2347 | ||
| @@ -2353,10 +2365,6 @@ | |||
| 2353 | <literallayout class='monospaced'> | 2365 | <literallayout class='monospaced'> |
| 2354 | $ devtool build <replaceable>recipe</replaceable> | 2366 | $ devtool build <replaceable>recipe</replaceable> |
| 2355 | </literallayout> | 2367 | </literallayout> |
| 2356 | <note> | ||
| 2357 | For complete syntax, use the | ||
| 2358 | <filename>devtool build --help</filename> command. | ||
| 2359 | </note> | ||
| 2360 | </para> | 2368 | </para> |
| 2361 | </section> | 2369 | </section> |
| 2362 | 2370 | ||
| @@ -2367,6 +2375,10 @@ | |||
| 2367 | Use the <filename>devtool build-image</filename> command | 2375 | Use the <filename>devtool build-image</filename> command |
| 2368 | to build an image, extending it to include packages from | 2376 | to build an image, extending it to include packages from |
| 2369 | recipes in the workspace. | 2377 | recipes in the workspace. |
| 2378 | Using this command is useful when you want an image that | ||
| 2379 | ready for immediate deployment onto a device for testing. | ||
| 2380 | For proper integration into a final image, you need to | ||
| 2381 | edit your custom image recipe appropriately. | ||
| 2370 | </para> | 2382 | </para> |
| 2371 | 2383 | ||
| 2372 | <para> | 2384 | <para> |
| @@ -2407,12 +2419,6 @@ | |||
| 2407 | You should never use it to update an image that will be | 2419 | You should never use it to update an image that will be |
| 2408 | used in production. | 2420 | used in production. |
| 2409 | </para> | 2421 | </para> |
| 2410 | |||
| 2411 | <para> | ||
| 2412 | For complete syntax, use the | ||
| 2413 | <filename>devtool deploy-target --help</filename> | ||
| 2414 | command. | ||
| 2415 | </para> | ||
| 2416 | </note> | 2422 | </note> |
| 2417 | </para> | 2423 | </para> |
| 2418 | </section> | 2424 | </section> |
| @@ -2433,10 +2439,6 @@ | |||
| 2433 | The <replaceable>target</replaceable> is the address of the | 2439 | The <replaceable>target</replaceable> is the address of the |
| 2434 | target machine, which must be running an SSH server (i.e. | 2440 | target machine, which must be running an SSH server (i.e. |
| 2435 | <filename>user@hostname</filename>). | 2441 | <filename>user@hostname</filename>). |
| 2436 | <note> | ||
| 2437 | For complete syntax, use the | ||
| 2438 | <filename>devtool undeploy-target --help</filename> command. | ||
| 2439 | </note> | ||
| 2440 | </para> | 2442 | </para> |
| 2441 | </section> | 2443 | </section> |
| 2442 | 2444 | ||
| @@ -2459,10 +2461,6 @@ | |||
| 2459 | <literallayout class='monospaced'> | 2461 | <literallayout class='monospaced'> |
| 2460 | $ devtool create-workspace | 2462 | $ devtool create-workspace |
| 2461 | </literallayout> | 2463 | </literallayout> |
| 2462 | <note> | ||
| 2463 | For complete syntax, use the | ||
| 2464 | <filename>devtool create-workspace --help</filename> command. | ||
| 2465 | </note> | ||
| 2466 | </para> | 2464 | </para> |
| 2467 | 2465 | ||
| 2468 | <para> | 2466 | <para> |
| @@ -2492,6 +2490,15 @@ | |||
| 2492 | <literallayout class='monospaced'> | 2490 | <literallayout class='monospaced'> |
| 2493 | devtool status | 2491 | devtool status |
| 2494 | </literallayout> | 2492 | </literallayout> |
| 2493 | Following is sample output after using | ||
| 2494 | <link linkend='devtool-adding-a-new-recipe-to-the-workspace'><filename>devtool add</filename></link> | ||
| 2495 | to create and add the <filename>mtr_0.86.bb</filename> recipe | ||
| 2496 | to the <filename>workspace</filename> directory: | ||
| 2497 | <literallayout class='monospaced'> | ||
| 2498 | $ devtool status | ||
| 2499 | mtr: /home/scottrif/poky/build/workspace/sources/mtr (/home/scottrif/poky/build/workspace/recipes/mtr/mtr_0.86.bb) | ||
| 2500 | $ | ||
| 2501 | </literallayout> | ||
| 2495 | </para> | 2502 | </para> |
| 2496 | </section> | 2503 | </section> |
| 2497 | 2504 | ||
| @@ -2512,10 +2519,6 @@ | |||
| 2512 | you must supply a <replaceable>keyword</replaceable>. | 2519 | you must supply a <replaceable>keyword</replaceable>. |
| 2513 | The command uses the <replaceable>keyword</replaceable> when | 2520 | The command uses the <replaceable>keyword</replaceable> when |
| 2514 | searching for a match. | 2521 | searching for a match. |
| 2515 | <note> | ||
| 2516 | For complete syntax, use the | ||
| 2517 | <filename>devtool search --help</filename> command. | ||
| 2518 | </note> | ||
| 2519 | </para> | 2522 | </para> |
| 2520 | </section> | 2523 | </section> |
| 2521 | </section> | 2524 | </section> |
