1*4882a593SmuzhiyunRelease 2.5 (sumo) 2*4882a593Smuzhiyun================== 3*4882a593Smuzhiyun 4*4882a593SmuzhiyunThis section provides migration information for moving to the Yocto 5*4882a593SmuzhiyunProject 2.5 Release (codename "sumo") from the prior release. 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun.. _migration-2.5-packaging-changes: 8*4882a593Smuzhiyun 9*4882a593SmuzhiyunPackaging Changes 10*4882a593Smuzhiyun----------------- 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunThis section provides information about packaging changes that have 13*4882a593Smuzhiyunoccurred: 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun- ``bind-libs``: The libraries packaged by the bind recipe are in a 16*4882a593Smuzhiyun separate ``bind-libs`` package. 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun- ``libfm-gtk``: The ``libfm`` GTK+ bindings are split into a 19*4882a593Smuzhiyun separate ``libfm-gtk`` package. 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun- ``flex-libfl``: The flex recipe splits out libfl into a separate 22*4882a593Smuzhiyun ``flex-libfl`` package to avoid too many dependencies being pulled in 23*4882a593Smuzhiyun where only the library is needed. 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun- ``grub-efi``: The ``grub-efi`` configuration is split into a 26*4882a593Smuzhiyun separate ``grub-bootconf`` recipe. However, the dependency 27*4882a593Smuzhiyun relationship from ``grub-efi`` is through a virtual/grub-bootconf 28*4882a593Smuzhiyun provider making it possible to have your own recipe provide the 29*4882a593Smuzhiyun dependency. Alternatively, you can use a BitBake append file to bring 30*4882a593Smuzhiyun the configuration back into the ``grub-efi`` recipe. 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun- *armv7a Legacy Package Feed Support:* Legacy support is removed for 33*4882a593Smuzhiyun transitioning from ``armv7a`` to ``armv7a-vfp-neon`` in package 34*4882a593Smuzhiyun feeds, which was previously enabled by setting 35*4882a593Smuzhiyun ``PKGARCHCOMPAT_ARMV7A``. This transition occurred in 2011 and active 36*4882a593Smuzhiyun package feeds should by now be updated to the new naming. 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun.. _migration-2.5-removed-recipes: 39*4882a593Smuzhiyun 40*4882a593SmuzhiyunRemoved Recipes 41*4882a593Smuzhiyun--------------- 42*4882a593Smuzhiyun 43*4882a593SmuzhiyunThe following recipes have been removed: 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun- ``gcc``: The version 6.4 recipes are replaced by 7.x. 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun- ``gst-player``: Renamed to ``gst-examples`` as per upstream. 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun- ``hostap-utils``: This software package is obsolete. 50*4882a593Smuzhiyun 51*4882a593Smuzhiyun- ``latencytop``: This recipe is no longer maintained upstream. The 52*4882a593Smuzhiyun last release was in 2009. 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun- ``libpfm4``: The only file that requires this recipe is 55*4882a593Smuzhiyun ``oprofile``, which has been removed. 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun- ``linux-yocto``: The version 4.4, 4.9, and 4.10 recipes have been 58*4882a593Smuzhiyun removed. Versions 4.12, 4.14, and 4.15 remain. 59*4882a593Smuzhiyun 60*4882a593Smuzhiyun- ``man``: This recipe has been replaced by modern ``man-db`` 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun- ``mkelfimage``: This tool has been removed in the upstream coreboot 63*4882a593Smuzhiyun project, and is no longer needed with the removal of the ELF image 64*4882a593Smuzhiyun type. 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun- ``nativesdk-postinst-intercept``: This recipe is not maintained. 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun- ``neon``: This software package is no longer maintained upstream 69*4882a593Smuzhiyun and is no longer needed by anything in OpenEmbedded-Core. 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun- ``oprofile``: The functionality of this recipe is replaced by 72*4882a593Smuzhiyun ``perf`` and keeping compatibility on an ongoing basis with ``musl`` 73*4882a593Smuzhiyun is difficult. 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun- ``pax``: This software package is obsolete. 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun- ``stat``: This software package is not maintained upstream. 78*4882a593Smuzhiyun ``coreutils`` provides a modern stat binary. 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun- ``zisofs-tools-native``: This recipe is no longer needed because 81*4882a593Smuzhiyun the compressed ISO image feature has been removed. 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun.. _migration-2.5-scripts-and-tools-changes: 84*4882a593Smuzhiyun 85*4882a593SmuzhiyunScripts and Tools Changes 86*4882a593Smuzhiyun------------------------- 87*4882a593Smuzhiyun 88*4882a593SmuzhiyunThe following are changes to scripts and tools: 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun- ``yocto-bsp``, ``yocto-kernel``, and ``yocto-layer``: The 91*4882a593Smuzhiyun ``yocto-bsp``, ``yocto-kernel``, and ``yocto-layer`` scripts 92*4882a593Smuzhiyun previously shipped with poky but not in OpenEmbedded-Core have been 93*4882a593Smuzhiyun removed. These scripts are not maintained and are outdated. In many 94*4882a593Smuzhiyun cases, they are also limited in scope. The 95*4882a593Smuzhiyun ``bitbake-layers create-layer`` command is a direct replacement for 96*4882a593Smuzhiyun ``yocto-layer``. See the documentation to create a BSP or kernel 97*4882a593Smuzhiyun recipe in the ":ref:`bsp-guide/bsp:bsp kernel recipe example`" section. 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun- ``devtool finish``: ``devtool finish`` now exits with an error if 100*4882a593Smuzhiyun there are uncommitted changes or a rebase/am in progress in the 101*4882a593Smuzhiyun recipe's source repository. If this error occurs, there might be 102*4882a593Smuzhiyun uncommitted changes that will not be included in updates to the 103*4882a593Smuzhiyun patches applied by the recipe. A -f/--force option is provided for 104*4882a593Smuzhiyun situations that the uncommitted changes are inconsequential and you 105*4882a593Smuzhiyun want to proceed regardless. 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun- ``scripts/oe-setup-rpmrepo`` script: The functionality of 108*4882a593Smuzhiyun ``scripts/oe-setup-rpmrepo`` is replaced by 109*4882a593Smuzhiyun ``bitbake package-index``. 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun- ``scripts/test-dependencies.sh`` script: The script is largely made 112*4882a593Smuzhiyun obsolete by the recipe-specific sysroots functionality introduced in 113*4882a593Smuzhiyun the previous release. 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun.. _migration-2.5-bitbake-changes: 116*4882a593Smuzhiyun 117*4882a593SmuzhiyunBitBake Changes 118*4882a593Smuzhiyun--------------- 119*4882a593Smuzhiyun 120*4882a593SmuzhiyunThe following are BitBake changes: 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun- The ``--runall`` option has changed. There are two different 123*4882a593Smuzhiyun behaviors people might want: 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun - *Behavior A:* For a given target (or set of targets) look through 126*4882a593Smuzhiyun the task graph and run task X only if it is present and will be 127*4882a593Smuzhiyun built. 128*4882a593Smuzhiyun 129*4882a593Smuzhiyun - *Behavior B:* For a given target (or set of targets) look through 130*4882a593Smuzhiyun the task graph and run task X if any recipe in the taskgraph has 131*4882a593Smuzhiyun such a target, even if it is not in the original task graph. 132*4882a593Smuzhiyun 133*4882a593Smuzhiyun The ``--runall`` option now performs "Behavior B". Previously 134*4882a593Smuzhiyun ``--runall`` behaved like "Behavior A". A ``--runonly`` option has 135*4882a593Smuzhiyun been added to retain the ability to perform "Behavior A". 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun- Several explicit "run this task for all recipes in the dependency 138*4882a593Smuzhiyun tree" tasks have been removed (e.g. ``fetchall``, ``checkuriall``, 139*4882a593Smuzhiyun and the ``*all`` tasks provided by the ``distrodata`` and 140*4882a593Smuzhiyun :ref:`archiver <ref-classes-archiver>` classes). There is a BitBake option to complete this for 141*4882a593Smuzhiyun any arbitrary task. For example:: 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun bitbake <target> -c fetchall 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun should now be replaced with:: 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun bitbake <target> --runall=fetch 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun.. _migration-2.5-python-and-python3-changes: 150*4882a593Smuzhiyun 151*4882a593SmuzhiyunPython and Python 3 Changes 152*4882a593Smuzhiyun--------------------------- 153*4882a593Smuzhiyun 154*4882a593SmuzhiyunThe following are auto-packaging changes to Python and Python 3: 155*4882a593Smuzhiyun 156*4882a593SmuzhiyunThe script-managed ``python-*-manifest.inc`` files that were previously 157*4882a593Smuzhiyunused to generate Python and Python 3 packages have been replaced with a 158*4882a593SmuzhiyunJSON-based file that is easier to read and maintain. A new task is 159*4882a593Smuzhiyunavailable for maintainers of the Python recipes to update the JSON file 160*4882a593Smuzhiyunwhen upgrading to new Python versions. You can now edit the file 161*4882a593Smuzhiyundirectly instead of having to edit a script and run it to update the 162*4882a593Smuzhiyunfile. 163*4882a593Smuzhiyun 164*4882a593SmuzhiyunOne particular change to note is that the Python recipes no longer have 165*4882a593Smuzhiyunbuild-time provides for their packages. This assumes ``python-foo`` is 166*4882a593Smuzhiyunone of the packages provided by the Python recipe. You can no longer run 167*4882a593Smuzhiyun``bitbake python-foo`` or have a 168*4882a593Smuzhiyun:term:`DEPENDS` on ``python-foo``, 169*4882a593Smuzhiyunbut doing either of the following causes the package to work as 170*4882a593Smuzhiyunexpected:: 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun IMAGE_INSTALL_append = " python-foo" 173*4882a593Smuzhiyun 174*4882a593Smuzhiyunor :: 175*4882a593Smuzhiyun 176*4882a593Smuzhiyun RDEPENDS_${PN} = "python-foo" 177*4882a593Smuzhiyun 178*4882a593SmuzhiyunThe earlier build-time provides behavior was a quirk of the 179*4882a593Smuzhiyunway the Python manifest file was created. For more information on this 180*4882a593Smuzhiyunchange please see :yocto_git:`this commit 181*4882a593Smuzhiyun</poky/commit/?id=8d94b9db221d1def42f091b991903faa2d1651ce>`. 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun.. _migration-2.5-miscellaneous-changes: 184*4882a593Smuzhiyun 185*4882a593SmuzhiyunMiscellaneous Changes 186*4882a593Smuzhiyun--------------------- 187*4882a593Smuzhiyun 188*4882a593SmuzhiyunThe following are additional changes: 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun- The :ref:`kernel <ref-classes-kernel>` class supports building packages for multiple kernels. 191*4882a593Smuzhiyun If your kernel recipe or ``.bbappend`` file mentions packaging at 192*4882a593Smuzhiyun all, you should replace references to the kernel in package names 193*4882a593Smuzhiyun with ``${KERNEL_PACKAGE_NAME}``. For example, if you disable 194*4882a593Smuzhiyun automatic installation of the kernel image using 195*4882a593Smuzhiyun ``RDEPENDS_kernel-base = ""`` you can avoid warnings using 196*4882a593Smuzhiyun ``RDEPENDS_${KERNEL_PACKAGE_NAME}-base = ""`` instead. 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun- The :ref:`buildhistory <ref-classes-buildhistory>` class commits changes to the repository by 199*4882a593Smuzhiyun default so you no longer need to set ``BUILDHISTORY_COMMIT = "1"``. 200*4882a593Smuzhiyun If you want to disable commits you need to set 201*4882a593Smuzhiyun ``BUILDHISTORY_COMMIT = "0"`` in your configuration. 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun- The ``beaglebone`` reference machine has been renamed to 204*4882a593Smuzhiyun ``beaglebone-yocto``. The ``beaglebone-yocto`` BSP is a reference 205*4882a593Smuzhiyun implementation using only mainline components available in 206*4882a593Smuzhiyun OpenEmbedded-Core and ``meta-yocto-bsp``, whereas Texas Instruments 207*4882a593Smuzhiyun maintains a full-featured BSP in the ``meta-ti`` layer. This rename 208*4882a593Smuzhiyun avoids the previous name clash that existed between the two BSPs. 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun- The :ref:`update-alternatives <ref-classes-update-alternatives>` class no longer works with SysV ``init`` 211*4882a593Smuzhiyun scripts because this usage has been problematic. Also, the 212*4882a593Smuzhiyun ``sysklogd`` recipe no longer uses ``update-alternatives`` because it 213*4882a593Smuzhiyun is incompatible with other implementations. 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun- By default, the :ref:`cmake <ref-classes-cmake>` class uses 216*4882a593Smuzhiyun ``ninja`` instead of ``make`` for building. This improves build 217*4882a593Smuzhiyun performance. If a recipe is broken with ``ninja``, then the recipe 218*4882a593Smuzhiyun can set ``OECMAKE_GENERATOR = "Unix Makefiles"`` to change back to 219*4882a593Smuzhiyun ``make``. 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun- The previously deprecated ``base_*`` functions have been removed in 222*4882a593Smuzhiyun favor of their replacements in ``meta/lib/oe`` and 223*4882a593Smuzhiyun ``bitbake/lib/bb``. These are typically used from recipes and 224*4882a593Smuzhiyun classes. Any references to the old functions must be updated. The 225*4882a593Smuzhiyun following table shows the removed functions and their replacements: 226*4882a593Smuzhiyun 227*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 228*4882a593Smuzhiyun | *Removed* | *Replacement* | 229*4882a593Smuzhiyun +==============================+==========================================================+ 230*4882a593Smuzhiyun | base_path_join() | oe.path.join() | 231*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 232*4882a593Smuzhiyun | base_path_relative() | oe.path.relative() | 233*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 234*4882a593Smuzhiyun | base_path_out() | oe.path.format_display() | 235*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 236*4882a593Smuzhiyun | base_read_file() | oe.utils.read_file() | 237*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 238*4882a593Smuzhiyun | base_ifelse() | oe.utils.ifelse() | 239*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 240*4882a593Smuzhiyun | base_conditional() | oe.utils.conditional() | 241*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 242*4882a593Smuzhiyun | base_less_or_equal() | oe.utils.less_or_equal() | 243*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 244*4882a593Smuzhiyun | base_version_less_or_equal() | oe.utils.version_less_or_equal() | 245*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 246*4882a593Smuzhiyun | base_contains() | bb.utils.contains() | 247*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 248*4882a593Smuzhiyun | base_both_contain() | oe.utils.both_contain() | 249*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 250*4882a593Smuzhiyun | base_prune_suffix() | oe.utils.prune_suffix() | 251*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 252*4882a593Smuzhiyun | oe_filter() | oe.utils.str_filter() | 253*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 254*4882a593Smuzhiyun | oe_filter_out() | oe.utils.str_filter_out() (or use the \_remove operator) | 255*4882a593Smuzhiyun +------------------------------+----------------------------------------------------------+ 256*4882a593Smuzhiyun 257*4882a593Smuzhiyun- Using ``exit 1`` to explicitly defer a postinstall script until first 258*4882a593Smuzhiyun boot is now deprecated since it is not an obvious mechanism and can 259*4882a593Smuzhiyun mask actual errors. If you want to explicitly defer a postinstall to 260*4882a593Smuzhiyun first boot on the target rather than at ``rootfs`` creation time, use 261*4882a593Smuzhiyun ``pkg_postinst_ontarget()`` or call 262*4882a593Smuzhiyun ``postinst_intercept delay_to_first_boot`` from ``pkg_postinst()``. 263*4882a593Smuzhiyun Any failure of a ``pkg_postinst()`` script (including ``exit 1``) 264*4882a593Smuzhiyun will trigger a warning during ``do_rootfs``. 265*4882a593Smuzhiyun 266*4882a593Smuzhiyun For more information, see the 267*4882a593Smuzhiyun ":ref:`dev-manual/common-tasks:post-installation scripts`" 268*4882a593Smuzhiyun section in the Yocto Project Development Tasks Manual. 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun- The ``elf`` image type has been removed. This image type was removed 271*4882a593Smuzhiyun because the ``mkelfimage`` tool that was required to create it is no 272*4882a593Smuzhiyun longer provided by coreboot upstream and required updating every time 273*4882a593Smuzhiyun ``binutils`` updated. 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun- Support for .iso image compression (previously enabled through 276*4882a593Smuzhiyun ``COMPRESSISO = "1"``) has been removed. The userspace tools 277*4882a593Smuzhiyun (``zisofs-tools``) are unmaintained and ``squashfs`` provides better 278*4882a593Smuzhiyun performance and compression. In order to build a live image with 279*4882a593Smuzhiyun squashfs+lz4 compression enabled you should now set 280*4882a593Smuzhiyun ``LIVE_ROOTFS_TYPE = "squashfs-lz4"`` and ensure that ``live`` is in 281*4882a593Smuzhiyun :term:`IMAGE_FSTYPES`. 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun- Recipes with an unconditional dependency on ``libpam`` are only 284*4882a593Smuzhiyun buildable with ``pam`` in :term:`DISTRO_FEATURES`. If the dependency is 285*4882a593Smuzhiyun truly optional then it is recommended that the dependency be 286*4882a593Smuzhiyun conditional upon ``pam`` being in :term:`DISTRO_FEATURES`. 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun- For EFI-based machines, the bootloader (``grub-efi`` by default) is 289*4882a593Smuzhiyun installed into the image at /boot. Wic can be used to split the 290*4882a593Smuzhiyun bootloader into separate boot and root filesystem partitions if necessary. 291*4882a593Smuzhiyun 292*4882a593Smuzhiyun- Patches whose context does not match exactly (i.e. where patch 293*4882a593Smuzhiyun reports "fuzz" when applying) will generate a warning. For an example 294*4882a593Smuzhiyun of this see :yocto_git:`this commit 295*4882a593Smuzhiyun </poky/commit/?id=cc97bc08125b63821ce3f616771830f77c456f57>`. 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun- Layers are expected to set ``LAYERSERIES_COMPAT_layername`` to match 298*4882a593Smuzhiyun the version(s) of OpenEmbedded-Core they are compatible with. This is 299*4882a593Smuzhiyun specified as codenames using spaces to separate multiple values (e.g. 300*4882a593Smuzhiyun "rocko sumo"). If a layer does not set 301*4882a593Smuzhiyun ``LAYERSERIES_COMPAT_layername``, a warning will is shown. If a layer 302*4882a593Smuzhiyun sets a value that does not include the current version ("sumo" for 303*4882a593Smuzhiyun the 2.5 release), then an error will be produced. 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun- The ``TZ`` environment variable is set to "UTC" within the build 306*4882a593Smuzhiyun environment in order to fix reproducibility problems in some recipes. 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun 309