FutureMigrationGuide: Difference between revisions

From Yocto Project
Jump to navigationJump to search
No edit summary
No edit summary
 
(37 intermediate revisions by 4 users not shown)
Line 5: Line 5:
|}
|}


=2.5 Migration Guide items=
=3.0 Migration Guide items=


== Recipe removals ==
== Init system selection ==


The following recipes have been removed:
Changing the init system manager previously required setting a number of different variables; this can now be accomplished by setting the INIT_MANAGER variable and corresponding include files (conf/distro/include/init-manager-*.conf); include files are provided for four values - "none", "sysvinit", "systemd" and "mdev-busybox". The default value "none" for INIT_MANAGER should allow your current settings to continue working, but it is advisable to set INIT_MANAGER explicitly.


* gcc: dropped version 6.4 recipes (replaced by 7.x)
== LSB support removed ==
* gst-player: renamed to gst-examples as per upstream.
* hostap-utils: obsolete
* latencytop: no longer maintained upstream (last release was in 2009)
* libpfm4: was only needed by oprofile which has also been removed
* linux-yocto: removed 4.4, 4.9 and 4.10 recipes (4.12, 4.14, and 4.15 remain)
* man: replaced by the more modern man-db
* mkelfimage: removed in upstream coreboot, and no longer needed with the removal of the elf image type.
* nativesdk-postinst-intercept: unmaintained
* neon: unmaintained upstream and not used by anything in OpenEmbedded-Core.
* oprofile: functionally replaced by perf, and keeping compatibility on an ongoing basis with musl is difficult.
* pax: obsolete
* stat: unmaintained upstream (coreutils provides a modern stat binary)
* zisofs-tools-native: no longer needed now that the compressed ISO image feature has been removed.


== Packaging changes ==
LSB as a standard isn't current, and isn't well suited to embedded applications. Support may be continued in a separate layer if needed but at present it has been removed from the core.


* Libraries packaged by the bind recipe have been moved out to a separate bind-libs package.
Following on from this change, the poky-lsb derivative distribution configuration that was also used for testing alternative configurations has been replaced with a poky-altcfg distribution that has LSB parts removed.
* libfm's gtk+ bindings have now been split into a separate libfm-gtk package.
* The flex recipe now splits out libfl into a separate flex-libfl package to avoid too many dependencies being pulled in where only the library is needed.
* grub-efi's configuration is now split out into a separate grub-bootconf recipe. The dependency relationship from grub-efi is via a virtual/grub-bootconf provider however, so it is possible to have your own recipe providing it (or use a bbappend to bring it back into the grub-efi recipe) if desired.
* Legacy support for the transition specifically from armv7a -> armv7a-vfp-neon in package feeds (as enabled by setting PKGARCHCOMPAT_ARMV7A) has now been removed. This transition occurred in 2011 and active package feeds should now have long since updated to the new naming.


== Removed recipes ==


* kernel.bbclass now supports multiple kernel packages. If your kernel recipe/bbappend mentions packaging at all, then you are advised to replace "kernel" with "${KERNEL_PACKAGE_NAME}". For example if you disable automatic installation of the kernel image using RDEPENDS_kernel-base = "" then to avoid warnings you will now need to use RDEPENDS_${KERNEL_PACKAGE_NAME}-base = "" instead.
* core-image-lsb-dev: part of removed LSB support
* core-image-lsb: part of removed LSB support
* core-image-lsb-sdk: part of removed LSB support
* cve-check-tool: functionally replaced by cve-update-db recipe and cve-check class
* eglinfo: no longer maintained. eglinfo from mesa-demos is an adequate and maintained alternative.
* gcc-8.3: version 8.3 removed (replaced by 9.2)
* gnome-themes-standard: only needed by gtk+ 2.x which has been removed.
* gtk+: GTK+ 2 is obsolete (replaced by gtk+3)
* irda-utils: obsolete - IrDA support has been removed from the Linux kernel in version 4.17 and later.
* libnewt-python: libnewt Python support merged into main libnewt recipe
* libsdl: replaced by newer libsdl2
* libx11-diet: obsolete
* libxx86dga: remove obsolete client libary
* libxx86misc: remove this now redundant library
* linux-yocto: version 5.0 removed (5.2 / 4.19 present)
* lsbinitscripts: part of removed LSB support
* lsb: part of removed LSB support
* lsbtest: part of removed LSB support
* openssl10: replaced by newer openssl 1.1
* packagegroup-core-lsb: part of removed LSB support
* python-nose: remove the python 2.x version of the recipe
* python-numpy: remove the python 2.x version of the recipe
* python-scons: remove the python 2.x version of the recipe
* source-highlight: no longer needed
* stress: replaced by stress-ng
* vulkan: split into vulkan-loader, vulkan-headers and vulkan-tools
* weston-conf: functionality moved to weston-init


== Packaging changes ==


* The buildhistory class now commits changes to the repository by default, so setting BUILDHISTORY_COMMIT = "1" is no longer necessary. If you wish commits to be disabled, then you will now need to set BUILDHISTORY_COMMIT = "0" in your configuration.
* The epiphany browser has been dropped from packagegroup-self-hosted as it has not been needed inside build-appliance-image for a long time and was causing resource problems.
* The <code>beaglebone</code> reference machine has been renamed to <code>beaglebone-yocto</code>. The <code>beaglebone-yocto</code> BSP is a reference implementation using only mainline components available in OpenEmbedded-Core and meta-yocto-bsp, whereas Texas Instruments maintain a full-featured BSP in the meta-ti layer, and the rename avoids the previous name clash that existed between the two BSPs.
* libcap-ng python support has been moved to a separate libcap-ng-python recipe to streamline the build process when the python bindings aren't needed
* The update-alternatives class will now no longer work with SysV init scripts as such usage has been proven to be problematic. Related to this, the sysklogd recipe no longer uses update-alternatives as it is incompatible with other implementations.
* libdrm now packages the amdgpu.ids file into a separate libdrm-amdgpu package
* The <code>cmake</code> class now uses <code>ninja</code> instead of <code>make</code> by default for building in order to improve build performance. If a recipe is broken with ninja then the recipe can set <code>OECMAKE_GENERATOR = "Unix Makefiles"</code> to change back to <code>make</code>.
* python3: the runpy module is now in the python3-core package as it is required to support the common "python3 -m" command usage.
* python: Restructure python packaging and replace it with autopackaging
* distcc now provides separate distcc-client and distcc-server packages as typically one or the other are needed, rather than both.
* python3: Restructure python3 packaging and replace it with autopackaging
* python*-setuptools recipes now separately package the pkg_resources module in a python-pkg-resources / python3-pkg-resources package as the module is useful independent of the rest of the setuptools package. The main python-setuptools / python3-setuptools package depends on this new package so you should only need to update dependencies unless you want to take advantage of the increased granularity.
* The previously deprecated base_* functions have now removed, in favour of their replacements in meta/lib/oe and bitbake/lib/bb. These are typically used from recipes and classes and any references to the old functions will now need to be updated. The full list along with each of their replacements:
** base_path_join() -> oe.path.join()
** base_path_relative() -> oe.path.relative()
** base_path_out() -> oe.path.format_display()
** base_read_file() -> oe.utils.read_file()
** base_ifelse() -> oe.utils.ifelse()
** base_conditional() -> oe.utils.conditional()
** base_less_or_equal() -> oe.utils.less_or_equal()
** base_version_less_or_equal() -> oe.utils.version_less_or_equal()
** base_contains() -> bb.utils.contains()
** base_both_contain() -> oe.utils.both_contain()
** base_prune_suffix() -> oe.utils.prune_suffix()
** oe_filter() -> oe.utils.str_filter()
** oe_filter_out() -> oe.utils.str_filter_out() (or use the _remove operator)


* Using <code>exit 1</code> as a means of explicitly deferring a postinstall script until first boot is now deprecated, as it is not an obvious mechanism and can mask actual errors. If you want to explicitly defer a postinstall to first boot on the target rather than possibly at rootfs creation time, use <code>pkg_postinst_ontarget()</code> or alternatively call <code>postinst-intercepts defer_to_first_boot</code> from <code>pkg_postinst()</code>. Any failure of a <code>pkg_postinst()</code> script (including <code>exit 1</code>) will now trigger a warning during <code>do_rootfs</code>.
== CVE checking ==
* The <code>elf</code> image type has been removed, as the <code>mkelfimage</code> tool that was required to create it is no longer provided by coreboot upstream, and required updating every time binutils got updated.
* Support for .iso image compression (previously enabled via <code>COMPRESSISO = "1"</code>) has been removed, since the userspace tools (zisofs-tools) are unmaintained and squashfs provides better performance and compression. In order to build a live image with squashfs+lz4 compression enabled you would set <code>LIVE_ROOTFS_TYPE = "squashfs-lz4"</code> and ensure that <code>live</code> is in <code>IMAGE_FSTYPES</code>.
* Recipes having an unconditional dependency on <code>libpam</code> will now only be buildable with <code>pam</code> in <code>DISTRO_FEATURES</code>. If the dependency is truly optional then it is recommended that the dependency be made conditional upon <code>pam</code> being in <code>DISTRO_FEATURES</code>.
* For EFI-based machines, the bootloader (grub-efi by default) is now installed into the image at /boot. wic can be used to split this into separate boot and rootfs partitions if desired.
* Patches whose context does not match exactly (i.e. where patch reports "fuzz" when applying) will now generate a warning. See http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=cc97bc08125b63821ce3f616771830f77c456f57
* Layers are now expected to set <code>LAYERSERIES_COMPAT_layername</code> to match the version(s) of OpenEmbedded-Core they are compatible with (specified as codenames using spaces to separate multiple values, e.g. "rocko sumo"). If a layer does not set this, a warning will be shown. If a layer sets a value that does not include the current version, then an error will be produced.
* The <code>TZ</code> environment variable is now set to <code>"UTC"</code> within the build environment in order to fix reproducibility problems in some recipes.


== Scripts and tools ==
cve-check-tool has been functionally replaced by a new cve-update-db recipe and functionality built into the cve-check class. The result uses NVD JSON data feeds rather than the deprecated XML feeds that cve-check-tool was using, supports CVSSv3 scoring and makes other improvements.


* The <code>yocto-bsp</code>, <code>yocto-kernel</code> and <code>yocto-layer</code> scripts that were previously shipped with poky (but not in OpenEmbedded-Core) have now been removed. They were not being maintained and had already become outdated, and in any case were limited in scope. For <code>yocto-layer</code>, <code>bitbake-layers create-layer</code> is a direct replacement. For <code>yocto-bsp</code> and <code>yocto-kernel</code>, see the documentation on creating a BSP or kernel recipe.
Additionally, the CVE_CHECK_CVE_WHITELIST variable has been replaced by CVE_CHECK_WHITELIST.
* <code>devtool finish</code> will now exit with an error if there are uncommitted changes or a rebase/am in progress in the source repository for the recipe, as it may indicate that you have forgotten to commit some changes (and thus these would not be reflected in updates to the patches applied by the recipe). A -f/--force option is provided for situations where you know that those uncomitted changes are inconsequential and wish to proceed regardless.
* The scripts/oe-setup-rpmrepo script has been removed as its functionality can be replaced by <code>bitbake package-index</code>.
* The scripts/test-dependencies.sh script has been removed as it was largely made obsolete by the recipe-specific sysroots functionality introduced in the previous release.


== Bitbake changes ==
== Bitbake changes ==
* The --runall option has changed behaviour slightly. There are in fact two different behaviours people may want:


    a) For a given target (or set of targets) look through the task graph and
* addtask statements now properly validate dependent tasks - previously an invalid task here would be silently ignored, now it will generate a warning.
    run task X only if its present and would have been built.
* Other invalid addtask and deltask usages will now trigger warnings (multiple target tasks arguments with addtask / deltask, multiple before/after clauses)
   
* The "multiconfig" prefix is now shortened to "mc"; "multiconfig" will continue to work, however it may be removed in a future release.
    b) For a given target (or set of targets) look through the task graph and
* bitbake -g no longer generates a recipe-depends.dot file as the contents (a reprocessed version of task-depends.dot) were confusing.
    run task X if any recipe in the taskgraph has such a target even if it wasn't
* The bb.build.FuncFailed exception, previously raised by bb.build.exec_func() when certain other exceptions have occurred, has been removed. The real underlying exceptions will be raised instead. If you have calls to bb.build.exec_func() in custom classes or tinfoil-using scripts, any references to bb.build.FuncFailed should be cleaned up.
    in the original task graph.
* Additionally, the bb.build.exec_func() no longer accepts the "pythonexception" parameter - it now always raises exceptions. Remove this argument in any calls to bb.build.exec_func() in custom classes or scripts.
   
* The BB_SETSCENE_VERIFY_FUNCTION2 is no longer used - in the unlikely event that you have any references to it, they should be removed.
The --runall option now performs (b), previously it behaved like (a). A --runonly option has been added to retain the ability to perform (a).
* The RunQueueExecuteScenequeue and RunQueueExecuteTasks events have been removed since setscene tasks are now executed as part of the normal runqueue. Any event handling code in custom classes or scripts that handles these two events will need to be updated.
* The arguments passed to functions used with BB_HASHCHECK_FUNCTION have changed. If you are using own custom hash check function, see http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=40a5e193c4ba45c928fccd899415ea56b5417725 for details.
* Task specifications in BB_TASKDEPDATA and class implementations used in signature generator classes now use "<fn>:<task>" everywhere rather than the "." delimiter that was being used in some places. This makes it consistent with everywhere else in the code. Custom signature generator classes and code that reads BB_TASKDEPDATA will need to be updated to use ':' as a separator rather than '.'.
 
== Sanity checks ==
 
* SRC_URI is now checked for usage of two problematic items:
*# "${PN}" - instead "${BPN}" should be used to avoid problems when PN is prefixed or suffixed e.g. with multiconfig.
*# github archive tarballs - these are not guaranteed to be stable and thus it is likely that they will be refreshed and thus the SRC_URI checksums will fail to apply. It is recommended that you fetch either an official release tarball or a specific revision from the actual git repository instead.
*:Either one of these will now trigger a warning by default. If you wish to disable this check, remove src-uri-bad from WARN_QA.
* The file-rdeps runtime dependency check no longer expands RDEPENDS recursively as there is no mechanism to ensure they can be fully computed, and thus races sometimes resulted in errors showing up and sometimes not. Thus you may now see errors for missing runtime dependencies that were previously satisfied recursively e.g. package A contains a shell script starting with #!/bin/bash but has no dependency on bash, but depends on package B that does depend on bash. Add the missing dependency / dependencies to resolve the warning.
* Setting DEPENDS_${PN} anywhere (typically in a recipe) will now trigger an error - this is invalid, as DEPENDS is not a package-specific variable (unlike RDEPENDS). Set DEPENDS instead.
* systemd is currently known not to work well with the musl C library as upstream only officially supports linking it with glibc. Thus, a warning will now be shown when building systemd in conjunction with musl.
 
== Miscellaneous ==


* Several explicit "run this task for all recipes in the dependency tree" tasks (such as fetchall, checkuriall, and the *all tasks provided by the distrodata and archiver classes) have now been removed as there is a bitbake option to do this for any arbitrary task, for example:
* The gnome class has been removed, as it did not do very much anymore. Recipes that previously inherited this class should be updated to do the following:
bitbake <target> -c fetchall
inherit gnomebase gtk-icon-cache gconf mime
should now be replaced with
* The meta/recipes-kernel/linux/linux-dtb.inc file has been removed. It was previously deprecated (in favour of setting KERNEL_DEVICETREE in any kernel recipe) and only produced a warning. Remove any include/require statements pointing to this file.
bitbake <target> --runall=fetch
* TARGET_CFLAGS, TARGET_CPPFLAGS, TARGET_CXXFLAGS, and TARGET_LDFLAGS are no longer exported to the external environment. This has not required changes to any recipes, but if for some reason the software being built by one of your recipes is expecting these variables to be set then it will now fail, and you will need to either export the variable(s) in the recipe or change the scripts so that that isn't necessary.
* The host distro identifier as used in NATIVELSBSTRING (when not using uninative) and SANITY_TESTED_DISTROS is now always lowercased even if it does not contain a version number.
* In the base-files recipe, writing the hostname into /etc/hosts and /etc/hostname is now done within the main do_install function rather than do_install_basefilesissue, so that do_install_basefilesissue can be more easily overridden without having to duplicate the hostname functionality. If you have done the latter (e.g. in a base-files bbappend) then you should remove it from your customised do_install_basefilesissue function.
* The wic --expand command-line option now uses commas to separate key:value pairs rather than hyphens, as was documented in the command-line help. Any scripts or commands where you use wic --expand with multiple key:value pairs will need to be updated.
* UEFI image variable settings have been moved from various places to a central conf/image-uefi.conf. However, this should not influence any existing configuration as the meta/conf/image-uefi.conf in the core metadata sets defaults that can be overridden in the same manner as before.
* conf/distro/include/world-broken.inc has been removed - where we need to disable certain recipes when using the musl C library, individual recipes now have COMPATIBLE_HOST_libc-musl set with a comment explaining why.

Latest revision as of 21:32, 22 October 2019

This page should be used to keep track of items which should be added to the migration guide in the YP Reference Manual. It's a living document for the life of a development cycle and by M4 should represent a significant proportion of items that are worthy of note in the migration guide.

Once the migration guide for a release has been completed the contents of this page should be cleared out.

3.0 Migration Guide items

Init system selection

Changing the init system manager previously required setting a number of different variables; this can now be accomplished by setting the INIT_MANAGER variable and corresponding include files (conf/distro/include/init-manager-*.conf); include files are provided for four values - "none", "sysvinit", "systemd" and "mdev-busybox". The default value "none" for INIT_MANAGER should allow your current settings to continue working, but it is advisable to set INIT_MANAGER explicitly.

LSB support removed

LSB as a standard isn't current, and isn't well suited to embedded applications. Support may be continued in a separate layer if needed but at present it has been removed from the core.

Following on from this change, the poky-lsb derivative distribution configuration that was also used for testing alternative configurations has been replaced with a poky-altcfg distribution that has LSB parts removed.

Removed recipes

  • core-image-lsb-dev: part of removed LSB support
  • core-image-lsb: part of removed LSB support
  • core-image-lsb-sdk: part of removed LSB support
  • cve-check-tool: functionally replaced by cve-update-db recipe and cve-check class
  • eglinfo: no longer maintained. eglinfo from mesa-demos is an adequate and maintained alternative.
  • gcc-8.3: version 8.3 removed (replaced by 9.2)
  • gnome-themes-standard: only needed by gtk+ 2.x which has been removed.
  • gtk+: GTK+ 2 is obsolete (replaced by gtk+3)
  • irda-utils: obsolete - IrDA support has been removed from the Linux kernel in version 4.17 and later.
  • libnewt-python: libnewt Python support merged into main libnewt recipe
  • libsdl: replaced by newer libsdl2
  • libx11-diet: obsolete
  • libxx86dga: remove obsolete client libary
  • libxx86misc: remove this now redundant library
  • linux-yocto: version 5.0 removed (5.2 / 4.19 present)
  • lsbinitscripts: part of removed LSB support
  • lsb: part of removed LSB support
  • lsbtest: part of removed LSB support
  • openssl10: replaced by newer openssl 1.1
  • packagegroup-core-lsb: part of removed LSB support
  • python-nose: remove the python 2.x version of the recipe
  • python-numpy: remove the python 2.x version of the recipe
  • python-scons: remove the python 2.x version of the recipe
  • source-highlight: no longer needed
  • stress: replaced by stress-ng
  • vulkan: split into vulkan-loader, vulkan-headers and vulkan-tools
  • weston-conf: functionality moved to weston-init

Packaging changes

  • The epiphany browser has been dropped from packagegroup-self-hosted as it has not been needed inside build-appliance-image for a long time and was causing resource problems.
  • libcap-ng python support has been moved to a separate libcap-ng-python recipe to streamline the build process when the python bindings aren't needed
  • libdrm now packages the amdgpu.ids file into a separate libdrm-amdgpu package
  • python3: the runpy module is now in the python3-core package as it is required to support the common "python3 -m" command usage.
  • distcc now provides separate distcc-client and distcc-server packages as typically one or the other are needed, rather than both.
  • python*-setuptools recipes now separately package the pkg_resources module in a python-pkg-resources / python3-pkg-resources package as the module is useful independent of the rest of the setuptools package. The main python-setuptools / python3-setuptools package depends on this new package so you should only need to update dependencies unless you want to take advantage of the increased granularity.

CVE checking

cve-check-tool has been functionally replaced by a new cve-update-db recipe and functionality built into the cve-check class. The result uses NVD JSON data feeds rather than the deprecated XML feeds that cve-check-tool was using, supports CVSSv3 scoring and makes other improvements.

Additionally, the CVE_CHECK_CVE_WHITELIST variable has been replaced by CVE_CHECK_WHITELIST.

Bitbake changes

  • addtask statements now properly validate dependent tasks - previously an invalid task here would be silently ignored, now it will generate a warning.
  • Other invalid addtask and deltask usages will now trigger warnings (multiple target tasks arguments with addtask / deltask, multiple before/after clauses)
  • The "multiconfig" prefix is now shortened to "mc"; "multiconfig" will continue to work, however it may be removed in a future release.
  • bitbake -g no longer generates a recipe-depends.dot file as the contents (a reprocessed version of task-depends.dot) were confusing.
  • The bb.build.FuncFailed exception, previously raised by bb.build.exec_func() when certain other exceptions have occurred, has been removed. The real underlying exceptions will be raised instead. If you have calls to bb.build.exec_func() in custom classes or tinfoil-using scripts, any references to bb.build.FuncFailed should be cleaned up.
  • Additionally, the bb.build.exec_func() no longer accepts the "pythonexception" parameter - it now always raises exceptions. Remove this argument in any calls to bb.build.exec_func() in custom classes or scripts.
  • The BB_SETSCENE_VERIFY_FUNCTION2 is no longer used - in the unlikely event that you have any references to it, they should be removed.
  • The RunQueueExecuteScenequeue and RunQueueExecuteTasks events have been removed since setscene tasks are now executed as part of the normal runqueue. Any event handling code in custom classes or scripts that handles these two events will need to be updated.
  • The arguments passed to functions used with BB_HASHCHECK_FUNCTION have changed. If you are using own custom hash check function, see http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=40a5e193c4ba45c928fccd899415ea56b5417725 for details.
  • Task specifications in BB_TASKDEPDATA and class implementations used in signature generator classes now use "<fn>:<task>" everywhere rather than the "." delimiter that was being used in some places. This makes it consistent with everywhere else in the code. Custom signature generator classes and code that reads BB_TASKDEPDATA will need to be updated to use ':' as a separator rather than '.'.

Sanity checks

  • SRC_URI is now checked for usage of two problematic items:
    1. "${PN}" - instead "${BPN}" should be used to avoid problems when PN is prefixed or suffixed e.g. with multiconfig.
    2. github archive tarballs - these are not guaranteed to be stable and thus it is likely that they will be refreshed and thus the SRC_URI checksums will fail to apply. It is recommended that you fetch either an official release tarball or a specific revision from the actual git repository instead.
    Either one of these will now trigger a warning by default. If you wish to disable this check, remove src-uri-bad from WARN_QA.
  • The file-rdeps runtime dependency check no longer expands RDEPENDS recursively as there is no mechanism to ensure they can be fully computed, and thus races sometimes resulted in errors showing up and sometimes not. Thus you may now see errors for missing runtime dependencies that were previously satisfied recursively e.g. package A contains a shell script starting with #!/bin/bash but has no dependency on bash, but depends on package B that does depend on bash. Add the missing dependency / dependencies to resolve the warning.
  • Setting DEPENDS_${PN} anywhere (typically in a recipe) will now trigger an error - this is invalid, as DEPENDS is not a package-specific variable (unlike RDEPENDS). Set DEPENDS instead.
  • systemd is currently known not to work well with the musl C library as upstream only officially supports linking it with glibc. Thus, a warning will now be shown when building systemd in conjunction with musl.

Miscellaneous

  • The gnome class has been removed, as it did not do very much anymore. Recipes that previously inherited this class should be updated to do the following:
inherit gnomebase gtk-icon-cache gconf mime
  • The meta/recipes-kernel/linux/linux-dtb.inc file has been removed. It was previously deprecated (in favour of setting KERNEL_DEVICETREE in any kernel recipe) and only produced a warning. Remove any include/require statements pointing to this file.
  • TARGET_CFLAGS, TARGET_CPPFLAGS, TARGET_CXXFLAGS, and TARGET_LDFLAGS are no longer exported to the external environment. This has not required changes to any recipes, but if for some reason the software being built by one of your recipes is expecting these variables to be set then it will now fail, and you will need to either export the variable(s) in the recipe or change the scripts so that that isn't necessary.
  • The host distro identifier as used in NATIVELSBSTRING (when not using uninative) and SANITY_TESTED_DISTROS is now always lowercased even if it does not contain a version number.
  • In the base-files recipe, writing the hostname into /etc/hosts and /etc/hostname is now done within the main do_install function rather than do_install_basefilesissue, so that do_install_basefilesissue can be more easily overridden without having to duplicate the hostname functionality. If you have done the latter (e.g. in a base-files bbappend) then you should remove it from your customised do_install_basefilesissue function.
  • The wic --expand command-line option now uses commas to separate key:value pairs rather than hyphens, as was documented in the command-line help. Any scripts or commands where you use wic --expand with multiple key:value pairs will need to be updated.
  • UEFI image variable settings have been moved from various places to a central conf/image-uefi.conf. However, this should not influence any existing configuration as the meta/conf/image-uefi.conf in the core metadata sets defaults that can be overridden in the same manner as before.
  • conf/distro/include/world-broken.inc has been removed - where we need to disable certain recipes when using the musl C library, individual recipes now have COMPATIBLE_HOST_libc-musl set with a comment explaining why.