poky: reset subtree on master HEAD(a88251b3e7)

As part of the last subtree update, I used master-next as the
subtree basis because there was a fix we needed in order to get QEMU
to pass.  I didn't realize that master-next deviated (because they use
to just have short-term patches in it).  Reset the content to the same
fix but from the master branch.

Change-Id: Ic7d2f0ac42e9da3eb263586b26ba56d8798d5bcf
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/poky/bitbake/bin/bitbake b/poky/bitbake/bin/bitbake
index f2d168c..382983e 100755
--- a/poky/bitbake/bin/bitbake
+++ b/poky/bitbake/bin/bitbake
@@ -27,7 +27,7 @@
 
 bb.utils.check_system_locale()
 
-__version__ = "2.7.3"
+__version__ = "2.9.0"
 
 if __name__ == "__main__":
     if __version__ != bb.__version__:
diff --git a/poky/bitbake/lib/bb/__init__.py b/poky/bitbake/lib/bb/__init__.py
index 768cce84..1501354 100644
--- a/poky/bitbake/lib/bb/__init__.py
+++ b/poky/bitbake/lib/bb/__init__.py
@@ -9,7 +9,7 @@
 # SPDX-License-Identifier: GPL-2.0-only
 #
 
-__version__ = "2.7.3"
+__version__ = "2.9.0"
 
 import sys
 if sys.version_info < (3, 8, 0):
diff --git a/poky/bitbake/lib/bb/siggen.py b/poky/bitbake/lib/bb/siggen.py
index 0421885..8ab08ec 100644
--- a/poky/bitbake/lib/bb/siggen.py
+++ b/poky/bitbake/lib/bb/siggen.py
@@ -582,7 +582,11 @@
 
             yield
         finally:
-            os.environ = orig_env
+            for k, v in self.env.items():
+                if k in orig_env:
+                    os.environ[k] = orig_env[k]
+                else:
+                    del os.environ[k]
 
     @contextmanager
     def client(self):
diff --git a/poky/bitbake/lib/hashserv/client.py b/poky/bitbake/lib/hashserv/client.py
index b269879..0b254be 100644
--- a/poky/bitbake/lib/hashserv/client.py
+++ b/poky/bitbake/lib/hashserv/client.py
@@ -27,9 +27,7 @@
 
     async def setup_connection(self):
         await super().setup_connection()
-        cur_mode = self.mode
         self.mode = self.MODE_NORMAL
-        await self._set_mode(cur_mode)
         if self.username:
             # Save off become user temporarily because auth() resets it
             become = self.saved_become_user
@@ -38,13 +36,20 @@
             if become:
                 await self.become_user(become)
 
-    async def send_stream(self, msg):
+    async def send_stream(self, mode, msg):
         async def proc():
+            await self._set_mode(mode)
             await self.socket.send(msg)
             return await self.socket.recv()
 
         return await self._send_wrapper(proc)
 
+    async def invoke(self, *args, **kwargs):
+        # It's OK if connection errors cause a failure here, because the mode
+        # is also reset to normal on a new connection
+        await self._set_mode(self.MODE_NORMAL)
+        return await super().invoke(*args, **kwargs)
+
     async def _set_mode(self, new_mode):
         async def stream_to_normal():
             await self.socket.send("END")
@@ -84,14 +89,12 @@
         self.mode = new_mode
 
     async def get_unihash(self, method, taskhash):
-        await self._set_mode(self.MODE_GET_STREAM)
-        r = await self.send_stream("%s %s" % (method, taskhash))
+        r = await self.send_stream(self.MODE_GET_STREAM, "%s %s" % (method, taskhash))
         if not r:
             return None
         return r
 
     async def report_unihash(self, taskhash, method, outhash, unihash, extra={}):
-        await self._set_mode(self.MODE_NORMAL)
         m = extra.copy()
         m["taskhash"] = taskhash
         m["method"] = method
@@ -100,7 +103,6 @@
         return await self.invoke({"report": m})
 
     async def report_unihash_equiv(self, taskhash, method, unihash, extra={}):
-        await self._set_mode(self.MODE_NORMAL)
         m = extra.copy()
         m["taskhash"] = taskhash
         m["method"] = method
@@ -108,18 +110,15 @@
         return await self.invoke({"report-equiv": m})
 
     async def get_taskhash(self, method, taskhash, all_properties=False):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke(
             {"get": {"taskhash": taskhash, "method": method, "all": all_properties}}
         )
 
     async def unihash_exists(self, unihash):
-        await self._set_mode(self.MODE_EXIST_STREAM)
-        r = await self.send_stream(unihash)
+        r = await self.send_stream(self.MODE_EXIST_STREAM, unihash)
         return r == "true"
 
     async def get_outhash(self, method, outhash, taskhash, with_unihash=True):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke(
             {
                 "get-outhash": {
@@ -132,27 +131,21 @@
         )
 
     async def get_stats(self):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"get-stats": None})
 
     async def reset_stats(self):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"reset-stats": None})
 
     async def backfill_wait(self):
-        await self._set_mode(self.MODE_NORMAL)
         return (await self.invoke({"backfill-wait": None}))["tasks"]
 
     async def remove(self, where):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"remove": {"where": where}})
 
     async def clean_unused(self, max_age):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"clean-unused": {"max_age_seconds": max_age}})
 
     async def auth(self, username, token):
-        await self._set_mode(self.MODE_NORMAL)
         result = await self.invoke({"auth": {"username": username, "token": token}})
         self.username = username
         self.password = token
@@ -160,7 +153,6 @@
         return result
 
     async def refresh_token(self, username=None):
-        await self._set_mode(self.MODE_NORMAL)
         m = {}
         if username:
             m["username"] = username
@@ -174,34 +166,28 @@
         return result
 
     async def set_user_perms(self, username, permissions):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke(
             {"set-user-perms": {"username": username, "permissions": permissions}}
         )
 
     async def get_user(self, username=None):
-        await self._set_mode(self.MODE_NORMAL)
         m = {}
         if username:
             m["username"] = username
         return await self.invoke({"get-user": m})
 
     async def get_all_users(self):
-        await self._set_mode(self.MODE_NORMAL)
         return (await self.invoke({"get-all-users": {}}))["users"]
 
     async def new_user(self, username, permissions):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke(
             {"new-user": {"username": username, "permissions": permissions}}
         )
 
     async def delete_user(self, username):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"delete-user": {"username": username}})
 
     async def become_user(self, username):
-        await self._set_mode(self.MODE_NORMAL)
         result = await self.invoke({"become-user": {"username": username}})
         if username == self.username:
             self.saved_become_user = None
@@ -210,15 +196,12 @@
         return result
 
     async def get_db_usage(self):
-        await self._set_mode(self.MODE_NORMAL)
         return (await self.invoke({"get-db-usage": {}}))["usage"]
 
     async def get_db_query_columns(self):
-        await self._set_mode(self.MODE_NORMAL)
         return (await self.invoke({"get-db-query-columns": {}}))["columns"]
 
     async def gc_status(self):
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"gc-status": {}})
 
     async def gc_mark(self, mark, where):
@@ -231,7 +214,6 @@
         kept. In addition, any new entries added to the database after this
         command will be automatically marked with "mark"
         """
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"gc-mark": {"mark": mark, "where": where}})
 
     async def gc_sweep(self, mark):
@@ -242,7 +224,6 @@
         It is recommended to clean unused outhash entries after running this to
         cleanup any dangling outhashes
         """
-        await self._set_mode(self.MODE_NORMAL)
         return await self.invoke({"gc-sweep": {"mark": mark}})
 
 
diff --git a/poky/documentation/dev-manual/custom-distribution.rst b/poky/documentation/dev-manual/custom-distribution.rst
index 47faed0..0bc386d 100644
--- a/poky/documentation/dev-manual/custom-distribution.rst
+++ b/poky/documentation/dev-manual/custom-distribution.rst
@@ -4,10 +4,16 @@
 ******************************
 
 When you build an image using the Yocto Project and do not alter any
-distribution :term:`Metadata`, you are
-creating a Poky distribution. If you wish to gain more control over
-package alternative selections, compile-time options, and other
-low-level configurations, you can create your own distribution.
+distribution :term:`Metadata`, you are using the Poky distribution.
+Poky is explicitly a *reference* distribution for testing and
+development purposes. It enables most hardware and software features
+so that they can be tested, but this also means that from a security
+point of view the attack surface is very large. Additionally, at some
+point it is likely that you will want to gain more control over package
+alternative selections, compile-time options, and other low-level
+configurations. For both of these reasons, if you are using the Yocto
+Project for production use then you are strongly encouraged to create
+your own distribution.
 
 To create your own distribution, the basic steps consist of creating
 your own distribution layer, creating your own distribution
@@ -107,3 +113,23 @@
    For information on append files, see the
    ":ref:`dev-manual/layers:appending other layers metadata with your layer`"
    section.
+
+Copying and modifying the Poky distribution
+===========================================
+
+Instead of creating a custom distribution from scratch as per above, you may
+wish to start your custom distribution configuration by copying the Poky
+distribution provided within the ``meta-poky`` layer and then modifying it.
+This is fine, however if you do this you should keep the following in mind:
+
+-  Every reference to Poky needs to be updated in your copy so that it
+   will still apply. This includes override usage within files (e.g. ``:poky``)
+   and in directory names. This is a good opportunity to evaluate each one of
+   these customizations to see if they are needed for your use case.
+
+-  Unless you also intend to use them, the ``poky-tiny``, ``poky-altcfg`` and
+   ``poky-bleeding`` variants and any references to them can be removed.
+
+-  More generally, the Poky distribution configuration enables a lot more
+   than you likely need for your production use case. You should evaluate *every*
+   configuration choice made in your copy to determine if it is needed.
diff --git a/poky/documentation/dev-manual/disk-space.rst b/poky/documentation/dev-manual/disk-space.rst
index 6d1638a..efca826 100644
--- a/poky/documentation/dev-manual/disk-space.rst
+++ b/poky/documentation/dev-manual/disk-space.rst
@@ -49,7 +49,7 @@
 covering multiple releases. It won't work either on limited environments
 such as BSD based NAS::
 
-   sstate-cache-management.sh --remove-duplicated --cache-dir=build/sstate-cache
+   sstate-cache-management.py --remove-duplicated --cache-dir=sstate-cache
 
 This command will ask you to confirm the deletions it identifies.
 Run ``sstate-cache-management.sh`` for more details about this script.
diff --git a/poky/documentation/migration-guides/migration-5.0.rst b/poky/documentation/migration-guides/migration-5.0.rst
index 888a1c6..cf41330 100644
--- a/poky/documentation/migration-guides/migration-5.0.rst
+++ b/poky/documentation/migration-guides/migration-5.0.rst
@@ -80,7 +80,8 @@
 Deprecated variables
 ~~~~~~~~~~~~~~~~~~~~
 
-No variables have been deprecated in this release.
+-  ``CVE_CHECK_IGNORE`` should be replaced with :term:`CVE_STATUS`
+
 
 .. _migration-5.0-removed-variables:
 
@@ -89,13 +90,14 @@
 
 The following variables have been removed:
 
--  ``DEPLOY_DIR_TAR``.
--  ``PYTHON_PN``: Python 2 has been removed, leaving Python 3 as the sole
-   major version. Therefore, an abstraction to differentiate both versions is
+-  ``DEPLOY_DIR_TAR``: no longer needed since the package_tar class was removed in 4.2.
+-  ``PYTHON_PN``: Python 2 has previously been removed, leaving Python 3 as the sole
+   major version. Therefore, this abstraction to differentiate both versions is
    no longer needed.
--  ``oldincludedir``.
+-  ``oldincludedir``
 -  ``USE_L10N``: previously deprecated, and now removed.
--  ``CVE_SOCKET_TIMEOUT``.
+-  ``CVE_SOCKET_TIMEOUT``
+-  ``SERIAL_CONSOLES_CHECK`` - use :term:`SERIAL_CONSOLES` instead as all consoles specified in the latter are checked for their existence before a ``getty`` is started.
 
 .. _migration-5.0-removed-recipes:
 
@@ -105,9 +107,10 @@
 The following recipes have been removed in this release:
 
 -  ``libcroco``: deprecated and archived by the Gnome Project.
+-  ``liberror-perl``: unmaintained and no longer needed - moved to meta-perl.
 -  ``linux-yocto``: version 6.1 (version 6.6 provided instead).
--  ``zvariant``: fails to build with newer Rust.
 -  ``systemtap-uprobes``: obsolete.
+-  ``zvariant``: fails to build with newer Rust.
 
 .. _migration-5.0-removed-classes:
 
@@ -125,10 +128,75 @@
 passed to QEMU, since its documentation recommends not using them with ``-cpu``
 option. Therefore, from now on, ``Nehalem`` model is used instead.
 
+
+ipk packaging changes
+~~~~~~~~~~~~~~~~~~~~~
+
+ipk packaging (using ``opkg``) now uses ``zstd`` compression instead of ``xz``
+for better compression and performance. This does mean that ``.ipk`` packages
+built using the 5.0 release requires Opkg built with zstd enabled --- naturally
+this is the case in 5.0, but at least by default these packages will not be
+usable on older systems where Opkg does not have zstd enabled at build time.
+
+Additionally, the internal dependency solver in Opkg is now deprecated --- it
+is still available in this release but will trigger a warning if selected.
+The default has been the external ``libsolv`` solver for some time, but if you
+have explicitly removed that from :term:`PACKAGECONFIG` for Opkg to
+select the internal solver, you should plan to switch to ``libsolv`` in the
+near future (by including ``libsolv`` your custom :term:`PACKAGECONFIG` value
+for Opkg, or reverting to the default value).
+
+
+motd message when using ``DISTRO = "poky"``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The default ``poky`` :term:`DISTRO` is explicitly a *reference* distribution
+for testing and development purposes.  It enables most hardware and software
+features so that they can be tested, but this also means that
+from a security point of view the attack surface is very large.
+
+We encourage anyone using the Yocto Project for production use to create
+their own distribution and not use Poky. To encourage this behaviour
+further, in 5.0 a warning has been added to ``/etc/motd`` when Poky is used
+so that the developer will see it when they log in. If you are creating your
+own distribution this message will not show up.
+
+For information on how to create your own distribution, see
+":ref:`dev-manual/custom-distribution:creating your own distribution`".
+
 .. _migration-5.0-misc-changes:
 
 Miscellaneous changes
 ~~~~~~~~~~~~~~~~~~~~~
 
--  ``bitbake-whatchanged`` script was removed.
+-  ``bitbake-whatchanged`` script was removed as it was broken and unmaintained.
+
+-  ``scripts/sstate-cache-management.sh`` has been replaced by
+   ``scripts/sstate-cache-management.py``, a more performant Python-based version.
+
+-  The ``bmap-tools`` recipe has been renamed to ``bmaptool``.
+
+-  ``gpgme`` has had Python binding support disabled since upstream does not
+   support Python 3.12 yet. This will be fixed in future once it is fixed upstream.)
+
+-  A warning will now be shown if the ``virtual/`` prefix is used in runtime
+   contexts (:term:`RDEPENDS` / :term:`RPROVIDES`) ---
+   See :ref:`virtual-slash <qa-check-virtual-slash>` for details.
+
+-  ``recipetool`` now prefixes the names of recipes created for Python modules
+   with ``python3-``.
+
+-  The :ref:`ref-classes-cve-check` class no longer produces a warning for
+   remote patches --- it only logs a note and does not try to fetch the patch
+   in order to scan it for issues or CVE numbers. However, CVE number
+   references in remote patch file names will now be picked up.
+
+-  The values of :term:`PE` and :term:`PR` have been dropped from
+   ``-f{file,macro,debug}-prefix-map``, in order to avoid unnecessary churn
+   in debugging symbol paths when the version is bumped. This is unlikely to
+   cause issues, but if you are paying attention to the debugging source path
+   (e.g. in recipes that need to manipulate these files during packaging) then
+   you will notice the difference. A new :term:`TARGET_DBGSRC_DIR` variable is
+   provided to make this easier.
+
 -  ``ccache`` no longer supports FORTRAN.
diff --git a/poky/documentation/migration-guides/release-notes-5.0.rst b/poky/documentation/migration-guides/release-notes-5.0.rst
index b5fba13..4bd9125 100644
--- a/poky/documentation/migration-guides/release-notes-5.0.rst
+++ b/poky/documentation/migration-guides/release-notes-5.0.rst
@@ -23,6 +23,8 @@
    -  :term:`EFI_UKI_PATH`, :term:`EFI_UKI_DIR`: define the location of UKI
       image in the EFI System partition.
 
+   -  :term:`TARGET_DBGSRC_DIR`: specifies the target path to debug source files
+
 -  Architecture-specific enhancements:
 
    -  ``genericarm64``: a new :term:`MACHINE` to represent a 64-bit General Arm
@@ -33,6 +35,8 @@
    -  ``arch-armv9``: remove CRC and SVE tunes, since FEAT_CRC32 is now mandatory
       and SVE/SVE2 are enabled by default in GCC's ``-march=armv9-a``.
 
+   -  ``arm/armv*``: add all of the additional Arm tunes in GCC 13.2.0
+
 -  Kernel-related enhancements:
 
    -  The default kernel is the current LTS (6.6).
@@ -145,6 +149,10 @@
    -  ``nativesdk``: prevent :term:`MACHINE_FEATURES` and :term:`DISTRO_FEATURES`
       from being backfilled.
 
+   -  Support for ``riscv64`` as an SDK host architecture
+
+   -  Extend recipes to ``nativesdk``: ``acpica``, ``libpcap``, ``python3-setuptools-rust``
+
 -  Testing:
 
    -  Add an optional ``unimplemented-ptest`` QA warning to detect upstream
@@ -155,15 +163,30 @@
 
    -  ``oeqa``, ``oe-selftest``: add test cases for Maturin (SDK and runtime).
 
--  Utility script changes:
+   -  Enable ptests for ``python3-attrs``, ``python3-pyyaml``, ``xz``
 
-   -  New ``recipetool/create_go.py`` script added to support Go recipe creation
+-  Utility script changes:
 
    -  ``oe-init-build-env`` can generate a initial configuration (``.vscode``)
       for VSCode and its "Yocto Project BitBake" extension.
 
+   -  The ``sstate-cache-management`` script has been rewritten in python for better performance and maintainability
+
+   -  ``bitbake-layers``: added an option to update the reference of repositories in layer setup
+
 -  BitBake improvements:
 
+   -  New ``inherit_defer`` statement which works as
+      :ref:`inherit <bitbake:bitbake-user-manual/bitbake-user-manual-metadata:\`\`inherit\`\` directive>`
+      does, except that it is only evaluated at the end of parsing
+      --- recommended where a conditional expression is used, e.g.::
+
+         inherit_defer ${@bb.utils.contains('PACKAGECONFIG', 'python', 'python3targetconfig', '', d)}
+
+      This allows conditional expressions to be evaluated 'late' meaning changes
+      to the variable after the line is parsed will take effect - with inherit this
+      is not the case.
+
    -  Add support for :term:`BB_LOADFACTOR_MAX`, so Bitbake can stop running
       extra tasks if the system load is too high, especially in distributions
       where ``/proc/pressure`` is disabled.
@@ -179,10 +202,52 @@
    -  ``bitbake.conf``: add ``runtimedir`` to represent the path to the runtime
       state directory (i.e., ``/run``).
 
+   -  Allow to disable colored text output through the
+      `NO_OUTPUT <https://no-color.org/>`__ environment variable.
+
+   -  ``git-make-shallow`` script: add support for Git's ``safe.bareRepository=explicit``
+      configuration setting.
+
+-  devtool improvements:
+
+   -  Introduce a new ``ide-sdk`` plugin to generate a configuration to use
+      the eSDK through an IDE.
+
+   -  Add ``--no-pypi`` option for Python projects that are not hosted on PyPI.
+
+   -  Add support for Git submodules.
+
+   -  ``ide``: ``vscode``: generate files from recipe sysroots and debug the
+      root filesystem in read-only mode to avoid confusion.
+
+   -  ``modify``: add support for multiple sources in :term:`SRC_URI`.
+
+   -  Support plugins within plugins.
+
+-  recipetool improvements:
+
+   - ``appendsrcfile(s)``: add a mode to update the recipe itself.
+
+   - ``appendsrcfile(s)``: add ``--dry-run`` mode.
+
+   - ``create``: add handler to create Go recipes.
+
+   - ``create``: improve identification of licenses.
+
+   - ``create``: add support for modern Python PEP-517 build systems including
+     hatchling, maturin, meson-python.
+
+   - ``create``: add PyPi support.
+
+   - ``create``: prefix created Python recipes with ``python3-``.
+
 -  Packaging changes:
 
    -  ``package_rpm``: the RPM package compressor's mode can now be overriden.
 
+   -  ipk packaging (using ``opkg``) now uses ``zstd`` compression instead of
+      ``xz`` for better compression and performance.
+
 -  Security improvements:
 
    -  Improve incremental CVE database download from NVD. Rejected CVEs are
@@ -211,6 +276,11 @@
    -  Systemd's following :term:`PACKAGECONFIG` options were added:
       ``cryptsetup-plugins``, ``no-ntp-fallback``, and ``p11kit``.
 
+   -  New PACKAGECONFIG options added to ``libarchive``, ``libinput``,
+      ``libunwind``, ``mesa``, ``mesa-gl``, ``openssh``, ``perf``,
+      ``python3-pyyaml``, ``qemu``, ``rpm``, ``shadow``, ``strace``,
+      ``syslinux``, ``systemd``, ``vte``, ``webkitgtk``, ``xserver-xorg``.
+
    -  ``systemd-boot`` can, from now on, be compiled as ``native``, thus
       providing ``ukify`` tool to build UKI images.
 
@@ -223,34 +293,614 @@
 
    -  Disable strace support of bluetooth by default.
 
-   -  ``openssh`` now has a Systemd service: ``sshd.service``.
+   -  ``openssh`` now has a systemd service: ``sshd.service``.
+
+   -  The :ref:`ref-classes-python_mesonpy` class was added (moved in from
+      ``meta-python``) to support Python package builds using the meson-python
+      PEP-517 build backend.
+
+   -  Support for unpacking ``.7z`` archives in :term:`SRC_URI` using ``p7zip``.
+
+   -  Add minimal VS Code configuration to avoid VS Code's indexer from choking
+      on build directories.
+
 
 Known Issues in 5.0
 ~~~~~~~~~~~~~~~~~~~
 
--  N/A
+-  ``gpgme`` has had Python binding support disabled since upstream does not yet support Python 3.12.
+
 
 Recipe License changes in 5.0
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 The following corrections have been made to the :term:`LICENSE` values set by recipes:
 
--  ``systemd``: make the scope of ``LGPL`` more accurate (``LGPL-2.1`` -> ``LGPL-2.1-or-later``)
--  ``libsystemd``: set its own :term:`LICENSE` value (``LGPL-2.1-or-later``) to add more granularity
+-  ``elfutils``: split license for libraries & backend and utilities.
+-  ``ghostscript``: correct :term:`LICENSE` to ``AGPL-3.0-or-later``.
+-  ``libsystemd``: set its own :term:`LICENSE` value (``LGPL-2.1-or-later``) to add more granularity.
+-  ``libtest-warnings-perl``: update :term:`LICENSE` ``Artistic-1.0`` to ``Artistic-1.0-Perl``.
+-  ``linux-firmware``: set package :term:`LICENSE` appropriately for ``carl9170``, ``rockchip`` and ``powerpr``.
+-  ``newlib``: add license ``Apache-2.0-with-LLVM-exception``.
+-  ``python3-poetry-core``: add license ``BSD-3-Clause`` for ``fastjsonschema``.
+-  ``systemd``: make the scope of ``LGPL`` more accurate (``LGPL-2.1`` -> ``LGPL-2.1-or-later``).
+-  ``util-linux``: add ``GPL-1.0-or-later`` license for fdisk and ``MIT`` license for ``flock``.
+-  ``zstd``: set to dual-licensed ``BSD-3-Clause`` or ``GPL-2.0-only``.
 
 Security Fixes in 5.0
 ~~~~~~~~~~~~~~~~~~~~~
 
+-  avahi: :cve:`2023-1981`, :cve:`2023-38469`, :cve:`2023-38470`, :cve:`2023-38471`, :cve:`2023-38469`, :cve:`2023-38470`, :cve:`2023-38471`, :cve:`2023-38472`, :cve:`2023-38473`
+-  bind: :cve:`2023-4408`, :cve:`2023-5517`, :cve:`2023-5679`, :cve:`2023-50387`
+-  bluez5: :cve:`2023-45866`
+-  coreutils: :cve:`2024-0684`
+-  cups: :cve:`2023-4504`
+-  curl: :cve:`2023-46218`
+-  expat: :cve:`2024-28757`
+-  gcc: :cve:`2023-4039`
+-  glibc: :cve:`2023-5156`, :cve:`2023-0687`
+-  gnutls: :cve:`2024-0553`, :cve:`2024-0567`, :cve:`2024-28834`, :cve:`2024-28835`
+-  go: :cve:`2023-45288`
+-  grub: :cve:`2023-4692`, :cve:`2023-4693`
+-  grub2: :cve:`2023-4001` (ignored), :cve:`2024-1048` (ignored)
+-  libgit2: :cve:`2024-24575`, :cve:`2024-24577`
+-  libsndfile1: :cve:`2022-33065`
+-  libssh2: :cve:`2023-48795`
+-  libuv: :cve:`2024-24806`
+-  libxml2: :cve:`2023-45322` (ignored)
+-  linux-yocto/6.6: :cve:`2020-16119`
+-  openssh: :cve:`2023-48795`, :cve:`2023-51384`, :cve:`2023-51385`
+-  openssl: :cve:`2023-5363`, :cve:`2023-5678`, :cve:`2023-6129`, :cve_mitre:`2023-6237`, :cve:`2024-0727`
+-  perl: :cve:`2023-47100`
+-  pixman: :cve:`2023-37769` (ignored)
+-  python3-cryptography{-vectors}: :cve:`2023-49083`, :cve:`2024-26130`
+-  python3-urllib3: :cve:`2023-45803`
+-  shadow: :cve:`2023-4641`
+-  sudo: :cve:`2023-42456`
+-  tiff: :cve:`2023-6228`, :cve:`2023-6277`, :cve:`2023-52355`, :cve:`2023-52356`
+-  vim: :cve:`2023-46246`, :cve:`2023-48231`, :cve:`2023-48232`, :cve:`2023-48233`, :cve:`2023-48234`, :cve:`2023-48235`, :cve:`2023-48236`, :cve:`2023-48237`, :cve:`2024-22667`
+-  wpa-supplicant: :cve:`2023-52160`
+-  xserver-xorg: :cve:`2023-5574`, :cve:`2023-6816`, :cve:`2024-0229`, :cve:`2024-0408`, :cve:`2024-0409`, :cve:`2024-21885`, :cve:`2024-21886`
+-  xwayland: :cve:`2023-5367`, :cve:`2024-0408`, :cve:`2024-0409`, :cve:`2023-6816`, :cve:`2024-0229`, :cve:`2024-21885`, :cve:`2024-21886`
+-  zlib: :cve:`2023-45853` (ignored), :cve:`2023-6992` (ignored)
+
+
 Recipe Upgrades in 5.0
 ~~~~~~~~~~~~~~~~~~~~~~
 
--  go: update 1.20.10 -> 1.22.1
+-  acl 2.3.1 -> 2.3.2
+-  acpica 20230628 -> 20240322
+-  alsa-lib 1.2.10 -> 1.2.11
+-  alsa-tools 1.2.5 -> 1.2.11
+-  alsa-ucm-conf 1.2.10 -> 1.2.11
+-  alsa-utils 1.2.10 -> 1.2.11
+-  appstream 0.16.3 -> 1.0.2
+-  autoconf 2.72c -> 2.72e
+-  bash 5.2.15 -> 5.2.21
+-  bash-completion 2.11 -> 2.12.0
+-  binutils 2.41 -> 2.42
+-  bluez5 5.69 -> 5.72
+-  boost 1.83.0 -> 1.84.0
+-  boost-build-native 1.83.0 -> 1.84.0
+-  btrfs-tools 6.5.1 -> 6.7.1
+-  cairo 1.16.0 -> 1.18.0
+-  cargo 1.70.0 -> 1.75.0
+-  cargo-c-native 0.9.18 -> 0.9.30+cargo-0.77.0
+-  ccache 4.8.3 -> 4.9.1
+-  cmake 3.27.7 -> 3.28.3
+-  cmake-native 3.27.7 -> 3.28.3
+-  createrepo-c 1.0.0 -> 1.0.4
+-  cronie 1.6.1 -> 1.7.1
+-  cross-localedef-native 2.38+git -> 2.39+git
+-  cups 2.4.6 -> 2.4.7
+-  curl 8.4.0 -> 8.7.1
+-  dbus-wait 0.1+git (6cc6077a36fe…) -> 0.1+git (64bc7c8fae61…)
+-  debianutils 5.13 -> 5.16
+-  desktop-file-utils 0.26 -> 0.27
+-  dhcpcd 10.0.2 -> 10.0.6
+-  diffoscope 249 -> 259
+-  diffstat 1.65 -> 1.66
+-  dnf 4.17.0 -> 4.19.0
+-  dos2unix 7.5.1 -> 7.5.2
+-  ed 1.19 -> 1.20.1
+-  efivar 38+39+git -> 39+39+git
+-  elfutils 0.189 -> 0.191
+-  ell 0.60 -> 0.63
+-  enchant2 2.6.2 -> 2.6.7
+-  epiphany 44.6 -> 46.0
+-  erofs-utils 1.6 -> 1.7.1
+-  ethtool 6.5 -> 6.7
+-  eudev 3.2.12 -> 3.2.14
+-  expat 2.5.0 -> 2.6.2
+-  ffmpeg 6.0 -> 6.1.1
+-  fontconfig 2.14.2 -> 2.15.0
+-  gawk 5.2.2 -> 5.3.0
+-  gcr 4.1.0 -> 4.2.0
+-  gdb 13.2 -> 14.2
+-  gettext 0.22 -> 0.22.5
+-  gettext-minimal-native 0.22 -> 0.22.5
+-  gi-docgen 2023.1 -> 2023.3
+-  git 2.42.0 -> 2.44.0
+-  glib-2.0 2.78.3 -> 2.78.4
+-  glib-networking 2.76.1 -> 2.78.1
+-  glibc 2.38+git -> 2.39+git
+-  glibc-locale 2.38 -> 2.39+git
+-  glibc-mtrace 2.38 -> 2.39+git
+-  glibc-scripts 2.38 -> 2.39+git
+-  glibc-testsuite 2.38+git -> 2.39+git
+-  glibc-y2038-tests 2.38+git -> 2.39+git
+-  glslang 1.3.261.1 -> 1.3.275.0
+-  gnu-config 20230216+git -> 20240101+git
+-  gnupg 2.4.3 -> 2.4.4
+-  gnutls 3.8.3 -> 3.8.4
+-  go 1.20.12 -> 1.22.2
+-  go-binary-native 1.20.12 -> 1.22.2
+-  go-native 1.20.12 -> 1.22.2
+-  go-runtime 1.20.12 -> 1.22.2
+-  gpgme 1.22.0 -> 1.23.2
+-  grub 2.06 -> 2.12
+-  grub-efi 2.06 -> 2.12
+-  gsettings-desktop-schemas 44.0 -> 46.0
+-  gst-devtools 1.22.9 -> 1.22.11
+-  gstreamer1.0 1.22.9 -> 1.22.11
+-  gstreamer1.0-libav 1.22.9 -> 1.22.11
+-  gstreamer1.0-omx 1.22.9 -> 1.22.11
+-  gstreamer1.0-plugins-bad 1.22.9 -> 1.22.11
+-  gstreamer1.0-plugins-base 1.22.9 -> 1.22.11
+-  gstreamer1.0-plugins-good 1.22.9 -> 1.22.11
+-  gstreamer1.0-plugins-ugly 1.22.9 -> 1.22.11
+-  gstreamer1.0-python 1.22.9 -> 1.22.11
+-  gstreamer1.0-rtsp-server 1.22.9 -> 1.22.11
+-  gstreamer1.0-vaapi 1.22.9 -> 1.22.11
+-  gtk+3 3.24.38 -> 3.24.41
+-  gtk4 4.12.3 -> 4.14.1
+-  harfbuzz 8.2.2 -> 8.3.0
+-  hwlatdetect 2.5 -> 2.6
+-  icu 73-2 -> 74-1
+-  inetutils 2.4 -> 2.5
+-  init-system-helpers 1.65.2 -> 1.66
+-  iproute2 6.5.0 -> 6.7.0
+-  iptables 1.8.9 -> 1.8.10
+-  iputils 20221126 -> 20240117
+-  iso-codes 4.15.0 -> 4.16.0
+-  iw 5.19 -> 6.7
+-  json-glib 1.6.6 -> 1.8.0
+-  kbd 2.6.3 -> 2.6.4
+-  kexec-tools 2.0.27 -> 2.0.28
+-  kmod 30 -> 31
+-  kmscube git -> 0.0.1+git
+-  libadwaita 1.4.2 -> 1.5.0
+-  libbsd 0.11.7 -> 0.12.1
+-  libcap-ng 0.8.3 -> 0.8.4
+-  libcap-ng-python 0.8.3 -> 0.8.4
+-  libcomps 0.1.19 -> 0.1.20
+-  libdnf 0.71.0 -> 0.73.0
+-  libdrm 2.4.116 -> 2.4.120
+-  libffi 3.4.4 -> 3.4.6
+-  libgit2 1.7.1 -> 1.7.2
+-  libgloss 4.3.0+git -> 4.4.0+git
+-  libgpg-error 1.47 -> 1.48
+-  libhandy 1.8.2 -> 1.8.3
+-  libical 3.0.16 -> 3.0.17
+-  libidn2 2.3.4 -> 2.3.7
+-  libinput 1.24.0 -> 1.25.0
+-  libksba 1.6.4 -> 1.6.6
+-  libmicrohttpd 0.9.77 -> 1.0.1
+-  libnl 3.8.0 -> 3.9.0
+-  libnotify 0.8.2 -> 0.8.3
+-  libpciaccess 0.17 -> 0.18
+-  libpcre2 10.42 -> 10.43
+-  libpng 1.6.40 -> 1.6.42
+-  libproxy 0.5.3 -> 0.5.4
+-  libpsl 0.21.2 -> 0.21.5
+-  librepo 1.16.0 -> 1.17.0
+-  librsvg 2.56.3 -> 2.57.1
+-  libsdl2 2.28.4 -> 2.30.0
+-  libseccomp 2.5.4 -> 2.5.5
+-  libsecret 0.21.1 -> 0.21.4
+-  libsolv 0.7.26 -> 0.7.28
+-  libsoup 3.4.2 -> 3.4.4
+-  libstd-rs 1.70.0 -> 1.75.0
+-  libtest-warnings-perl 0.031 -> 0.033
+-  libtirpc 1.3.3 -> 1.3.4
+-  libubootenv 0.3.4 -> 0.3.5
+-  libunistring 1.1 -> 1.2
+-  liburi-perl 5.21 -> 5.27
+-  libusb1 1.0.26 -> 1.0.27
+-  libuv 1.46.0 -> 1.48.0
+-  libva 2.19.0 -> 2.20.0
+-  libva-initial 2.19.0 -> 2.20.0
+-  libwpe 1.14.1 -> 1.14.2
+-  libxext 1.3.5 -> 1.3.6
+-  libxkbcommon 1.5.0 -> 1.6.0
+-  libxkbfile 1.1.2 -> 1.1.3
+-  libxml-parser-perl 2.46 -> 2.47
+-  libxml2 2.11.7 -> 2.12.5
+-  libxmlb 0.3.14 -> 0.3.15
+-  libxrandr 1.5.3 -> 1.5.4
+-  libxvmc 1.0.13 -> 1.0.14
+-  lighttpd 1.4.71 -> 1.4.74
+-  linux-firmware 20240220 -> 20240312
+-  linux-libc-headers 6.5 -> 6.6
+-  linux-yocto 6.1.78+git, 6.5.13+git -> 6.6.23+git
+-  linux-yocto-dev 6.6+git -> 6.9+git
+-  linux-yocto-rt 6.1.78+git, 6.5.13+git -> 6.6.23+git
+-  linux-yocto-tiny 6.1.78+git, 6.5.13+git -> 6.6.23+git
+-  llvm 17.0.3 -> 18.1.2
+-  lsof 4.98.0 -> 4.99.3
+-  ltp 20230516 -> 20240129
+-  lttng-modules 2.13.10 -> 2.13.12
+-  lttng-ust 2.13.6 -> 2.13.7
+-  lzip 1.23 -> 1.24
+-  makedepend 1.0.8 -> 1.0.9
+-  man-db 2.11.2 -> 2.12.0
+-  man-pages 6.05.01 -> 6.06
+-  mc 4.8.30 -> 4.8.31
+-  mesa 23.2.1 -> 24.0.2
+-  mesa-gl 23.2.1 -> 24.0.2
+-  meson 1.2.2 -> 1.3.1
+-  minicom 2.8 -> 2.9
+-  mmc-utils 0.1+git (613495ecaca9…) -> 0.1+git (b5ca140312d2…)
+-  mpg123 1.31.3 -> 1.32.5
+-  newlib 4.3.0+git -> 4.4.0+git
+-  nghttp2 1.57.0 -> 1.61.0
+-  numactl 2.0.16 -> 2.0.18
+-  ofono 2.1 -> 2.4
+-  opensbi 1.2 -> 1.4
+-  openssh 9.5p1 -> 9.6p1
+-  openssl 3.1.5 -> 3.2.1
+-  opkg 0.6.2 -> 0.6.3
+-  opkg-utils 0.6.2 -> 0.6.3
+-  orc 0.4.34 -> 0.4.38
+-  ovmf edk2-stable202308 -> edk2-stable202402
+-  p11-kit 0.25.0 -> 0.25.3
+-  pango 1.51.0 -> 1.52.0
+-  pciutils 3.10.0 -> 3.11.1
+-  piglit 1.0+gitr (71c21b1157c4…) -> 1.0+gitr (22eaf6a91cfd…)
+-  pkgconf 2.0.3 -> 2.1.1
+-  psplash 0.1+git (44afb7506d43…) -> 0.1+git (ecc191375669…)
+-  ptest-runner 2.4.2+git -> 2.4.3+git
+-  pulseaudio 16.1 -> 17.0
+-  puzzles 0.0+git (2d9e414ee316…) -> 0.0+git (80aac3104096…)
+-  python3 3.11.5 -> 3.12.2
+-  python3-alabaster 0.7.13 -> 0.7.16
+-  python3-attrs 23.1.0 -> 23.2.0
+-  python3-babel 2.12.1 -> 2.14.0
+-  python3-bcrypt 4.0.1 -> 4.1.2
+-  python3-beartype 0.15.0 -> 0.17.2
+-  python3-build 1.0.3 -> 1.1.1
+-  python3-certifi 2023.7.22 -> 2024.2.2
+-  python3-cffi 1.15.1 -> 1.16.0
+-  python3-cryptography 41.0.4 -> 42.0.5
+-  python3-cryptography-vectors 41.0.4 -> 42.0.5
+-  python3-cython 0.29.36 -> 3.0.8
+-  python3-dbusmock 0.29.1 -> 0.31.1
+-  python3-dtschema 2023.7 -> 2024.2
+-  python3-git 3.1.36 -> 3.1.42
+-  python3-gitdb 4.0.10 -> 4.0.11
+-  python3-hatch-fancy-pypi-readme 23.1.0 -> 24.1.0
+-  python3-hatch-vcs 0.3.0 -> 0.4.0
+-  python3-hatchling 1.18.0 -> 1.21.1
+-  python3-hypothesis 6.86.2 -> 6.98.15
+-  python3-idna 3.4 -> 3.6
+-  python3-importlib-metadata 6.8.0 -> 7.0.1
+-  python3-iso8601 2.0.0 -> 2.1.0
+-  python3-jsonschema 4.17.3 -> 4.21.1
+-  python3-license-expression 30.1.1 -> 30.2.0
+-  python3-lxml 4.9.3 -> 5.0.0
+-  python3-mako 1.2.4 -> 1.3.2
+-  python3-markdown 3.4.4 -> 3.5.2
+-  python3-markupsafe 2.1.3 -> 2.1.5
+-  python3-more-itertools 10.1.0 -> 10.2.0
+-  python3-numpy 1.26.0 -> 1.26.4
+-  python3-packaging 23.1 -> 23.2
+-  python3-pathspec 0.11.2 -> 0.12.1
+-  python3-pbr 5.11.1 -> 6.0.0
+-  python3-pip 23.2.1 -> 24.0
+-  python3-pluggy 1.3.0 -> 1.4.0
+-  python3-poetry-core 1.7.0 -> 1.9.0
+-  python3-psutil 5.9.5 -> 5.9.8
+-  python3-pyasn1 0.5.0 -> 0.5.1
+-  python3-pycairo 1.24.0 -> 1.26.0
+-  python3-pycryptodome 3.19.0 -> 3.20.0
+-  python3-pycryptodomex 3.19.0 -> 3.20.0
+-  python3-pygments 2.16.1 -> 2.17.2
+-  python3-pyopenssl 23.2.0 -> 24.0.0
+-  python3-pyrsistent 0.19.3 -> 0.20.0
+-  python3-pytest 7.4.2 -> 8.0.2
+-  python3-pytest-runner 6.0.0 -> 6.0.1
+-  python3-pytz 2023.3 -> 2024.1
+-  python3-ruamel-yaml 0.17.32 -> 0.18.6
+-  python3-scons 4.5.2 -> 4.6.0
+-  python3-setuptools 68.2.2 -> 69.1.1
+-  python3-setuptools-rust 1.7.0 -> 1.9.0
+-  python3-setuptools-scm 7.1.0 -> 8.0.4
+-  python3-spdx-tools 0.8.1 -> 0.8.2
+-  python3-sphinx-rtd-theme 1.3.0 -> 2.0.0
+-  python3-sphinxcontrib-applehelp 1.0.4 -> 1.0.8
+-  python3-sphinxcontrib-devhelp 1.0.2 -> 1.0.6
+-  python3-sphinxcontrib-htmlhelp 2.0.1 -> 2.0.5
+-  python3-sphinxcontrib-qthelp 1.0.3 -> 1.0.7
+-  python3-sphinxcontrib-serializinghtml 1.1.5 -> 1.1.10
+-  python3-subunit 1.4.2 -> 1.4.4
+-  python3-testtools 2.6.0 -> 2.7.1
+-  python3-trove-classifiers 2023.9.19 -> 2024.2.23
+-  python3-typing-extensions 4.8.0 -> 4.10.0
+-  python3-unittest-automake-output 0.1 -> 0.2
+-  python3-urllib3 2.0.7 -> 2.2.1
+-  python3-wcwidth 0.2.6 -> 0.2.13
+-  python3-wheel 0.41.2 -> 0.42.0
+-  qemu 8.1.4 -> 8.2.1
+-  qemu-native 8.1.4 -> 8.2.1
+-  qemu-system-native 8.1.4 -> 8.2.1
+-  repo 2.36.1 -> 2.42
+-  resolvconf 1.91 -> 1.92
+-  rpm 4.18.1 -> 4.19.1
+-  rt-tests 2.5 -> 2.6
+-  rust 1.70.0 -> 1.75.0
+-  rust-cross-canadian 1.70.0 -> 1.75.0
+-  rust-llvm 1.70.0 -> 1.75.0
+-  shaderc 2023.6 -> 2023.8
+-  shadow 4.13 -> 4.14.2
+-  shared-mime-info 2.2 -> 2.4
+-  socat 1.7.4.4 -> 1.8.0.0
+-  spirv-headers 1.3.261.1 -> 1.3.275.0
+-  spirv-tools 1.3.261.1 -> 1.3.275.0
+-  sqlite3 3.43.2 -> 3.45.1
+-  strace 6.5 -> 6.7
+-  stress-ng 0.16.05 -> 0.17.05
+-  subversion 1.14.2 -> 1.14.3
+-  swig 4.1.1 -> 4.2.1
+-  sysstat 12.7.4 -> 12.7.5
+-  systemd 254.4 -> 255.4
+-  systemd-boot 254.4 -> 255.4
+-  systemd-bootchart 234 -> 235
+-  systemtap 4.9 -> 5.0
+-  systemtap-native 4.9 -> 5.0
+-  taglib 1.13.1 -> 2.0
+-  ttyrun 2.29.0 -> 2.31.0
+-  u-boot 2023.10 -> 2024.01
+-  u-boot-tools 2023.10 -> 2024.01
+-  update-rc.d 0.8 (8636cf478d42…) -> 0.8 (b8f950105010…)
+-  usbutils 015 -> 017
+-  util-linux 2.39.2 -> 2.39.3
+-  util-linux-libuuid 2.39.2 -> 2.39.3
+-  vala 0.56.13 -> 0.56.15
+-  valgrind 3.21.0 -> 3.22.0
+-  vim 9.0.2190 -> 9.1.0114
+-  vim-tiny 9.0.2190 -> 9.1.0114
+-  virglrenderer 0.10.4 -> 1.0.1
+-  vte 0.72.2 -> 0.74.2
+-  vulkan-headers 1.3.261.1 -> 1.3.275.0
+-  vulkan-loader 1.3.261.1 -> 1.3.275.0
+-  vulkan-tools 1.3.261.1 -> 1.3.275.0
+-  vulkan-validation-layers 1.3.261.1 -> 1.3.275.0
+-  wayland-protocols 1.32 -> 1.33
+-  webkitgtk 2.40.5 -> 2.44.0
+-  weston 12.0.2 -> 13.0.0
+-  xkbcomp 1.4.6 -> 1.4.7
+-  xkeyboard-config 2.39 -> 2.41
+-  xprop 1.2.6 -> 1.2.7
+-  xwayland 23.2.4 -> 23.2.5
+-  xz 5.4.4 -> 5.4.6
+-  zlib 1.3 -> 1.3.1
+
 
 Contributors to 5.0
 ~~~~~~~~~~~~~~~~~~~
 
 Thanks to the following people who contributed to this release:
 
+-  Adam Johnston
+-  Adithya Balakumar
+-  Adrian Freihofer
+-  Alassane Yattara
+-  Alejandro Hernandez Samaniego
+-  Aleksey Smirnov
+-  Alexander Kanavin
+-  Alexander Lussier-Cullen
+-  Alexander Sverdlin
+-  Alexandre Belloni
+-  Alexandre Truong
+-  Alex Bennée
+-  Alexis Lothoré
+-  Alex Kiernan
+-  Alex Stewart
+-  André Draszik
+-  Anibal Limon
+-  Anuj Mittal
+-  Archana Polampalli
+-  Arne Schwerdt
+-  Bartosz Golaszewski
+-  Baruch Siach
+-  Bastian Krause
+-  BELHADJ SALEM Talel
+-  BELOUARGA Mohamed
+-  Bruce Ashfield
+-  Changhyeok Bae
+-  Changqing Li
+-  Charlie Johnston
+-  Chen Qi
+-  Chi Xu
+-  Chris Laplante
+-  Christian Taedcke
+-  Christoph Vogtländer
+-  Claus Stovgaard
+-  Clay Chang
+-  Clément Péron
+-  Colin McAllister
+-  Corentin Guillevic
+-  Daniel Ammann
+-  david d zuhn
+-  David Reyna
+-  Deepthi Hemraj
+-  Denys Dmytriyenko
+-  Derek Erdmann
+-  Desone Burns
+-  Dhairya Nagodra
+-  Dmitry Baryshkov
+-  Eero Aaltonen
+-  Eilís 'pidge' Ní Fhlannagáin
+-  Emil Kronborg
+-  Enguerrand de Ribaucourt
+-  Enrico Jörns
+-  Enrico Scholz
+-  Etienne Cordonnier
+-  Fabien Mahot
+-  Fabio Estevam
+-  Fahad Arslan
+-  Felix Moessbauer
+-  Florian Wickert
+-  Geoff Parker
+-  Glenn Strauss
+-  Harish Sadineni
+-  Hongxu Jia
+-  Ilya A. Kriveshko
+-  Jamin Lin
+-  Jan Vermaete
+-  Jason Andryuk
+-  Javier Tia
+-  Jeremy A. Puhlman
+-  Jérémy Rosen
+-  Jermain Horsman
+-  Jiang Kai
+-  Joakim Tjernlund
+-  Joao Marcos Costa
+-  Joe Slater
+-  Johan Bezem
+-  Johannes Schneider
+-  Jonathan GUILLOT
+-  Jon Mason
+-  Jörg Sommer
+-  Jose Quaresma
+-  Joshua Watt
+-  Julien Stephan
+-  Justin Bronder
+-  Kai Kang
+-  Kareem Zarka
+-  Kevin Hao
+-  Khem Raj
+-  Konrad Weihmann
+-  Lee Chee Yang
+-  Lei Maohui
+-  lixiaoyong
+-  Logan Gunthorpe
+-  Luca Ceresoli
+-  luca fancellu
+-  Lucas Stach
+-  Ludovic Jozeau
+-  Lukas Funke
+-  Maanya Goenka
+-  Malte Schmidt
+-  Marcel Ziswiler
+-  Marco Felsch
+-  Marcus Folkesson
+-  Marek Vasut
+-  Mark Asselstine
+-  Mark Hatle
+-  Markus Fuchs
+-  Markus Volk
+-  Marlon Rodriguez Garcia
+-  Marta Rybczynska
+-  Martin Hundebøll
+-  Martin Jansa
+-  Massimiliano Minella
+-  Maxin B. John
+-  Max Krummenacher
+-  Meenali Gupta
+-  Michael Halstead
+-  Michael Opdenacker
+-  Michal Sieron
+-  Mikko Rapeli
+-  Ming Liu
+-  Mingli Yu
+-  Munehisa Kamata
+-  Nick Owens
+-  Niko Mauno
+-  Ola x Nilsson
+-  Oleh Matiusha
+-  Patrick Williams
+-  Paul Barker
+-  Paul Eggleton
+-  Paul Gortmaker
+-  Pavel Zhukov
+-  Peter A. Bigot
+-  Peter Kjellerstedt
+-  Peter Marko
+-  Petr Vorel
+-  Philip Balister
+-  Philip Lorenz
+-  Philippe Rivest
+-  Piotr Łobacz
+-  Priyal Doshi
+-  Quentin Schulz
+-  Ragesh Nair
+-  Randolph Sapp
+-  Randy MacLeod
+-  Rasmus Villemoes
+-  Renat Khalikov
+-  Richard Haar
+-  Richard Purdie
+-  Robert Berger
+-  Robert Joslyn
+-  Robert P. J. Day
+-  Robert Yang
+-  Rodrigo M. Duarte
+-  Ross Burton
+-  Rouven Czerwinski
+-  Ryan Eatmon
+-  Sam Van Den Berge
+-  Saul Wold
+-  Sava Jakovljev
+-  Sean Nyekjaer
+-  Sergei Zhmylev
+-  Shinji Matsunaga
+-  Shubham Kulkarni
+-  Simone Weiß
+-  Siong W.LIM
+-  Soumya Sambu
+-  Sourav Kumar Pramanik
+-  Stefan Herbrechtsmeier
+-  Stéphane Veyret
+-  Steve Sakoman
+-  Sundeep KOKKONDA
+-  Thomas Perrot
+-  Thomas Wolber
+-  Timon Bergelt
+-  Tim Orling
+-  Timotheus Giuliani
+-  Tobias Hagelborn
+-  Tom Hochstein
+-  Tom Rini
+-  Toni Lammi
+-  Trevor Gamblin
+-  Trevor Woerner
+-  Ulrich Ölmann
+-  Valek Andrej
+-  venkata pyla
+-  Victor Kamensky
+-  Vijay Anusuri
+-  Vikas Katariya
+-  Vincent Davis Jr
+-  Viswanath Kraleti
+-  Vyacheslav Yurkov
+-  Wang Mingyu
+-  William A. Kennington III
+-  William Hauser
+-  William Lyu
+-  Xiangyu Chen
+-  Xiaotian Wu
+-  Yang Xu
+-  Yannick Rodriguez
+-  Yash Shinde
+-  Yi Zhao
+-  Yoann Congal
+-  Yogesh Tyagi
+-  Yogita Urade
+-  Zahir Hussain
+-  Zang Ruochen
+-  Zoltan Boszormenyi
+
 Repositories / Downloads for Yocto-5.0
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/poky/documentation/ref-manual/classes.rst b/poky/documentation/ref-manual/classes.rst
index 1d01456..9520d0b 100644
--- a/poky/documentation/ref-manual/classes.rst
+++ b/poky/documentation/ref-manual/classes.rst
@@ -564,6 +564,13 @@
 ``CVE-ID.patch``, e.g. ``CVE-2019-20633.patch``, in the :term:`SRC_URI` and using
 CVE metadata of format ``CVE: CVE-ID`` in the commit message of the patch file.
 
+.. note::
+
+   Commit message metadata (``CVE: CVE-ID`` in a patch header) will not be scanned
+   in any patches that are remote, i.e. that are anything other than local files
+   referenced via ``file://`` in SRC_URI. However, a ``CVE-ID`` in a remote patch
+   file name itself will be registered.
+
 If the recipe adds ``CVE-ID`` as flag of the :term:`CVE_STATUS` variable with status
 mapped to ``Ignored``, then the CVE state is reported as ``Ignored``::
 
@@ -1582,6 +1589,12 @@
       This is only relevant when you are using runtime package management
       on your target system.
 
+-  ``virtual-slash:`` Checks to see if ``virtual/`` is being used in
+   :term:`RDEPENDS` or :term:`RPROVIDES`, which is not good practice ---
+   ``virtual/`` is a convention intended for use in the build context
+   (i.e. :term:`PROVIDES` and :term:`DEPENDS`) rather than the runtime
+   context.
+
 -  ``xorg-driver-abi:`` Checks that all packages containing Xorg
    drivers have ABI dependencies. The ``xserver-xorg`` recipe provides
    driver ABI names. All drivers should depend on the ABI versions that
@@ -2374,6 +2387,24 @@
 
 Internally this uses the :ref:`ref-classes-python_pep517` class.
 
+.. _ref-classes-python_maturin:
+
+``python_maturin``
+==================
+
+The :ref:`ref-classes-python_maturin` class provides support for python-maturin, a replacement
+for setuptools_rust and another "backend" for building Python Wheels.
+
+.. _ref-classes-python_mesonpy:
+
+``python_mesonpy``
+==================
+
+The :ref:`ref-classes-python_mesonpy` class enables building Python modules which use the
+meson-python build system.
+
+Internally this uses the :ref:`ref-classes-python_pep517` class.
+
 .. _ref-classes-python_pep517:
 
 ``python_pep517``
diff --git a/poky/documentation/ref-manual/qa-checks.rst b/poky/documentation/ref-manual/qa-checks.rst
index 58526a0..53b1836 100644
--- a/poky/documentation/ref-manual/qa-checks.rst
+++ b/poky/documentation/ref-manual/qa-checks.rst
@@ -799,6 +799,14 @@
     section in the Yocto Project Development Tasks Manual. See also the
     ":ref:`ref-classes-ptest`" section.
 
+.. _qa-check-virtual-slash:
+
+- ``<variable> is set to <value> but the substring 'virtual/' holds no meaning in this context. It only works for build time dependencies, not runtime ones. It is suggested to use 'VIRTUAL-RUNTIME_' variables instead.``
+
+    ``virtual/`` is a convention intended for use in the build context
+    (i.e. :term:`PROVIDES` and :term:`DEPENDS`) rather than the runtime
+    context (i.e. :term:`RPROVIDES` and :term:`RDEPENDS`). Use
+    :term:`VIRTUAL-RUNTIME` variables instead for the latter.
 
 
 Configuring and Disabling QA Checks
diff --git a/poky/documentation/ref-manual/variables.rst b/poky/documentation/ref-manual/variables.rst
index 0dc881e..9cdcc1b 100644
--- a/poky/documentation/ref-manual/variables.rst
+++ b/poky/documentation/ref-manual/variables.rst
@@ -4048,7 +4048,7 @@
       The default value of the variable is set as follows in the
       ``meta/conf/distro/defaultsetup.conf`` file::
 
-         INHERIT_DISTRO ?= "debian devshell sstate license"
+         INHERIT_DISTRO ?= "debian devshell sstate license remove-libtool create-spdx"
 
    :term:`INHIBIT_DEFAULT_DEPS`
       Prevents the default dependencies, namely the C compiler and standard
@@ -8813,6 +8813,10 @@
       value so that executables built using the SDK also have the flags
       applied.
 
+   :term:`TARGET_DBGSRC_DIR`
+      Specifies the target path to debug source files. The default is
+      ``/usr/src/debug/${PN}/${PV}``.
+
    :term:`TARGET_FPU`
       Specifies the method for handling FPU code. For FPU-less targets,
       which include most ARM CPUs, the variable must be set to "soft". If
diff --git a/poky/meta-poky/classes/poky-bleeding.bbclass b/poky/meta-poky/classes/poky-bleeding.bbclass
index e5f3068..3bfdcf1 100644
--- a/poky/meta-poky/classes/poky-bleeding.bbclass
+++ b/poky/meta-poky/classes/poky-bleeding.bbclass
@@ -1,5 +1,5 @@
 #
-# AUTOREV and PV containing SRCPV needs to be set early, before any anonymous python
+# AUTOREV and PV containing '+git' needs to be set early, before any anonymous python
 # expands anything containing PV, else the parse process won't trigger the fetcher to
 # cache the needed version data
 #
@@ -13,7 +13,7 @@
             bb.warn("Here 5 %s %s" % (d.getVar("PN"), bpn))
         d.setVar("SRCREV", "${AUTOREV}")
         if "+git" not in d.getVar("PV"):
-            d.appendVar("PV", "+git${SRCPV}")
+            d.appendVar("PV", "+git")
 }
 
 addhandler pokybleeding_version_handler
diff --git a/poky/meta-poky/conf/distro/poky.conf b/poky/meta-poky/conf/distro/poky.conf
index 8b061cf..5285753 100644
--- a/poky/meta-poky/conf/distro/poky.conf
+++ b/poky/meta-poky/conf/distro/poky.conf
@@ -1,7 +1,7 @@
 DISTRO = "poky"
 DISTRO_NAME = "Poky (Yocto Project Reference Distro)"
-DISTRO_VERSION = "4.3+snapshot-${METADATA_REVISION}"
-DISTRO_CODENAME = "scarthgap"
+DISTRO_VERSION = "5.0+snapshot-${METADATA_REVISION}"
+DISTRO_CODENAME = "styhead"
 SDK_VENDOR = "-pokysdk"
 SDK_VERSION = "${@d.getVar('DISTRO_VERSION').replace('snapshot-${METADATA_REVISION}', 'snapshot')}"
 SDK_VERSION[vardepvalue] = "${SDK_VERSION}"
diff --git a/poky/meta-selftest/conf/layer.conf b/poky/meta-selftest/conf/layer.conf
index 48ca846..763ea01 100644
--- a/poky/meta-selftest/conf/layer.conf
+++ b/poky/meta-selftest/conf/layer.conf
@@ -11,4 +11,4 @@
 
 addpylib ${LAYERDIR}/lib oeqa
 
-LAYERSERIES_COMPAT_selftest = "scarthgap"
+LAYERSERIES_COMPAT_selftest = "styhead"
diff --git a/poky/meta-skeleton/conf/layer.conf b/poky/meta-skeleton/conf/layer.conf
index 0414fb5..963d2d5 100644
--- a/poky/meta-skeleton/conf/layer.conf
+++ b/poky/meta-skeleton/conf/layer.conf
@@ -14,4 +14,4 @@
 
 LAYERDEPENDS_skeleton = "core"
 
-LAYERSERIES_COMPAT_skeleton = "scarthgap"
+LAYERSERIES_COMPAT_skeleton = "styhead"
diff --git a/poky/meta/classes-global/sstate.bbclass b/poky/meta/classes-global/sstate.bbclass
index 96655ff..04539bb 100644
--- a/poky/meta/classes-global/sstate.bbclass
+++ b/poky/meta/classes-global/sstate.bbclass
@@ -4,7 +4,7 @@
 # SPDX-License-Identifier: MIT
 #
 
-SSTATE_VERSION = "11"
+SSTATE_VERSION = "12"
 
 SSTATE_ZSTD_CLEVEL ??= "8"
 
diff --git a/poky/meta/conf/abi_version.conf b/poky/meta/conf/abi_version.conf
index b6643ea..13c2c45 100644
--- a/poky/meta/conf/abi_version.conf
+++ b/poky/meta/conf/abi_version.conf
@@ -12,4 +12,4 @@
 # a reset of the equivalence, for example when reproducibility issues break the
 # existing match data. Distros can also append to this value for the same effect.
 #
-HASHEQUIV_HASH_VERSION  = "15"
+HASHEQUIV_HASH_VERSION  = "16"
diff --git a/poky/meta/conf/layer.conf b/poky/meta/conf/layer.conf
index efbf261..f2bca0a 100644
--- a/poky/meta/conf/layer.conf
+++ b/poky/meta/conf/layer.conf
@@ -7,12 +7,12 @@
 BBFILE_PATTERN_core = "^${LAYERDIR}/"
 BBFILE_PRIORITY_core = "5"
 
-LAYERSERIES_CORENAMES = "scarthgap"
+LAYERSERIES_CORENAMES = "scarthgap styhead"
 
 # This should only be incremented on significant changes that will
 # cause compatibility issues with other layers
 LAYERVERSION_core = "15"
-LAYERSERIES_COMPAT_core = "scarthgap"
+LAYERSERIES_COMPAT_core = "styhead"
 
 BBLAYERS_LAYERINDEX_NAME_core = "openembedded-core"
 
diff --git a/poky/meta/lib/oe/sstatesig.py b/poky/meta/lib/oe/sstatesig.py
index 5950b3e..a46e550 100644
--- a/poky/meta/lib/oe/sstatesig.py
+++ b/poky/meta/lib/oe/sstatesig.py
@@ -431,10 +431,7 @@
                 actual_hashval = get_hashval(fullpath)
                 if actual_hashval in hashfiles:
                     continue
-                try:
-                    hashfiles[actual_hashval] = {'path':fullpath, 'sstate':True, 'time':get_time(fullpath)}
-                except FileNotFoundError:
-                    bb.warn("Could not obtain mtime for {}".format(fullpath))
+                hashfiles[actual_hashval] = {'path':fullpath, 'sstate':True, 'time':get_time(fullpath)}
 
     return hashfiles
 
diff --git a/poky/meta/recipes-connectivity/openssh/openssh_9.7p1.bb b/poky/meta/recipes-connectivity/openssh/openssh_9.7p1.bb
index 3b0b470..d1468c5 100644
--- a/poky/meta/recipes-connectivity/openssh/openssh_9.7p1.bb
+++ b/poky/meta/recipes-connectivity/openssh/openssh_9.7p1.bb
@@ -58,6 +58,7 @@
 # systemd-sshd-socket-mode means installing sshd.socket
 # and systemd-sshd-service-mode corresponding to sshd.service
 PACKAGECONFIG ??= "systemd-sshd-socket-mode"
+PACKAGECONFIG[fido2] = "--with-security-key-builtin,--disable-security-key,libfido2"
 PACKAGECONFIG[kerberos] = "--with-kerberos5,--without-kerberos5,krb5"
 PACKAGECONFIG[ldns] = "--with-ldns,--without-ldns,ldns"
 PACKAGECONFIG[libedit] = "--with-libedit,--without-libedit,libedit"
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/CVE-2024-2511.patch b/poky/meta/recipes-connectivity/openssl/openssl/CVE-2024-2511.patch
new file mode 100644
index 0000000..8772f71
--- /dev/null
+++ b/poky/meta/recipes-connectivity/openssl/openssl/CVE-2024-2511.patch
@@ -0,0 +1,120 @@
+From e9d7083e241670332e0443da0f0d4ffb52829f08 Mon Sep 17 00:00:00 2001
+From: Matt Caswell <matt@openssl.org>
+Date: Tue, 5 Mar 2024 15:43:53 +0000
+Subject: [PATCH] Fix unconstrained session cache growth in TLSv1.3
+
+In TLSv1.3 we create a new session object for each ticket that we send.
+We do this by duplicating the original session. If SSL_OP_NO_TICKET is in
+use then the new session will be added to the session cache. However, if
+early data is not in use (and therefore anti-replay protection is being
+used), then multiple threads could be resuming from the same session
+simultaneously. If this happens and a problem occurs on one of the threads,
+then the original session object could be marked as not_resumable. When we
+duplicate the session object this not_resumable status gets copied into the
+new session object. The new session object is then added to the session
+cache even though it is not_resumable.
+
+Subsequently, another bug means that the session_id_length is set to 0 for
+sessions that are marked as not_resumable - even though that session is
+still in the cache. Once this happens the session can never be removed from
+the cache. When that object gets to be the session cache tail object the
+cache never shrinks again and grows indefinitely.
+
+CVE-2024-2511
+
+Reviewed-by: Neil Horman <nhorman@openssl.org>
+Reviewed-by: Tomas Mraz <tomas@openssl.org>
+(Merged from https://github.com/openssl/openssl/pull/24043)
+
+CVE: CVE-2024-2511
+Upstream-Status: Backport [https://github.com/openssl/openssl/commit/e9d7083e241670332e0443da0f0d4ffb52829f08]
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ ssl/ssl_lib.c            |  5 +++--
+ ssl/ssl_sess.c           | 28 ++++++++++++++++++++++------
+ ssl/statem/statem_srvr.c |  5 ++---
+ 3 files changed, 27 insertions(+), 11 deletions(-)
+
+diff --git a/ssl/ssl_lib.c b/ssl/ssl_lib.c
+index 4afb43bc86e54..c51529ddab5bb 100644
+--- a/ssl/ssl_lib.c
++++ b/ssl/ssl_lib.c
+@@ -4457,9 +4457,10 @@ void ssl_update_cache(SSL_CONNECTION *s, int mode)
+ 
+     /*
+      * If the session_id_length is 0, we are not supposed to cache it, and it
+-     * would be rather hard to do anyway :-)
++     * would be rather hard to do anyway :-). Also if the session has already
++     * been marked as not_resumable we should not cache it for later reuse.
+      */
+-    if (s->session->session_id_length == 0)
++    if (s->session->session_id_length == 0 || s->session->not_resumable)
+         return;
+ 
+     /*
+diff --git a/ssl/ssl_sess.c b/ssl/ssl_sess.c
+index 3dcc4d81e5bc6..1fa6d17c46863 100644
+--- a/ssl/ssl_sess.c
++++ b/ssl/ssl_sess.c
+@@ -127,16 +127,11 @@ SSL_SESSION *SSL_SESSION_new(void)
+     return ss;
+ }
+ 
+-SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src)
+-{
+-    return ssl_session_dup(src, 1);
+-}
+-
+ /*
+  * Create a new SSL_SESSION and duplicate the contents of |src| into it. If
+  * ticket == 0 then no ticket information is duplicated, otherwise it is.
+  */
+-SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket)
++static SSL_SESSION *ssl_session_dup_intern(const SSL_SESSION *src, int ticket)
+ {
+     SSL_SESSION *dest;
+ 
+@@ -265,6 +260,27 @@ SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket)
+     return NULL;
+ }
+ 
++SSL_SESSION *SSL_SESSION_dup(const SSL_SESSION *src)
++{
++    return ssl_session_dup_intern(src, 1);
++}
++
++/*
++ * Used internally when duplicating a session which might be already shared.
++ * We will have resumed the original session. Subsequently we might have marked
++ * it as non-resumable (e.g. in another thread) - but this copy should be ok to
++ * resume from.
++ */
++SSL_SESSION *ssl_session_dup(const SSL_SESSION *src, int ticket)
++{
++    SSL_SESSION *sess = ssl_session_dup_intern(src, ticket);
++
++    if (sess != NULL)
++        sess->not_resumable = 0;
++
++    return sess;
++}
++
+ const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, unsigned int *len)
+ {
+     if (len)
+diff --git a/ssl/statem/statem_srvr.c b/ssl/statem/statem_srvr.c
+index 853af8c0aa9f9..d5f0ab091dacc 100644
+--- a/ssl/statem/statem_srvr.c
++++ b/ssl/statem/statem_srvr.c
+@@ -2445,9 +2445,8 @@ CON_FUNC_RETURN tls_construct_server_hello(SSL_CONNECTION *s, WPACKET *pkt)
+      * so the following won't overwrite an ID that we're supposed
+      * to send back.
+      */
+-    if (s->session->not_resumable ||
+-        (!(SSL_CONNECTION_GET_CTX(s)->session_cache_mode & SSL_SESS_CACHE_SERVER)
+-         && !s->hit))
++    if (!(SSL_CONNECTION_GET_CTX(s)->session_cache_mode & SSL_SESS_CACHE_SERVER)
++            && !s->hit)
+         s->session->session_id_length = 0;
+ 
+     if (usetls13) {
diff --git a/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb b/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb
index c7134c5..d37b68a 100644
--- a/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb
+++ b/poky/meta/recipes-connectivity/openssl/openssl_3.2.1.bb
@@ -13,6 +13,7 @@
            file://0001-Configure-do-not-tweak-mips-cflags.patch \
            file://0001-Added-handshake-history-reporting-when-test-fails.patch \
            file://bti.patch \
+           file://CVE-2024-2511.patch \
            "
 
 SRC_URI:append:class-nativesdk = " \
diff --git a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
index 6e222df..4cf5551 100644
--- a/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
+++ b/poky/meta/recipes-core/images/build-appliance-image_15.0.0.bb
@@ -26,7 +26,7 @@
 
 REQUIRED_DISTRO_FEATURES += "xattr"
 
-SRCREV ?= "cf69c6843fb62ab2ebee361f3d1a1141f1a6b01a"
+SRCREV ?= "17723c6e34096a53fb186cc70cfc604bb30da8b9"
 SRC_URI = "git://git.yoctoproject.org/poky;branch=master \
            file://Yocto_Build_Appliance.vmx \
            file://Yocto_Build_Appliance.vmxf \
diff --git a/poky/meta/recipes-core/kbd/kbd/0001-Remove-non-free-Agafari-fonts.patch b/poky/meta/recipes-core/kbd/kbd/0001-Remove-non-free-Agafari-fonts.patch
new file mode 100644
index 0000000..de279b5
--- /dev/null
+++ b/poky/meta/recipes-core/kbd/kbd/0001-Remove-non-free-Agafari-fonts.patch
@@ -0,0 +1,73 @@
+From b757e6842f9631757f0d1a6b3833aabffa9ffeee Mon Sep 17 00:00:00 2001
+From: Alexey Gladkov <legion@kernel.org>
+Date: Thu, 29 Feb 2024 17:38:37 +0100
+Subject: [PATCH] Remove non-free Agafari fonts
+
+Based on legal analysis, we are removing non-free fonts for now. If we
+can change the license of these fonts, we will return them back.
+
+From: Stanislav Brabec <sbrabec@suse.com>
+Date: Wed, 28 Feb 2024 16:47:54 +0100
+Subject: kbd: Legal problems of Agafari fonts
+
+    The data/consolefonts/README.Ethiopic contains a notice:
+    Agafari:
+      Donated by the Ethiopian Science and Technology Commission
+      <ncic@padis.gn.apc.org> or <ncic@telecom.net.et> and may be redistributed
+      for non-commercial use under Unix environments only.
+
+    According to our legal review, it makes impossible to distribute these
+    fonts as part of any commercial products, and even makes it impossible to
+    distribute kbd sources as part of any commercial product services.
+
+    Additionally, it makes the whole kbd package incompatible with GPL, so the
+    COPYING file (created during build of the tarball) cannot declare GPL
+    version 2. It also violates section 6 of GPL (no further restrictions).
+
+    That is why several GNU/Linux distributions exclude Agafari from the
+    release. To be on a safe side, SUSE even decided to repack any source
+    tarballs before putting it to their servers.
+
+    This was probably reported to the former kbd maintainer about 20 years ago,
+    but nothing changed over years.
+
+    That is why I recommend removing Agafari fonts and removing the reference
+    to them from README.Ethiopic. Alternatively, you can ask the Ethiopian
+    Science and Technology Commission for re-licensing.
+
+Signed-off-by: Alexey Gladkov <legion@kernel.org>
+
+Upstream-Status: Backport [https://github.com/legionus/kbd/commit/b757e6842f9631757f0d1a6b3833aabffa9ffeee]
+
+[do_configure prepend added to remove binary files]
+
+Signed-off-by: Peter Marko <peter.marko@siemens.com>
+---
+ data/consolefonts/Agafari-12.psfu | Bin 7989 -> 0 bytes
+ data/consolefonts/Agafari-14.psfu | Bin 9013 -> 0 bytes
+ data/consolefonts/Agafari-16.psfu | Bin 10037 -> 0 bytes
+ data/consolefonts/README.Ethiopic |   5 -----
+ 4 files changed, 5 deletions(-)
+ delete mode 100644 data/consolefonts/Agafari-12.psfu
+ delete mode 100644 data/consolefonts/Agafari-14.psfu
+ delete mode 100644 data/consolefonts/Agafari-16.psfu
+
+diff --git a/data/consolefonts/README.Ethiopic b/data/consolefonts/README.Ethiopic
+index 7502722..2810797 100644
+--- a/data/consolefonts/README.Ethiopic
++++ b/data/consolefonts/README.Ethiopic
+@@ -14,11 +14,6 @@ Ethiopic fonts:
+      restrictions below:
+ 
+ 
+-Agafari:
+-  Donated by the Ethiopian Science and Technology Commission 
+-  <ncic@padis.gn.apc.org> or <ncic@telecom.net.et> and may be redistributed
+-  for non-commercial use under Unix environments only.
+-
+ Goha and GohaClassic:
+   Donated by Yitna Firdyiwek <ybf2u@virgina.edu> of GohaTibeb Associates
+   and may be redistributed without restriction under the GNU GPL 2.0.
+-- 
+2.30.2
+
diff --git a/poky/meta/recipes-core/kbd/kbd_2.6.4.bb b/poky/meta/recipes-core/kbd/kbd_2.6.4.bb
index 790055a..2331b51 100644
--- a/poky/meta/recipes-core/kbd/kbd_2.6.4.bb
+++ b/poky/meta/recipes-core/kbd/kbd_2.6.4.bb
@@ -1,9 +1,19 @@
 SUMMARY = "Keytable files and keyboard utilities"
 HOMEPAGE = "http://www.kbd-project.org/"
 DESCRIPTION = "The kbd project contains tools for managing Linux console (Linux console, virtual terminals, keyboard, etc.) – mainly, what they do is loading console fonts and keyboard maps."
-# everything minus console-fonts is GPL-2.0-or-later
-LICENSE = "GPL-2.0-or-later"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+# consolefonts and keymaps contain also some public domain and author notice licenses
+LICENSE = "GPL-2.0-or-later & LGPL-2.0-or-later & GPL-3.0-or-later"
+LIC_FILES_CHKSUM = " \
+    file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+    file://data/keymaps/pine/en.map;beginline=2;endline=15;md5=20914a59c0546a7b77ebf959bc88ad5d \
+"
+LICENSE:${PN} = "GPL-2.0-or-later & LGPL-2.0-or-later"
+LICENSE:${PN}-consolefonts = "GPL-2.0-or-later"
+LICENSE:${PN}-consoletrans = "GPL-2.0-or-later"
+LICENSE:${PN}-keymaps-pine = "GPL-3.0-or-later"
+LICENSE:${PN}-keymaps = "GPL-2.0-or-later"
+LICENSE:${PN}-unimaps = "GPL-2.0-or-later"
 
 inherit autotools gettext pkgconfig
 
@@ -14,6 +24,7 @@
 RCONFLICTS:${PN} = "console-tools"
 
 SRC_URI = "${KERNELORG_MIRROR}/linux/utils/${BPN}/${BP}.tar.xz \
+           file://0001-Remove-non-free-Agafari-fonts.patch \
            "
 
 SRC_URI[sha256sum] = "519f8d087aecca7e0a33cd084bef92c066eb19731666653dcc70c9d71aa40926"
@@ -24,13 +35,22 @@
 
 PACKAGECONFIG[pam] = "--enable-vlock, --disable-vlock, libpam,"
 
-PACKAGES += "${PN}-consolefonts ${PN}-keymaps ${PN}-unimaps ${PN}-consoletrans"
+PACKAGES += "${PN}-consolefonts ${PN}-keymaps-pine ${PN}-keymaps ${PN}-unimaps ${PN}-consoletrans"
 
 FILES:${PN}-consolefonts = "${datadir}/consolefonts"
 FILES:${PN}-consoletrans = "${datadir}/consoletrans"
+FILES:${PN}-keymaps-pine = "${datadir}/keymaps/pine"
 FILES:${PN}-keymaps = "${datadir}/keymaps"
 FILES:${PN}-unimaps = "${datadir}/unimaps"
 
+RRECOMMENDS:${PN}-keymaps = "${PN}-keymaps-pine"
+
+# remove this when upgrading to newer version which has integrated
+# https://github.com/legionus/kbd/commit/b757e6842f9631757f0d1a6b3833aabffa9ffeee
+do_configure:prepend() {
+    rm -rf ${S}/data/consolefonts/Agafari-1*
+}
+
 do_install:append () {
     if [ "${@bb.utils.contains('DISTRO_FEATURES', 'pam', 'yes', 'no', d)}" = "yes" ] \
     && [ -f ${D}${sysconfdir}/pam.d/vlock ]; then
diff --git a/poky/meta/recipes-core/meta/buildtools-tarball.bb b/poky/meta/recipes-core/meta/buildtools-tarball.bb
index a5f6bb7..92fbda3 100644
--- a/poky/meta/recipes-core/meta/buildtools-tarball.bb
+++ b/poky/meta/recipes-core/meta/buildtools-tarball.bb
@@ -11,6 +11,8 @@
     nativesdk-python3-git \
     nativesdk-python3-jinja2 \
     nativesdk-python3-testtools \
+    nativesdk-python3-pip \
+    nativesdk-python3-setuptools \
     nativesdk-python3-subunit \
     nativesdk-python3-pyyaml \
     nativesdk-python3-websockets \
diff --git a/poky/meta/recipes-devtools/python/python-testtools.inc b/poky/meta/recipes-devtools/python/python-testtools.inc
deleted file mode 100644
index e9dd97e..0000000
--- a/poky/meta/recipes-devtools/python/python-testtools.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-SUMMARY = "Extensions to the Python standard library unit testing framework"
-HOMEPAGE = "https://pypi.org/project/testtools/"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a"
-
-inherit pypi
-
-SRC_URI[sha256sum] = "df6de96010e29ee21f637a147eabf30d50b25e3841dd1d68f93ee89ce77e366c"
-
-DEPENDS += " \
-    python3-pbr \
-    "
-
-# Satisfy setup.py 'setup_requires'
-DEPENDS += " \
-    python3-pbr-native \
-    "
-
-RDEPENDS:${PN} += "\
-    python3-doctest \
-    python3-extras \
-    python3-pbr \
-    python3-six \
-    "
-
-BBCLASSEXTEND = "nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb b/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
index eb63509..4ee0dd9 100644
--- a/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
+++ b/poky/meta/recipes-devtools/python/python3-jsonschema-specifications_2023.12.1.bb
@@ -11,6 +11,6 @@
 
 PYPI_PACKAGE = "jsonschema_specifications"
 
-DEPENDS += "${PYTHON_PN}-hatch-vcs-native"
+DEPENDS += "python3-hatch-vcs-native"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-referencing_0.34.0.bb b/poky/meta/recipes-devtools/python/python3-referencing_0.34.0.bb
index 9388fca..6fbd10d 100644
--- a/poky/meta/recipes-devtools/python/python3-referencing_0.34.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-referencing_0.34.0.bb
@@ -7,7 +7,7 @@
 
 inherit pypi python_hatchling
 
-DEPENDS += "${PYTHON_PN}-hatch-vcs-native"
+DEPENDS += "python3-hatch-vcs-native"
 
 RDEPENDS:${PN} += "python3-rpds-py"
 
diff --git a/poky/meta/recipes-devtools/python/python3-testtools_2.7.1.bb b/poky/meta/recipes-devtools/python/python3-testtools_2.7.1.bb
index 79e46a0..cc7e055 100644
--- a/poky/meta/recipes-devtools/python/python3-testtools_2.7.1.bb
+++ b/poky/meta/recipes-devtools/python/python3-testtools_2.7.1.bb
@@ -1,3 +1,20 @@
-inherit setuptools3
-require python-testtools.inc
+SUMMARY = "Extensions to the Python standard library unit testing framework"
+HOMEPAGE = "https://pypi.org/project/testtools/"
+SECTION = "devel/python"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e2c9d3e8ba7141c83bfef190e0b9379a"
+
+DEPENDS += "python3-hatch-vcs-native"
+
+inherit pypi python_hatchling
+
+SRC_URI[sha256sum] = "df6de96010e29ee21f637a147eabf30d50b25e3841dd1d68f93ee89ce77e366c"
+
+RDEPENDS:${PN} += "\
+    python3-doctest \
+    python3-extras \
+    python3-six \
+    "
+
+BBCLASSEXTEND = "nativesdk"
 
diff --git a/poky/meta/recipes-devtools/python/python3/0001-test_xml_etree.py-Fix-for-Expat-2.6.0-with-reparse-d.patch b/poky/meta/recipes-devtools/python/python3/0001-test_xml_etree.py-Fix-for-Expat-2.6.0-with-reparse-d.patch
deleted file mode 100644
index 598ef08..0000000
--- a/poky/meta/recipes-devtools/python/python3/0001-test_xml_etree.py-Fix-for-Expat-2.6.0-with-reparse-d.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From d07ca7fbd874e230dec4d4c6d650a66ea2a9008e Mon Sep 17 00:00:00 2001
-From: Sebastian Pipping <sebastian@pipping.org>
-Date: Wed, 7 Feb 2024 15:32:45 +0100
-Subject: [PATCH] test_xml_etree.py: Fix for Expat >=2.6.0 with reparse
- deferral
-
-Upstream-Status: Submitted [https://github.com/python/cpython/pull/115138]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Lib/test/test_xml_etree.py                             | 10 ++++++----
- .../2024-02-07-15-49-37.gh-issue-115133.WBajNr.rst     |  1 +
- 2 files changed, 7 insertions(+), 4 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Tests/2024-02-07-15-49-37.gh-issue-115133.WBajNr.rst
-
-diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py
-index b50898f..4578367 100644
---- a/Lib/test/test_xml_etree.py
-+++ b/Lib/test/test_xml_etree.py
-@@ -1403,6 +1403,7 @@ class XMLPullParserTest(unittest.TestCase):
-     def test_simple_xml(self):
-         for chunk_size in (None, 1, 5):
-             with self.subTest(chunk_size=chunk_size):
-+                expected_events = []
-                 parser = ET.XMLPullParser()
-                 self.assert_event_tags(parser, [])
-                 self._feed(parser, "<!-- comment -->\n", chunk_size)
-@@ -1412,16 +1413,17 @@ class XMLPullParserTest(unittest.TestCase):
-                            chunk_size)
-                 self.assert_event_tags(parser, [])
-                 self._feed(parser, ">\n", chunk_size)
--                self.assert_event_tags(parser, [('end', 'element')])
-+                expected_events += [('end', 'element')]
-                 self._feed(parser, "<element>text</element>tail\n", chunk_size)
-                 self._feed(parser, "<empty-element/>\n", chunk_size)
--                self.assert_event_tags(parser, [
-+                expected_events += [
-                     ('end', 'element'),
-                     ('end', 'empty-element'),
--                    ])
-+                    ]
-                 self._feed(parser, "</root>\n", chunk_size)
--                self.assert_event_tags(parser, [('end', 'root')])
-+                expected_events += [('end', 'root')]
-                 self.assertIsNone(parser.close())
-+                self.assert_event_tags(parser, expected_events)
- 
-     def test_feed_while_iterating(self):
-         parser = ET.XMLPullParser()
-diff --git a/Misc/NEWS.d/next/Tests/2024-02-07-15-49-37.gh-issue-115133.WBajNr.rst b/Misc/NEWS.d/next/Tests/2024-02-07-15-49-37.gh-issue-115133.WBajNr.rst
-new file mode 100644
-index 0000000..4dc9c13
---- /dev/null
-+++ b/Misc/NEWS.d/next/Tests/2024-02-07-15-49-37.gh-issue-115133.WBajNr.rst
-@@ -0,0 +1 @@
-+Fix etree XMLPullParser tests for Expat >=2.6.0 with reparse deferral
diff --git a/poky/meta/recipes-devtools/python/python3_3.12.2.bb b/poky/meta/recipes-devtools/python/python3_3.12.3.bb
similarity index 98%
rename from poky/meta/recipes-devtools/python/python3_3.12.2.bb
rename to poky/meta/recipes-devtools/python/python3_3.12.3.bb
index f837f05..b49a58a 100644
--- a/poky/meta/recipes-devtools/python/python3_3.12.2.bb
+++ b/poky/meta/recipes-devtools/python/python3_3.12.3.bb
@@ -30,14 +30,13 @@
            file://0001-skip-no_stdout_fileno-test-due-to-load-variability.patch \
            file://0001-test_storlines-skip-due-to-load-variability.patch \
            file://0001-gh-114492-Initialize-struct-termios-before-calling-t.patch \
-           file://0001-test_xml_etree.py-Fix-for-Expat-2.6.0-with-reparse-d.patch \
            "
 
 SRC_URI:append:class-native = " \
            file://0001-Lib-sysconfig.py-use-prefix-value-from-build-configu.patch \
            "
 
-SRC_URI[sha256sum] = "be28112dac813d2053545c14bf13a16401a21877f1a69eb6ea5d84c4a0f3d870"
+SRC_URI[sha256sum] = "56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1"
 
 # exclude pre-releases for both python 2.x and 3.x
 UPSTREAM_CHECK_REGEX = "[Pp]ython-(?P<pver>\d+(\.\d+)+).tar"
diff --git a/poky/scripts/lib/build_perf/html/measurement_chart.html b/poky/scripts/lib/build_perf/html/measurement_chart.html
index 9acb378..65f1a22 100644
--- a/poky/scripts/lib/build_perf/html/measurement_chart.html
+++ b/poky/scripts/lib/build_perf/html/measurement_chart.html
@@ -1,76 +1,50 @@
-<script type="module">
-  // Get raw data
-  const rawData = [
-    {% for sample in measurement.samples %}
-      [{{ sample.commit_num }}, {{ sample.mean.gv_value() }}, {{ sample.start_time }}],
-    {% endfor %}
-  ];
+<script type="text/javascript">
+  chartsDrawing += 1;
+  google.charts.setOnLoadCallback(drawChart_{{ chart_elem_id }});
+  function drawChart_{{ chart_elem_id }}() {
+    var data = new google.visualization.DataTable();
 
-  const convertToMinute = (time) => {
-    return time[0]*60 + time[1] + time[2]/60 + time[3]/3600;
-  }
+    // Chart options
+    var options = {
+      theme : 'material',
+      legend: 'none',
+      hAxis: { format: '', title: 'Commit number',
+               minValue: {{ chart_opts.haxis.min }},
+               maxValue: {{ chart_opts.haxis.max }} },
+      {% if measurement.type == 'time' %}
+      vAxis: { format: 'h:mm:ss' },
+      {% else %}
+      vAxis: { format: '' },
+      {% endif %}
+      pointSize: 5,
+      chartArea: { left: 80, right: 15 },
+    };
 
-  // Convert raw data to the format: [time, value]
-  const data = rawData.map(([commit, value, time]) => {
-    return [
-      // The Date object takes values in milliseconds rather than seconds. So to use a Unix timestamp we have to multiply it by 1000.
-      new Date(time * 1000).getTime(),
-      // Assuming the array values are duration in the format [hours, minutes, seconds, milliseconds]
-      Array.isArray(value) ? convertToMinute(value) : value
-    ]
-  });
+    // Define data columns
+    data.addColumn('number', 'Commit');
+    data.addColumn('{{ measurement.value_type.gv_data_type }}',
+                   '{{ measurement.value_type.quantity }}');
+    // Add data rows
+    data.addRows([
+      {% for sample in measurement.samples %}
+        [{{ sample.commit_num }}, {{ sample.mean.gv_value() }}],
+      {% endfor %}
+    ]);
 
-  // Set chart options
-  const option = {
-    tooltip: {
-      trigger: 'axis',
-      valueFormatter: (value) => {
-        const hours = Math.floor(value/60)
-        const minutes = Math.floor(value % 60)
-        const seconds = Math.floor((value * 60) % 60)
-        return hours + ':' + minutes + ':' + seconds
-      }
-    },
-    xAxis: {
-      type: 'time',
-    },
-    yAxis: {
-      name: '{{ measurement.value_type.quantity }}' == 'time' ? 'Duration in minutes' : 'Disk size in MB',
-      type: 'value',
-      min: function(value) {
-        return Math.round(value.min - 0.5);
-      },
-      max: function(value) {
-        return Math.round(value.max + 0.5);
-      }
-    },
-    dataZoom: [
-      {
-        type: 'slider',
-        xAxisIndex: 0,
-        filterMode: 'none'
-      },
-    ],
-    series: [
-      {
-        name: '{{ measurement.value_type.quantity }}',
-        type: 'line',
-        smooth: true,
-        symbol: 'none',
-        data: data
-      }
-    ]
-  };
-
-  // Draw chart
-  const chart_div = document.getElementById('{{ chart_elem_id }}');
-  const measurement_chart= echarts.init(chart_div, null, {
-    height: 320
-  });
-  // Change chart size with browser resize
-  window.addEventListener('resize', function() {
-    measurement_chart.resize();
-  });
-  measurement_chart.setOption(option);
+    // Finally, draw the chart
+    chart_div = document.getElementById('{{ chart_elem_id }}');
+    var chart = new google.visualization.LineChart(chart_div);
+    google.visualization.events.addListener(chart, 'ready', function () {
+      //chart_div = document.getElementById('{{ chart_elem_id }}');
+      //chart_div.innerHTML = '<img src="' + chart.getImageURI() + '">';
+      png_div = document.getElementById('{{ chart_elem_id }}_png');
+      png_div.outerHTML = '<a id="{{ chart_elem_id }}_png" href="' + chart.getImageURI() + '">PNG</a>';
+      console.log("CHART READY: {{ chart_elem_id }}");
+      chartsDrawing -= 1;
+      if (chartsDrawing == 0)
+        console.log("ALL CHARTS READY");
+    });
+    chart.draw(data, options);
+}
 </script>
 
diff --git a/poky/scripts/lib/build_perf/html/report.html b/poky/scripts/lib/build_perf/html/report.html
index 4cd2407..d1ba6f2 100644
--- a/poky/scripts/lib/build_perf/html/report.html
+++ b/poky/scripts/lib/build_perf/html/report.html
@@ -3,7 +3,11 @@
 <head>
 {# Scripts, for visualization#}
 <!--START-OF-SCRIPTS-->
-<script src=" https://cdn.jsdelivr.net/npm/echarts@5.5.0/dist/echarts.min.js "></script>
+<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
+<script type="text/javascript">
+google.charts.load('current', {'packages':['corechart']});
+var chartsDrawing = 0;
+</script>
 
 {# Render measurement result charts #}
 {% for test in test_data %}
@@ -24,15 +28,23 @@
   text-align: left;
   border-collapse: collapse;
 }
+.meta-table tr:nth-child(even){background-color: #f2f2f2}
+meta-table th, .meta-table td {
+  padding: 4px;
+}
 .summary {
+  margin: 0;
   font-size: 14px;
   text-align: left;
   border-collapse: collapse;
 }
+summary th, .meta-table td {
+  padding: 4px;
+}
 .measurement {
   padding: 8px 0px 8px 8px;
   border: 2px solid #f0f0f0;
-  margin: 1.5rem 0;
+  margin-bottom: 10px;
 }
 .details {
   margin: 0;
@@ -52,58 +64,18 @@
   background-color: #f0f0f0;
   margin-left: 10px;
 }
-.card-container {
-  border-bottom-width: 1px;
-  padding: 1.25rem 3rem;
-  box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
-  border-radius: 0.25rem;
-}
-body {
-  font-family: 'Helvetica', sans-serif;
-  margin: 3rem 8rem;
-}
-h1 {
-  text-align: center;
+hr {
+  color: #f0f0f0;
 }
 h2 {
-  font-size: 1.5rem;
+  font-size: 20px;
   margin-bottom: 0px;
   color: #707070;
-  padding-top: 1.5rem;
 }
 h3 {
-  font-size: 1.3rem;
+  font-size: 16px;
   margin: 0px;
   color: #707070;
-  padding: 1.5rem 0;
-}
-h4 {
-  font-size: 14px;
-  font-weight: lighter;
-  line-height: 1.2rem;
-  margin: auto;
-  padding-top: 1rem;
-}
-table {
-  margin-top: 1.5rem;
-  line-height: 2rem;
-}
-tr {
-  border-bottom: 1px solid #e5e7eb;
-}
-tr:first-child {
-  border-bottom: 1px solid #9ca3af;
-}
-tr:last-child {
-  border-bottom: none;
-}
-a {
-  text-decoration: none;
-  font-weight: bold;
-  color: #0000EE;
-}
-a:hover {
-  color: #8080ff;
 }
 </style>
 
@@ -111,14 +83,13 @@
 </head>
 
 {% macro poky_link(commit) -%}
-  <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?id={{ commit }}">{{ commit[0:11] }}</a>
+    <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/log/?id={{ commit }}">{{ commit[0:11] }}</a>
 {%- endmacro %}
 
-<body><div>
-  <h1 style="text-align: center;">Performance Test Report</h1>
+<body><div style="width: 700px">
   {# Test metadata #}
   <h2>General</h2>
-  <h4>The table provides an overview of the comparison between two selected commits from the same branch.</h4>
+  <hr>
   <table class="meta-table" style="width: 100%">
     <tr>
       <th></th>
@@ -141,21 +112,19 @@
 
   {# Test result summary #}
   <h2>Test result summary</h2>
-  <h4>The test summary presents a thorough breakdown of each test conducted on the branch, including details such as build time and disk space consumption. Additionally, it gives insights into the average time taken for test execution, along with absolute and relative values for a better understanding.</h4>
+  <hr>
   <table class="summary" style="width: 100%">
-    <tr>
-      <th>Test name</th>
-      <th>Measurement description</th>
-      <th>Mean value</th>
-      <th>Absolute difference</th>
-      <th>Relative difference</th>
-    </tr>
     {% for test in test_data %}
+      {% if loop.index is even %}
+        {% set row_style = 'style="background-color: #f2f2f2"' %}
+      {% else %}
+        {% set row_style = 'style="background-color: #ffffff"' %}
+      {% endif %}
       {% if test.status == 'SUCCESS' %}
         {% for measurement in test.measurements %}
           <tr {{ row_style }}>
             {% if loop.index == 1 %}
-              <td><a href=#{{test.name}}>{{ test.name }}: {{ test.description }}</a></td>
+              <td>{{ test.name }}: {{ test.description }}</td>
             {% else %}
               {# add empty cell in place of the test name#}
               <td></td>
@@ -184,12 +153,10 @@
   </table>
 
   {# Detailed test results #}
-  <h2>Test details</h2>
-  <h4>The following section provides details of each test, accompanied by charts representing build time and disk usage over time or by commit number.</h4>
   {% for test in test_data %}
-  <h3 style="color: #000;" id={{test.name}}>{{ test.name }}: {{ test.description }}</h3>
+  <h2>{{ test.name }}: {{ test.description }}</h2>
+  <hr>
     {% if test.status == 'SUCCESS' %}
-    <div class="card-container">
       {% for measurement in test.measurements %}
         <div class="measurement">
           <h3>{{ measurement.description }}</h3>
@@ -308,8 +275,7 @@
             {% endif %}
           {% endif %}
         </div>
-        {% endfor %}
-      </div>
+      {% endfor %}
     {# Unsuccessful test #}
     {% else %}
       <span style="font-size: 150%; font-weight: bold; color: red;">{{ test.status }}
diff --git a/poky/scripts/lib/build_perf/report.py b/poky/scripts/lib/build_perf/report.py
index 82c5683..ab77424 100644
--- a/poky/scripts/lib/build_perf/report.py
+++ b/poky/scripts/lib/build_perf/report.py
@@ -294,7 +294,7 @@
             return "null"
         return self / 1024
 
-def measurement_stats(meas, prefix='', time=0):
+def measurement_stats(meas, prefix=''):
     """Get statistics of a measurement"""
     if not meas:
         return {prefix + 'sample_cnt': 0,
@@ -319,7 +319,6 @@
     stats['quantity'] = val_cls.quantity
     stats[prefix + 'sample_cnt'] = len(values)
 
-    start_time = time # Add start time for both type sysres and disk usage
     mean_val = val_cls(mean(values))
     min_val = val_cls(min(values))
     max_val = val_cls(max(values))
@@ -335,7 +334,6 @@
     stats[prefix + 'max'] = max_val
     stats[prefix + 'minus'] = val_cls(mean_val - min_val)
     stats[prefix + 'plus'] = val_cls(max_val - mean_val)
-    stats[prefix + 'start_time'] = start_time
 
     return stats
 
diff --git a/poky/scripts/oe-build-perf-report b/poky/scripts/oe-build-perf-report
index 266700d..7812ea4 100755
--- a/poky/scripts/oe-build-perf-report
+++ b/poky/scripts/oe-build-perf-report
@@ -336,9 +336,7 @@
                 test_i = test_data['tests'][test]
                 meas_i = test_i['measurements'][meas]
                 commit_num = get_data_item(meta, 'layers.meta.commit_count')
-                # Add start_time for both test measurement types of sysres and disk usage
-                start_time = test_i['start_time'][0]
-                samples.append(measurement_stats(meas_i, '', start_time))
+                samples.append(measurement_stats(meas_i))
                 samples[-1]['commit_num'] = commit_num
 
             absdiff = samples[-1]['val_cls'](samples[-1]['mean'] - samples[id_comp]['mean'])
@@ -475,7 +473,7 @@
     group.add_argument('--branch', '-B', default='master', help="Branch to find commit in")
     group.add_argument('--branch2', help="Branch to find comparision revisions in")
     group.add_argument('--machine', default='qemux86')
-    group.add_argument('--history-length', default=300, type=int,
+    group.add_argument('--history-length', default=25, type=int,
                        help="Number of tested revisions to plot in html report")
     group.add_argument('--commit',
                        help="Revision to search for")
diff --git a/poky/scripts/oe-setup-build b/poky/scripts/oe-setup-build
index c047699..5364f2b 100755
--- a/poky/scripts/oe-setup-build
+++ b/poky/scripts/oe-setup-build
@@ -91,16 +91,7 @@
     builddir = args.b if args.b else template["buildpath"]
     no_shell = args.no_shell
     coredir = os.path.abspath(os.path.join(os.path.dirname(os.path.realpath(__file__)), '..'))
-    cmd_base = ". {} {}".format(os.path.join(coredir, 'oe-init-build-env'), os.path.abspath(builddir))
-
-    initbuild = os.path.join(builddir, 'init-build-env')
-    if not os.path.exists(initbuild):
-        os.makedirs(builddir, exist_ok=True)
-        with open(initbuild, 'w') as f:
-            f.write(cmd_base)
-    print("\nRun '. {}' to initialize the build in a current shell session.\n".format(initbuild))
-
-    cmd = "TEMPLATECONF={} {}".format(template["templatepath"], cmd_base)
+    cmd = "TEMPLATECONF={} . {} {}".format(template["templatepath"], os.path.join(coredir, 'oe-init-build-env'), builddir)
     if not no_shell:
         cmd = cmd + " && {}".format(os.environ['SHELL'])
     print("Running:", cmd)