Migrating metadata to OE-Core

From Openembedded.org
Revision as of 11:36, 15 February 2012 by PaulEggleton (talk | contribs) (Link to OE-core page)
Jump to: navigation, search

The classes and BitBake configuration used in OpenEmbedded-Core require a few changes for recipes brought over from OE-Classic (and for new recipes written by developers used to working with OE-Classic).

Mandatory changes

For recipes the following changes are required in order to build successfully:

  • LIC_FILES_CHKSUM is mandatory, and will be checked at the end of do_configure. It is used in order to specify one or more files or sections of files from the source that can be used to detect if the license of the software has been changed in a newer version. See Specifying LIC_FILES_CHKSUM for more details.
  • Legacy staging (do_stage) is no longer supported and BitBake will error out on parse of recipes that use it. Items previously in do_stage should be moved to do_install as appropriate; however they should actually install the files to somewhere under ${D} and not copy them into the staging directory directly or things will break later on.
  • The LICENSE field, whilst usually included in most recipes in the past anyway, is now mandatory. It should be as specific and as correct as possible (e.g. "GPLv2", not just "GPL") and try to be consistent with other recipes.
  • Any calls to oenote, oewarn, oefatal etc. need to be replaced with the "bb" equivalent, i.e. bbnote, bbwarn, bbfatal etc.
  • Recent versions of BitBake no longer allow comments in multi-line strings, so the tradition of being able to comment out lines within a multi-line SRC_URI or when setting configure flags etc. is no longer allowed. Remove the commented out lines or move them to beyond where the string terminates.
  • Modifications to FILESPATHPKG and/or FILESPATH should be replaced by prepending to FILESEXTRAPATHS; in addition, you no longer need to define THISDIR (and should not do so). For example, to add a directory to be searched for patches and other files which is named with PN, do the following (note the immediate evaluation operator := and trailing colon, these are important):
  • RDEPENDS and RRECOMMENDS should always have a package name override. To set depends/recommends for the main package use RDEPENDS_${PN} / RRECOMMENDS_${PN} respectively.

Best practices

The following practices are required for patch submission to layers such as OE-Core and meta-oe, and recommended for recipes in your own layers:

  • Machine and distro-specific overrides should be removed from recipes for generic layers (especially meta-oe and OE-Core). These can be moved to bbappends in the appropriate machine / distro layer respectively. (Note however that architecture-specific overrides are allowed if necessary.)
  • In-tree patches to be applied to the source should have a proper header explaining what the patch does, a valid Signed-off-by, and for OE-Core should have an Upstream-Status indicator.
  • Initially reset PR to "r0" (or remove it which amounts to the same thing). PR is definitely still used but we can start again from r0.
  • NATIVE_INSTALL_WORKS for native recipes is no longer used and should be removed.
  • PRIORITY is no longer used and should be removed.
  • "Bashisms" in shell scripts (particularly those that will be executed on the host) should be avoided. This allows compatibility with alternative shells e.g. Ubuntu's default (dash).