Yocto Project 1.5 Migration notes
Host dependency changes
The build system now has some additional requirements on the host system:
- Python 2.7.3+
- tar 1.24+
- git 1.7.5+
- If using make 3.82, a version that has been patched to fix known bugs (most distributions that provide make 3.82 have now done this)
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.
atom-pc BSP
The atom-pc hardware reference BSP has been replaced by a genericx86 BSP (as well as a genericx86-64 BSP for 64-bit systems). This is not necessarily guaranteed to work on all x86 hardware, but will run on a wider range of systems than atom-pc did.
_remove operator
The addition of the _remove operator to BitBake now means that any items in recipe space (functions, variables) whose names currently contain _remove_ or end with _remove will need to be renamed to avoid unexpected behaviour.
QA warnings
- If you have customised ERROR_QA or WARN_QA values in your configuration, check that they contain all of the issues that you wish to be reported. Previous versions contained a bug that meant that any item not mentioned in ERROR_QA or WARN_QA would be treated as a warning, so several important items were not already in the default value of WARN_QA. All of the possible QA checks are now documented in <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; if you have customised your ERROR_QA or WARN_QA values and still wish to have this check performed, you should add "version-going-backwards" to your value for one or the other variable depending on how you wish it to be handled.
Directory layout changes
- Output SDK installer files are now named to include the image name and tune arch (via SDK_NAME)
- Images and related files are now installed into a directory that is specific to the machine, instead of output files for multiple machines being mixed in the same directory. 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 it (or alternatively it can be set in the external environment).
- When buildhistory is enabled, its output is now written under the build directory instead of TMPDIR. This makes it a easier to delete TMPDIR and preserve build history. Additionally, data for produced SDKs are now split by IMAGE_NAME.
- The "pkgdata" directory produced as part of the packaging process has been collapsed into a single machine specific directory.
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 should be safe in the contexts where these revisions are used as the chances of spatially close collisions is very low (distant collisions are not a major issue in the way the values are used).
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 IMAGE_INSTALL in order to have the package added to the image (which will not work), and this change is intended to catch those kinds of situations. Valid IMAGE_FEATURES are drawn from PACKAGE_GROUP_ definitions, COMPLEMENTARY_GLOBS and a new 'validitems' varflag on IMAGE_FEATURES (so that additional features can 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" to IMAGE_FEATURES if you wish to have the splash screen enabled, since this is all that apps-console-core was doing.
/run
The /run directory from the Filesystem Hierarchy Standard 3.0 has been introduced; some of the implications can be found in the change that implemented it here: http://cgit.openembedded.org/openembedded-core/commit/?id=0e326280a15b0f2c4ef2ef4ec441f63f55b75873 This also means that recipes that install files to /var/run need to be changed to accommodate this. There is a guide on how to do this here: http://permalink.gmane.org/gmane.comp.handhelds.openembedded/58530
Removal of package manager database within image recipes
core-image-minimal no longer adds remove_packaging_data_files to ROOTFS_POSTPROCESS_COMMAND, as this is now handled automatically when package-management is not in IMAGE_FEATURES. If you have custom image recipes that do this you should remove this line, as it is not needed and may interfere with correct operation of postinstall scripts.
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", and thus they will only be re-executed when their inputs have changed. Previous versions of the build system would always rebuild the image when requested, now it is only done when necessary.
Task recipes
The previously deprecated task.bbclass has now been dropped. Recipes that previously inherited from this task should be renamed from task-* to packagegroup-* and inherit packagegroup instead.
BusyBox
By default, we now split busybox into two binaries - one which is suid root for those components that need it, and another for the rest of the components; this has allowed us to optimise out the tinylogin recipe as recommended by upstream. The splitting behaviour can be disabled by setting BUSYBOX_SPLIT_SUID to 0.
Removed/renamed recipes
- linux-yocto 3.2 kernel removed
- libtool-nativesdk renamed to nativesdk-libtool
- tinylogin removed (replaced by a suid portion of busybox)
- external-python-tarball renamed to buildtools-tarball
- web-webkit removed (functionally replaced by midori)
- imake removed (no longer needed by any other recipe)
- transfig-native removed (no longer needed by any other recipe)
- anjuta-remote-run removed (Anjuta IDE integration has been unsupported for some time)
other (yet to be formatted)
bitbake: methodpool: Retire it, remove global method scope bitbake: server: Remove none server bitbake: Drop bitbake-runtask do not recommend udev-extraconf for udev udev: do not recommend pciutils/usbutils ids run-postinsts: make it generic classes/externalsrc: enable global inherit and simplify usage busybox: enable to list suid and non-suid app configs base-files: remove the unnecessary /media/xxx directories classes/testimage.bbclass: new class for image tests alsa-state: Provide an empty asound.conf by default classes/image: ensure BAD_RECOMMENDATIONS supports pre-renamed package names classes/rootfs_rpm: implement BAD_RECOMMENDATIONS for RPM systemd: Remove systemd_unitdir if systemd is not in distro features systemd: Remove init.d dir if systemd unit file is present and sysvinit not a distro feature libpam: deny all services for the OTHER entries Add libav and use it in gst-ffmpeg by default image.bbclass: Move runtime_mapping_rename to avoid conflict w/ multilib (#4993) linux-dtb: Use kernel build system to generate the dtb files classes/buildhistory: record size of installed package not compressed archive classes/buildhistory: avoid mangling names in dot graphs for images buildhistory-diff/buildhistory-collect-srcrevs: improve command-line handling kern-tools: switch from guilt to new kgit-s2q tool poky.conf: Don't force the addition of extra DISTRO_FEATURES bitbake.conf: Stop providing ${P} and ${PF} by default