Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 1 | Moving to the Yocto Project 1.5 Release |
| 2 | ======================================= |
| 3 | |
| 4 | This section provides migration information for moving to the Yocto |
| 5 | Project 1.5 Release from the prior release. |
| 6 | |
| 7 | .. _migration-1.5-host-dependency-changes: |
| 8 | |
| 9 | Host Dependency Changes |
| 10 | ----------------------- |
| 11 | |
| 12 | The OpenEmbedded build system now has some additional requirements on |
| 13 | the host system: |
| 14 | |
| 15 | - Python 2.7.3+ |
| 16 | |
| 17 | - Tar 1.24+ |
| 18 | |
| 19 | - Git 1.7.8+ |
| 20 | |
| 21 | - Patched version of Make if you are using 3.82. Most distributions |
| 22 | that provide Make 3.82 use the patched version. |
| 23 | |
| 24 | If the Linux distribution you are using on your build host does not |
| 25 | provide packages for these, you can install and use the Buildtools |
| 26 | tarball, which provides an SDK-like environment containing them. |
| 27 | |
| 28 | For more information on this requirement, see the "`Required Git, tar, |
| 29 | Python and gcc Versions <#required-git-tar-python-and-gcc-versions>`__" |
| 30 | section. |
| 31 | |
| 32 | .. _migration-1.5-atom-pc-bsp: |
| 33 | |
| 34 | ``atom-pc`` Board Support Package (BSP) |
| 35 | --------------------------------------- |
| 36 | |
| 37 | The ``atom-pc`` hardware reference BSP has been replaced by a |
| 38 | ``genericx86`` BSP. This BSP is not necessarily guaranteed to work on |
| 39 | all x86 hardware, but it will run on a wider range of systems than the |
| 40 | ``atom-pc`` did. |
| 41 | |
| 42 | .. note:: |
| 43 | |
| 44 | Additionally, a |
| 45 | genericx86-64 |
| 46 | BSP has been added for 64-bit Atom systems. |
| 47 | |
| 48 | .. _migration-1.5-bitbake: |
| 49 | |
| 50 | BitBake |
| 51 | ------- |
| 52 | |
| 53 | The following changes have been made that relate to BitBake: |
| 54 | |
| 55 | - BitBake now supports a ``_remove`` operator. The addition of this |
| 56 | operator means you will have to rename any items in recipe space |
| 57 | (functions, variables) whose names currently contain ``_remove_`` or |
| 58 | end with ``_remove`` to avoid unexpected behavior. |
| 59 | |
| 60 | - BitBake's global method pool has been removed. This method is not |
| 61 | particularly useful and led to clashes between recipes containing |
| 62 | functions that had the same name. |
| 63 | |
| 64 | - The "none" server backend has been removed. The "process" server |
| 65 | backend has been serving well as the default for a long time now. |
| 66 | |
| 67 | - The ``bitbake-runtask`` script has been removed. |
| 68 | |
| 69 | - ``${``\ :term:`P`\ ``}`` and |
| 70 | ``${``\ :term:`PF`\ ``}`` are no longer added to |
| 71 | :term:`PROVIDES` by default in ``bitbake.conf``. |
| 72 | These version-specific ``PROVIDES`` items were seldom used. |
| 73 | Attempting to use them could result in two versions being built |
| 74 | simultaneously rather than just one version due to the way BitBake |
| 75 | resolves dependencies. |
| 76 | |
| 77 | .. _migration-1.5-qa-warnings: |
| 78 | |
| 79 | QA Warnings |
| 80 | ----------- |
| 81 | |
| 82 | The following changes have been made to the package QA checks: |
| 83 | |
| 84 | - If you have customized :term:`ERROR_QA` or |
| 85 | :term:`WARN_QA` values in your configuration, check |
| 86 | that they contain all of the issues that you wish to be reported. |
| 87 | Previous Yocto Project versions contained a bug that meant that any |
| 88 | item not mentioned in ``ERROR_QA`` or ``WARN_QA`` would be treated as |
| 89 | a warning. Consequently, several important items were not already in |
| 90 | the default value of ``WARN_QA``. All of the possible QA checks are |
| 91 | now documented in the ":ref:`insane.bbclass <ref-classes-insane>`" |
| 92 | section. |
| 93 | |
| 94 | - An additional QA check has been added to check if |
| 95 | ``/usr/share/info/dir`` is being installed. Your recipe should delete |
| 96 | this file within :ref:`ref-tasks-install` if "make |
| 97 | install" is installing it. |
| 98 | |
| 99 | - If you are using the buildhistory class, the check for the package |
| 100 | version going backwards is now controlled using a standard QA check. |
| 101 | Thus, if you have customized your ``ERROR_QA`` or ``WARN_QA`` values |
| 102 | and still wish to have this check performed, you should add |
| 103 | "version-going-backwards" to your value for one or the other |
| 104 | variables depending on how you wish it to be handled. See the |
| 105 | documented QA checks in the |
| 106 | ":ref:`insane.bbclass <ref-classes-insane>`" section. |
| 107 | |
| 108 | .. _migration-1.5-directory-layout-changes: |
| 109 | |
| 110 | Directory Layout Changes |
| 111 | ------------------------ |
| 112 | |
| 113 | The following directory changes exist: |
| 114 | |
| 115 | - Output SDK installer files are now named to include the image name |
| 116 | and tuning architecture through the :term:`SDK_NAME` |
| 117 | variable. |
| 118 | |
| 119 | - Images and related files are now installed into a directory that is |
| 120 | specific to the machine, instead of a parent directory containing |
| 121 | output files for multiple machines. The |
| 122 | :term:`DEPLOY_DIR_IMAGE` variable continues |
| 123 | to point to the directory containing images for the current |
| 124 | :term:`MACHINE` and should be used anywhere there is a |
| 125 | need to refer to this directory. The ``runqemu`` script now uses this |
| 126 | variable to find images and kernel binaries and will use BitBake to |
| 127 | determine the directory. Alternatively, you can set the |
| 128 | ``DEPLOY_DIR_IMAGE`` variable in the external environment. |
| 129 | |
| 130 | - When buildhistory is enabled, its output is now written under the |
| 131 | :term:`Build Directory` rather than |
| 132 | :term:`TMPDIR`. Doing so makes it easier to delete |
| 133 | ``TMPDIR`` and preserve the build history. Additionally, data for |
| 134 | produced SDKs is now split by :term:`IMAGE_NAME`. |
| 135 | |
| 136 | - The ``pkgdata`` directory produced as part of the packaging process |
| 137 | has been collapsed into a single machine-specific directory. This |
| 138 | directory is located under ``sysroots`` and uses a machine-specific |
| 139 | name (i.e. ``tmp/sysroots/machine/pkgdata``). |
| 140 | |
| 141 | .. _migration-1.5-shortened-git-srcrev-values: |
| 142 | |
| 143 | Shortened Git ``SRCREV`` Values |
| 144 | ------------------------------- |
| 145 | |
| 146 | BitBake will now shorten revisions from Git repositories from the normal |
| 147 | 40 characters down to 10 characters within :term:`SRCPV` |
| 148 | for improved usability in path and file names. This change should be |
| 149 | safe within contexts where these revisions are used because the chances |
| 150 | of spatially close collisions is very low. Distant collisions are not a |
| 151 | major issue in the way the values are used. |
| 152 | |
| 153 | .. _migration-1.5-image-features: |
| 154 | |
| 155 | ``IMAGE_FEATURES`` |
| 156 | ------------------ |
| 157 | |
| 158 | The following changes have been made that relate to |
| 159 | :term:`IMAGE_FEATURES`: |
| 160 | |
| 161 | - The value of ``IMAGE_FEATURES`` is now validated to ensure invalid |
| 162 | feature items are not added. Some users mistakenly add package names |
| 163 | to this variable instead of using |
| 164 | :term:`IMAGE_INSTALL` in order to have the |
| 165 | package added to the image, which does not work. This change is |
| 166 | intended to catch those kinds of situations. Valid ``IMAGE_FEATURES`` |
| 167 | are drawn from ``PACKAGE_GROUP`` definitions, |
| 168 | :term:`COMPLEMENTARY_GLOB` and a new |
| 169 | "validitems" varflag on ``IMAGE_FEATURES``. The "validitems" varflag |
| 170 | change allows additional features to be added if they are not |
| 171 | provided using the previous two mechanisms. |
| 172 | |
| 173 | - The previously deprecated "apps-console-core" ``IMAGE_FEATURES`` item |
| 174 | is no longer supported. Add "splash" to ``IMAGE_FEATURES`` if you |
| 175 | wish to have the splash screen enabled, since this is all that |
| 176 | apps-console-core was doing. |
| 177 | |
| 178 | .. _migration-1.5-run: |
| 179 | |
| 180 | ``/run`` |
| 181 | -------- |
| 182 | |
| 183 | The ``/run`` directory from the Filesystem Hierarchy Standard 3.0 has |
| 184 | been introduced. You can find some of the implications for this change |
| 185 | `here <http://cgit.openembedded.org/openembedded-core/commit/?id=0e326280a15b0f2c4ef2ef4ec441f63f55b75873>`__. |
| 186 | The change also means that recipes that install files to ``/var/run`` |
| 187 | must be changed. You can find a guide on how to make these changes |
Andrew Geissler | c3d88e4 | 2020-10-02 09:45:00 -0500 | [diff] [blame] | 188 | `here <https://www.mail-archive.com/openembedded-devel@lists.openembedded.org/msg31649.html>`__. |
Andrew Geissler | c9f7865 | 2020-09-18 14:11:35 -0500 | [diff] [blame] | 189 | |
| 190 | .. _migration-1.5-removal-of-package-manager-database-within-image-recipes: |
| 191 | |
| 192 | Removal of Package Manager Database Within Image Recipes |
| 193 | -------------------------------------------------------- |
| 194 | |
| 195 | The image ``core-image-minimal`` no longer adds |
| 196 | ``remove_packaging_data_files`` to |
| 197 | :term:`ROOTFS_POSTPROCESS_COMMAND`. |
| 198 | This addition is now handled automatically when "package-management" is |
| 199 | not in :term:`IMAGE_FEATURES`. If you have custom |
| 200 | image recipes that make this addition, you should remove the lines, as |
| 201 | they are not needed and might interfere with correct operation of |
| 202 | postinstall scripts. |
| 203 | |
| 204 | .. _migration-1.5-images-now-rebuild-only-on-changes-instead-of-every-time: |
| 205 | |
| 206 | Images Now Rebuild Only on Changes Instead of Every Time |
| 207 | -------------------------------------------------------- |
| 208 | |
| 209 | The :ref:`ref-tasks-rootfs` and other related image |
| 210 | construction tasks are no longer marked as "nostamp". Consequently, they |
| 211 | will only be re-executed when their inputs have changed. Previous |
| 212 | versions of the OpenEmbedded build system always rebuilt the image when |
| 213 | requested rather when necessary. |
| 214 | |
| 215 | .. _migration-1.5-task-recipes: |
| 216 | |
| 217 | Task Recipes |
| 218 | ------------ |
| 219 | |
| 220 | The previously deprecated ``task.bbclass`` has now been dropped. For |
| 221 | recipes that previously inherited from this class, you should rename |
| 222 | them from ``task-*`` to ``packagegroup-*`` and inherit packagegroup |
| 223 | instead. |
| 224 | |
| 225 | For more information, see the |
| 226 | ":ref:`packagegroup.bbclass <ref-classes-packagegroup>`" section. |
| 227 | |
| 228 | .. _migration-1.5-busybox: |
| 229 | |
| 230 | BusyBox |
| 231 | ------- |
| 232 | |
| 233 | By default, we now split BusyBox into two binaries: one that is suid |
| 234 | root for those components that need it, and another for the rest of the |
| 235 | components. Splitting BusyBox allows for optimization that eliminates |
| 236 | the ``tinylogin`` recipe as recommended by upstream. You can disable |
| 237 | this split by setting |
| 238 | :term:`BUSYBOX_SPLIT_SUID` to "0". |
| 239 | |
| 240 | .. _migration-1.5-automated-image-testing: |
| 241 | |
| 242 | Automated Image Testing |
| 243 | ----------------------- |
| 244 | |
| 245 | A new automated image testing framework has been added through the |
| 246 | :ref:`testimage.bbclass <ref-classes-testimage*>` class. This |
| 247 | framework replaces the older ``imagetest-qemu`` framework. |
| 248 | |
| 249 | You can learn more about performing automated image tests in the |
| 250 | ":ref:`dev-manual/dev-manual-common-tasks:performing automated runtime testing`" |
| 251 | section in the Yocto Project Development Tasks Manual. |
| 252 | |
| 253 | .. _migration-1.5-build-history: |
| 254 | |
| 255 | Build History |
| 256 | ------------- |
| 257 | |
| 258 | Following are changes to Build History: |
| 259 | |
| 260 | - Installed package sizes: ``installed-package-sizes.txt`` for an image |
| 261 | now records the size of the files installed by each package instead |
| 262 | of the size of each compressed package archive file. |
| 263 | |
| 264 | - The dependency graphs (``depends*.dot``) now use the actual package |
| 265 | names instead of replacing dashes, dots and plus signs with |
| 266 | underscores. |
| 267 | |
| 268 | - The ``buildhistory-diff`` and ``buildhistory-collect-srcrevs`` |
| 269 | utilities have improved command-line handling. Use the ``--help`` |
| 270 | option for each utility for more information on the new syntax. |
| 271 | |
| 272 | For more information on Build History, see the |
| 273 | ":ref:`dev-manual/dev-manual-common-tasks:maintaining build output quality`" |
| 274 | section in the Yocto Project Development Tasks Manual. |
| 275 | |
| 276 | .. _migration-1.5-udev: |
| 277 | |
| 278 | ``udev`` |
| 279 | -------- |
| 280 | |
| 281 | Following are changes to ``udev``: |
| 282 | |
| 283 | - ``udev`` no longer brings in ``udev-extraconf`` automatically through |
| 284 | :term:`RRECOMMENDS`, since this was originally |
| 285 | intended to be optional. If you need the extra rules, then add |
| 286 | ``udev-extraconf`` to your image. |
| 287 | |
| 288 | - ``udev`` no longer brings in ``pciutils-ids`` or ``usbutils-ids`` |
| 289 | through ``RRECOMMENDS``. These are not needed by ``udev`` itself and |
| 290 | removing them saves around 350KB. |
| 291 | |
| 292 | .. _migration-1.5-removed-renamed-recipes: |
| 293 | |
| 294 | Removed and Renamed Recipes |
| 295 | --------------------------- |
| 296 | |
| 297 | - The ``linux-yocto`` 3.2 kernel has been removed. |
| 298 | |
| 299 | - ``libtool-nativesdk`` has been renamed to ``nativesdk-libtool``. |
| 300 | |
| 301 | - ``tinylogin`` has been removed. It has been replaced by a suid |
| 302 | portion of Busybox. See the "`BusyBox <#migration-1.5-busybox>`__" |
| 303 | section for more information. |
| 304 | |
| 305 | - ``external-python-tarball`` has been renamed to |
| 306 | ``buildtools-tarball``. |
| 307 | |
| 308 | - ``web-webkit`` has been removed. It has been functionally replaced by |
| 309 | ``midori``. |
| 310 | |
| 311 | - ``imake`` has been removed. It is no longer needed by any other |
| 312 | recipe. |
| 313 | |
| 314 | - ``transfig-native`` has been removed. It is no longer needed by any |
| 315 | other recipe. |
| 316 | |
| 317 | - ``anjuta-remote-run`` has been removed. Anjuta IDE integration has |
| 318 | not been officially supported for several releases. |
| 319 | |
| 320 | .. _migration-1.5-other-changes: |
| 321 | |
| 322 | Other Changes |
| 323 | ------------- |
| 324 | |
| 325 | Following is a list of short entries describing other changes: |
| 326 | |
| 327 | - ``run-postinsts``: Make this generic. |
| 328 | |
| 329 | - ``base-files``: Remove the unnecessary ``media/``\ xxx directories. |
| 330 | |
| 331 | - ``alsa-state``: Provide an empty ``asound.conf`` by default. |
| 332 | |
| 333 | - ``classes/image``: Ensure |
| 334 | :term:`BAD_RECOMMENDATIONS` supports |
| 335 | pre-renamed package names. |
| 336 | |
| 337 | - ``classes/rootfs_rpm``: Implement ``BAD_RECOMMENDATIONS`` for RPM. |
| 338 | |
| 339 | - ``systemd``: Remove ``systemd_unitdir`` if ``systemd`` is not in |
| 340 | :term:`DISTRO_FEATURES`. |
| 341 | |
| 342 | - ``systemd``: Remove ``init.d`` dir if ``systemd`` unit file is |
| 343 | present and ``sysvinit`` is not a distro feature. |
| 344 | |
| 345 | - ``libpam``: Deny all services for the ``OTHER`` entries. |
| 346 | |
| 347 | - ``image.bbclass``: Move ``runtime_mapping_rename`` to avoid conflict |
| 348 | with ``multilib``. See |
| 349 | `YOCTO #4993 <https://bugzilla.yoctoproject.org/show_bug.cgi?id=4993>`_ |
| 350 | in Bugzilla for more information. |
| 351 | |
| 352 | - ``linux-dtb``: Use kernel build system to generate the ``dtb`` files. |
| 353 | |
| 354 | - ``kern-tools``: Switch from guilt to new ``kgit-s2q`` tool. |
| 355 | |