FutureMigrationGuide

From Yocto Project
Jump to navigationJump to search
This page should be used to keep track of items which should be added to the migration guide in the YP Reference Manual. It's a living document for the life of a development cycle and by M4 should represent a significant proportion of items that are worthy of note in the migration guide.

Once the migration guide for a release has been completed the contents of this page should be cleared out.

2.5 Migration Guide items

Recipe removals

The following recipes have been removed:

  • gcc: dropped version 6.4 recipes (replaced by 7.x)
  • gst-player: renamed to gst-examples as per upstream.
  • hostap-utils: obsolete
  • latencytop: no longer maintained upstream (last release was in 2009)
  • libpfm4: was only needed by oprofile which has also been removed
  • linux-yocto: removed 4.4, 4.9 and 4.10 recipes (4.12, 4.14, and 4.15 remain)
  • man: replaced by the more modern man-db
  • mkelfimage: removed in upstream coreboot, and no longer needed with the removal of the elf image type.
  • nativesdk-postinst-intercept: unmaintained
  • neon: unmaintained upstream and not used by anything in OpenEmbedded-Core.
  • oprofile: functionally replaced by perf, and keeping compatibility on an ongoing basis with musl is difficult.
  • pax: obsolete
  • stat: unmaintained upstream (coreutils provides a modern stat binary)
  • zisofs-tools-native: no longer needed now that the compressed ISO image feature has been removed.

Packaging changes

  • Libraries packaged by the bind recipe have been moved out to a separate bind-libs package.
  • libfm's gtk+ bindings have now been split into a separate libfm-gtk package.
  • The flex recipe now splits out libfl into a separate flex-libfl package to avoid too many dependencies being pulled in where only the library is needed.
  • grub-efi's configuration is now split out into a separate grub-bootconf recipe. The dependency relationship from grub-efi is via a virtual/grub-bootconf provider however, so it is possible to have your own recipe providing it (or use a bbappend to bring it back into the grub-efi recipe) if desired.
  • Legacy support for the transition specifically from armv7a -> armv7a-vfp-neon in package feeds (as enabled by setting PKGARCHCOMPAT_ARMV7A) has now been removed. This transition occurred in 2011 and active package feeds should now have long since updated to the new naming.


  • kernel.bbclass now supports multiple kernel packages. If your kernel recipe/bbappend mentions packaging at all, then you are advised to replace "kernel" with "${KERNEL_PACKAGE_NAME}". For example if you disable automatic installation of the kernel image using RDEPENDS_kernel-base = "" then to avoid warnings you will now need to use RDEPENDS_${KERNEL_PACKAGE_NAME}-base = "" instead.


  • The buildhistory class now commits changes to the repository by default, so setting BUILDHISTORY_COMMIT = "1" is no longer necessary. If you wish commits to be disabled, then you will now need to set BUILDHISTORY_COMMIT = "0" in your configuration.
  • The beaglebone reference machine has been renamed to beaglebone-yocto. The beaglebone-yocto BSP is a reference implementation using only mainline components available in OpenEmbedded-Core and meta-yocto-bsp, whereas Texas Instruments maintain a full-featured BSP in the meta-ti layer, and the rename avoids the previous name clash that existed between the two BSPs.
  • The update-alternatives class will now no longer work with SysV init scripts as such usage has been proven to be problematic. Related to this, the sysklogd recipe no longer uses update-alternatives as it is incompatible with other implementations.
  • The cmake class now uses ninja instead of make by default for building in order to improve build performance. If a recipe is broken with ninja then the recipe can set OECMAKE_GENERATOR = "Unix Makefiles" to change back to make.
  • python: Restructure python packaging and replace it with autopackaging
  • python3: Restructure python3 packaging and replace it with autopackaging
  • The previously deprecated base_* functions have now removed, in favour of their replacements in meta/lib/oe and bitbake/lib/bb. These are typically used from recipes and classes and any references to the old functions will now need to be updated. The full list along with each of their replacements:
    • base_path_join() -> oe.path.join()
    • base_path_relative() -> oe.path.relative()
    • base_path_out() -> oe.path.format_display()
    • base_read_file() -> oe.utils.read_file()
    • base_ifelse() -> oe.utils.ifelse()
    • base_conditional() -> oe.utils.conditional()
    • base_less_or_equal() -> oe.utils.less_or_equal()
    • base_version_less_or_equal() -> oe.utils.version_less_or_equal()
    • base_contains() -> bb.utils.contains()
    • base_both_contain() -> oe.utils.both_contain()
    • base_prune_suffix() -> oe.utils.prune_suffix()
    • oe_filter() -> oe.utils.str_filter()
    • oe_filter_out() -> oe.utils.str_filter_out() (or use the _remove operator)
  • Using exit 1 as a means of explicitly deferring a postinstall script until first boot is now deprecated, as it is not an obvious mechanism and can mask actual errors. If you want to explicitly defer a postinstall to first boot on the target rather than possibly at rootfs creation time, use pkg_postinst_ontarget() or alternatively call postinst-intercepts defer_to_first_boot from pkg_postinst(). Any failure of a pkg_postinst() script (including exit 1) will now trigger a warning during do_rootfs.
  • The elf image type has been removed, as the mkelfimage tool that was required to create it is no longer provided by coreboot upstream, and required updating every time binutils got updated.
  • Support for .iso image compression (previously enabled via COMPRESSISO = "1") has been removed, since the userspace tools (zisofs-tools) are unmaintained and squashfs provides better performance and compression. In order to build a live image with squashfs+lz4 compression enabled you would set LIVE_ROOTFS_TYPE = "squashfs-lz4" and ensure that live is in IMAGE_FSTYPES.
  • Recipes having an unconditional dependency on libpam will now only be buildable with pam in DISTRO_FEATURES. If the dependency is truly optional then it is recommended that the dependency be made conditional upon pam being in DISTRO_FEATURES.
  • For EFI-based machines, the bootloader (grub-efi by default) is now installed into the image at /boot. wic can be used to split this into separate boot and rootfs partitions if desired.
  • Patches whose context does not match exactly (i.e. where patch reports "fuzz" when applying) will now generate a warning. See http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=cc97bc08125b63821ce3f616771830f77c456f57
  • Layers are now expected to set LAYERSERIES_COMPAT_layername to match the version(s) of OpenEmbedded-Core they are compatible with (specified as codenames using spaces to separate multiple values, e.g. "rocko sumo"). If a layer does not set this, a warning will be shown. If a layer sets a value that does not include the current version, then an error will be produced.
  • The TZ environment variable is now set to "UTC" within the build environment in order to fix reproducibility problems in some recipes.

Scripts and tools

  • The yocto-bsp, yocto-kernel and yocto-layer scripts that were previously shipped with poky (but not in OpenEmbedded-Core) have now been removed. They were not being maintained and had already become outdated, and in any case were limited in scope. For yocto-layer, bitbake-layers create-layer is a direct replacement. For yocto-bsp and yocto-kernel, see the documentation on creating a BSP or kernel recipe.
  • devtool finish will now exit with an error if there are uncommitted changes or a rebase/am in progress in the source repository for the recipe, as it may indicate that you have forgotten to commit some changes (and thus these would not be reflected in updates to the patches applied by the recipe). A -f/--force option is provided for situations where you know that those uncomitted changes are inconsequential and wish to proceed regardless.
  • The scripts/oe-setup-rpmrepo script has been removed as its functionality can be replaced by bitbake package-index.
  • The scripts/test-dependencies.sh script has been removed as it was largely made obsolete by the recipe-specific sysroots functionality introduced in the previous release.

Bitbake changes

  • The --runall option has changed behaviour slightly. There are in fact two different behaviours people may want:
   a) For a given target (or set of targets) look through the task graph and
   run task X only if its present and would have been built.
   
   b) For a given target (or set of targets) look through the task graph and
   run task X if any recipe in the taskgraph has such a target even if it wasn't
   in the original task graph.
   

The --runall option now performs (b), previously it behaved like (a). A --runonly option has been added to retain the ability to perform (a).

  • Several explicit "run this task for all recipes in the dependency tree" tasks (such as fetchall, checkuriall, and the *all tasks provided by the distrodata and archiver classes) have now been removed as there is a bitbake option to do this for any arbitrary task, for example:
bitbake <target> -c fetchall

should now be replaced with

bitbake <target> --runall=fetch