FutureMigrationGuide
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.4 Migration Guide items
Memory resident mode
Bitbake's previous "memory resident mode" has been replaced by a persistent mode which is available in bitbake's default operation. As such, you only need to set BB_SERVER_TIMEOUT to a timeout (in seconds) and BitBake's server will stay resident for that amount of time between bitbake invocations. The oe-init-build-env-memres script has been removed as a separate environment setup script is no longer needed.
Packaging changes
- python3: the main "python3" package now brings in all of the standard Python 3 distribution rather than just a subset, matching the typical expected behaviour based on traditional Linux distributions. If you wish to install a subset of Python 3, specify python-core plus one or more of the individual packages that are still produced.
- python3: bz2.py, lzma.py and _compression.py have beem moved from the python3-misc package to the python3-compression package.
- binutils: libbfd is now packaged in a separate "libbfd" package in order to save space when some tools (notably perf) are installed, since they only need libbfd rather than all of binutils.
- util-linux: su is now packaged in a separate "util-linux-su" package (only built when "pam" is in DISTRO_FEATURES), since su is normally provided by shadow and thus the util-linux version shouldn't be installed unless it is needed. The main util-linux package RDEPENDS on this package when "pam" is in DISTRO_FEATURES.
- util-linux: switch_root is now packaged in a separate "util-linux-switch-root" package for small initramfs images which don't need the whole util-linux package (nor the busybox binary which is much larger than switch_root). The main util-linux package RRECOMMENDS this package.
- util-linux: ionice is now packaged in a separate "util-linux-ionice" package for convenience. The main util-linux package RRECOMMENDS this package.
- initscripts: sushell is now package in a separate "initscripts-sushell" package to allow systemd to pull it in when selinux is enabled without needing to pull in the entire initscripts package. The main initscripts package RDEPENDS on this package when "selinux" is in DISTRO_FEATURES.
- glib-2.0 now RRECOMMENDS shared-mime-info, as large portions of GIO are not that useful without the MIME database. This can be removed using BAD_RECOMMENDATIONS if shared-mime-info is too large and isn't required.
- The Go standard runtime has been split out from the main go recipe into a separate "go-runtime" recipe.
Removed recipes
The following recipes have been removed in the 2.4 release:
- acpitests: recipe not being maintained
- autogen-native: with grub no longer requiring it, there's nothing else in oe-core or meta-oe that does.
- bdwgc: moved to meta-oe as nothing in OpenEmbedded-Core needs it in any longer.
- byacc: was only needed by rpm 5.x and has been moved to meta-oe
- gcc (5.4): drop 5.4 series in favour of 6.3 / 7.2
- gnome-common: deprecated upstream and no longer needed
- go-bootstrap-native: remove recipe as go 1.9 can do its own bootstrapping
- guile: was only needed by autogen-native and remake, so no longer needed
- libclass-isa-perl: was previously needed for LSB 4, no longer needed
- libdumpvalue-perl: was previously needed for LSB 4, no longer needed
- libenv-perl: was previously needed for LSB 4, no longer needed
- libfile-checktree-perl: was previously needed for LSB 4, no longer needed
- libi18n-collate-perl: was previously needed for LSB 4, no longer needed
- libiconv: this was only needed for uclibc which was removed in the previous release - glibc and musl have their own implementations. meta-mingw still needs it so it has been moved there.
- libpng12: only previously needed for LSB; current libpng is 1.6.x.
- libpod-plainer-perl: was previously needed for LSB 4, no longer needed
- linux-yocto (4.1): removed in favour of 4.4, 4.9, 4.10 and 4.12
- mailx: only previously needed for LSB compatibility, with upstream being defunct now for a long time.
- mesa (git version only): has gone stale with respect to the release version
- ofono (git version only): has gone stale with respect to the release version
- portmap: obsolete - superseded by rpcbind.
- python3-pygpgme: old and unmaintained; was previously required only by dnf but that has now switched to official gpgme python bindings.
- python-async: removed in favour of python 3 version
- python-gitdb: removed in favour of python 3 version
- python-git: removed in favour of python 3 version
- python-mako: removed in favour of python 3 version
- python-pexpect: removed in favour of python 3 version
- python-ptyprocess: removed in favour of python 3 version
- python-pycurl: nothing is using this in OpenEmbedded-Core (or meta-oe)
- python-six: removed in favour of python 3 version
- python-smmap: removed in favour of python 3 version
- remake: using remake as the provider of virtual/make has been broken for some time. No longer needed in OpenEmbedded-Core.
Kernel Device Tree move
Kernel Device Tree support is now easier to enable in a kernel recipe. The Device Tree code has been moved to a kernel-devicetree class, and any recipe inheriting the kernel class that also sets KERNEL_DEVICETREE variable will get the functionality automatically enabled. The previous mechanism for doing this, meta/recipes-kernel/linux/linux-dtb.inc, is still present in order to avoid breakage, but triggers a deprecation warning and will be removed in a future release, so you are advised to remove the "require ...linux-dtb.inc" line from any custom kernel recipes you may have in advance as it is no longer needed as of the Yocto Project 2.4 release.
Package QA changes =
- The "unsafe-references-in-scripts" QA check has been removed, since that check was to ensure that / and /usr could be on different filesystems and the latter is no longer actively supported.
- Referring to ${COREBASE}/LICENSE within LIC_FILES_CHKSUM will now trigger a warning, since this file is just a description of the license for OE-Core. If your recipe is MIT licensed and you cannot refer to a file within the source tree (which is preferred), then use ${COMMON_LICENSE_DIR}/MIT instead.
Other changes (yet to be categorised / completed)
- The ROOTFS_PKGMANAGE_BOOTSTRAP variable is gone, and any references to it (potentially in custom image recipes) will need to be removed.
- The meta-yocto directory has been removed - since the 2.1 release when meta-yocto was renamed to meta-poky, the meta-yocto subdirectory remained to avoid breaking existing configurations.
- maintainers.inc, the file which tracks maintainers with primary responsibility for each recipe in OE-Core has been moved from meta-poky to OE-Core, i.e. from meta-poky/conf/distro/include to meta/conf/distro/include.
- The buildhistory class now makes a single commit per build rather than one per subdirectory in the repository (assuming commits are enabled with BUILDHISTORY_COMMIT = "1" as is typical). The earlier behaviour was intended to make it easier to see just the changes for a particular subdirectory, but git can filter that itself when viewing - just specify that subdirectory as the last parameter on the git show / git diff command line and that's all you will see.
- x86-base.inc (included by all x86-based machine configurations) now sets IMAGE_FSTYPES using ?= to "live" rather than appending with +=, making the default easier to override.
- bitbake will now fire multiple BuildStarted events when multiconfig is enabled (one per configuration).
- security_flags.inc now sets a GCCPIE variable with an appropriate option to enable PIE within gcc by default. PIE stands for "Position Independent Executables." Enabling PIE in the GNU C Compiler (GCC), makes Return Oriented Programming (ROP) attacks much more difficult to execute reliably.
- Since OE-Core now provides a bitbake-layers plugin that implements a "create-layer" subcommand, the yocto-layer script is deprecated and will likely be removed in the next release.
- The vmdk/vdi/qcow2 image types have been replaced by CONVERSION_CMD types, and these would now typically be used in conjunction with the "wic" image type - thus the equivalents for these now are wic.vmdk, wic.vdi and wic.qcow2 respectively.
- IMAGE_DEPENDS_<type> has been replaced by do_image_<type>[depends]. If you have your own classes implementing custom image types then those will need to be updated.
- OpenSSL 1.1 has been introduced, but the default is still 1.0.x via PREFERRED_VERSION due to remaining compatibility issues with other software. "openssl10" has been added to PROVIDES as a marker for recipes that still definitely depend on OpenSSL 1.0.
- As part of the bitbake server changes, in order to ensure consistent behaviour, bitbake's -r/-R options (aka prefile/postfile) to read/post-read additional configuration files from the command line will only affect the current bitbake command rather than "sticking" for future executions.
- The main Poky README has been moved to README.poky in the meta-poky layer, with a symlink in the main poky repository pointing to it. Additionally the README.hardware file has been moved to meta-yocto-bsp, with a symlink in the main poky repository pointing to it. A README.qemu file has been created with brief coverage of just the qemu* machines.