4.12 Moving to the Yocto Project 2.4 Release
This section provides migration information for moving to the Yocto Project 2.4 Release from the prior release.
4.12.1 Memory Resident Mode
A persistent mode is now available in BitBake’s default operation,
replacing its previous “memory resident mode” (i.e.
oe-init-build-env-memres). Now you only need to set
BB_SERVER_TIMEOUT to a timeout (in
seconds) and BitBake’s server stays resident for that amount of time
between invocations. The oe-init-build-env-memres script has been
removed since a separate environment setup script is no longer needed.
4.12.2 Packaging Changes
This section provides information about packaging changes that have occurred:
- python3Changes:- The main “python3” package now brings in all of the standard Python 3 distribution rather than a subset. This behavior matches what is expected based on traditional Linux distributions. If you wish to install a subset of Python 3, specify - python-coreplus one or more of the individual packages that are still produced.
- python3: The- bz2.py,- lzma.py, and- _compression.pyscripts have been moved from the- python3-miscpackage to the- python3-compressionpackage.
 
- binutils: The- libbfdlibrary is now packaged in a separate “libbfd” package. This packaging saves space when certain tools (e.g.- perf) are installed. In such cases, the tools only need- libbfdrather than all the packages in- binutils.
- util-linuxChanges:- The - suprogram is now packaged in a separate “util-linux-su” package, which is only built when “pam” is listed in the DISTRO_FEATURES variable.- util-linuxshould not be installed unless it is needed because- suis normally provided through the shadow file format. The main- util-linuxpackage has runtime dependencies (i.e. RDEPENDS) on the- util-linux-supackage when “pam” is in- DISTRO_FEATURES.
- The - switch_rootprogram is now packaged in a separate “util-linux-switch-root” package for small initramfs images that do not need the whole- util-linuxpackage or the busybox binary, which are both much larger than- switch_root. The main- util-linuxpackage has a recommended runtime dependency (i.e. RRECOMMENDS) on the- util-linux-switch-rootpackage.
- The - ioniceprogram is now packaged in a separate “util-linux-ionice” package. The main- util-linuxpackage has a recommended runtime dependency (i.e.- RRECOMMENDS) on the- util-linux-ionicepackage.
 
- initscripts: The- sushellprogram is now packaged in a separate “initscripts-sushell” package. This packaging change allows systems to pull- sushellin when- selinuxis enabled. The change also eliminates needing to pull in the entire- initscriptspackage. The main- initscriptspackage has a runtime dependency (i.e.- RDEPENDS) on the- sushellpackage when “selinux” is in- DISTRO_FEATURES.
- glib-2.0: The- glib-2.0package now has a recommended runtime dependency (i.e.- RRECOMMENDS) on the- shared-mime-infopackage, since large portions of GIO are not useful without the MIME database. You can remove the dependency by using the BAD_RECOMMENDATIONS variable if- shared-mime-infois too large and is not required.
- Go Standard Runtime: The Go standard runtime has been split out from the main - gorecipe into a separate- go-runtimerecipe.
4.12.3 Removed Recipes
The following recipes have been removed:
- acpitests: This recipe is not maintained.
- autogen-native: No longer required by Grub, oe-core, or meta-oe.
- bdwgc: Nothing in OpenEmbedded-Core requires this recipe. It has moved to meta-oe.
- byacc: This recipe was only needed by rpm 5.x and has moved to meta-oe.
- gcc (5.4): The 5.4 series dropped the recipe in favor of 6.3 / 7.2.
- gnome-common: Deprecated upstream and no longer needed.
- go-bootstrap-native: Go 1.9 does its own bootstrapping so this recipe has been removed.
- guile: This recipe was only needed by- autogen-nativeand- remake. The recipe is no longer needed by either of these programs.
- libclass-isa-perl: This recipe was previously needed for LSB 4, no longer needed.
- libdumpvalue-perl: This recipe was previously needed for LSB 4, no longer needed.
- libenv-perl: This recipe was previously needed for LSB 4, no longer needed.
- libfile-checktree-perl: This recipe was previously needed for LSB 4, no longer needed.
- libi18n-collate-perl: This recipe was previously needed for LSB 4, no longer needed.
- libiconv: This recipe was only needed for- uclibc, which was removed in the previous release.- glibcand- muslhave their own implementations.- meta-mingwstill needs- libiconv, so it has been moved to- meta-mingw.
- libpng12: This recipe was previously needed for LSB. The current- libpngis 1.6.x.
- libpod-plainer-perl: This recipe was previously needed for LSB 4, no longer needed.
- linux-yocto (4.1): This recipe was removed in favor of 4.4, 4.9, 4.10 and 4.12.
- mailx: This recipe was previously only needed for LSB compatibility, and upstream is defunct.
- mesa (git version only): The git version recipe was stale with respect to the release version.
- ofono (git version only): The git version recipe was stale with respect to the release version.
- portmap: This recipe is obsolete and is superseded by- rpcbind.
- python3-pygpgme: This recipe is old and unmaintained. It was previously required by- dnf, which has switched to official- gpgmePython bindings.
- python-async: This recipe has been removed in favor of the Python 3 version.
- python-gitdb: This recipe has been removed in favor of the Python 3 version.
- python-git: This recipe was removed in favor of the Python 3 version.
- python-mako: This recipe was removed in favor of the Python 3 version.
- python-pexpect: This recipe was removed in favor of the Python 3 version.
- python-ptyprocess: This recipe was removed in favor of Python the 3 version.
- python-pycurl: Nothing is using this recipe in OpenEmbedded-Core (i.e.- meta-oe).
- python-six: This recipe was removed in favor of the Python 3 version.
- python-smmap: This recipe was removed in favor of the Python 3 version.
- remake: Using- remakeas the provider of- virtual/makeis broken. Consequently, this recipe is not needed in OpenEmbedded-Core.
4.12.4 Kernel Device Tree Move
Kernel Device Tree support is now easier to enable in a kernel recipe.
The Device Tree code has moved to a
kernel-devicetree class.
Functionality is automatically enabled for any recipe that inherits the
kernel class and sets the
KERNEL_DEVICETREE variable. The
previous mechanism for doing this,
meta/recipes-kernel/linux/linux-dtb.inc, is still available to avoid
breakage, but triggers a deprecation warning. Future releases of the
Yocto Project will remove meta/recipes-kernel/linux/linux-dtb.inc.
It is advisable to remove any require statements that request
meta/recipes-kernel/linux/linux-dtb.inc from any custom kernel
recipes you might have. This will avoid breakage in post 2.4 releases.
4.12.5 Package QA Changes
The following package QA changes took place:
- The “unsafe-references-in-scripts” QA check has been removed. 
- If you refer to - ${COREBASE}/LICENSEwithin LIC_FILES_CHKSUM you receive a warning because this file is a description of the license for OE-Core. Use- ${COMMON_LICENSE_DIR}/MITif your recipe is MIT-licensed and you cannot use the preferred method of referring to a file within the source tree.
4.12.6 README File Changes
The following are changes to README files:
- The main Poky - READMEfile has been moved to the- meta-pokylayer and has been renamed- README.poky. A symlink has been created so that references to the old location work.
- The - README.hardwarefile has been moved to- meta-yocto-bsp. A symlink has been created so that references to the old location work.
- A - README.qemufile has been created with coverage of the- qemu*machines.
4.12.7 Miscellaneous Changes
The following are additional changes:
- The - ROOTFS_PKGMANAGE_BOOTSTRAPvariable and any references to it have been removed. You should remove this variable from any custom recipes.
- The - meta-yoctodirectory has been removed.- Note - In the Yocto Project 2.1 release meta-yocto was renamed to meta-poky and the meta-yocto subdirectory remained to avoid breaking existing configurations. 
- The - maintainers.incfile, which tracks maintainers by listing a primary person responsible for each recipe in OE-Core, has been moved from- meta-pokyto OE-Core (i.e. from- meta-poky/conf/distro/includeto- meta/conf/distro/include).
- The buildhistory class now makes a single commit per build rather than one commit per subdirectory in the repository. This behavior assumes the commits are enabled with BUILDHISTORY_COMMIT = “1”, which is typical. Previously, the - buildhistoryclass made one commit per subdirectory in the repository in order to make it easier to see the changes for a particular subdirectory. To view a particular change, specify that subdirectory as the last parameter on the- git showor- git diffcommands.
- The - x86-base.incfile, which is included by all x86-based machine configurations, now sets IMAGE_FSTYPES using- ?=to “live” rather than appending with- +=. This change makes the default easier to override.
- BitBake fires multiple “BuildStarted” events when multiconfig is enabled (one per configuration). For more information, see the “Events” section in the BitBake User Manual. 
- By default, the - security_flags.incfile sets a GCCPIE variable with an option to enable Position Independent Executables (PIE) within- gcc. Enabling PIE in the GNU C Compiler (GCC), makes Return Oriented Programming (ROP) attacks much more difficult to execute.
- OE-Core now provides a - bitbake-layersplugin that implements a “create-layer” subcommand. The implementation of this subcommand has resulted in the- yocto-layerscript being deprecated and will likely be removed in the next Yocto Project release.
- The - vmdk,- vdi, and- qcow2image file types are now used in conjunction with the “wic” image type through- CONVERSION_CMD. Consequently, the equivalent image types are now- wic.vmdk,- wic.vdi, and- wic.qcow2, respectively.
- do_image_<type>[depends]has replaced- IMAGE_DEPENDS_<type>. If you have your own classes that implement custom image types, then you need to update them.
- OpenSSL 1.1 has been introduced. However, the default is still 1.0.x through the PREFERRED_VERSION variable. This preference is set is due to the remaining compatibility issues with other software. The PROVIDES variable in the openssl 1.0 recipe now includes “openssl10” as a marker that can be used in DEPENDS within recipes that build software that still depend on OpenSSL 1.0. 
- To ensure consistent behavior, BitBake’s “-r” and “-R” options (i.e. prefile and postfile), which are used to read or post-read additional configuration files from the command line, now only affect the current BitBake command. Before these BitBake changes, these options would “stick” for future executions.