1Release 3.4 (honister) 2====================== 3 4This section provides migration information for moving to the Yocto 5Project 3.4 Release (codename "honister") from the prior release. 6 7Override syntax changes 8----------------------- 9 10This release requires changes to the metadata to indicate where overrides are 11being used in variable key names. This is done with the ``:`` character replacing 12the use of ``_`` previously. This means that an entry like:: 13 14 SRC_URI_qemux86 = "file://somefile" 15 16becomes:: 17 18 SRC_URI:qemux86 = "file://somefile" 19 20since ``qemux86`` is an override. This applies to any use of override syntax so:: 21 22 SRC_URI_append = " file://somefile" 23 SRC_URI_append_qemux86 = " file://somefile2" 24 SRC_URI_remove_qemux86-64 = " file://somefile3" 25 SRC_URI_prepend_qemuarm = "file://somefile4 " 26 FILES_${PN}-ptest = "${bindir}/xyz" 27 IMAGE_CMD_tar = "tar" 28 BASE_LIB_tune-cortexa76 = "lib" 29 SRCREV_pn-bash = "abc" 30 BB_TASK_NICE_LEVEL_task-testimage = '0' 31 32becomes:: 33 34 SRC_URI:append = " file://somefile" 35 SRC_URI:append:qemux86 = " file://somefile2" 36 SRC_URI:remove:qemux86-64 = " file://somefile3" 37 SRC_URI:prepend:qemuarm = "file://somefile4 " 38 FILES:${PN}-ptest = "${bindir}/xyz" 39 IMAGE_CMD:tar = "tar" 40 BASE_LIB:tune-cortexa76 = "lib" 41 SRCREV:pn-bash = "abc" 42 BB_TASK_NICE_LEVEL:task-testimage = '0' 43 44This also applies to 45:ref:`variable queries to the datastore <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:functions for accessing datastore variables>`, 46for example using ``getVar`` and similar so ``d.getVar("RDEPENDS_${PN}")`` 47becomes ``d.getVar("RDEPENDS:${PN}")``. 48 49Whilst some of these are fairly obvious such as :term:`MACHINE` and :term:`DISTRO` 50overrides, some are less obvious, for example the packaging variables such as 51:term:`RDEPENDS`, :term:`FILES` and so on taking package names (e.g. ``${PN}``, 52``${PN}-ptest``) as overrides. These overrides are not always in 53:term:`OVERRIDES` but applied conditionally in specific contexts 54such as packaging. ``task-<taskname>`` is another context specific override, the 55context being specific tasks in that case. Tune overrides are another special 56case where some code does use them as overrides but some does not. We plan to try 57and make the tune code use overrides more consistently in the future. 58 59There are some variables which do not use override syntax which include the 60suffix to variables in ``layer.conf`` files such as :term:`BBFILE_PATTERN`, 61:term:`SRCREV`\ ``_xxx`` where ``xxx`` is a name from :term:`SRC_URI` and 62:term:`PREFERRED_VERSION`\ ``_xxx``. In particular, ``layer.conf`` suffixes 63may be the same as a :term:`DISTRO` override causing some confusion. We do 64plan to try and improve consistency as these issues are identified. 65 66To help with migration of layers there is a script in OE-Core. Once configured 67with the overrides used by a layer, this can be run as:: 68 69 <oe-core>/scripts/contrib/convert-overrides.py <layerdir> 70 71.. note:: 72 73 Please read the notes in the script as it isn't entirely automatic and it isn't 74 expected to handle every case. In particular, it needs to be told which overrides 75 the layer uses (usually machine and distro names/overrides) and the result should 76 be carefully checked since it can be a little enthusiastic and will convert 77 references to ``_append``, ``_remove`` and ``_prepend`` in function and variables names. 78 79For reference, this conversion is important as it allows BitBake to know what is 80an override and what is not. This should allow us to proceed with other syntax 81improvements and simplifications for usability. It also means bitbake no longer 82has to guess and maintain large lookup lists just in case ``functionname`` in 83``my_functionname`` is an override and this should improve efficiency. 84