Release 1.7 (dizzy)
This section provides migration information for moving to the Yocto Project 1.7 Release (codename “dizzy”) from the prior release.
Changes to Setting QEMU PACKAGECONFIG
Options in local.conf
The QEMU recipe now uses a number of
PACKAGECONFIG options to enable various
optional features. The method used to set defaults for these options
means that existing local.conf
files will need to be modified to
append to PACKAGECONFIG for qemu-native
and nativesdk-qemu
instead of setting it. In other words, to enable graphical output for
QEMU, you should now have these lines in local.conf
:
PACKAGECONFIG_append_pn-qemu-native = " sdl"
PACKAGECONFIG_append_pn-nativesdk-qemu = " sdl"
Minimum Git version
The minimum Git
version required on the
build host is now 1.7.8 because the --list
option is now required by
BitBake’s Git fetcher. As always, if your host distribution does not
provide a version of Git that meets this requirement, you can use the
buildtools-tarball
that does. See the
“Required Git, tar, Python and gcc Versions”
section for more information.
Autotools Class Changes
The following autotools class changes occurred:
A separate build directory is now used by default: The autotools class has been changed to use a directory for building (B), which is separate from the source directory (S). This is commonly referred to as
B != S
, or an out-of-tree build.If the software being built is already capable of building in a directory separate from the source, you do not need to do anything. However, if the software is not capable of being built in this manner, you will need to either patch the software so that it can build separately, or you will need to change the recipe to inherit the autotools-brokensep class instead of the autotools or
autotools_stage
classes.The
--foreign
option is no longer passed toautomake
when runningautoconf
: This option tellsautomake
that a particular software package does not follow the GNU standards and therefore should not be expected to distribute certain files such asChangeLog
,AUTHORS
, and so forth. Because the majority of upstream software packages already tellautomake
to enable foreign mode themselves, the option is mostly superfluous. However, some recipes will need patches for this change. You can easily make the change by patchingconfigure.ac
so that it passes “foreign” toAM_INIT_AUTOMAKE()
. See this commit for an example showing how to make the patch.
Binary Configuration Scripts Disabled
Some of the core recipes that package binary configuration scripts now
disable the scripts due to the scripts previously requiring error-prone
path substitution. Software that links against these libraries using
these scripts should use the much more robust pkg-config
instead.
The list of recipes changed in this version (and their configuration
scripts) is as follows:
directfb (directfb-config)
freetype (freetype-config)
gpgme (gpgme-config)
libassuan (libassuan-config)
libcroco (croco-6.0-config)
libgcrypt (libgcrypt-config)
libgpg-error (gpg-error-config)
libksba (ksba-config)
libpcap (pcap-config)
libpcre (pcre-config)
libpng (libpng-config, libpng16-config)
libsdl (sdl-config)
libusb-compat (libusb-config)
libxml2 (xml2-config)
libxslt (xslt-config)
ncurses (ncurses-config)
neon (neon-config)
npth (npth-config)
pth (pth-config)
taglib (taglib-config)
Additionally, support for pkg-config
has been added to some recipes in the
previous list in the rare cases where the upstream software package does
not already provide it.
eglibc 2.19
Replaced with glibc 2.20
Because eglibc
and glibc
were already fairly close, this
replacement should not require any significant changes to other software
that links to eglibc
. However, there were a number of minor changes
in glibc 2.20
upstream that could require patching some software
(e.g. the removal of the _BSD_SOURCE
feature test macro).
glibc 2.20
requires version 2.6.32 or greater of the Linux kernel.
Thus, older kernels will no longer be usable in conjunction with it.
For full details on the changes in glibc 2.20
, see the upstream
release notes
here.
Kernel Module Autoloading
The module_autoload_* variable is now
deprecated and a new
KERNEL_MODULE_AUTOLOAD variable
should be used instead. Also, module_conf_*
must now be used in conjunction with a new
KERNEL_MODULE_PROBECONF variable.
The new variables no longer require you to specify the module name as
part of the variable name. This change not only simplifies usage but
also allows the values of these variables to be appropriately
incorporated into task signatures and thus trigger the appropriate tasks
to re-execute when changed. You should replace any references to
module_autoload_*
with KERNEL_MODULE_AUTOLOAD, and add any
modules for which module_conf_*
is specified to
KERNEL_MODULE_PROBECONF.
QA Check Changes
The following changes have occurred to the QA check process:
Additional QA checks
file-rdeps
andbuild-deps
have been added in order to verify that file dependencies are satisfied (e.g. package contains a script requiring/bin/bash
) and build-time dependencies are declared, respectively. For more information, please see the “QA Error and Warning Messages” chapter.Package QA checks are now performed during a new do_package_qa task rather than being part of the do_package task. This allows more parallel execution. This change is unlikely to be an issue except for highly customized recipes that disable packaging tasks themselves by marking them as
noexec
. For those packages, you will need to disable thedo_package_qa
task as well.Files being overwritten during the do_populate_sysroot task now trigger an error instead of a warning. Recipes should not be overwriting files written to the sysroot by other recipes. If you have these types of recipes, you need to alter them so that they do not overwrite these files.
You might now receive this error after changes in configuration or metadata resulting in orphaned files being left in the sysroot. If you do receive this error, the way to resolve the issue is to delete your TMPDIR or to move it out of the way and then re-start the build. Anything that has been fully built up to that point and does not need rebuilding will be restored from the shared state cache and the rest of the build will be able to proceed as normal.
Removed Recipes
The following recipes have been removed:
x-load
: This recipe has been superseded by U-Boot SPL for all Cortex-based TI SoCs. For legacy boards, themeta-ti
layer, which contains a maintained recipe, should be used instead.ubootchart
: This recipe is obsolete. Abootchart2
recipe has been added to functionally replace it.linux-yocto 3.4
: Support for the linux-yocto 3.4 kernel has been dropped. Support for the 3.10 and 3.14 kernels remains, while support for version 3.17 has been added.eglibc
has been removed in favor ofglibc
. See the “eglibc 2.19 Replaced with glibc 2.20” section for more information.
Miscellaneous Changes
The following miscellaneous change occurred:
The build history feature now writes
build-id.txt
instead ofbuild-id
. Additionally,build-id.txt
now contains the full build header as printed by BitBake upon starting the build. You should manually remove old “build-id” files from your existing build history repositories to avoid confusion. For information on the build history feature, see the “Maintaining Build Output Quality” section in the Yocto Project Development Tasks Manual.