FutureMigrationGuide

From Yocto Project
Revision as of 03:31, 5 November 2018 by PaulEggleton (talk | contribs)
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.6 Migration Guide items

GCC 8.2 now used by default

The GNU Compiler Collection version 8.2 is now used by default for compilation. For more information on what's changed in the 8.x release please see:

https://gcc.gnu.org/gcc-8/changes.html

If you still need to compile with version 7.x, GCC 7.3 is also provided and can be selected by setting GCCVERSION = "7.%" in your configuration.

Removed recipes

The following recipes have been removed:

  • beecrypt: no longer needed since the move to rpm4
  • bigreqsproto: replaced by xorgproto
  • calibrateproto: removed in favour of xinput
  • compositeproto: replaced by xorgproto
  • damageproto: replaced by xorgproto
  • dmxproto: replaced by xorgproto
  • dri2proto: replaced by xorgproto
  • dri3proto: replaced by xorgproto
  • eee-acpi-scripts: obsolete
  • fixesproto: replaced by xorgproto
  • fontsproto: replaced by xorgproto
  • fstests: obsolete
  • gccmakedep: no longer used
  • glproto: replaced by xorgproto
  • gnome-desktop3: no longer needed, moved to meta-oe
  • icon-naming-utils: not used by anything since sato theme was removed in 2016.
  • inputproto: replaced by xorgproto
  • kbproto: replaced by xorgproto
  • libusb-compat: obsolete
  • libuser: obsolete
  • libnfsidmap: as of nfs-utils 2.2.1, libnfsidmap has been integrated and isn't an external requirement anymore
  • libxcalibrate: no longer needed with xinput
  • mktemp: obsolete - mktemp command is provided by both busybox and coreutils
  • ossp-uuid: unmaintained and mostly replaced by uuid.h in util-linux
  • pax-utils: no longer needed as previous QA tests that used it are now done at build time
  • pcmciautils: obsolete
  • pixz: no longer needed as xz now supports multi-threaded compression
  • presentproto: replaced by xorgproto
  • randrproto: replaced by xorgproto
  • recordproto: replaced by xorgproto
  • renderproto: replaced by xorgproto
  • resourceproto: replaced by xorgproto
  • scrnsaverproto: replaced by xorgproto
  • trace-cmd: obsolete - functionally replaced by perf
  • videoproto: replaced by xorgproto
  • wireless-tools: obsolete - superseded by iw
  • xcmiscproto: replaced by xorgproto
  • xextproto: replaced by xorgproto
  • xf86dgaproto: replaced by xorgproto
  • xf86driproto: replaced by xorgproto
  • xf86miscproto: replaced by xorgproto
  • xf86-video-omapfb: obsolete, use kernel modesetting driver instead
  • xf86-video-omap: obsolete, use kernel modesetting driver instead
  • xf86vidmodeproto: replaced by xorgproto
  • xineramaproto: replaced by xorgproto
  • xproto: replaced by xorgproto
  • yasm: no longer needed since previous usages are now satisfied by nasm

Packaging changes

  • cmake: cmake.m4 and toolchain file now moved to the main package
  • iptables: Split the iptables modules into separate packages
  • alsa-lib: libasound is now in the main alsa-lib package instead of libasound
  • glibc: libnss-db is now in its own package along with a /var/db/makedbs.sh script to update databases
  • python / python3: removed the main package entirely - install specific packages or python-modules for everything
  • systemtap: moved systemtap-exporter into its own package

XOrg Protocol dependencies

The *proto upstream repositories have been combined into one xorgproto repository, and thus the corresponding recipes have also been combined into a single xorgproto recipe. Any recipes that depend upon the older *proto recipes will need to be changed to depend upon xorgproto instead.

distutils/distutils3 now prevent fetching dependencies during do_configure

Previously, it was possible for python recipes inheriting the distutils/distutils3 classes (or setuptools/setuptools3 since these inherit the distutils* classes) to fetch code during do_configure to satisfy dependencies mentioned in setup.py if those dependencies were not provided in the sysroot, i.e. recipes providing the dependencies were missing from DEPENDS. This is not desirable for several reasons including build reproducibility and working properly behind a network proxy. This fetching of dependencies has now been explicitly disabled, and any missing dependencies in python recipes using these classes will now result in an error during do_configure instead.

linux-yocto configuration audit issues now correctly reported

Due to a bug, the kernel configuration audit functionality was not writing out any resulting warnings during the build. This issue has now been fixed, so you may notice these being shown if you have a custom kernel configuration with a linux-yocto style kernel recipe.

Image/kernel artifact naming changes

  • Name variables such as IMAGE_NAME use a new IMAGE_VERSION_SUFFIX variable instead of DATETIME directly allowing this to be changed more easily.
  • Several variables have changed name for consistency:
Old variable New variable
KERNEL_IMAGE_BASE_NAME KERNEL_IMAGE_NAME
KERNEL_IMAGE_SYMLINK_NAME KERNEL_IMAGE_LINK_NAME
MODULE_IMAGE_BASE_NAME MODULE_IMAGE_NAME
MODULE_TARBALL_BASE_NAME MODULE_TARBALL_NAME
MODULE_TARBALL_SYMLINK_NAME MODULE_TARBALL_LINK_NAME
INITRAMFS_BASE_NAME INITRAMFS_NAME
  • KERNEL_DTB_NAME and KERNEL_DTB_LINK_NAME variables have been introduced to control DTB artifact names instead of mangling KERNEL_IMAGE_*
  • KERNEL_FIT_NAME and KERNEL_FIT_LINK_NAME variables have been introduced to specify the name of fitImage files like all other deployed artifacts
  • The MODULE_TARBALL_NAME and MODULE_TARBALL_LINK_NAME variable values no longer include "module-" prefix or ".tgz" suffix, these parts are now hardcoded so that the values are consistent with other artifact naming variables.
  • Added an INITRAMFS_LINK_NAME variable so that the symlink can be controlled as per other artifact types
  • INITRAMFS_NAME now uses "${PKGE}-${PKGV}-${PKGR}-${MACHINE}-${DATETIME}" instead of "${PV}-${PR}-${MACHINE}-${DATETIME}" to be consistent with other variables

SERIAL_CONSOLE deprecated

The SERIAL_CONSOLE variable has been functionally replaced by SERIAL_CONSOLES for some time but was not officially deprecated until this release. SERIAL_CONSOLE will continue to work as before for this release, but for the sake of future compatibility it is recommended that you replace all usages with SERIAL_CONSOLES instead (the only difference in usage is that SERIAL_CONSOLES expects entries to be separated by ; whereas SERIAL_CONSOLE uses spaces).

poky now sets unknown-configure-option to QA Error

If the configure script reports an unknown option, this will now trigger an error instead of a warning. Any recipes that previously got away with specifying such unknown options will now need to be fixed.

Override changes

The following changes have been made relating to overrides:

virtclass-native and virtclass-nativesdk overrides removed

The virtclass-native and virtclass-nativesdk overrides have been deprecated since 2012 in favour of class-native and class-nativesdk respectively, and have now finally been dropped. Note that the virtclass-multilib- overrides for multilib are still valid however.

forcevariable override is now higher priority than libc overrides

The forcevariable override is documented to be the highest priority override, however due to a long-standing quirk of how OVERRIDES got set the libc overrides (e.g. libc-glibc, libc-musl etc.) were erroneously higher in priority. This issue has now been corrected. This change will probably not cause any problems however it is possible with some unusual configuration that you might see a change in behaviour as a result if you were relying on the previous behaviour. Check any usage of forcevariable and libc-* overrides in your custom layers and configuration files to ensure they make sense.

build-${BUILD_OS} override has been removed

The build-${BUILD_OS} (typically build-linux) override has been removed, as building on a host OS other than a recent version of Linux is neither supported nor recommended. Dropping the override avoids giving the impression that other host OSes might be supported.


systemd configuration now split out to systemd-conf

systemd's configuration has been split out to a system-conf recipe. This avoids the systemd recipe becoming machine-specific if machine-specific configuration needs to be applied (as it does for qemu* machines). Currently this recipe packages the following files:

${sysconfdir}/machine-id ${sysconfdir}/systemd/coredump.conf ${sysconfdir}/systemd/journald.conf ${sysconfdir}/systemd/logind.conf ${sysconfdir}/systemd/system.conf ${sysconfdir}/systemd/user.conf

If you were previously bbappending the systemd recipe in order to change any of these files you will need to bbappend the systemd-conf recipe instead.


Miscellaneous changes

  • Default to using the Thumb2 instruction set for armv7a and above. If you have any custom recipes that build software that needs to be built with the ARM instruction set, change the recipe to set ARM_INSTRUCTION_SET = "arm".
  • run-postinsts no longer uses /etc/*-postinsts for dpkg/opkg in favour of built-in postinst support (rpm behaviour is unchanged)
  • NOISO and NOHDD variables are no longer used - building iso/hddimg types is now controlled directly from IMAGE_FSTYPES
  • scripts/contrib/mkefidisk.sh has been removed in favour of wic
  • bitbake: the server logfile (bitbake-cookerdaemon.log) is now always placed in the build directory instead of the current directory
  • kernel-modules has been removed from RRECOMMENDS for qemumips/qemumips64 and machines including x86-base.inc (though genericx86 / genericx86-64 retain them)
  • The LGPLv2_WHITELIST_GPL-3.0 variable has been removed - if you are setting this in your configuration, set (or append to) WHITELIST_GPL-3.0 instead as it does the same thing
  • ${ASNEEDED} is now included in TARGET_LDFLAGS directly and the rest of the definitions from meta/conf/distro/include/as-needed.inc have been moved to the corresponding recipes.
  • Support for DSA host keys has been dropped from the openssh recipes; these have been deprecated for some time. If you are still using DSA keys you will need to switch over to a more secure algorithm as recommended by OpenSSH upstream.
  • The dhcp recipe now uses dhcpd6.conf in dhcpd6.service for IPv6 DHCP (instead of re-using dhcpd.conf, which is now reserved for IPv4)