diff options
| -rw-r--r-- | documentation/dev-manual/dev-manual-common-tasks.xml | 285 |
1 files changed, 197 insertions, 88 deletions
diff --git a/documentation/dev-manual/dev-manual-common-tasks.xml b/documentation/dev-manual/dev-manual-common-tasks.xml index 670b01a4e8..3b8e091963 100644 --- a/documentation/dev-manual/dev-manual-common-tasks.xml +++ b/documentation/dev-manual/dev-manual-common-tasks.xml | |||
| @@ -34,11 +34,11 @@ | |||
| 34 | <para> | 34 | <para> |
| 35 | It is very easy to create your own layers to use with the | 35 | It is very easy to create your own layers to use with the |
| 36 | OpenEmbedded build system. | 36 | OpenEmbedded build system. |
| 37 | The Yocto Project ships with scripts that speed up creating | 37 | The Yocto Project ships with tools that speed up creating |
| 38 | general layers and BSP layers. | 38 | layers. |
| 39 | This section describes the steps you perform by hand to create | 39 | This section describes the steps you perform by hand to create |
| 40 | a layer so that you can better understand them. | 40 | a layer so that you can better understand them. |
| 41 | For information about the layer-creation scripts, see the | 41 | For information about the layer-creation tools, see the |
| 42 | "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a New BSP Layer Using the <filename>bitbake-layers</filename> Script</ulink>" | 42 | "<ulink url='&YOCTO_DOCS_BSP_URL;#creating-a-new-bsp-layer-using-the-bitbake-layers-script'>Creating a New BSP Layer Using the <filename>bitbake-layers</filename> Script</ulink>" |
| 43 | section in the Yocto Project Board Support Package (BSP) | 43 | section in the Yocto Project Board Support Package (BSP) |
| 44 | Developer's Guide and the | 44 | Developer's Guide and the |
| @@ -47,9 +47,11 @@ | |||
| 47 | </para> | 47 | </para> |
| 48 | 48 | ||
| 49 | <para> | 49 | <para> |
| 50 | Follow these general steps to create your layer without the aid of a script: | 50 | Follow these general steps to create your layer without using |
| 51 | tools: | ||
| 51 | <orderedlist> | 52 | <orderedlist> |
| 52 | <listitem><para><emphasis>Check Existing Layers:</emphasis> | 53 | <listitem><para> |
| 54 | <emphasis>Check Existing Layers:</emphasis> | ||
| 53 | Before creating a new layer, you should be sure someone | 55 | Before creating a new layer, you should be sure someone |
| 54 | has not already created a layer containing the Metadata | 56 | has not already created a layer containing the Metadata |
| 55 | you need. | 57 | you need. |
| @@ -57,19 +59,31 @@ | |||
| 57 | <ulink url='http://layers.openembedded.org/layerindex/layers/'><filename>OpenEmbedded Metadata Index</filename></ulink> | 59 | <ulink url='http://layers.openembedded.org/layerindex/layers/'><filename>OpenEmbedded Metadata Index</filename></ulink> |
| 58 | for a list of layers from the OpenEmbedded community | 60 | for a list of layers from the OpenEmbedded community |
| 59 | that can be used in the Yocto Project. | 61 | that can be used in the Yocto Project. |
| 62 | You could find a layer that is identical or close to | ||
| 63 | what you need. | ||
| 60 | </para></listitem> | 64 | </para></listitem> |
| 61 | <listitem><para><emphasis>Create a Directory:</emphasis> | 65 | <listitem><para> |
| 66 | <emphasis>Create a Directory:</emphasis> | ||
| 62 | Create the directory for your layer. | 67 | Create the directory for your layer. |
| 63 | While not strictly required, prepend the name of the | 68 | While not strictly required, prepend the name of the |
| 64 | folder with the string <filename>meta-</filename>. | 69 | directory with the string "meta-". |
| 65 | For example: | 70 | For example: |
| 66 | <literallayout class='monospaced'> | 71 | <literallayout class='monospaced'> |
| 67 | meta-mylayer | 72 | meta-mylayer |
| 68 | meta-GUI_xyz | 73 | meta-GUI_xyz |
| 69 | meta-mymachine | 74 | meta-mymachine |
| 70 | </literallayout> | 75 | </literallayout> |
| 76 | Realize that the name of your layer does not include | ||
| 77 | the "meta-" string. | ||
| 78 | For example, the names of the previous three layers | ||
| 79 | are "mylayer", "GUI_xyz", and "mymachine". | ||
| 80 | Following this layer directory naming convention can | ||
| 81 | save you trouble later when tools or components | ||
| 82 | "assume" your layer resides in a directory whose name | ||
| 83 | starts with "meta-". | ||
| 71 | </para></listitem> | 84 | </para></listitem> |
| 72 | <listitem><para><emphasis>Create a Layer Configuration | 85 | <listitem><para> |
| 86 | <emphasis>Create a Layer Configuration | ||
| 73 | File:</emphasis> | 87 | File:</emphasis> |
| 74 | Inside your new layer folder, you need to create a | 88 | Inside your new layer folder, you need to create a |
| 75 | <filename>conf/layer.conf</filename> file. | 89 | <filename>conf/layer.conf</filename> file. |
| @@ -77,9 +91,14 @@ | |||
| 77 | file and copy that to your layer's | 91 | file and copy that to your layer's |
| 78 | <filename>conf</filename> directory and then modify the | 92 | <filename>conf</filename> directory and then modify the |
| 79 | file as needed.</para> | 93 | file as needed.</para> |
| 94 | |||
| 80 | <para>The | 95 | <para>The |
| 81 | <filename>meta-yocto-bsp/conf/layer.conf</filename> file | 96 | <filename>meta-yocto-bsp/conf/layer.conf</filename> file |
| 82 | demonstrates the required syntax: | 97 | in the Yocto Project |
| 98 | <ulink url='&YOCTO_GIT_URL;'>Source Repositories</ulink> | ||
| 99 | demonstrates the required syntax. | ||
| 100 | For your layer, you need to replace "yoctobsp" with the | ||
| 101 | root name of your layer: | ||
| 83 | <literallayout class='monospaced'> | 102 | <literallayout class='monospaced'> |
| 84 | # We have a conf and classes directory, add to BBPATH | 103 | # We have a conf and classes directory, add to BBPATH |
| 85 | BBPATH .= ":${LAYERDIR}" | 104 | BBPATH .= ":${LAYERDIR}" |
| @@ -91,35 +110,41 @@ | |||
| 91 | BBFILE_COLLECTIONS += "yoctobsp" | 110 | BBFILE_COLLECTIONS += "yoctobsp" |
| 92 | BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/" | 111 | BBFILE_PATTERN_yoctobsp = "^${LAYERDIR}/" |
| 93 | BBFILE_PRIORITY_yoctobsp = "5" | 112 | BBFILE_PRIORITY_yoctobsp = "5" |
| 94 | LAYERVERSION_yoctobsp = "3" | 113 | LAYERVERSION_yoctobsp = "4" |
| 114 | LAYERSERIES_COMPAT_yoctobsp = "&DISTRO_NAME_NO_CAP;" | ||
| 95 | </literallayout></para> | 115 | </literallayout></para> |
| 116 | |||
| 96 | <para>Here is an explanation of the example: | 117 | <para>Here is an explanation of the example: |
| 97 | <itemizedlist> | 118 | <itemizedlist> |
| 98 | <listitem><para>The configuration and | 119 | <listitem><para> |
| 99 | classes directory is appended to | 120 | The configuration and classes directory is |
| 121 | appended to | ||
| 100 | <ulink url='&YOCTO_DOCS_REF_URL;#var-BBPATH'><filename>BBPATH</filename></ulink>. | 122 | <ulink url='&YOCTO_DOCS_REF_URL;#var-BBPATH'><filename>BBPATH</filename></ulink>. |
| 101 | <note> | 123 | <note> |
| 102 | All non-distro layers, which include all BSP | 124 | All non-distro layers, which include all BSP |
| 103 | layers, are expected to append the layer | 125 | layers, are expected to append the layer |
| 104 | directory to the | 126 | directory to <filename>BBPATH</filename>. |
| 105 | <filename>BBPATH</filename>. | ||
| 106 | On the other hand, distro layers, such as | 127 | On the other hand, distro layers, such as |
| 107 | <filename>meta-poky</filename>, can choose | 128 | <filename>meta-poky</filename>, can choose |
| 108 | to enforce their own precedence over | 129 | to enforce their own precedence over |
| 109 | <filename>BBPATH</filename>. | 130 | <filename>BBPATH</filename>. |
| 110 | For an example of that syntax, see the | 131 | For an example of that syntax, see the |
| 111 | <filename>layer.conf</filename> file for | 132 | <filename>meta-poky/conf/layer.conf</filename> |
| 112 | the <filename>meta-poky</filename> layer. | 133 | file for in the Source Repositories. |
| 113 | </note></para></listitem> | 134 | </note> |
| 114 | <listitem><para>The recipes for the layers are | 135 | </para></listitem> |
| 115 | appended to | 136 | <listitem><para> |
| 137 | The recipes for the layers are appended to | ||
| 116 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILES'>BBFILES</ulink></filename>. | 138 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILES'>BBFILES</ulink></filename>. |
| 117 | </para></listitem> | 139 | </para></listitem> |
| 118 | <listitem><para>The | 140 | <listitem><para> |
| 141 | The | ||
| 119 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_COLLECTIONS'>BBFILE_COLLECTIONS</ulink></filename> | 142 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_COLLECTIONS'>BBFILE_COLLECTIONS</ulink></filename> |
| 120 | variable is then appended with the layer name. | 143 | variable is then appended with the layer name, |
| 144 | which is "yoctobsp" in this example. | ||
| 121 | </para></listitem> | 145 | </para></listitem> |
| 122 | <listitem><para>The | 146 | <listitem><para> |
| 147 | The | ||
| 123 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PATTERN'>BBFILE_PATTERN</ulink></filename> | 148 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PATTERN'>BBFILE_PATTERN</ulink></filename> |
| 124 | variable is set to a regular expression and is | 149 | variable is set to a regular expression and is |
| 125 | used to match files from | 150 | used to match files from |
| @@ -127,24 +152,34 @@ | |||
| 127 | layer. | 152 | layer. |
| 128 | In this case, | 153 | In this case, |
| 129 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERDIR'>LAYERDIR</ulink></filename> | 154 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERDIR'>LAYERDIR</ulink></filename> |
| 130 | is used to make <filename>BBFILE_PATTERN</filename> match within the | 155 | is used to make |
| 131 | layer's path.</para></listitem> | 156 | <filename>BBFILE_PATTERN</filename> match |
| 132 | <listitem><para>The | 157 | within the layer's path. |
| 158 | </para></listitem> | ||
| 159 | <listitem><para> | ||
| 160 | The | ||
| 133 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PRIORITY'>BBFILE_PRIORITY</ulink></filename> | 161 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-BBFILE_PRIORITY'>BBFILE_PRIORITY</ulink></filename> |
| 134 | variable then assigns a priority to the layer. | 162 | variable then assigns a priority to the layer. |
| 135 | Applying priorities is useful in situations | 163 | Applying priorities is useful in situations |
| 136 | where the same recipe might appear in multiple | 164 | where the same recipe might appear in multiple |
| 137 | layers and allows you to choose the layer | 165 | layers. |
| 138 | that takes precedence.</para></listitem> | 166 | A priority allows you to choose the layer |
| 139 | <listitem><para>The | 167 | that takes precedence. |
| 168 | </para></listitem> | ||
| 169 | <listitem><para> | ||
| 170 | The | ||
| 140 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERVERSION'>LAYERVERSION</ulink></filename> | 171 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERVERSION'>LAYERVERSION</ulink></filename> |
| 141 | variable optionally specifies the version of a | 172 | variable optionally specifies the version of a |
| 142 | layer as a single number.</para></listitem> | 173 | layer as a single number. |
| 174 | </para></listitem> | ||
| 175 | <listitem><para> | ||
| 176 | The | ||
| 177 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERDIR'>LAYERDIR</ulink></filename> | ||
| 178 | variable expands to the directory of the | ||
| 179 | current layer | ||
| 180 | </list></listitem> | ||
| 143 | </itemizedlist></para> | 181 | </itemizedlist></para> |
| 144 | <para>Note the use of the | 182 | |
| 145 | <filename><ulink url='&YOCTO_DOCS_REF_URL;#var-LAYERDIR'>LAYERDIR</ulink></filename> | ||
| 146 | variable, which expands to the directory of the current | ||
| 147 | layer.</para> | ||
| 148 | <para>Through the use of the <filename>BBPATH</filename> | 183 | <para>Through the use of the <filename>BBPATH</filename> |
| 149 | variable, BitBake locates class files | 184 | variable, BitBake locates class files |
| 150 | (<filename>.bbclass</filename>), | 185 | (<filename>.bbclass</filename>), |
| @@ -156,10 +191,11 @@ | |||
| 156 | This is similar to the way the <filename>PATH</filename> | 191 | This is similar to the way the <filename>PATH</filename> |
| 157 | variable is used for binaries. | 192 | variable is used for binaries. |
| 158 | It is recommended, therefore, that you use unique | 193 | It is recommended, therefore, that you use unique |
| 159 | class and configuration | 194 | class and configuration filenames in your custom layer. |
| 160 | filenames in your custom layer.</para></listitem> | 195 | </para></listitem> |
| 161 | <listitem><para><emphasis>Add Content:</emphasis> Depending | 196 | <listitem><para> |
| 162 | on the type of layer, add the content. | 197 | <emphasis>Add Content:</emphasis> |
| 198 | Depending on the type of layer, add the content. | ||
| 163 | If the layer adds support for a machine, add the machine | 199 | If the layer adds support for a machine, add the machine |
| 164 | configuration in a <filename>conf/machine/</filename> | 200 | configuration in a <filename>conf/machine/</filename> |
| 165 | file within the layer. | 201 | file within the layer. |
| @@ -169,7 +205,8 @@ | |||
| 169 | If the layer introduces new recipes, put the recipes | 205 | If the layer introduces new recipes, put the recipes |
| 170 | you need in <filename>recipes-*</filename> | 206 | you need in <filename>recipes-*</filename> |
| 171 | subdirectories within the layer. | 207 | subdirectories within the layer. |
| 172 | <note>In order to be compliant with the Yocto Project, | 208 | <note> |
| 209 | In order to be compliant with the Yocto Project, | ||
| 173 | a layer must contain a | 210 | a layer must contain a |
| 174 | <ulink url='&YOCTO_DOCS_BSP_URL;#bsp-filelayout-readme'>README file.</ulink> | 211 | <ulink url='&YOCTO_DOCS_BSP_URL;#bsp-filelayout-readme'>README file.</ulink> |
| 175 | </note> | 212 | </note> |
| @@ -8835,11 +8872,13 @@ Some notes from Cal: | |||
| 8835 | During a build, BitBake always transforms a recipe into one or | 8872 | During a build, BitBake always transforms a recipe into one or |
| 8836 | more packages. | 8873 | more packages. |
| 8837 | For example, BitBake takes the <filename>bash</filename> recipe | 8874 | For example, BitBake takes the <filename>bash</filename> recipe |
| 8838 | and currently produces the <filename>bash-dbg</filename>, | 8875 | and produces a number of packages (e.g. |
| 8839 | <filename>bash-staticdev</filename>, | 8876 | <filename>bash</filename>, <filename>bash-bashbug</filename>, |
| 8840 | <filename>bash-dev</filename>, <filename>bash-doc</filename>, | 8877 | <filename>bash-completion</filename>, |
| 8841 | <filename>bash-locale</filename>, and | 8878 | <filename>bash-completion-dbg</filename>, |
| 8842 | <filename>bash</filename> packages. | 8879 | <filename>bash-completion-dev</filename>, |
| 8880 | <filename>bash-completion-extra</filename>, | ||
| 8881 | <filename>bash-dbg</filename>, and so forth). | ||
| 8843 | Not all generated packages are included in an image. | 8882 | Not all generated packages are included in an image. |
| 8844 | </para> | 8883 | </para> |
| 8845 | 8884 | ||
| @@ -8883,7 +8922,7 @@ Some notes from Cal: | |||
| 8883 | 8922 | ||
| 8884 | <para> | 8923 | <para> |
| 8885 | In order to use runtime package management, you | 8924 | In order to use runtime package management, you |
| 8886 | need a host/server machine that serves up the pre-compiled | 8925 | need a host or server machine that serves up the pre-compiled |
| 8887 | packages plus the required metadata. | 8926 | packages plus the required metadata. |
| 8888 | You also need package manipulation tools on the target. | 8927 | You also need package manipulation tools on the target. |
| 8889 | The build machine is a likely candidate to act as the server. | 8928 | The build machine is a likely candidate to act as the server. |
| @@ -8891,6 +8930,10 @@ Some notes from Cal: | |||
| 8891 | package server. | 8930 | package server. |
| 8892 | The build machine could push its artifacts to another machine | 8931 | The build machine could push its artifacts to another machine |
| 8893 | that acts as the server (e.g. Internet-facing). | 8932 | that acts as the server (e.g. Internet-facing). |
| 8933 | In fact, doing so is advantageous for a production | ||
| 8934 | environment as getting the packages away from the | ||
| 8935 | development system's build directory prevents accidental | ||
| 8936 | overwrites. | ||
| 8894 | </para> | 8937 | </para> |
| 8895 | 8938 | ||
| 8896 | <para> | 8939 | <para> |
| @@ -8900,11 +8943,11 @@ Some notes from Cal: | |||
| 8900 | out into a couple of different package groupings based on | 8943 | out into a couple of different package groupings based on |
| 8901 | criteria such as the target's CPU architecture, the target | 8944 | criteria such as the target's CPU architecture, the target |
| 8902 | board, or the C library used on the target. | 8945 | board, or the C library used on the target. |
| 8903 | For example, a build targeting the <filename>qemuarm</filename> | 8946 | For example, a build targeting the <filename>qemux86</filename> |
| 8904 | device produces the following three package databases: | 8947 | device produces the following three package databases: |
| 8905 | <filename>all</filename>, <filename>armv5te</filename>, and | 8948 | <filename>noarch</filename>, <filename>i586</filename>, and |
| 8906 | <filename>qemuarm</filename>. | 8949 | <filename>qemux86</filename>. |
| 8907 | If you wanted your <filename>qemuarm</filename> device to be | 8950 | If you wanted your <filename>qemux86</filename> device to be |
| 8908 | aware of all the packages that were available to it, | 8951 | aware of all the packages that were available to it, |
| 8909 | you would need to point it to each of these databases | 8952 | you would need to point it to each of these databases |
| 8910 | individually. | 8953 | individually. |
| @@ -8950,10 +8993,10 @@ Some notes from Cal: | |||
| 8950 | PACKAGE_CLASSES ?= “package_<replaceable>packageformat</replaceable>” | 8993 | PACKAGE_CLASSES ?= “package_<replaceable>packageformat</replaceable>” |
| 8951 | </literallayout> | 8994 | </literallayout> |
| 8952 | where <replaceable>packageformat</replaceable> | 8995 | where <replaceable>packageformat</replaceable> |
| 8953 | can be "ipk", "rpm", and "deb", which are the | 8996 | can be "ipk", "rpm", "deb", or "tar" which are the |
| 8954 | supported package formats. | 8997 | supported package formats. |
| 8955 | <note> | 8998 | <note> |
| 8956 | Because the Yocto Project supports three | 8999 | Because the Yocto Project supports four |
| 8957 | different package formats, you can set the | 9000 | different package formats, you can set the |
| 8958 | variable with more than one argument. | 9001 | variable with more than one argument. |
| 8959 | However, the OpenEmbedded build system only | 9002 | However, the OpenEmbedded build system only |
| @@ -8972,12 +9015,12 @@ Some notes from Cal: | |||
| 8972 | "package-management" in the | 9015 | "package-management" in the |
| 8973 | <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink> | 9016 | <ulink url='&YOCTO_DOCS_REF_URL;#var-IMAGE_FEATURES'><filename>IMAGE_FEATURES</filename></ulink> |
| 8974 | variable. | 9017 | variable. |
| 8975 | Including "package-management" in this | 9018 | Including "package-management" in this configuration |
| 8976 | configuration variable ensures that when the image | 9019 | variable ensures that when the image is assembled for your |
| 8977 | is assembled for your target, the image includes | 9020 | target, the image includes the currently-known package |
| 8978 | the currently-known package databases as well as | 9021 | databases as well as the target-specific tools required |
| 8979 | the target-specific tools required for runtime | 9022 | for runtime package management to be performed on the |
| 8980 | package management to be performed on the target. | 9023 | target. |
| 8981 | However, this is not strictly necessary. | 9024 | However, this is not strictly necessary. |
| 8982 | You could start your image off without any databases | 9025 | You could start your image off without any databases |
| 8983 | but only include the required on-target package | 9026 | but only include the required on-target package |
| @@ -8991,21 +9034,26 @@ Some notes from Cal: | |||
| 8991 | 9034 | ||
| 8992 | <para> | 9035 | <para> |
| 8993 | Whenever you perform any sort of build step that can | 9036 | Whenever you perform any sort of build step that can |
| 8994 | potentially generate a package or modify an existing | 9037 | potentially generate a package or modify existing |
| 8995 | package, it is always a good idea to re-generate the | 9038 | package, it is always a good idea to re-generate the |
| 8996 | package index with: | 9039 | package index after the build by using the following |
| 9040 | command: | ||
| 8997 | <literallayout class='monospaced'> | 9041 | <literallayout class='monospaced'> |
| 8998 | $ bitbake package-index | 9042 | $ bitbake package-index |
| 8999 | </literallayout> | 9043 | </literallayout> |
| 9000 | Realize that it is not sufficient to simply do the | 9044 | It might be tempting to build the package and the |
| 9001 | following: | 9045 | package index at the same time with a command such as |
| 9046 | the following: | ||
| 9002 | <literallayout class='monospaced'> | 9047 | <literallayout class='monospaced'> |
| 9003 | $ bitbake <replaceable>some-package</replaceable> package-index | 9048 | $ bitbake <replaceable>some-package</replaceable> package-index |
| 9004 | </literallayout> | 9049 | </literallayout> |
| 9005 | The reason for this restriction is because BitBake does not | 9050 | Do not do this as BitBake does not schedule the package |
| 9006 | properly schedule the <filename>package-index</filename> | 9051 | index for after the completion of the package you are |
| 9007 | target fully after any other target has completed. | 9052 | building. |
| 9008 | Thus, be sure to run the package update step separately. | 9053 | Consequently, you cannot be sure of the package index |
| 9054 | including information for the package you just built. | ||
| 9055 | Thus, be sure to run the package update step separately | ||
| 9056 | after building any packages. | ||
| 9009 | </para> | 9057 | </para> |
| 9010 | 9058 | ||
| 9011 | <para> | 9059 | <para> |
| @@ -9030,8 +9078,8 @@ Some notes from Cal: | |||
| 9030 | For example, if | 9078 | For example, if |
| 9031 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink><filename>}</filename> | 9079 | <filename>${</filename><ulink url='&YOCTO_DOCS_REF_URL;#var-TMPDIR'><filename>TMPDIR</filename></ulink><filename>}</filename> |
| 9032 | is <filename>tmp</filename> and your selected package type | 9080 | is <filename>tmp</filename> and your selected package type |
| 9033 | is IPK, then your IPK packages are available in | 9081 | is RPM, then your RPM packages are available in |
| 9034 | <filename>tmp/deploy/ipk</filename>. | 9082 | <filename>tmp/deploy/rpm</filename>. |
| 9035 | </para> | 9083 | </para> |
| 9036 | </section> | 9084 | </section> |
| 9037 | 9085 | ||
| @@ -9086,17 +9134,39 @@ Some notes from Cal: | |||
| 9086 | <title>Using RPM</title> | 9134 | <title>Using RPM</title> |
| 9087 | 9135 | ||
| 9088 | <para> | 9136 | <para> |
| 9089 | The <filename>dnf</filename> application performs | 9137 | The |
| 9090 | runtime package management of RPM packages. | 9138 | <ulink url='https://en.wikipedia.org/wiki/DNF_(software)'>Dandified Packaging Tool</ulink> |
| 9091 | You must perform an initial setup for | 9139 | (DNF) performs runtime package management of RPM |
| 9092 | <filename>dnf</filename> on the target machine | 9140 | packages. |
| 9093 | if the | 9141 | In order to use DNF for runtime package management, |
| 9094 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></ulink>, | 9142 | you must perform an initial setup on the target |
| 9095 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></ulink>, | 9143 | machine for cases where the |
| 9096 | and | 9144 | <filename>PACKAGE_FEED_*</filename> variables were not |
| 9097 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></ulink> | 9145 | set as part of the image that is running on the |
| 9098 | variables have not been set or the target image was | 9146 | target. |
| 9099 | built before the variables were set. | 9147 | This means if you built your image and did not not use |
| 9148 | these variables as part of the build and your image is | ||
| 9149 | now running on the target, you need to perform the | ||
| 9150 | steps in this section if you want to use runtime | ||
| 9151 | package management. | ||
| 9152 | <note> | ||
| 9153 | For information on the | ||
| 9154 | <filename>PACKAGE_FEED_*</filename> variables, see | ||
| 9155 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_ARCHS'><filename>PACKAGE_FEED_ARCHS</filename></ulink>, | ||
| 9156 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_BASE_PATHS'><filename>PACKAGE_FEED_BASE_PATHS</filename></ulink>, | ||
| 9157 | and | ||
| 9158 | <ulink url='&YOCTO_DOCS_REF_URL;#var-PACKAGE_FEED_URIS'><filename>PACKAGE_FEED_URIS</filename></ulink> | ||
| 9159 | in the Yocto Project Reference Manual variables | ||
| 9160 | glossary. | ||
| 9161 | </note> | ||
| 9162 | </para> | ||
| 9163 | |||
| 9164 | <para> | ||
| 9165 | On the target, you must inform DNF that package | ||
| 9166 | databases are available. | ||
| 9167 | You do this by creating a file named | ||
| 9168 | <filename>/etc/yum.repos.d/oe-packages.repo</filename> | ||
| 9169 | and defining the <filename>oe-packages</filename>. | ||
| 9100 | </para> | 9170 | </para> |
| 9101 | 9171 | ||
| 9102 | <para> | 9172 | <para> |
| @@ -9105,21 +9175,60 @@ Some notes from Cal: | |||
| 9105 | <filename>all</filename>, <filename>i586</filename>, | 9175 | <filename>all</filename>, <filename>i586</filename>, |
| 9106 | and <filename>qemux86</filename> from a server named | 9176 | and <filename>qemux86</filename> from a server named |
| 9107 | <filename>my.server</filename>. | 9177 | <filename>my.server</filename>. |
| 9108 | You must inform <filename>dnf</filename> of the | 9178 | The specifics for setting up the web server are up to |
| 9109 | availability of these databases by creating a | 9179 | you. |
| 9110 | <filename>/etc/yum.repos.d/oe-packages.repo</filename> | 9180 | The critical requirement is that the URIs in the |
| 9111 | file with the following content: | 9181 | target repository configuration point to the |
| 9112 | <literallayout class='monospaced'> | 9182 | correct remote location for the feeds. |
| 9183 | This example uses a location outside of the build | ||
| 9184 | system's <filename>deploy</filename> directory. | ||
| 9185 | Realize that it is possible to run a web server | ||
| 9186 | that gets the databases from | ||
| 9187 | <filename>deploy</filename> directory where the image | ||
| 9188 | was built. | ||
| 9189 | </para> | ||
| 9190 | |||
| 9191 | <para> | ||
| 9192 | When telling DNF where to look for the package | ||
| 9193 | databases, you must declare individual locations | ||
| 9194 | per architecture or a single location used for all | ||
| 9195 | architectures. | ||
| 9196 | You cannot do both: | ||
| 9197 | <itemizedlist> | ||
| 9198 | <listitem><para> | ||
| 9199 | <emphasis>Create an Explicit List of Architectures:</emphasis> | ||
| 9200 | Define individual base URLs to identify where | ||
| 9201 | each package database is located: | ||
| 9202 | <literallayout class='monospaced'> | ||
| 9113 | [oe-packages] | 9203 | [oe-packages] |
| 9114 | baseurl=http://my.server http://my.server/rpm/qemux86 http://my.server/rpm/all | 9204 | baseurl=http://my.server/rpm/i586 http://my.server/rpm/qemux86 http://my.server/rpm/all |
| 9115 | </literallayout> | 9205 | </literallayout> |
| 9116 | From the target machine, fetch the repository: | 9206 | This example informs DNF about individual |
| 9207 | package databases for all three architectures. | ||
| 9208 | </para></listitem> | ||
| 9209 | <listitem><para> | ||
| 9210 | <emphasis>Create a Single (Full) Package Index:</emphasis> | ||
| 9211 | Define a single base URL that identifies where | ||
| 9212 | a full package database is located: | ||
| 9213 | <literallayout class='monospaced'> | ||
| 9214 | [oe-packages] | ||
| 9215 | baseurl=http://my.server/rpm | ||
| 9216 | </literallayout> | ||
| 9217 | This example informs DNF about a single package | ||
| 9218 | database that contains all the package index | ||
| 9219 | information for all supported architectures. | ||
| 9220 | </para></listitem> | ||
| 9221 | </itemizedlist> | ||
| 9222 | </para> | ||
| 9223 | |||
| 9224 | <para> | ||
| 9225 | Once you have informed DNF where to find the package | ||
| 9226 | databases, you need to fetch them: | ||
| 9117 | <literallayout class='monospaced'> | 9227 | <literallayout class='monospaced'> |
| 9118 | # dnf makecache | 9228 | # dnf makecache |
| 9119 | </literallayout> | 9229 | </literallayout> |
| 9120 | After everything is set up, <filename>dnf</filename> | 9230 | DNF is now able to find, install, and upgrade packages |
| 9121 | is able to find, install, and upgrade packages from | 9231 | from the specified repository or repositories. |
| 9122 | the specified repository. | ||
| 9123 | <note> | 9232 | <note> |
| 9124 | See the | 9233 | See the |
| 9125 | <ulink url='http://dnf.readthedocs.io/en/latest/'>DNF documentation</ulink> | 9234 | <ulink url='http://dnf.readthedocs.io/en/latest/'>DNF documentation</ulink> |
