4.4 Moving to the Yocto Project 1.5 Release
This section provides migration information for moving to the Yocto Project 1.5 Release from the prior release.
4.4.1 Host Dependency Changes
The OpenEmbedded build system now has some additional requirements on the host system:
Python 2.7.3+
Tar 1.24+
Git 1.7.8+
Patched version of Make if you are using 3.82. Most distributions that provide Make 3.82 use the patched version.
If the Linux distribution you are using on your build host does not provide packages for these, you can install and use the Buildtools tarball, which provides an SDK-like environment containing them.
For more information on this requirement, see the “Required Git, tar, Python and gcc Versions” section.
4.4.2 atom-pc
Board Support Package (BSP)
The atom-pc
hardware reference BSP has been replaced by a
genericx86
BSP. This BSP is not necessarily guaranteed to work on
all x86 hardware, but it will run on a wider range of systems than the
atom-pc
did.
Note
Additionally, a genericx86-64
BSP has been added for 64-bit Atom
systems.
4.4.3 BitBake
The following changes have been made that relate to BitBake:
BitBake now supports a
_remove
operator. The addition of this operator means you will have to rename any items in recipe space (functions, variables) whose names currently contain_remove_
or end with_remove
to avoid unexpected behavior.BitBake’s global method pool has been removed. This method is not particularly useful and led to clashes between recipes containing functions that had the same name.
The “none” server backend has been removed. The “process” server backend has been serving well as the default for a long time now.
The
bitbake-runtask
script has been removed.${
P}
and${
PF}
are no longer added to PROVIDES by default inbitbake.conf
. These version-specificPROVIDES
items were seldom used. Attempting to use them could result in two versions being built simultaneously rather than just one version due to the way BitBake resolves dependencies.
4.4.4 QA Warnings
The following changes have been made to the package QA checks:
If you have customized ERROR_QA or WARN_QA values in your configuration, check that they contain all of the issues that you wish to be reported. Previous Yocto Project versions contained a bug that meant that any item not mentioned in
ERROR_QA
orWARN_QA
would be treated as a warning. Consequently, several important items were not already in the default value ofWARN_QA
. All of the possible QA checks are now documented in the “insane.bbclass” section.An additional QA check has been added to check if
/usr/share/info/dir
is being installed. Your recipe should delete this file within do_install if “make install” is installing it.If you are using the
buildhistory
class, the check for the package version going backwards is now controlled using a standard QA check. Thus, if you have customized yourERROR_QA
orWARN_QA
values and still wish to have this check performed, you should add “version-going-backwards” to your value for one or the other variables depending on how you wish it to be handled. See the documented QA checks in the “insane.bbclass” section.
4.4.5 Directory Layout Changes
The following directory changes exist:
Output SDK installer files are now named to include the image name and tuning architecture through the SDK_NAME variable.
Images and related files are now installed into a directory that is specific to the machine, instead of a parent directory containing output files for multiple machines. The DEPLOY_DIR_IMAGE variable continues to point to the directory containing images for the current MACHINE and should be used anywhere there is a need to refer to this directory. The
runqemu
script now uses this variable to find images and kernel binaries and will use BitBake to determine the directory. Alternatively, you can set theDEPLOY_DIR_IMAGE
variable in the external environment.When buildhistory is enabled, its output is now written under the Build Directory rather than TMPDIR. Doing so makes it easier to delete
TMPDIR
and preserve the build history. Additionally, data for produced SDKs is now split by IMAGE_NAME.The
pkgdata
directory produced as part of the packaging process has been collapsed into a single machine-specific directory. This directory is located undersysroots
and uses a machine-specific name (i.e.tmp/sysroots/machine/pkgdata
).
4.4.6 Shortened Git SRCREV
Values
BitBake will now shorten revisions from Git repositories from the normal 40 characters down to 10 characters within SRCPV for improved usability in path and file names. This change should be safe within contexts where these revisions are used because the chances of spatially close collisions is very low. Distant collisions are not a major issue in the way the values are used.
4.4.7 IMAGE_FEATURES
The following changes have been made that relate to IMAGE_FEATURES:
The value of
IMAGE_FEATURES
is now validated to ensure invalid feature items are not added. Some users mistakenly add package names to this variable instead of using IMAGE_INSTALL in order to have the package added to the image, which does not work. This change is intended to catch those kinds of situations. ValidIMAGE_FEATURES
are drawn fromPACKAGE_GROUP
definitions, COMPLEMENTARY_GLOB and a new “validitems” varflag onIMAGE_FEATURES
. The “validitems” varflag change allows additional features to be added if they are not provided using the previous two mechanisms.The previously deprecated “apps-console-core”
IMAGE_FEATURES
item is no longer supported. Add “splash” toIMAGE_FEATURES
if you wish to have the splash screen enabled, since this is all that apps-console-core was doing.
4.4.8 /run
The /run
directory from the Filesystem Hierarchy Standard 3.0 has
been introduced. You can find some of the implications for this change
here.
The change also means that recipes that install files to /var/run
must be changed. You can find a guide on how to make these changes
here.
4.4.9 Removal of Package Manager Database Within Image Recipes
The image core-image-minimal
no longer adds
remove_packaging_data_files
to
ROOTFS_POSTPROCESS_COMMAND.
This addition is now handled automatically when “package-management” is
not in IMAGE_FEATURES. If you have custom
image recipes that make this addition, you should remove the lines, as
they are not needed and might interfere with correct operation of
postinstall scripts.
4.4.10 Images Now Rebuild Only on Changes Instead of Every Time
The do_rootfs and other related image construction tasks are no longer marked as “nostamp”. Consequently, they will only be re-executed when their inputs have changed. Previous versions of the OpenEmbedded build system always rebuilt the image when requested rather when necessary.
4.4.11 Task Recipes
The previously deprecated task.bbclass
has now been dropped. For
recipes that previously inherited from this class, you should rename
them from task-*
to packagegroup-*
and inherit packagegroup
instead.
For more information, see the “packagegroup.bbclass” section.
4.4.12 BusyBox
By default, we now split BusyBox into two binaries: one that is suid
root for those components that need it, and another for the rest of the
components. Splitting BusyBox allows for optimization that eliminates
the tinylogin
recipe as recommended by upstream. You can disable
this split by setting
BUSYBOX_SPLIT_SUID to “0”.
4.4.13 Automated Image Testing
A new automated image testing framework has been added through the
testimage.bbclass class. This
framework replaces the older imagetest-qemu
framework.
You can learn more about performing automated image tests in the “Performing Automated Runtime Testing” section in the Yocto Project Development Tasks Manual.
4.4.14 Build History
Following are changes to Build History:
Installed package sizes:
installed-package-sizes.txt
for an image now records the size of the files installed by each package instead of the size of each compressed package archive file.The dependency graphs (
depends*.dot
) now use the actual package names instead of replacing dashes, dots and plus signs with underscores.The
buildhistory-diff
andbuildhistory-collect-srcrevs
utilities have improved command-line handling. Use the--help
option for each utility for more information on the new syntax.
For more information on Build History, see the “Maintaining Build Output Quality” section in the Yocto Project Development Tasks Manual.
4.4.15 udev
Following are changes to udev
:
udev
no longer brings inudev-extraconf
automatically through RRECOMMENDS, since this was originally intended to be optional. If you need the extra rules, then addudev-extraconf
to your image.udev
no longer brings inpciutils-ids
orusbutils-ids
throughRRECOMMENDS
. These are not needed byudev
itself and removing them saves around 350KB.
4.4.16 Removed and Renamed Recipes
The
linux-yocto
3.2 kernel has been removed.libtool-nativesdk
has been renamed tonativesdk-libtool
.tinylogin
has been removed. It has been replaced by a suid portion of Busybox. See the “BusyBox” section for more information.external-python-tarball
has been renamed tobuildtools-tarball
.web-webkit
has been removed. It has been functionally replaced bymidori
.imake
has been removed. It is no longer needed by any other recipe.transfig-native
has been removed. It is no longer needed by any other recipe.anjuta-remote-run
has been removed. Anjuta IDE integration has not been officially supported for several releases.
4.4.17 Other Changes
Following is a list of short entries describing other changes:
run-postinsts
: Make this generic.base-files
: Remove the unnecessarymedia/
xxx directories.alsa-state
: Provide an emptyasound.conf
by default.classes/image
: Ensure BAD_RECOMMENDATIONS supports pre-renamed package names.classes/rootfs_rpm
: ImplementBAD_RECOMMENDATIONS
for RPM.systemd
: Removesystemd_unitdir
ifsystemd
is not in DISTRO_FEATURES.systemd
: Removeinit.d
dir ifsystemd
unit file is present andsysvinit
is not a distro feature.libpam
: Deny all services for theOTHER
entries.image.bbclass
: Moveruntime_mapping_rename
to avoid conflict withmultilib
. See YOCTO #4993 in Bugzilla for more information.linux-dtb
: Use kernel build system to generate thedtb
files.kern-tools
: Switch from guilt to newkgit-s2q
tool.