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 768cce8..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)
