diff --git a/poky/bitbake/bin/bitbake-hashclient b/poky/bitbake/bin/bitbake-hashclient
index 3ff7b76..2cb6338 100755
--- a/poky/bitbake/bin/bitbake-hashclient
+++ b/poky/bitbake/bin/bitbake-hashclient
@@ -52,6 +52,22 @@
 
 
 def main():
+    def handle_get(args, client):
+        result = client.get_taskhash(args.method, args.taskhash, all_properties=True)
+        if not result:
+            return 0
+
+        print(json.dumps(result, sort_keys=True, indent=4))
+        return 0
+
+    def handle_get_outhash(args, client):
+        result = client.get_outhash(args.method, args.outhash, args.taskhash)
+        if not result:
+            return 0
+
+        print(json.dumps(result, sort_keys=True, indent=4))
+        return 0
+
     def handle_stats(args, client):
         if args.reset:
             s = client.reset_stats()
@@ -189,6 +205,17 @@
 
     subparsers = parser.add_subparsers()
 
+    get_parser = subparsers.add_parser('get', help="Get the unihash for a taskhash")
+    get_parser.add_argument("method", help="Method to query")
+    get_parser.add_argument("taskhash", help="Task hash to query")
+    get_parser.set_defaults(func=handle_get)
+
+    get_outhash_parser = subparsers.add_parser('get-outhash', help="Get output hash information")
+    get_outhash_parser.add_argument("method", help="Method to query")
+    get_outhash_parser.add_argument("outhash", help="Output hash to query")
+    get_outhash_parser.add_argument("taskhash", help="Task hash to query")
+    get_outhash_parser.set_defaults(func=handle_get_outhash)
+
     stats_parser = subparsers.add_parser('stats', help='Show server stats')
     stats_parser.add_argument('--reset', action='store_true',
                               help='Reset server stats')
diff --git a/poky/bitbake/lib/bb/cooker.py b/poky/bitbake/lib/bb/cooker.py
index d658db9..c5bfef5 100644
--- a/poky/bitbake/lib/bb/cooker.py
+++ b/poky/bitbake/lib/bb/cooker.py
@@ -102,12 +102,15 @@
 
 class EventWriter:
     def __init__(self, cooker, eventfile):
-        self.file_inited = None
         self.cooker = cooker
         self.eventfile = eventfile
         self.event_queue = []
 
-    def write_event(self, event):
+    def write_variables(self):
+        with open(self.eventfile, "a") as f:
+            f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])}))
+
+    def send(self, event):
         with open(self.eventfile, "a") as f:
             try:
                 str_event = codecs.encode(pickle.dumps(event), 'base64').decode('utf-8')
@@ -117,28 +120,6 @@
                 import traceback
                 print(err, traceback.format_exc())
 
-    def send(self, event):
-        if self.file_inited:
-            # we have the file, just write the event
-            self.write_event(event)
-        else:
-            # init on bb.event.BuildStarted
-            name = "%s.%s" % (event.__module__, event.__class__.__name__)
-            if name in ("bb.event.BuildStarted", "bb.cooker.CookerExit"):
-                with open(self.eventfile, "w") as f:
-                    f.write("%s\n" % json.dumps({ "allvariables" : self.cooker.getAllKeysWithFlags(["doc", "func"])}))
-
-                self.file_inited = True
-
-                # write pending events
-                for evt in self.event_queue:
-                    self.write_event(evt)
-
-                # also write the current event
-                self.write_event(event)
-            else:
-                # queue all events until the file is inited
-                self.event_queue.append(event)
 
 #============================================================================#
 # BBCooker
@@ -416,6 +397,7 @@
     def setupEventLog(self, eventlog):
         if self.eventlog and self.eventlog[0] != eventlog:
             bb.event.unregister_UIHhandler(self.eventlog[1])
+            self.eventlog = None
         if not self.eventlog or self.eventlog[0] != eventlog:
             # we log all events to a file if so directed
             # register the log file writer as UI Handler
@@ -423,7 +405,7 @@
                 bb.utils.mkdirhier(os.path.dirname(eventlog))
             writer = EventWriter(self, eventlog)
             EventLogWriteHandler = namedtuple('EventLogWriteHandler', ['event'])
-            self.eventlog = (eventlog, bb.event.register_UIHhandler(EventLogWriteHandler(writer)))
+            self.eventlog = (eventlog, bb.event.register_UIHhandler(EventLogWriteHandler(writer)), writer)
 
     def updateConfigOpts(self, options, environment, cmdline):
         self.ui_cmdline = cmdline
@@ -1404,6 +1386,8 @@
         buildname = self.databuilder.mcdata[mc].getVar("BUILDNAME")
         if fireevents:
             bb.event.fire(bb.event.BuildStarted(buildname, [item]), self.databuilder.mcdata[mc])
+            if self.eventlog:
+                self.eventlog[2].write_variables()
             bb.event.enable_heartbeat()
 
         # Execute the runqueue
@@ -1547,6 +1531,8 @@
 
         for mc in self.multiconfigs:
             bb.event.fire(bb.event.BuildStarted(buildname, ntargets), self.databuilder.mcdata[mc])
+        if self.eventlog:
+            self.eventlog[2].write_variables()
         bb.event.enable_heartbeat()
 
         rq = bb.runqueue.RunQueue(self, self.data, self.recipecaches, taskdata, runlist)
diff --git a/poky/bitbake/lib/bb/fetch2/gcp.py b/poky/bitbake/lib/bb/fetch2/gcp.py
index f42c81f..f40ce2e 100644
--- a/poky/bitbake/lib/bb/fetch2/gcp.py
+++ b/poky/bitbake/lib/bb/fetch2/gcp.py
@@ -47,6 +47,7 @@
             ud.basename = os.path.basename(ud.path)
 
         ud.localfile = d.expand(urllib.parse.unquote(ud.basename))
+        ud.basecmd = "gsutil stat"
 
     def get_gcp_client(self):
         from google.cloud import storage
@@ -61,7 +62,8 @@
         if self.gcp_client is None:
             self.get_gcp_client()
 
-        bb.fetch2.check_network_access(d, "gsutil stat", ud.url)
+        bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}")
+        runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d)
 
         # Path sometimes has leading slash, so strip it
         path = ud.path.lstrip("/")
@@ -88,7 +90,8 @@
         if self.gcp_client is None:
             self.get_gcp_client()
 
-        bb.fetch2.check_network_access(d, "gsutil stat", ud.url)
+        bb.fetch2.check_network_access(d, ud.basecmd, f"gs://{ud.host}{ud.path}")
+        runfetchcmd("%s %s" % (ud.basecmd, f"gs://{ud.host}{ud.path}"), d)
 
         # Path sometimes has leading slash, so strip it
         path = ud.path.lstrip("/")
diff --git a/poky/bitbake/lib/bb/tests/data.py b/poky/bitbake/lib/bb/tests/data.py
index 98e430c..cbc7c1e 100644
--- a/poky/bitbake/lib/bb/tests/data.py
+++ b/poky/bitbake/lib/bb/tests/data.py
@@ -395,6 +395,16 @@
         self.d.setVar("OVERRIDES", "foo:bar:some_val")
         self.assertEqual(self.d.getVar("TEST"), "testvalue3")
 
+    # Test an override with _<numeric> in it based on a real world OE issue
+    def test_underscore_override_2(self):
+        self.d.setVar("TARGET_ARCH", "x86_64")
+        self.d.setVar("PN", "test-${TARGET_ARCH}")
+        self.d.setVar("VERSION", "1")
+        self.d.setVar("VERSION:pn-test-${TARGET_ARCH}", "2")
+        self.d.setVar("OVERRIDES", "pn-${PN}")
+        bb.data.expandKeys(self.d)
+        self.assertEqual(self.d.getVar("VERSION"), "2")
+
     def test_remove_with_override(self):
         self.d.setVar("TEST:bar", "testvalue2")
         self.d.setVar("TEST:some_val", "testvalue3 testvalue5")
@@ -416,16 +426,6 @@
         self.d.setVar("TEST:bar:append", "testvalue2")
         self.assertEqual(self.d.getVar("TEST"), "testvalue2")
 
-    # Test an override with _<numeric> in it based on a real world OE issue
-    def test_underscore_override(self):
-        self.d.setVar("TARGET_ARCH", "x86_64")
-        self.d.setVar("PN", "test-${TARGET_ARCH}")
-        self.d.setVar("VERSION", "1")
-        self.d.setVar("VERSION:pn-test-${TARGET_ARCH}", "2")
-        self.d.setVar("OVERRIDES", "pn-${PN}")
-        bb.data.expandKeys(self.d)
-        self.assertEqual(self.d.getVar("VERSION"), "2")
-
     def test_append_and_unused_override(self):
         # Had a bug where an unused override append could return "" instead of None
         self.d.setVar("BAR:append:unusedoverride", "testvalue2")
diff --git a/poky/bitbake/lib/bb/ui/ncurses.py b/poky/bitbake/lib/bb/ui/ncurses.py
index cf1c876..18a7065 100644
--- a/poky/bitbake/lib/bb/ui/ncurses.py
+++ b/poky/bitbake/lib/bb/ui/ncurses.py
@@ -227,6 +227,9 @@
         shutdown = 0
 
         try:
+            if not params.observe_only:
+                params.updateToServer(server, os.environ.copy())
+
             params.updateFromServer(server)
             cmdline = params.parseActions()
             if not cmdline:
diff --git a/poky/bitbake/lib/hashserv/sqlite.py b/poky/bitbake/lib/hashserv/sqlite.py
index f65036b..f93cb2c 100644
--- a/poky/bitbake/lib/hashserv/sqlite.py
+++ b/poky/bitbake/lib/hashserv/sqlite.py
@@ -109,11 +109,11 @@
             )
 
     def connect(self, logger):
-        return Database(logger, self.dbname)
+        return Database(logger, self.dbname, self.sync)
 
 
 class Database(object):
-    def __init__(self, logger, dbname, sync=True):
+    def __init__(self, logger, dbname, sync):
         self.dbname = dbname
         self.logger = logger
 
@@ -121,6 +121,11 @@
         self.db.row_factory = sqlite3.Row
 
         with closing(self.db.cursor()) as cursor:
+            cursor.execute("PRAGMA journal_mode = WAL")
+            cursor.execute(
+                "PRAGMA synchronous = %s" % ("NORMAL" if sync else "OFF")
+            )
+
             cursor.execute("SELECT sqlite_version()")
 
             version = []
diff --git a/poky/bitbake/lib/hashserv/tests.py b/poky/bitbake/lib/hashserv/tests.py
index a9e6fdf..869f763 100644
--- a/poky/bitbake/lib/hashserv/tests.py
+++ b/poky/bitbake/lib/hashserv/tests.py
@@ -842,6 +842,26 @@
     def get_server_addr(self, server_idx):
         return "unix://" + os.path.join(self.temp_dir.name, 'sock%d' % server_idx)
 
+    def test_get(self):
+        taskhash, outhash, unihash = self.create_test_hash(self.client)
+
+        p = self.run_hashclient(["--address", self.server_address, "get", self.METHOD, taskhash])
+        data = json.loads(p.stdout)
+        self.assertEqual(data["unihash"], unihash)
+        self.assertEqual(data["outhash"], outhash)
+        self.assertEqual(data["taskhash"], taskhash)
+        self.assertEqual(data["method"], self.METHOD)
+
+    def test_get_outhash(self):
+        taskhash, outhash, unihash = self.create_test_hash(self.client)
+
+        p = self.run_hashclient(["--address", self.server_address, "get-outhash", self.METHOD, outhash, taskhash])
+        data = json.loads(p.stdout)
+        self.assertEqual(data["unihash"], unihash)
+        self.assertEqual(data["outhash"], outhash)
+        self.assertEqual(data["taskhash"], taskhash)
+        self.assertEqual(data["method"], self.METHOD)
+
     def test_stats(self):
         p = self.run_hashclient(["--address", self.server_address, "stats"], check=True)
         json.loads(p.stdout)
diff --git a/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py b/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
index e0ac437..d9ea7fd 100644
--- a/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
+++ b/poky/bitbake/lib/toaster/tests/browser/selenium_helpers_base.py
@@ -71,7 +71,9 @@
     _TIMEOUT = 10
     _POLL_FREQUENCY = 0.5
 
-    def __init__(self, driver):
+    def __init__(self, driver, timeout=_TIMEOUT, poll=_POLL_FREQUENCY):
+        self._TIMEOUT = timeout
+        self._POLL_FREQUENCY = poll
         super(Wait, self).__init__(driver, self._TIMEOUT, self._POLL_FREQUENCY)
 
     def until(self, method, message=''):
@@ -175,18 +177,19 @@
         """ Return the element which currently has focus on the page """
         return self.driver.switch_to.active_element
 
-    def wait_until_present(self, selector):
+    def wait_until_present(self, selector, poll=0.5):
         """ Wait until element matching CSS selector is on the page """
         is_present = lambda driver: self.find(selector)
         msg = 'An element matching "%s" should be on the page' % selector
-        element = Wait(self.driver).until(is_present, msg)
+        element = Wait(self.driver, poll=poll).until(is_present, msg)
         return element
 
-    def wait_until_visible(self, selector):
+    def wait_until_visible(self, selector, poll=1):
         """ Wait until element matching CSS selector is visible on the page """
         is_visible = lambda driver: self.find(selector).is_displayed()
         msg = 'An element matching "%s" should be visible' % selector
-        Wait(self.driver).until(is_visible, msg)
+        Wait(self.driver, poll=poll).until(is_visible, msg)
+        time.sleep(poll)  # wait for visibility to settle
         return self.find(selector)
 
     def wait_until_focused(self, selector):
diff --git a/poky/bitbake/lib/toaster/tests/functional/test_project_page.py b/poky/bitbake/lib/toaster/tests/functional/test_project_page.py
index 3edf967..03f64f8 100644
--- a/poky/bitbake/lib/toaster/tests/functional/test_project_page.py
+++ b/poky/bitbake/lib/toaster/tests/functional/test_project_page.py
@@ -6,10 +6,17 @@
 # SPDX-License-Identifier: GPL-2.0-only
 #
 
+import random
+import string
 import pytest
+from time import sleep
 from django.urls import reverse
+from django.utils import timezone
+from selenium.webdriver.common.keys import Keys
 from selenium.webdriver.support.select import Select
+from selenium.common.exceptions import NoSuchElementException, TimeoutException
 from tests.functional.functional_helpers import SeleniumFunctionalTestCase
+from orm.models import Build, Project, Target
 from selenium.webdriver.common.by import By
 
 
@@ -19,13 +26,18 @@
     def setUp(self):
         super().setUp()
         release = '3'
-        project_name = 'projectmaster'
+        project_name = 'project_' + self.generate_random_string()
         self._create_test_new_project(
             project_name,
             release,
             False,
         )
 
+    def generate_random_string(self, length=10):
+        characters = string.ascii_letters + string.digits  # alphabetic and numerical characters
+        random_string = ''.join(random.choice(characters) for _ in range(length))
+        return random_string
+
     def _create_test_new_project(
         self,
         project_name,
@@ -55,6 +67,205 @@
 
         self.driver.find_element(By.ID, "create-project-button").click()
 
+    def _get_create_builds(self, **kwargs):
+        """ Create a build and return the build object """
+        # parameters for builds to associate with the projects
+        now = timezone.now()
+        release = '3'
+        project_name = 'projectmaster'
+        self._create_test_new_project(
+            project_name+"2",
+            release,
+            False,
+        )
+
+        self.project1_build_success = {
+            'project': Project.objects.get(id=1),
+            'started_on': now,
+            'completed_on': now,
+            'outcome': Build.SUCCEEDED
+        }
+
+        self.project1_build_failure = {
+            'project': Project.objects.get(id=1),
+            'started_on': now,
+            'completed_on': now,
+            'outcome': Build.FAILED
+        }
+        build1 = Build.objects.create(**self.project1_build_success)
+        build2 = Build.objects.create(**self.project1_build_failure)
+
+        # add some targets to these builds so they have recipe links
+        # (and so we can find the row in the ToasterTable corresponding to
+        # a particular build)
+        Target.objects.create(build=build1, target='foo')
+        Target.objects.create(build=build2, target='bar')
+
+        if kwargs:
+            # Create kwargs.get('success') builds with success status with target
+            # and kwargs.get('failure') builds with failure status with target
+            for i in range(kwargs.get('success', 0)):
+                now = timezone.now()
+                self.project1_build_success['started_on'] = now
+                self.project1_build_success[
+                    'completed_on'] = now - timezone.timedelta(days=i)
+                build = Build.objects.create(**self.project1_build_success)
+                Target.objects.create(build=build,
+                                      target=f'{i}_success_recipe',
+                                      task=f'{i}_success_task')
+
+            for i in range(kwargs.get('failure', 0)):
+                now = timezone.now()
+                self.project1_build_failure['started_on'] = now
+                self.project1_build_failure[
+                    'completed_on'] = now - timezone.timedelta(days=i)
+                build = Build.objects.create(**self.project1_build_failure)
+                Target.objects.create(build=build,
+                                      target=f'{i}_fail_recipe',
+                                      task=f'{i}_fail_task')
+        return build1, build2
+
+    def _mixin_test_table_edit_column(
+            self,
+            table_id,
+            edit_btn_id,
+            list_check_box_id: list
+    ):
+        # Check edit column
+        edit_column = self.find(f'#{edit_btn_id}')
+        self.assertTrue(edit_column.is_displayed())
+        edit_column.click()
+        # Check dropdown is visible
+        self.wait_until_visible('ul.dropdown-menu.editcol')
+        for check_box_id in list_check_box_id:
+            # Check that we can hide/show table column
+            check_box = self.find(f'#{check_box_id}')
+            th_class = str(check_box_id).replace('checkbox-', '')
+            if check_box.is_selected():
+                # check if column is visible in table
+                self.assertTrue(
+                    self.find(
+                        f'#{table_id} thead th.{th_class}'
+                    ).is_displayed(),
+                    f"The {th_class} column is checked in EditColumn dropdown, but it's not visible in table"
+                )
+                check_box.click()
+                # check if column is hidden in table
+                self.assertFalse(
+                    self.find(
+                        f'#{table_id} thead th.{th_class}'
+                    ).is_displayed(),
+                    f"The {th_class} column is unchecked in EditColumn dropdown, but it's visible in table"
+                )
+            else:
+                # check if column is hidden in table
+                self.assertFalse(
+                    self.find(
+                        f'#{table_id} thead th.{th_class}'
+                    ).is_displayed(),
+                    f"The {th_class} column is unchecked in EditColumn dropdown, but it's visible in table"
+                )
+                check_box.click()
+                # check if column is visible in table
+                self.assertTrue(
+                    self.find(
+                        f'#{table_id} thead th.{th_class}'
+                    ).is_displayed(),
+                    f"The {th_class} column is checked in EditColumn dropdown, but it's not visible in table"
+                )
+
+    def _get_config_nav_item(self, index):
+        config_nav = self.find('#config-nav')
+        return config_nav.find_elements(By.TAG_NAME, 'li')[index]
+
+    def _navigate_to_config_nav(self, nav_id, nav_index):
+        # navigate to the project page
+        url = reverse("project", args=(1,))
+        self.get(url)
+        self.wait_until_visible('#config-nav')
+        # click on "Software recipe" tab
+        soft_recipe = self._get_config_nav_item(nav_index)
+        soft_recipe.click()
+        self.wait_until_visible(f'#{nav_id}')
+
+    def _mixin_test_table_show_rows(self, table_selector, **kwargs):
+        """ Test the show rows feature in the builds table on the all builds page """
+        def test_show_rows(row_to_show, show_row_link):
+            # Check that we can show rows == row_to_show
+            show_row_link.select_by_value(str(row_to_show))
+            self.wait_until_visible(f'#{table_selector} tbody tr', poll=2)
+            self.assertTrue(
+                len(self.find_all(f'#{table_selector} tbody tr')) == row_to_show
+            )
+        self.wait_until_present(f'#{table_selector} tbody tr')
+        show_rows = self.driver.find_elements(
+            By.XPATH,
+            f'//select[@class="form-control pagesize-{table_selector}"]'
+        )
+        rows_to_show = [10, 25, 50, 100, 150]
+        to_skip = kwargs.get('to_skip', [])
+        # Check show rows
+        for show_row_link in show_rows:
+            show_row_link = Select(show_row_link)
+            for row_to_show in rows_to_show:
+                if row_to_show not in to_skip:
+                    test_show_rows(row_to_show, show_row_link)
+
+    def _wait_until_build(self, state):
+        timeout = 10
+        start_time = 0
+        while True:
+            if start_time > timeout:
+                raise TimeoutException(
+                    f'Build did not reach {state} state within {timeout} seconds'
+                )
+            try:
+                last_build_state = self.driver.find_element(
+                    By.XPATH,
+                    '//*[@id="latest-builds"]/div[1]//div[@class="build-state"]',
+                )
+                build_state = last_build_state.get_attribute(
+                    'data-build-state')
+                state_text = state.lower().split()
+                if any(x in str(build_state).lower() for x in state_text):
+                    break
+            except NoSuchElementException:
+                continue
+            start_time += 1
+            sleep(1) # take a breath and try again
+
+    def _mixin_test_table_search_input(self, **kwargs):
+        input_selector, input_text, searchBtn_selector, table_selector, *_ = kwargs.values()
+        # Test search input
+        self.wait_until_visible(f'#{input_selector}')
+        recipe_input = self.find(f'#{input_selector}')
+        recipe_input.send_keys(input_text)
+        self.find(f'#{searchBtn_selector}').click()
+        self.wait_until_visible(f'#{table_selector} tbody tr')
+        rows = self.find_all(f'#{table_selector} tbody tr')
+        self.assertTrue(len(rows) > 0)
+
+    def test_image_recipe_editColumn(self):
+        """ Test the edit column feature in image recipe table on project page """
+        self._get_create_builds(success=10, failure=10)
+
+        url = reverse('projectimagerecipes', args=(1,))
+        self.get(url)
+        self.wait_until_present('#imagerecipestable tbody tr')
+
+        column_list = [
+            'get_description_or_summary', 'layer_version__get_vcs_reference',
+            'layer_version__layer__name', 'license', 'recipe-file', 'section',
+            'version'
+        ]
+
+        # Check that we can hide the edit column
+        self._mixin_test_table_edit_column(
+            'imagerecipestable',
+            'edit-columns-button',
+            [f'checkbox-{column}' for column in column_list]
+        )
+
     def test_page_header_on_project_page(self):
         """ Check page header in project page:
           - AT LEFT -> Logo of Yocto project, displayed, clickable
@@ -184,11 +395,9 @@
         self.wait_until_visible('#topbar-configuration-tab')
         config_tab = self.find('#topbar-configuration-tab')
         self.assertTrue(config_tab.get_attribute('class') == 'active')
-        self.assertTrue('Configuration' in config_tab.text)
-        config_tab_link = config_tab.find_element(By.TAG_NAME, 'a')
+        self.assertTrue('Configuration' in str(config_tab.text))
         self.assertTrue(
-            f"/toastergui/project/1" in str(config_tab_link.get_attribute(
-                'href'))
+            f"/toastergui/project/1" in str(self.driver.current_url)
         )
 
         def get_tabs():
@@ -245,3 +454,337 @@
         self.assertTrue(
             'core-image-minimal' in str(last_build.text)
         )
+
+    def test_softwareRecipe_page(self):
+        """ Test software recipe page
+            - Check title "Compatible software recipes" is displayed
+            - Check search input
+            - Check "build recipe" button works
+            - Check software recipe table feature(show/hide column, pagination)
+        """
+        self._navigate_to_config_nav('softwarerecipestable', 4)
+        # check title "Compatible software recipes" is displayed
+        self.assertTrue("Compatible software recipes" in self.get_page_source())
+        # Test search input
+        self._mixin_test_table_search_input(
+            input_selector='search-input-softwarerecipestable',
+            input_text='busybox',
+            searchBtn_selector='search-submit-softwarerecipestable',
+            table_selector='softwarerecipestable'
+        )
+        # check "build recipe" button works
+        rows = self.find_all('#softwarerecipestable tbody tr')
+        image_to_build = rows[0]
+        build_btn = image_to_build.find_element(
+            By.XPATH,
+            '//td[@class="add-del-layers"]//a[1]'
+        )
+        build_btn.click()
+        self._wait_until_build('parsing starting cloning queued')
+        lastest_builds = self.driver.find_elements(
+            By.XPATH,
+            '//div[@id="latest-builds"]/div'
+        )
+        self.assertTrue(len(lastest_builds) > 0)
+
+        # check software recipe table feature(show/hide column, pagination)
+        self._navigate_to_config_nav('softwarerecipestable', 4)
+        column_list = [
+            'get_description_or_summary',
+            'layer_version__get_vcs_reference',
+            'layer_version__layer__name',
+            'license',
+            'recipe-file',
+            'section',
+            'version',
+        ]
+        self._mixin_test_table_edit_column(
+            'softwarerecipestable',
+            'edit-columns-button',
+            [f'checkbox-{column}' for column in column_list]
+        )
+        self._navigate_to_config_nav('softwarerecipestable', 4)
+        # check show rows(pagination)
+        self._mixin_test_table_show_rows(table_selector='softwarerecipestable')
+
+    def test_machines_page(self):
+        """ Test Machine page
+            - Check if title "Compatible machines" is displayed
+            - Check search input
+            - Check "Select machine" button works
+            - Check "Add layer" button works
+            - Check Machine table feature(show/hide column, pagination)
+        """
+        self._navigate_to_config_nav('machinestable', 5)
+        # check title "Compatible software recipes" is displayed
+        self.assertTrue("Compatible machines" in self.get_page_source())
+        # Test search input
+        self._mixin_test_table_search_input(
+            input_selector='search-input-machinestable',
+            input_text='qemux86-64',
+            searchBtn_selector='search-submit-machinestable',
+            table_selector='machinestable'
+        )
+        # check "Select machine" button works
+        rows = self.find_all('#machinestable tbody tr')
+        machine_to_select = rows[0]
+        select_btn = machine_to_select.find_element(
+            By.XPATH,
+            '//td[@class="add-del-layers"]//a[1]'
+        )
+        select_btn.send_keys(Keys.RETURN)
+        self.wait_until_visible('#config-nav')
+        project_machine_name = self.find('#project-machine-name')
+        self.assertTrue(
+            'qemux86-64' in project_machine_name.text
+        )
+        # check "Add layer" button works
+        self._navigate_to_config_nav('machinestable', 5)
+        # Search for a machine whit layer not in project
+        self._mixin_test_table_search_input(
+            input_selector='search-input-machinestable',
+            input_text='qemux86-64-tpm2',
+            searchBtn_selector='search-submit-machinestable',
+            table_selector='machinestable'
+        )
+        rows = self.find_all('#machinestable tbody tr')
+        machine_to_add = rows[0]
+        add_btn = machine_to_add.find_element(By.XPATH, '//td[@class="add-del-layers"]')
+        add_btn.click()
+        self.wait_until_visible('#change-notification')
+        change_notification = self.find('#change-notification')
+        self.assertTrue(
+            f'You have added 1 layer to your project' in str(change_notification.text)
+        )
+        # check Machine table feature(show/hide column, pagination)
+        self._navigate_to_config_nav('machinestable', 5)
+        column_list = [
+            'description',
+            'layer_version__get_vcs_reference',
+            'layer_version__layer__name',
+            'machinefile',
+        ]
+        self._mixin_test_table_edit_column(
+            'machinestable',
+            'edit-columns-button',
+            [f'checkbox-{column}' for column in column_list]
+        )
+        self._navigate_to_config_nav('machinestable', 5)
+        # check show rows(pagination)
+        self._mixin_test_table_show_rows(table_selector='machinestable')
+
+    def test_layers_page(self):
+        """ Test layers page
+            - Check if title "Compatible layerss" is displayed
+            - Check search input
+            - Check "Add layer" button works
+            - Check "Remove layer" button works
+            - Check layers table feature(show/hide column, pagination)
+        """
+        self._navigate_to_config_nav('layerstable', 6)
+        # check title "Compatible layers" is displayed
+        self.assertTrue("Compatible layers" in self.get_page_source())
+        # Test search input
+        input_text='meta-tanowrt'
+        self._mixin_test_table_search_input(
+            input_selector='search-input-layerstable',
+            input_text=input_text,
+            searchBtn_selector='search-submit-layerstable',
+            table_selector='layerstable'
+        )
+        # check "Add layer" button works
+        rows = self.find_all('#layerstable tbody tr')
+        layer_to_add = rows[0]
+        add_btn = layer_to_add.find_element(
+            By.XPATH,
+            '//td[@class="add-del-layers"]'
+        )
+        add_btn.click()
+        # check modal is displayed
+        self.wait_until_visible('#dependencies-modal', poll=2)
+        list_dependencies = self.find_all('#dependencies-list li')
+        # click on add-layers button
+        add_layers_btn = self.driver.find_element(
+            By.XPATH,
+            '//form[@id="dependencies-modal-form"]//button[@class="btn btn-primary"]'
+        )
+        add_layers_btn.click()
+        self.wait_until_visible('#change-notification')
+        change_notification = self.find('#change-notification')
+        self.assertTrue(
+            f'You have added {len(list_dependencies)+1} layers to your project: {input_text} and its dependencies' in str(change_notification.text)
+        )
+        # check "Remove layer" button works
+        rows = self.find_all('#layerstable tbody tr')
+        layer_to_remove = rows[0]
+        remove_btn = layer_to_remove.find_element(
+            By.XPATH,
+            '//td[@class="add-del-layers"]'
+        )
+        remove_btn.click()
+        self.wait_until_visible('#change-notification', poll=2)
+        change_notification = self.find('#change-notification')
+        self.assertTrue(
+            f'You have removed 1 layer from your project: {input_text}' in str(change_notification.text)
+        )
+        # check layers table feature(show/hide column, pagination)
+        self._navigate_to_config_nav('layerstable', 6)
+        column_list = [
+            'dependencies',
+            'revision',
+            'layer__vcs_url',
+            'git_subdir',
+            'layer__summary',
+        ]
+        self._mixin_test_table_edit_column(
+            'layerstable',
+            'edit-columns-button',
+            [f'checkbox-{column}' for column in column_list]
+        )
+        self._navigate_to_config_nav('layerstable', 6)
+        # check show rows(pagination)
+        self._mixin_test_table_show_rows(table_selector='layerstable')
+
+    def test_distro_page(self):
+        """ Test distros page
+            - Check if title "Compatible distros" is displayed
+            - Check search input
+            - Check "Add layer" button works
+            - Check distro table feature(show/hide column, pagination)
+        """
+        self._navigate_to_config_nav('distrostable', 7)
+        # check title "Compatible distros" is displayed
+        self.assertTrue("Compatible Distros" in self.get_page_source())
+        # Test search input
+        input_text='poky-altcfg'
+        self._mixin_test_table_search_input(
+            input_selector='search-input-distrostable',
+            input_text=input_text,
+            searchBtn_selector='search-submit-distrostable',
+            table_selector='distrostable'
+        )
+        # check "Add distro" button works
+        rows = self.find_all('#distrostable tbody tr')
+        distro_to_add = rows[0]
+        add_btn = distro_to_add.find_element(
+            By.XPATH,
+            '//td[@class="add-del-layers"]//a[1]'
+        )
+        add_btn.click()
+        self.wait_until_visible('#change-notification', poll=2)
+        change_notification = self.find('#change-notification')
+        self.assertTrue(
+            f'You have changed the distro to: {input_text}' in str(change_notification.text)
+        )
+        # check distro table feature(show/hide column, pagination)
+        self._navigate_to_config_nav('distrostable', 7)
+        column_list = [
+            'description',
+            'templatefile',
+            'layer_version__get_vcs_reference',
+            'layer_version__layer__name',
+        ]
+        self._mixin_test_table_edit_column(
+            'distrostable',
+            'edit-columns-button',
+            [f'checkbox-{column}' for column in column_list]
+        )
+        self._navigate_to_config_nav('distrostable', 7)
+        # check show rows(pagination)
+        self._mixin_test_table_show_rows(
+            table_selector='distrostable',
+            to_skip=[150]
+        )
+
+    def test_single_layer_page(self):
+        """ Test layer page
+            - Check if title is displayed
+            - Check add/remove layer button works
+            - Check tabs(layers, recipes, machines) are displayed
+            - Check left section is displayed
+                - Check layer name
+                - Check layer summary
+                - Check layer description
+        """
+        url = reverse("layerdetails", args=(1, 8))
+        self.get(url)
+        self.wait_until_visible('.page-header')
+        # check title is displayed
+        self.assertTrue(self.find('.page-header h1').is_displayed())
+
+        # check add layer button works
+        remove_layer_btn = self.find('#add-remove-layer-btn')
+        remove_layer_btn.click()
+        self.wait_until_visible('#change-notification', poll=2)
+        change_notification = self.find('#change-notification')
+        self.assertTrue(
+            f'You have removed 1 layer from your project' in str(change_notification.text)
+        )
+        # check add layer button works, 18 is the random layer id
+        add_layer_btn = self.find('#add-remove-layer-btn')
+        add_layer_btn.click()
+        self.wait_until_visible('#change-notification')
+        change_notification = self.find('#change-notification')
+        self.assertTrue(
+            f'You have added 1 layer to your project' in str(change_notification.text)
+        )
+        # check tabs(layers, recipes, machines) are displayed
+        tabs = self.find_all('.nav-tabs li')
+        self.assertEqual(len(tabs), 3)
+        # Check first tab
+        tabs[0].click()
+        self.assertTrue(
+            'active' in str(self.find('#information').get_attribute('class'))
+        )
+        # Check second tab
+        tabs[1].click()
+        self.assertTrue(
+            'active' in str(self.find('#recipes').get_attribute('class'))
+        )
+        # Check third tab
+        tabs[2].click()
+        self.assertTrue(
+            'active' in str(self.find('#machines').get_attribute('class'))
+        )
+        # Check left section is displayed
+        section = self.find('.well')
+        # Check layer name
+        self.assertTrue(
+            section.find_element(By.XPATH, '//h2[1]').is_displayed()
+        )
+        # Check layer summary
+        self.assertTrue("Summary" in section.text)
+        # Check layer description
+        self.assertTrue("Description" in section.text)
+
+    def test_single_recipe_page(self):
+        """ Test recipe page
+            - Check if title is displayed
+            - Check add recipe layer displayed
+            - Check left section is displayed
+                - Check recipe: name, summary, description, Version, Section,
+                License, Approx. packages included, Approx. size, Recipe file
+        """
+        url = reverse("recipedetails", args=(1, 53428))
+        self.get(url)
+        self.wait_until_visible('.page-header')
+        # check title is displayed
+        self.assertTrue(self.find('.page-header h1').is_displayed())
+        # check add recipe layer displayed
+        add_recipe_layer_btn = self.find('#add-layer-btn')
+        self.assertTrue(add_recipe_layer_btn.is_displayed())
+        # check left section is displayed
+        section = self.find('.well')
+        # Check recipe name
+        self.assertTrue(
+            section.find_element(By.XPATH, '//h2[1]').is_displayed()
+        )
+        # Check recipe sections details info are displayed
+        self.assertTrue("Summary" in section.text)
+        self.assertTrue("Description" in section.text)
+        self.assertTrue("Version" in section.text)
+        self.assertTrue("Section" in section.text)
+        self.assertTrue("License" in section.text)
+        self.assertTrue("Approx. packages included" in section.text)
+        self.assertTrue("Approx. package size" in section.text)
+        self.assertTrue("Recipe file" in section.text)
diff --git a/poky/documentation/contributor-guide/recipe-style-guide.rst b/poky/documentation/contributor-guide/recipe-style-guide.rst
index a005aa3..08d8fb4 100644
--- a/poky/documentation/contributor-guide/recipe-style-guide.rst
+++ b/poky/documentation/contributor-guide/recipe-style-guide.rst
@@ -250,6 +250,18 @@
    correct string that you can substitute into the recipe file for a
    subsequent build.
 
+License Updates
+~~~~~~~~~~~~~~~
+
+When you change the :term:`LICENSE` or :term:`LIC_FILES_CHKSUM` in the recipe
+you need to briefly explain the reason for the change via a ``License-Update:``
+tag.  Often it's quite trivial, such as::
+
+    License-Update: copyright years refreshed
+
+Less often, the actual licensing terms themselves will have changed.  If so, do
+try to link to upstream making/justifying that decision.
+
 Tips and Guidelines for Writing Recipes
 ---------------------------------------
 
diff --git a/poky/documentation/contributor-guide/submit-changes.rst b/poky/documentation/contributor-guide/submit-changes.rst
index 53daaf9..5a6136c 100644
--- a/poky/documentation/contributor-guide/submit-changes.rst
+++ b/poky/documentation/contributor-guide/submit-changes.rst
@@ -460,7 +460,7 @@
 please add the appropriate prefix so that it is clear which layer the patch is intended
 to be applied to::
 
-   git send-email --subject-prefix="meta-oe][PATCH" ...
+   git format-patch --subject-prefix="meta-oe][PATCH" ...
 
 .. note::
 
diff --git a/poky/documentation/dev-manual/layers.rst b/poky/documentation/dev-manual/layers.rst
index c65a94b..b3ccf63 100644
--- a/poky/documentation/dev-manual/layers.rst
+++ b/poky/documentation/dev-manual/layers.rst
@@ -313,7 +313,7 @@
    successful compatibility registration.
 
 #. Completion of an application acceptance form, which you can find at
-   :yocto_home:`/webform/yocto-project-compatible-registration`.
+   :yocto_home:`/compatible-registration/`.
 
 To be granted permission to use the logo, you need to satisfy the
 following:
@@ -337,7 +337,7 @@
 layer and the application that uses your layer.
 
 To access the form, use this link:
-:yocto_home:`/webform/yocto-project-compatible-registration`.
+:yocto_home:`/compatible-registration`.
 Follow the instructions on the form to complete your application.
 
 The application consists of the following sections:
diff --git a/poky/documentation/migration-guides/migration-2.2.rst b/poky/documentation/migration-guides/migration-2.2.rst
index 5435835..3932792 100644
--- a/poky/documentation/migration-guides/migration-2.2.rst
+++ b/poky/documentation/migration-guides/migration-2.2.rst
@@ -29,7 +29,7 @@
 The way directories are staged in sysroot has been simplified and
 introduces the new :term:`SYSROOT_DIRS`,
 :term:`SYSROOT_DIRS_NATIVE`, and ``SYSROOT_DIRS_BLACKLIST``
-(replaced by :term:`SYSROOT_DIRS_IGNORE` in version 3.5). See the
+(replaced by :term:`SYSROOT_DIRS_IGNORE` in version 4.0). See the
 :oe_lists:`v2 patch series on the OE-Core Mailing List
 </pipermail/openembedded-core/2016-May/121365.html>`
 for additional information.
diff --git a/poky/documentation/migration-guides/migration-3.0.rst b/poky/documentation/migration-guides/migration-3.0.rst
index 8e7a58e..67fcac4 100644
--- a/poky/documentation/migration-guides/migration-3.0.rst
+++ b/poky/documentation/migration-guides/migration-3.0.rst
@@ -150,7 +150,7 @@
 and makes other improvements.
 
 Additionally, the ``CVE_CHECK_CVE_WHITELIST`` variable has been replaced
-by ``CVE_CHECK_WHITELIST`` (replaced by :term:`CVE_CHECK_IGNORE` in version 3.5).
+by ``CVE_CHECK_WHITELIST`` (replaced by :term:`CVE_CHECK_IGNORE` in version 4.0).
 
 .. _migration-3.0-bitbake-changes:
 
diff --git a/poky/documentation/migration-guides/migration-3.4.rst b/poky/documentation/migration-guides/migration-3.4.rst
index f50fe5e..a9b1057 100644
--- a/poky/documentation/migration-guides/migration-3.4.rst
+++ b/poky/documentation/migration-guides/migration-3.4.rst
@@ -255,7 +255,7 @@
 - The previously deprecated ``COMPRESS_CMD`` and
   ``CVE_CHECK_CVE_WHITELIST`` variables have been removed. Use
   :term:`CONVERSION_CMD` and ``CVE_CHECK_WHITELIST`` (replaced by
-  :term:`CVE_CHECK_IGNORE` in version 3.5) respectively
+  :term:`CVE_CHECK_IGNORE` in version 4.0) respectively
   instead.
 
 - The obsolete ``oe_machinstall`` function previously provided in the
diff --git a/poky/documentation/migration-guides/release-4.3.rst b/poky/documentation/migration-guides/release-4.3.rst
index 92516ae..5b651a2 100644
--- a/poky/documentation/migration-guides/release-4.3.rst
+++ b/poky/documentation/migration-guides/release-4.3.rst
@@ -7,3 +7,4 @@
 
    migration-4.3
    release-notes-4.3
+   release-notes-4.3.1
diff --git a/poky/documentation/migration-guides/release-notes-4.3.1.rst b/poky/documentation/migration-guides/release-notes-4.3.1.rst
new file mode 100644
index 0000000..377cdb4
--- /dev/null
+++ b/poky/documentation/migration-guides/release-notes-4.3.1.rst
@@ -0,0 +1,237 @@
+.. SPDX-License-Identifier: CC-BY-SA-2.0-UK
+
+Release notes for Yocto-4.3.1 (Nanbield)
+----------------------------------------
+
+Security Fixes in Yocto-4.3.1
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+-  libsndfile1: Fix :cve:`2022-33065`
+-  libxml2: Ignore :cve:`2023-45322`
+-  linux-yocto/6.1: Ignore :cve:`2020-27418`, :cve:`2023-31085`, :cve_mitre:`2023-34324`, :cve:`2023-39189`, :cve:`2023-39192`, :cve:`2023-39193`, :cve:`2023-39194`, :cve:`2023-4244`, :cve:`2023-42754`, :cve:`2023-42756`, :cve:`2023-44466`, :cve:`2023-4563`, :cve:`2023-45862`, :cve:`2023-45863`, :cve:`2023-45871`, :cve:`2023-45898`, :cve:`2023-4732`, :cve:`2023-5158`, :cve:`2023-5197` and :cve:`2023-5345`
+-  linux-yocto/6.5: Ignore :cve:`2020-27418`, :cve:`2023-1193`, :cve:`2023-39191`, :cve:`2023-39194`, :cve:`2023-40791`, :cve:`2023-44466`, :cve:`2023-45862`, :cve:`2023-45863`, :cve:`2023-4610` and :cve:`2023-4732`
+-  openssl: Fix :cve:`2023-5363`
+-  pixman: Ignore :cve:`2023-37769`
+-  vim: Fix :cve:`2023-46246`
+-  zlib: Ignore :cve:`2023-45853`
+
+
+Fixes in Yocto-4.3.1
+~~~~~~~~~~~~~~~~~~~~
+
+-  Remove references to apm in :term:`MACHINE_FEATURES`
+-  baremetal-helloworld: Pull in fix for race condition on x86-64
+-  base: Ensure recipes using mercurial-native have certificates
+-  bb-matrix-plot.sh: Show underscores correctly in labels
+-  bin_package.bbclass: revert "Inhibit the default dependencies"
+-  bitbake: SECURITY.md: add file
+-  brief-yoctoprojectqs: use new CDN mirror for sstate
+-  bsp-guide: bsp.rst: update beaglebone example
+-  bsp-guide: bsp: skip Intel machines no longer supported in Poky
+-  build-appliance-image: Update to nanbield head revision
+-  contributor-guide: add patchtest section
+-  contributor-guide: clarify patchtest usage
+-  cve-check: don't warn if a patch is remote
+-  cve-check: slightly more verbose warning when adding the same package twice
+-  cve-check: sort the package list in the JSON report
+-  dev-manual: add security team processes
+-  dev-manual: extend the description of CVE patch preparation
+-  dev-manual: layers: Add notes about layer.conf
+-  dev-manual: new-recipe.rst: add missing parenthesis to "Patching Code" section
+-  dev-manual: start.rst: remove obsolete reference
+-  dev-manual: wic: update "wic list images" output
+-  docs: add support for nanbield (4.3) release
+-  documentation.conf: drop SERIAL_CONSOLES_CHECK
+-  ell: Upgrade to 0.59
+-  glib-2.0: Remove unnecessary assignement
+-  goarch: Move Go architecture mapping to a library
+-  kernel-arch: drop CCACHE from :term:`KERNEL_STRIP` definition
+-  kernel.bbclass: Use strip utility used for kernel build in do_package
+-  layer.conf: Switch layer to nanbield series only
+-  libsdl2: upgrade to 2.28.4
+-  linux-yocto: make sure the pahole-native available before do_kernel_configme
+-  llvm: Upgrade to 17.0.3
+-  machine: drop obsolete SERIAL_CONSOLES_CHECK
+-  manuals: correct "yocto-linux" by "linux-yocto"
+-  manuals: improve description of :term:`CVE_STATUS` and :term:`CVE_STATUS_GROUPS`
+-  manuals: update linux-yocto append examples
+-  manuals: update list of supported machines
+-  migration-4.3: additional migration items
+-  migration-4.3: adjustments to existing text
+-  migration-4.3: remove some unnecessary items
+-  migration-guides: QEMU_USE_SLIRP variable removed
+-  migration-guides: add BitBake changes
+-  migration-guides: add debian 12 to newly supported distros
+-  migration-guides: add kernel notes
+-  migration-guides: add testing notes
+-  migration-guides: add utility notes
+-  migration-guides: edgerouter machine removed
+-  migration-guides: enabling :term:`SPDX` only for Poky, not a global default
+-  migration-guides: fix empty sections
+-  migration-guides: further updates for 4.3
+-  migration-guides: further updates for release 4.3
+-  migration-guides: git recipes reword
+-  migration-guides: mention CDN
+-  migration-guides: mention LLVM 17
+-  migration-guides: mention runqemu change in serial port management
+-  migration-guides: packaging changes
+-  migration-guides: remove SERIAL_CONSOLES_CHECK
+-  migration-guides: remove non-notable change
+-  migration-guides: updates for 4.3
+-  oeqa/selftest/debuginfod: improve selftest
+-  oeqa/selftest/devtool: abort if a local workspace already exist
+-  oeqa/ssh: Handle SSHCall timeout error code
+-  openssl: Upgrade to 3.1.4
+-  overview-manual: concepts: Add Bitbake Tasks Map
+-  patchtest-send-results: add In-Reply-To
+-  patchtest-send-results: check max line length, simplify responses
+-  patchtest-send-results: fix sender parsing
+-  patchtest-send-results: improve subject line
+-  patchtest-send-results: send results to submitter
+-  patchtest/selftest: add XSKIP, update test files
+-  patchtest: disable merge test
+-  patchtest: fix lic_files_chksum test regex
+-  patchtest: make pylint tests compatible with 3.x
+-  patchtest: reduce checksum test output length
+-  patchtest: remove test for CVE tag in mbox
+-  patchtest: remove unused imports
+-  patchtest: rework license checksum tests
+-  patchtest: shorten test result outputs
+-  patchtest: simplify test directory structure
+-  patchtest: skip merge test if not targeting master
+-  patchtest: test regardless of mergeability
+-  perl: fix intermittent test failure
+-  poky.conf: bump version for 4.3.1 release
+-  profile-manual: aesthetic cleanups
+-  ref-manual: Add documentation for the unimplemented-ptest QA warning
+-  ref-manual: Fix :term:`PACKAGECONFIG` term and add an example
+-  ref-manual: Warn about :term:`COMPATIBLE_MACHINE` skipping native recipes
+-  ref-manual: add systemd-resolved to distro features
+-  ref-manual: classes: explain cml1 class name
+-  ref-manual: document :term:`KERNEL_LOCALVERSION`
+-  ref-manual: document :term:`KERNEL_STRIP`
+-  ref-manual: document :term:`MESON_TARGET`
+-  ref-manual: document cargo_c class
+-  ref-manual: remove semicolons from ``*PROCESS_COMMAND`` variables
+-  ref-manual: update :term:`SDK_NAME` variable documentation
+-  ref-manual: variables: add :term:`RECIPE_MAINTAINER`
+-  ref-manual: variables: add :term:`RECIPE_SYSROOT` and :term:`RECIPE_SYSROOT_NATIVE`
+-  ref-manual: variables: add :term:`TOOLCHAIN_OPTIONS` variable
+-  ref-manual: variables: add example for :term:`SYSROOT_DIRS` variable
+-  ref-manual: variables: document :term:`OEQA_REPRODUCIBLE_TEST_PACKAGE`
+-  ref-manual: variables: mention new CDN for :term:`SSTATE_MIRRORS`
+-  ref-manual: variables: provide no-match example for :term:`COMPATIBLE_MACHINE`
+-  ref-manual: variables: remove SERIAL_CONSOLES_CHECK
+-  release-notes-4.3: add CVEs, recipe upgrades, license changes, contributors
+-  release-notes-4.3: add Repositories / Downloads section
+-  release-notes-4.3: feature additions
+-  release-notes-4.3: fix some typos
+-  release-notes-4.3: move new classes to Rust section
+-  release-notes-4.3: remove the Distribution section
+-  release-notes-4.3: tweaks to existing text
+-  sdk-manual: appendix-obtain: improve and update descriptions
+-  test-manual: reproducible-builds: stop mentioning LTO bug
+-  vim: Improve locale handling
+-  vim: Upgrade to 9.0.2068
+-  vim: use upstream generated .po files
+
+
+Known Issues in Yocto-4.3.1
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- N/A
+
+
+Contributors to Yocto-4.3.1
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+-  Alejandro Hernandez Samaniego
+-  Alex Stewart
+-  Archana Polampalli
+-  Arne Schwerdt
+-  BELHADJ SALEM Talel
+-  Dmitry Baryshkov
+-  Eero Aaltonen
+-  Joshua Watt
+-  Julien Stephan
+-  Jérémy Rosen
+-  Khem Raj
+-  Lee Chee Yang
+-  Marta Rybczynska
+-  Max Krummenacher
+-  Michael Halstead
+-  Michael Opdenacker
+-  Paul Eggleton
+-  Peter Kjellerstedt
+-  Peter Marko
+-  Quentin Schulz
+-  Richard Purdie
+-  Robert P. J. Day
+-  Ross Burton
+-  Rouven Czerwinski
+-  Steve Sakoman
+-  Trevor Gamblin
+-  Wang Mingyu
+-  William Lyu
+-  Xiangyu Chen
+-  luca fancellu
+
+
+Repositories / Downloads for Yocto-4.3.1
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+poky
+
+-  Repository Location: :yocto_git:`/poky`
+-  Branch: :yocto_git:`nanbield </poky/log/?h=nanbield>`
+-  Tag:  :yocto_git:`yocto-4.3.1 </poky/log/?h=yocto-4.3.1>`
+-  Git Revision: :yocto_git:`bf9f2f6f60387b3a7cd570919cef6c4570edcb82 </poky/commit/?id=bf9f2f6f60387b3a7cd570919cef6c4570edcb82>`
+-  Release Artefact: poky-bf9f2f6f60387b3a7cd570919cef6c4570edcb82
+-  sha: 9b4351159d728fec2b63a50f1ac15edc412e2d726e9180a40afc06051fadb922
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.3.1/poky-bf9f2f6f60387b3a7cd570919cef6c4570edcb82.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.3.1/poky-bf9f2f6f60387b3a7cd570919cef6c4570edcb82.tar.bz2
+
+openembedded-core
+
+-  Repository Location: :oe_git:`/openembedded-core`
+-  Branch: :oe_git:`nanbield </openembedded-core/log/?h=nanbield>`
+-  Tag:  :oe_git:`yocto-4.3.1 </openembedded-core/log/?h=yocto-4.3.1>`
+-  Git Revision: :oe_git:`cce77e8e79c860f4ef0ac4a86b9375bf87507360 </openembedded-core/commit/?id=cce77e8e79c860f4ef0ac4a86b9375bf87507360>`
+-  Release Artefact: oecore-cce77e8e79c860f4ef0ac4a86b9375bf87507360
+-  sha: e6cde08e7c549f57a67d833a36cdb942648fba81558dc8b0e65332d2a2c023cc
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.3.1/oecore-cce77e8e79c860f4ef0ac4a86b9375bf87507360.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.3.1/oecore-cce77e8e79c860f4ef0ac4a86b9375bf87507360.tar.bz2
+
+meta-mingw
+
+-  Repository Location: :yocto_git:`/meta-mingw`
+-  Branch: :yocto_git:`nanbield </meta-mingw/log/?h=nanbield>`
+-  Tag:  :yocto_git:`yocto-4.3.1 </meta-mingw/log/?h=yocto-4.3.1>`
+-  Git Revision: :yocto_git:`49617a253e09baabbf0355bc736122e9549c8ab2 </meta-mingw/commit/?id=49617a253e09baabbf0355bc736122e9549c8ab2>`
+-  Release Artefact: meta-mingw-49617a253e09baabbf0355bc736122e9549c8ab2
+-  sha: 2225115b73589cdbf1e491115221035c6a61679a92a93b2a3cf761ff87bf4ecc
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.3.1/meta-mingw-49617a253e09baabbf0355bc736122e9549c8ab2.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.3.1/meta-mingw-49617a253e09baabbf0355bc736122e9549c8ab2.tar.bz2
+
+bitbake
+
+-  Repository Location: :oe_git:`/bitbake`
+-  Branch: :oe_git:`2.6 </bitbake/log/?h=2.6>`
+-  Tag:  :oe_git:`yocto-4.3.1 </bitbake/log/?h=yocto-4.3.1>`
+-  Git Revision: :oe_git:`936fcec41efacc4ce988c81882a9ae6403702bea </bitbake/commit/?id=936fcec41efacc4ce988c81882a9ae6403702bea>`
+-  Release Artefact: bitbake-936fcec41efacc4ce988c81882a9ae6403702bea
+-  sha: efbdd5fe7f29227a3fd26d6a08a368bf8215083a588b4d23f3adf35044897520
+-  Download Locations:
+   http://downloads.yoctoproject.org/releases/yocto/yocto-4.3.1/bitbake-936fcec41efacc4ce988c81882a9ae6403702bea.tar.bz2
+   http://mirrors.kernel.org/yocto/yocto/yocto-4.3.1/bitbake-936fcec41efacc4ce988c81882a9ae6403702bea.tar.bz2
+
+yocto-docs
+
+-  Repository Location: :yocto_git:`/yocto-docs`
+-  Branch: :yocto_git:`nanbield </yocto-docs/log/?h=nanbield>`
+-  Tag: :yocto_git:`yocto-4.3.1 </yocto-docs/log/?h=yocto-4.3.1>`
+-  Git Revision: :yocto_git:`6b98a6164263298648e89b5a5ae1260a58f1bb35 </yocto-docs/commit/?id=6b98a6164263298648e89b5a5ae1260a58f1bb35>`
+
diff --git a/poky/meta/classes-recipe/cmake-qemu.bbclass b/poky/meta/classes-recipe/cmake-qemu.bbclass
new file mode 100644
index 0000000..76b748f
--- /dev/null
+++ b/poky/meta/classes-recipe/cmake-qemu.bbclass
@@ -0,0 +1,28 @@
+#
+# Copyright OpenEmbedded Contributors
+#
+# SPDX-License-Identifier: MIT
+#
+# Not all platforms are supported by Qemu. Using qemu-user therefore
+# involves a certain risk, which is also the reason why this feature
+# is not activated by default.
+
+inherit qemu
+
+CMAKE_EXEWRAPPER_ENABLED:class-native = "False"
+CMAKE_EXEWRAPPER_ENABLED:class-nativesdk = "False"
+CMAKE_EXEWRAPPER_ENABLED ?= "${@bb.utils.contains('MACHINE_FEATURES', 'qemu-usermode', 'True', 'False', d)}"
+DEPENDS:append = "${@' qemu-native' if d.getVar('CMAKE_EXEWRAPPER_ENABLED') == 'True' else ''}"
+
+cmake_do_generate_toolchain_file:append:class-target() {
+    if [ "${CMAKE_EXEWRAPPER_ENABLED}" = "True" ]; then
+        # Write out a qemu wrapper that will be used as exe_wrapper so that camake
+        # can run target helper binaries through that. This also allows to execute ctest.
+        qemu_binary="${@qemu_wrapper_cmdline(d, '${STAGING_DIR_HOST}', ['${STAGING_DIR_HOST}/${libdir}','${STAGING_DIR_HOST}/${base_libdir}'])}"
+        echo "#!/bin/sh" > "${WORKDIR}/cmake-qemuwrapper"
+        echo "$qemu_binary \"\$@\"" >> "${WORKDIR}/cmake-qemuwrapper"
+        chmod +x "${WORKDIR}/cmake-qemuwrapper"
+        echo "set( CMAKE_CROSSCOMPILING_EMULATOR ${WORKDIR}/cmake-qemuwrapper)" \
+          >> ${WORKDIR}/toolchain.cmake
+    fi
+}
diff --git a/poky/meta/classes-recipe/rust-common.bbclass b/poky/meta/classes-recipe/rust-common.bbclass
index 3d73a37..ae96d9c 100644
--- a/poky/meta/classes-recipe/rust-common.bbclass
+++ b/poky/meta/classes-recipe/rust-common.bbclass
@@ -63,6 +63,8 @@
     # This catches ARM targets and appends the necessary hard float bits
     if os == "linux-gnueabi" or os == "linux-musleabi":
         libc = bb.utils.contains('TUNE_FEATURES', 'callconvention-hard', 'hf', '', d)
+    elif os == "linux-gnux32" or os == "linux-muslx32":
+        libc = ""
     elif "musl" in os:
         libc = "-musl"
         os = "linux"
diff --git a/poky/meta/classes/devtool-source.bbclass b/poky/meta/classes/devtool-source.bbclass
index a02b1e9..4158c20 100644
--- a/poky/meta/classes/devtool-source.bbclass
+++ b/poky/meta/classes/devtool-source.bbclass
@@ -232,6 +232,9 @@
                 bb.process.run('git rebase devtool-no-overrides', cwd=srcsubdir)
         bb.process.run('git checkout %s' % devbranch, cwd=srcsubdir)
     bb.process.run('git tag -f devtool-patched', cwd=srcsubdir)
+    if os.path.exists(os.path.join(srcsubdir, '.gitmodules')):
+        bb.process.run('git submodule foreach --recursive  "git tag -f devtool-patched"', cwd=srcsubdir)
+
 }
 
 python devtool_post_configure() {
diff --git a/poky/meta/conf/bitbake.conf b/poky/meta/conf/bitbake.conf
index 983987c..e7826e7 100644
--- a/poky/meta/conf/bitbake.conf
+++ b/poky/meta/conf/bitbake.conf
@@ -543,6 +543,9 @@
 # Used by Mercurial fetcher
 HOSTTOOLS_NONFATAL += "hg"
 
+# Used by gcp fetcher
+HOSTTOOLS_NONFATAL += "gsutil"
+
 # Link to git-lfs if present
 HOSTTOOLS_NONFATAL += "git-lfs"
 
diff --git a/poky/meta/conf/documentation.conf b/poky/meta/conf/documentation.conf
index d03c497..486c62b 100644
--- a/poky/meta/conf/documentation.conf
+++ b/poky/meta/conf/documentation.conf
@@ -28,7 +28,7 @@
 do_kernel_configme[doc] = "Assembles the kernel configuration for a linux-yocto style kernel"
 do_kernel_link_images[doc] = "Creates a symbolic link in arch/$arch/boot for vmlinux and vmlinuz kernel images"
 do_listtasks[doc] = "Lists all defined tasks for a target"
-do_menuconfig[doc] = "Runs 'make menuconfig' for the kernel"
+do_menuconfig[doc] = "Runs 'make menuconfig' in the compilation directory"
 do_package[doc] = "Analyzes the content of the holding area and splits it into subsets based on available packages and files"
 do_package_index[doc] = "Creates or updates the index in the Package Feed area"
 do_package_qa[doc] = "Runs QA checks on packaged files"
diff --git a/poky/meta/lib/oe/patch.py b/poky/meta/lib/oe/patch.py
index 9b480b2..e4bb5a7 100644
--- a/poky/meta/lib/oe/patch.py
+++ b/poky/meta/lib/oe/patch.py
@@ -461,41 +461,43 @@
         return (tmpfile, cmd)
 
     @staticmethod
-    def extractPatches(tree, startcommit, outdir, paths=None):
+    def extractPatches(tree, startcommits, outdir, paths=None):
         import tempfile
         import shutil
         tempdir = tempfile.mkdtemp(prefix='oepatch')
         try:
-            shellcmd = ["git", "format-patch", "--no-signature", "--no-numbered", startcommit, "-o", tempdir]
-            if paths:
-                shellcmd.append('--')
-                shellcmd.extend(paths)
-            out = runcmd(["sh", "-c", " ".join(shellcmd)], tree)
-            if out:
-                for srcfile in out.split():
-                    for encoding in ['utf-8', 'latin-1']:
-                        patchlines = []
-                        outfile = None
-                        try:
-                            with open(srcfile, 'r', encoding=encoding) as f:
-                                for line in f:
-                                    if line.startswith(GitApplyTree.patch_line_prefix):
-                                        outfile = line.split()[-1].strip()
-                                        continue
-                                    if line.startswith(GitApplyTree.ignore_commit_prefix):
-                                        continue
-                                    patchlines.append(line)
-                        except UnicodeDecodeError:
-                            continue
-                        break
-                    else:
-                        raise PatchError('Unable to find a character encoding to decode %s' % srcfile)
+            for name, rev in startcommits.items():
+                shellcmd = ["git", "format-patch", "--no-signature", "--no-numbered", rev, "-o", tempdir]
+                if paths:
+                    shellcmd.append('--')
+                    shellcmd.extend(paths)
+                out = runcmd(["sh", "-c", " ".join(shellcmd)], os.path.join(tree, name))
+                if out:
+                    for srcfile in out.split():
+                        for encoding in ['utf-8', 'latin-1']:
+                            patchlines = []
+                            outfile = None
+                            try:
+                                with open(srcfile, 'r', encoding=encoding) as f:
+                                    for line in f:
+                                        if line.startswith(GitApplyTree.patch_line_prefix):
+                                            outfile = line.split()[-1].strip()
+                                            continue
+                                        if line.startswith(GitApplyTree.ignore_commit_prefix):
+                                            continue
+                                        patchlines.append(line)
+                            except UnicodeDecodeError:
+                                continue
+                            break
+                        else:
+                            raise PatchError('Unable to find a character encoding to decode %s' % srcfile)
 
-                    if not outfile:
-                        outfile = os.path.basename(srcfile)
-                    with open(os.path.join(outdir, outfile), 'w') as of:
-                        for line in patchlines:
-                            of.write(line)
+                        if not outfile:
+                            outfile = os.path.basename(srcfile)
+                        bb.utils.mkdirhier(os.path.join(outdir, name))
+                        with open(os.path.join(outdir, name, outfile), 'w') as of:
+                            for line in patchlines:
+                                of.write(line)
         finally:
             shutil.rmtree(tempdir)
 
diff --git a/poky/meta/lib/oe/recipeutils.py b/poky/meta/lib/oe/recipeutils.py
index 3336db8..25b159b 100644
--- a/poky/meta/lib/oe/recipeutils.py
+++ b/poky/meta/lib/oe/recipeutils.py
@@ -672,11 +672,11 @@
         destlayerdir: base directory of the layer to place the bbappend in
             (subdirectory path from there will be determined automatically)
         srcfiles: dict of source files to add to SRC_URI, where the value
-            is the full path to the file to be added, and the value is the
-            original filename as it would appear in SRC_URI or None if it
-            isn't already present. You may pass None for this parameter if
-            you simply want to specify your own content via the extralines
-            parameter.
+            is the full path to the file to be added, and the value is a
+            dict with 'path' key containing the original filename as it
+            would appear in SRC_URI or None if it isn't already present.
+            You may pass None for this parameter if you simply want to specify
+            your own content via the extralines parameter.
         install: dict mapping entries in srcfiles to a tuple of two elements:
             install path (*without* ${D} prefix) and permission value (as a
             string, e.g. '0644').
@@ -763,10 +763,9 @@
     copyfiles = {}
     if srcfiles:
         instfunclines = []
-        for i, (newfile, origsrcfile) in enumerate(srcfiles.items()):
-            srcfile = origsrcfile
+        for i, (newfile, param) in enumerate(srcfiles.items()):
             srcurientry = None
-            if not srcfile:
+            if not 'path' in param or not param['path']:
                 srcfile = os.path.basename(newfile)
                 srcurientry = 'file://%s' % srcfile
                 if params and params[i]:
@@ -778,7 +777,10 @@
                         appendline('SRC_URI:append%s' % appendoverride, '=', ' ' + srcurientry)
                     else:
                         appendline('SRC_URI', '+=', srcurientry)
-            copyfiles[newfile] = srcfile
+                param['path'] = srcfile
+            else:
+                srcfile = param['path']
+            copyfiles[newfile] = param
             if install:
                 institem = install.pop(newfile, None)
                 if institem:
@@ -901,7 +903,12 @@
             outdir = redirect_output
         else:
             outdir = appenddir
-        for newfile, srcfile in copyfiles.items():
+        for newfile, param in copyfiles.items():
+            srcfile = param['path']
+            patchdir = param.get('patchdir', ".")
+
+            if patchdir != ".":
+                newfile = os.path.join(os.path.split(newfile)[0], patchdir, os.path.split(newfile)[1])
             filedest = os.path.join(outdir, destsubdir, os.path.basename(srcfile))
             if os.path.abspath(newfile) != os.path.abspath(filedest):
                 if newfile.startswith(tempfile.gettempdir()):
@@ -1035,7 +1042,7 @@
             revision = ud.method.latest_revision(ud, rd, 'default')
             upversion = pv
             if revision != rd.getVar("SRCREV"):
-                upversion = upversion + "-new-commits-available" 
+                upversion = upversion + "-new-commits-available"
         else:
             pupver = ud.method.latest_versionstring(ud, rd)
             (upversion, revision) = pupver
diff --git a/poky/meta/lib/oeqa/selftest/cases/devtool.py b/poky/meta/lib/oeqa/selftest/cases/devtool.py
index ab58971..2a11886 100644
--- a/poky/meta/lib/oeqa/selftest/cases/devtool.py
+++ b/poky/meta/lib/oeqa/selftest/cases/devtool.py
@@ -1598,6 +1598,53 @@
         # Try building
         bitbake('%s -c patch' % testrecipe)
 
+    def test_devtool_git_submodules(self):
+        # This tests if we can add a patch in a git submodule and extract it properly using devtool finish
+        # Check preconditions
+        self.assertTrue(not os.path.exists(self.workspacedir), 'This test cannot be run with a workspace directory under the build directory')
+        self.track_for_cleanup(self.workspacedir)
+        recipe = 'vulkan-samples'
+        src_uri = get_bb_var('SRC_URI', recipe)
+        self.assertIn('gitsm://', src_uri, 'This test expects the %s recipe to be a git recipe with submodules' % recipe)
+        oldrecipefile = get_bb_var('FILE', recipe)
+        recipedir = os.path.dirname(oldrecipefile)
+        result = runCmd('git status --porcelain .', cwd=recipedir)
+        if result.output.strip():
+            self.fail('Recipe directory for %s contains uncommitted changes' % recipe)
+        self.assertIn('/meta/', recipedir)
+        tempdir = tempfile.mkdtemp(prefix='devtoolqa')
+        self.track_for_cleanup(tempdir)
+        self.add_command_to_tearDown('bitbake-layers remove-layer */workspace')
+        result = runCmd('devtool modify %s %s' % (recipe, tempdir))
+        self.assertExists(os.path.join(tempdir, 'CMakeLists.txt'), 'Extracted source could not be found')
+        # Test devtool status
+        result = runCmd('devtool status')
+        self.assertIn(recipe, result.output)
+        self.assertIn(tempdir, result.output)
+        # Modify a source file in a submodule, (grab the first one)
+        result = runCmd('git submodule --quiet foreach \'echo $sm_path\'', cwd=tempdir)
+        submodule = result.output.splitlines()[0]
+        submodule_path = os.path.join(tempdir, submodule)
+        runCmd('echo "#This is a first comment" >> testfile', cwd=submodule_path)
+        result = runCmd('git status --porcelain . ', cwd=submodule_path)
+        self.assertIn("testfile", result.output)
+        runCmd('git add testfile; git commit -m "Adding a new file"', cwd=submodule_path)
+
+        # Try finish to the original layer
+        self.add_command_to_tearDown('rm -rf %s ; cd %s ; git checkout %s' % (recipedir, os.path.dirname(recipedir), recipedir))
+        runCmd('devtool finish -f %s meta' % recipe)
+        result = runCmd('devtool status')
+        self.assertNotIn(recipe, result.output, 'Recipe should have been reset by finish but wasn\'t')
+        self.assertNotExists(os.path.join(self.workspacedir, 'recipes', recipe), 'Recipe directory should not exist after finish')
+        expected_status = [(' M', '.*/%s$' % os.path.basename(oldrecipefile)),
+                           ('??', '.*/.*-Adding-a-new-file.patch$')]
+        self._check_repo_status(recipedir, expected_status)
+        # Make sure the patch is added to the recipe with the correct "patchdir" option
+        result = runCmd('git diff .', cwd=recipedir)
+        addlines = [
+           'file://0001-Adding-a-new-file.patch;patchdir=%s \\\\' % submodule
+        ]
+        self._check_diff(result.output, addlines, [])
 
 class DevtoolExtractTests(DevtoolBase):
 
diff --git a/poky/meta/lib/oeqa/selftest/cases/reproducible.py b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
index 029b6af..14ccb0b 100644
--- a/poky/meta/lib/oeqa/selftest/cases/reproducible.py
+++ b/poky/meta/lib/oeqa/selftest/cases/reproducible.py
@@ -16,7 +16,7 @@
 import datetime
 
 exclude_packages = [
-	'rust',
+	'rust-rustdoc',
 	'rust-dbg'
 	]
 
diff --git a/poky/meta/lib/oeqa/selftest/cases/wic.py b/poky/meta/lib/oeqa/selftest/cases/wic.py
index b4866bc..4ebcb76 100644
--- a/poky/meta/lib/oeqa/selftest/cases/wic.py
+++ b/poky/meta/lib/oeqa/selftest/cases/wic.py
@@ -16,6 +16,7 @@
 from glob import glob
 from shutil import rmtree, copy
 from tempfile import NamedTemporaryFile
+from tempfile import TemporaryDirectory
 
 from oeqa.selftest.case import OESelftestTestCase
 from oeqa.core.decorator import OETestTag
@@ -146,6 +147,73 @@
         self.assertEqual(1, runCmd('wic', ignore_status=True).status)
 
 class Wic(WicTestCase):
+    def test_skip_kernel_install(self):
+        """Test the functionality of not installing the kernel in the boot directory using the wic plugin"""
+        # create a temporary file for the WKS content
+        with NamedTemporaryFile("w", suffix=".wks") as wks:
+            wks.write(
+                'part --source bootimg-efi '
+                '--sourceparams="loader=grub-efi,install-kernel-into-boot-dir=false" '
+                '--label boot --active\n'
+            )
+            wks.flush()
+            # create a temporary directory to extract the disk image to
+            with TemporaryDirectory() as tmpdir:
+                img = 'core-image-minimal'
+                # build the image using the WKS file
+                cmd = "wic create %s -e %s -o %s" % (
+                    wks.name, img, self.resultdir)
+                runCmd(cmd)
+                wksname = os.path.splitext(os.path.basename(wks.name))[0]
+                out = glob(os.path.join(
+                    self.resultdir, "%s-*.direct" % wksname))
+                self.assertEqual(1, len(out))
+                sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
+                # extract the content of the disk image to the temporary directory
+                cmd = "wic cp %s:1 %s -n %s" % (out[0], tmpdir, sysroot)
+                runCmd(cmd)
+                # check if the kernel is installed or not
+                kimgtype = get_bb_var('KERNEL_IMAGETYPE', img)
+                for file in os.listdir(tmpdir):
+                    if file == kimgtype:
+                        raise AssertionError(
+                            "The kernel image '{}' was found in the partition".format(kimgtype)
+                        )
+
+    def test_kernel_install(self):
+        """Test the installation of the kernel to the boot directory in the wic plugin"""
+        # create a temporary file for the WKS content
+        with NamedTemporaryFile("w", suffix=".wks") as wks:
+            wks.write(
+                'part --source bootimg-efi '
+                '--sourceparams="loader=grub-efi,install-kernel-into-boot-dir=true" '
+                '--label boot --active\n'
+            )
+            wks.flush()
+            # create a temporary directory to extract the disk image to
+            with TemporaryDirectory() as tmpdir:
+                img = 'core-image-minimal'
+                # build the image using the WKS file
+                cmd = "wic create %s -e %s -o %s" % (wks.name, img, self.resultdir)
+                runCmd(cmd)
+                wksname = os.path.splitext(os.path.basename(wks.name))[0]
+                out = glob(os.path.join(self.resultdir, "%s-*.direct" % wksname))
+                self.assertEqual(1, len(out))
+                sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
+                # extract the content of the disk image to the temporary directory
+                cmd = "wic cp %s:1 %s -n %s" % (out[0], tmpdir, sysroot)
+                runCmd(cmd)
+                # check if the kernel is installed or not
+                kimgtype = get_bb_var('KERNEL_IMAGETYPE', img)
+                found = False
+                for file in os.listdir(tmpdir):
+                    if file == kimgtype:
+                        found = True
+                        break
+                self.assertTrue(
+                    found, "The kernel image '{}' was not found in the boot partition".format(kimgtype)
+                )
+
     def test_build_image_name(self):
         """Test wic create wictestdisk --image-name=core-image-minimal"""
         cmd = "wic create wictestdisk --image-name=core-image-minimal -o %s" % self.resultdir
@@ -748,6 +816,30 @@
 
         os.remove(wks_file)
 
+    def test_partition_hidden_attributes(self):
+        """Test --hidden wks option."""
+        wks_file = 'temp.wks'
+        sysroot = get_bb_var('RECIPE_SYSROOT_NATIVE', 'wic-tools')
+        try:
+            with open(wks_file, 'w') as wks:
+                wks.write("""
+part / --source rootfs --fstype=ext4
+part / --source rootfs --fstype=ext4 --hidden
+bootloader --ptable gpt""")
+
+            runCmd("wic create %s -e core-image-minimal -o %s" \
+                                       % (wks_file, self.resultdir))
+            wicout = os.path.join(self.resultdir, "*.direct")
+
+            result = runCmd("%s/usr/sbin/sfdisk --part-attrs %s 1" % (sysroot, wicout))
+            self.assertEqual('', result.output)
+            result = runCmd("%s/usr/sbin/sfdisk --part-attrs %s 2" % (sysroot, wicout))
+            self.assertEqual('RequiredPartition', result.output)
+
+        finally:
+            os.remove(wks_file)
+
+
 class Wic2(WicTestCase):
 
     def test_bmap_short(self):
diff --git a/poky/meta/lib/patchtest/tests/test_patch.py b/poky/meta/lib/patchtest/tests/test_patch.py
index 65d0f93..d7187a0 100644
--- a/poky/meta/lib/patchtest/tests/test_patch.py
+++ b/poky/meta/lib/patchtest/tests/test_patch.py
@@ -6,6 +6,7 @@
 #
 
 import base
+import os
 import parse_signed_off_by
 import parse_upstream_status
 import pyparsing
@@ -87,7 +88,7 @@
                 if TestPatch.prog.search_string(payload):
                     break
             else:
-                self.fail('A patch file has been added without a Signed-off-by tag. Sign off the added patch file (%s)' % newpatch.path)
+                self.fail('A patch file has been added without a Signed-off-by tag: \'%s\'' % os.path.basename(newpatch.path))
 
     def test_cve_tag_format(self):
         for commit in TestPatch.commits:
diff --git a/poky/meta/recipes-connectivity/bind/bind_9.18.19.bb b/poky/meta/recipes-connectivity/bind/bind_9.18.20.bb
similarity index 97%
rename from poky/meta/recipes-connectivity/bind/bind_9.18.19.bb
rename to poky/meta/recipes-connectivity/bind/bind_9.18.20.bb
index 8124c5c..187685e 100644
--- a/poky/meta/recipes-connectivity/bind/bind_9.18.19.bb
+++ b/poky/meta/recipes-connectivity/bind/bind_9.18.20.bb
@@ -20,7 +20,7 @@
            file://0001-avoid-start-failure-with-bind-user.patch \
            "
 
-SRC_URI[sha256sum] = "115e09c05439bebade1d272eda08fa88eb3b60129edef690588c87a4d27612cc"
+SRC_URI[sha256sum] = "4b891ebf58d3f2a7ac3dd2682990f528a3448eaa1c992ddc5c141b8587a98ec5"
 
 UPSTREAM_CHECK_URI = "https://ftp.isc.org/isc/bind9/"
 # follow the ESV versions divisible by 2
diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5.inc b/poky/meta/recipes-connectivity/bluez5/bluez5.inc
index e10158a..a23e4e5 100644
--- a/poky/meta/recipes-connectivity/bluez5/bluez5.inc
+++ b/poky/meta/recipes-connectivity/bluez5/bluez5.inc
@@ -55,6 +55,7 @@
            file://0001-tests-add-a-target-for-building-tests-without-runnin.patch \
            file://0001-test-gatt-Fix-hung-issue.patch \
            file://0004-src-shared-util.c-include-linux-limits.h.patch \
+           file://0002-input-Fix-.device_probe-failing-if-SDP-record-is-not.patch \
            "
 S = "${WORKDIR}/bluez-${PV}"
 
diff --git a/poky/meta/recipes-connectivity/bluez5/bluez5/0002-input-Fix-.device_probe-failing-if-SDP-record-is-not.patch b/poky/meta/recipes-connectivity/bluez5/bluez5/0002-input-Fix-.device_probe-failing-if-SDP-record-is-not.patch
new file mode 100644
index 0000000..d088433
--- /dev/null
+++ b/poky/meta/recipes-connectivity/bluez5/bluez5/0002-input-Fix-.device_probe-failing-if-SDP-record-is-not.patch
@@ -0,0 +1,313 @@
+From 3a9c637010f8dc1ba3e8382abe01065761d4f5bb Mon Sep 17 00:00:00 2001
+From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
+Date: Tue, 10 Oct 2023 12:38:29 -0700
+Subject: [PATCH 02/40] input: Fix .device_probe failing if SDP record is not
+ found
+
+Due to changes introduced by 67a26abe53bf
+("profile: Add probe_on_discover flag") profiles may get probed when
+their profile UUID are discovered, rather than resolved, which means
+the SDP record may not be available.
+
+Fixes: https://github.com/bluez/bluez/issues/614
+
+Upstream-Status: Backport [https://github.com/bluez/bluez/commit/3a9c637010f8dc1ba3e8382abe01065761d4f5bb]
+---
+ profiles/input/device.c | 182 +++++++++++++++++++---------------------
+ 1 file changed, 84 insertions(+), 98 deletions(-)
+
+diff --git a/profiles/input/device.c b/profiles/input/device.c
+index e2ac6ea60..4a50ea992 100644
+--- a/profiles/input/device.c
++++ b/profiles/input/device.c
+@@ -60,7 +60,7 @@ struct input_device {
+ 	char			*path;
+ 	bdaddr_t		src;
+ 	bdaddr_t		dst;
+-	uint32_t		handle;
++	const sdp_record_t	*rec;
+ 	GIOChannel		*ctrl_io;
+ 	GIOChannel		*intr_io;
+ 	guint			ctrl_watch;
+@@ -754,7 +754,8 @@ static void epox_endian_quirk(unsigned char *data, int size)
+ 	}
+ }
+ 
+-static int create_hid_dev_name(sdp_record_t *rec, struct hidp_connadd_req *req)
++static int create_hid_dev_name(const sdp_record_t *rec,
++					struct hidp_connadd_req *req)
+ {
+ 	char sdesc[sizeof(req->name) / 2];
+ 
+@@ -776,7 +777,7 @@ static int create_hid_dev_name(sdp_record_t *rec, struct hidp_connadd_req *req)
+ 
+ /* See HID profile specification v1.0, "7.11.6 HIDDescriptorList" for details
+  * on the attribute format. */
+-static int extract_hid_desc_data(sdp_record_t *rec,
++static int extract_hid_desc_data(const sdp_record_t *rec,
+ 						struct hidp_connadd_req *req)
+ {
+ 	sdp_data_t *d;
+@@ -817,36 +818,40 @@ invalid_desc:
+ 	return -EINVAL;
+ }
+ 
+-static int extract_hid_record(sdp_record_t *rec, struct hidp_connadd_req *req)
++static int extract_hid_record(struct input_device *idev,
++					struct hidp_connadd_req *req)
+ {
+ 	sdp_data_t *pdlist;
+ 	uint8_t attr_val;
+ 	int err;
+ 
+-	err = create_hid_dev_name(rec, req);
++	if (!idev->rec)
++		return -ENOENT;
++
++	err = create_hid_dev_name(idev->rec, req);
+ 	if (err < 0)
+ 		DBG("No valid Service Name or Service Description found");
+ 
+-	pdlist = sdp_data_get(rec, SDP_ATTR_HID_PARSER_VERSION);
++	pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_PARSER_VERSION);
+ 	req->parser = pdlist ? pdlist->val.uint16 : 0x0100;
+ 
+-	pdlist = sdp_data_get(rec, SDP_ATTR_HID_DEVICE_SUBCLASS);
++	pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_DEVICE_SUBCLASS);
+ 	req->subclass = pdlist ? pdlist->val.uint8 : 0;
+ 
+-	pdlist = sdp_data_get(rec, SDP_ATTR_HID_COUNTRY_CODE);
++	pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_COUNTRY_CODE);
+ 	req->country = pdlist ? pdlist->val.uint8 : 0;
+ 
+-	pdlist = sdp_data_get(rec, SDP_ATTR_HID_VIRTUAL_CABLE);
++	pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_VIRTUAL_CABLE);
+ 	attr_val = pdlist ? pdlist->val.uint8 : 0;
+ 	if (attr_val)
+ 		req->flags |= (1 << HIDP_VIRTUAL_CABLE_UNPLUG);
+ 
+-	pdlist = sdp_data_get(rec, SDP_ATTR_HID_BOOT_DEVICE);
++	pdlist = sdp_data_get(idev->rec, SDP_ATTR_HID_BOOT_DEVICE);
+ 	attr_val = pdlist ? pdlist->val.uint8 : 0;
+ 	if (attr_val)
+ 		req->flags |= (1 << HIDP_BOOT_PROTOCOL_MODE);
+ 
+-	err = extract_hid_desc_data(rec, req);
++	err = extract_hid_desc_data(idev->rec, req);
+ 	if (err < 0)
+ 		return err;
+ 
+@@ -1035,11 +1040,6 @@ static gboolean encrypt_notify(GIOChannel *io, GIOCondition condition,
+ static int hidp_add_connection(struct input_device *idev)
+ {
+ 	struct hidp_connadd_req *req;
+-	sdp_record_t *rec;
+-	char src_addr[18], dst_addr[18];
+-	char filename[PATH_MAX];
+-	GKeyFile *key_file;
+-	char handle[11], *str;
+ 	GError *gerr = NULL;
+ 	int err;
+ 
+@@ -1049,33 +1049,7 @@ static int hidp_add_connection(struct input_device *idev)
+ 	req->flags     = 0;
+ 	req->idle_to   = idle_timeout;
+ 
+-	ba2str(&idev->src, src_addr);
+-	ba2str(&idev->dst, dst_addr);
+-
+-	snprintf(filename, PATH_MAX, STORAGEDIR "/%s/cache/%s", src_addr,
+-								dst_addr);
+-	sprintf(handle, "0x%8.8X", idev->handle);
+-
+-	key_file = g_key_file_new();
+-	if (!g_key_file_load_from_file(key_file, filename, 0, &gerr)) {
+-		error("Unable to load key file from %s: (%s)", filename,
+-								gerr->message);
+-		g_clear_error(&gerr);
+-	}
+-	str = g_key_file_get_string(key_file, "ServiceRecords", handle, NULL);
+-	g_key_file_free(key_file);
+-
+-	if (!str) {
+-		error("Rejected connection from unknown device %s", dst_addr);
+-		err = -EPERM;
+-		goto cleanup;
+-	}
+-
+-	rec = record_from_string(str);
+-	g_free(str);
+-
+-	err = extract_hid_record(rec, req);
+-	sdp_record_free(rec);
++	err = extract_hid_record(idev, req);
+ 	if (err < 0) {
+ 		error("Could not parse HID SDP record: %s (%d)", strerror(-err),
+ 									-err);
+@@ -1091,7 +1065,7 @@ static int hidp_add_connection(struct input_device *idev)
+ 
+ 	/* Make sure the device is bonded if required */
+ 	if (classic_bonded_only && !input_device_bonded(idev)) {
+-		error("Rejected connection from !bonded device %s", dst_addr);
++		error("Rejected connection from !bonded device %s", idev->path);
+ 		goto cleanup;
+ 	}
+ 
+@@ -1161,6 +1135,68 @@ static int connection_disconnect(struct input_device *idev, uint32_t flags)
+ 		return ioctl_disconnect(idev, flags);
+ }
+ 
++static bool is_device_sdp_disable(const sdp_record_t *rec)
++{
++	sdp_data_t *data;
++
++	data = sdp_data_get(rec, SDP_ATTR_HID_SDP_DISABLE);
++
++	return data && data->val.uint8;
++}
++
++static enum reconnect_mode_t hid_reconnection_mode(bool reconnect_initiate,
++						bool normally_connectable)
++{
++	if (!reconnect_initiate && !normally_connectable)
++		return RECONNECT_NONE;
++	else if (!reconnect_initiate && normally_connectable)
++		return RECONNECT_HOST;
++	else if (reconnect_initiate && !normally_connectable)
++		return RECONNECT_DEVICE;
++	else /* (reconnect_initiate && normally_connectable) */
++		return RECONNECT_ANY;
++}
++
++static void extract_hid_props(struct input_device *idev,
++					const sdp_record_t *rec)
++{
++	/* Extract HID connectability */
++	bool reconnect_initiate, normally_connectable;
++	sdp_data_t *pdlist;
++
++	/* HIDNormallyConnectable is optional and assumed FALSE if not
++	 * present.
++	 */
++	pdlist = sdp_data_get(rec, SDP_ATTR_HID_RECONNECT_INITIATE);
++	reconnect_initiate = pdlist ? pdlist->val.uint8 : TRUE;
++
++	pdlist = sdp_data_get(rec, SDP_ATTR_HID_NORMALLY_CONNECTABLE);
++	normally_connectable = pdlist ? pdlist->val.uint8 : FALSE;
++
++	/* Update local values */
++	idev->reconnect_mode =
++		hid_reconnection_mode(reconnect_initiate, normally_connectable);
++}
++
++static void input_device_update_rec(struct input_device *idev)
++{
++	struct btd_profile *p = btd_service_get_profile(idev->service);
++	const sdp_record_t *rec;
++
++	rec = btd_device_get_record(idev->device, p->remote_uuid);
++	if (!rec || idev->rec == rec)
++		return;
++
++	idev->rec = rec;
++	idev->disable_sdp = is_device_sdp_disable(rec);
++
++	/* Initialize device properties */
++	extract_hid_props(idev, rec);
++
++	if (idev->disable_sdp)
++		device_set_refresh_discovery(idev->device, false);
++}
++
+ static int input_device_connected(struct input_device *idev)
+ {
+ 	int err;
+@@ -1168,6 +1204,9 @@ static int input_device_connected(struct input_device *idev)
+ 	if (idev->intr_io == NULL || idev->ctrl_io == NULL)
+ 		return -ENOTCONN;
+ 
++	/* Attempt to update SDP record if it had changed */
++	input_device_update_rec(idev);
++
+ 	err = hidp_add_connection(idev);
+ 	if (err < 0)
+ 		return err;
+@@ -1411,74 +1450,21 @@ int input_device_disconnect(struct btd_service *service)
+ 	return 0;
+ }
+ 
+-static bool is_device_sdp_disable(const sdp_record_t *rec)
+-{
+-	sdp_data_t *data;
+-
+-	data = sdp_data_get(rec, SDP_ATTR_HID_SDP_DISABLE);
+-
+-	return data && data->val.uint8;
+-}
+-
+-static enum reconnect_mode_t hid_reconnection_mode(bool reconnect_initiate,
+-						bool normally_connectable)
+-{
+-	if (!reconnect_initiate && !normally_connectable)
+-		return RECONNECT_NONE;
+-	else if (!reconnect_initiate && normally_connectable)
+-		return RECONNECT_HOST;
+-	else if (reconnect_initiate && !normally_connectable)
+-		return RECONNECT_DEVICE;
+-	else /* (reconnect_initiate && normally_connectable) */
+-		return RECONNECT_ANY;
+-}
+-
+-static void extract_hid_props(struct input_device *idev,
+-					const sdp_record_t *rec)
+-{
+-	/* Extract HID connectability */
+-	bool reconnect_initiate, normally_connectable;
+-	sdp_data_t *pdlist;
+-
+-	/* HIDNormallyConnectable is optional and assumed FALSE
+-	* if not present. */
+-	pdlist = sdp_data_get(rec, SDP_ATTR_HID_RECONNECT_INITIATE);
+-	reconnect_initiate = pdlist ? pdlist->val.uint8 : TRUE;
+-
+-	pdlist = sdp_data_get(rec, SDP_ATTR_HID_NORMALLY_CONNECTABLE);
+-	normally_connectable = pdlist ? pdlist->val.uint8 : FALSE;
+-
+-	/* Update local values */
+-	idev->reconnect_mode =
+-		hid_reconnection_mode(reconnect_initiate, normally_connectable);
+-}
+-
+ static struct input_device *input_device_new(struct btd_service *service)
+ {
+ 	struct btd_device *device = btd_service_get_device(service);
+-	struct btd_profile *p = btd_service_get_profile(service);
+ 	const char *path = device_get_path(device);
+-	const sdp_record_t *rec = btd_device_get_record(device, p->remote_uuid);
+ 	struct btd_adapter *adapter = device_get_adapter(device);
+ 	struct input_device *idev;
+ 
+-	if (!rec)
+-		return NULL;
+-
+ 	idev = g_new0(struct input_device, 1);
+ 	bacpy(&idev->src, btd_adapter_get_address(adapter));
+ 	bacpy(&idev->dst, device_get_address(device));
+ 	idev->service = btd_service_ref(service);
+ 	idev->device = btd_device_ref(device);
+ 	idev->path = g_strdup(path);
+-	idev->handle = rec->handle;
+-	idev->disable_sdp = is_device_sdp_disable(rec);
+-
+-	/* Initialize device properties */
+-	extract_hid_props(idev, rec);
+ 
+-	if (idev->disable_sdp)
+-		device_set_refresh_discovery(device, false);
++	input_device_update_rec(idev);
+ 
+ 	return idev;
+ }
+-- 
+2.42.0
+
diff --git a/poky/meta/recipes-connectivity/ofono/ofono_2.1.bb b/poky/meta/recipes-connectivity/ofono/ofono_2.2.bb
similarity index 95%
rename from poky/meta/recipes-connectivity/ofono/ofono_2.1.bb
rename to poky/meta/recipes-connectivity/ofono/ofono_2.2.bb
index 0ecac9e..4e60f19 100644
--- a/poky/meta/recipes-connectivity/ofono/ofono_2.1.bb
+++ b/poky/meta/recipes-connectivity/ofono/ofono_2.2.bb
@@ -13,7 +13,7 @@
     file://0001-mbim-add-an-optional-TEMP_FAILURE_RETRY-macro-copy.patch \
     file://0002-mbim-Fix-build-with-ell-0.39-by-restoring-unlikely-m.patch \
 "
-SRC_URI[sha256sum] = "92913dcce9a15cac2174daca249457716a0ec036878d22035e83af0e19e79c52"
+SRC_URI[sha256sum] = "5e13121c0f885a81ad882db065549ea13477abbcc219f150b38a8d2ac92521de"
 
 inherit autotools pkgconfig update-rc.d systemd gobject-introspection-data
 
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/0001-Link-libatomic-on-riscv32.patch b/poky/meta/recipes-connectivity/openssl/openssl/0001-Link-libatomic-on-riscv32.patch
deleted file mode 100644
index 2c54d8f..0000000
--- a/poky/meta/recipes-connectivity/openssl/openssl/0001-Link-libatomic-on-riscv32.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 73266b8573c71e6720453c4c5a9e6e8fa4daec65 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sat, 21 Oct 2023 13:03:52 -0700
-Subject: [PATCH] Link libatomic on riscv32
-
-GCC toolchains on linux are not able to build libcrypto without linking
-to libatomic as it does not have all needed atomics implemented as
-intrinsics
-
-Fixes errors like
-
-| ld: ./libcrypto.so: undefined reference to `__atomic_is_lock_free'
-
-Upstream-Status: Submitted [https://github.com/openssl/openssl/pull/22460]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- Configurations/10-main.conf | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf
-index 46094f59c2..d1a15a1152 100644
---- a/Configurations/10-main.conf
-+++ b/Configurations/10-main.conf
-@@ -816,7 +816,7 @@ my %targets = (
-     },
- 
-     "linux32-riscv32" => {
--        inherit_from     => [ "linux-generic32"],
-+        inherit_from     => [ "linux-latomic" ],
-         perlasm_scheme   => "linux32",
-         asm_arch         => 'riscv32',
-     },
--- 
-2.42.0
-
diff --git a/poky/meta/recipes-connectivity/openssl/openssl/fix_random_labels.patch b/poky/meta/recipes-connectivity/openssl/openssl/fix_random_labels.patch
deleted file mode 100644
index 78dcd81..0000000
--- a/poky/meta/recipes-connectivity/openssl/openssl/fix_random_labels.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-The perl script adds random suffixes to the local function names to ensure
-it doesn't clash with other parts of openssl. Set the random number seed
-to something predictable so the assembler files are generated consistently
-and our own reproducible builds tests pass.
-
-Upstream-Status: Pending
-Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-
-Index: openssl-3.1.0/crypto/modes/asm/aes-gcm-avx512.pl
-===================================================================
---- openssl-3.1.0.orig/crypto/modes/asm/aes-gcm-avx512.pl
-+++ openssl-3.1.0/crypto/modes/asm/aes-gcm-avx512.pl
-@@ -191,6 +191,9 @@ my $CTX_OFFSET_HTable    = (16 * 6);
- # ;;; Helper functions
- # ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- 
-+# Ensure the local labels are reproduicble
-+srand(10000);
-+
- # ; Generates "random" local labels
- sub random_string() {
-   my @chars  = ('a' .. 'z', 'A' .. 'Z', '0' .. '9', '_');
diff --git a/poky/meta/recipes-connectivity/openssl/openssl_3.1.4.bb b/poky/meta/recipes-connectivity/openssl/openssl_3.2.0.bb
similarity index 97%
rename from poky/meta/recipes-connectivity/openssl/openssl_3.1.4.bb
rename to poky/meta/recipes-connectivity/openssl/openssl_3.2.0.bb
index c6c70a1..ab0562b 100644
--- a/poky/meta/recipes-connectivity/openssl/openssl_3.1.4.bb
+++ b/poky/meta/recipes-connectivity/openssl/openssl_3.2.0.bb
@@ -11,8 +11,6 @@
            file://run-ptest \
            file://0001-buildinfo-strip-sysroot-and-debug-prefix-map-from-co.patch \
            file://0001-Configure-do-not-tweak-mips-cflags.patch \
-           file://fix_random_labels.patch \
-           file://0001-Link-libatomic-on-riscv32.patch \
            file://0001-Added-handshake-history-reporting-when-test-fails.patch \
            "
 
@@ -20,7 +18,7 @@
            file://environment.d-openssl.sh \
            "
 
-SRC_URI[sha256sum] = "840af5366ab9b522bde525826be3ef0fb0af81c6a9ebd84caa600fea1731eee3"
+SRC_URI[sha256sum] = "14c826f07c7e433706fb5c69fa9e25dab95684844b4c962a2cf1bf183eb4690e"
 
 inherit lib_package multilib_header multilib_script ptest perlnative manpages
 MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
diff --git a/poky/meta/recipes-connectivity/resolvconf/resolvconf_1.91.bb b/poky/meta/recipes-connectivity/resolvconf/resolvconf_1.92.bb
similarity index 97%
rename from poky/meta/recipes-connectivity/resolvconf/resolvconf_1.91.bb
rename to poky/meta/recipes-connectivity/resolvconf/resolvconf_1.92.bb
index 09a0ab7..226cb7e 100644
--- a/poky/meta/recipes-connectivity/resolvconf/resolvconf_1.91.bb
+++ b/poky/meta/recipes-connectivity/resolvconf/resolvconf_1.92.bb
@@ -15,7 +15,7 @@
            file://0001-avoid-using-m-option-for-readlink.patch \
            "
 
-SRCREV = "859209d573e7aec0e95d812c6b52444591a628d1"
+SRCREV = "86047276c80705c51859a19f0c472102e0822f34"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-core/busybox/busybox/musl.cfg b/poky/meta/recipes-core/busybox/busybox/musl.cfg
index 6fffc91..ba63def 100644
--- a/poky/meta/recipes-core/busybox/busybox/musl.cfg
+++ b/poky/meta/recipes-core/busybox/busybox/musl.cfg
@@ -7,5 +7,4 @@
 # CONFIG_FEATURE_INETD_RPC is not set
 # CONFIG_SELINUXENABLED is not set
 # CONFIG_FEATURE_MOUNT_NFS is not set
-# CONFIG_FEATURE_UTMP is not set
 
diff --git a/poky/meta/recipes-core/ell/ell_0.59.bb b/poky/meta/recipes-core/ell/ell_0.60.bb
similarity index 89%
rename from poky/meta/recipes-core/ell/ell_0.59.bb
rename to poky/meta/recipes-core/ell/ell_0.60.bb
index 0483dbe..4e414f3 100644
--- a/poky/meta/recipes-core/ell/ell_0.59.bb
+++ b/poky/meta/recipes-core/ell/ell_0.60.bb
@@ -15,7 +15,7 @@
 inherit autotools pkgconfig
 
 SRC_URI = "https://mirrors.edge.kernel.org/pub/linux/libs/${BPN}/${BPN}-${PV}.tar.xz"
-SRC_URI[sha256sum] = "370dc2b7c73cd57856017180a2a70a15ca1b0183bfd453b3cffe2d707c37da3d"
+SRC_URI[sha256sum] = "61cec2df694b548e51afa3e7ffd1e1ad31a9fea7bedb93a3a3cc60894390c70f"
 
 do_configure:prepend () {
     mkdir -p ${S}/build-aux
diff --git a/poky/meta/recipes-core/gettext/gettext-minimal-native_0.22.bb b/poky/meta/recipes-core/gettext/gettext-minimal-native_0.22.3.bb
similarity index 100%
rename from poky/meta/recipes-core/gettext/gettext-minimal-native_0.22.bb
rename to poky/meta/recipes-core/gettext/gettext-minimal-native_0.22.3.bb
diff --git a/poky/meta/recipes-core/gettext/gettext-sources.inc b/poky/meta/recipes-core/gettext/gettext-sources.inc
index b4fb647..31dabfc 100644
--- a/poky/meta/recipes-core/gettext/gettext-sources.inc
+++ b/poky/meta/recipes-core/gettext/gettext-sources.inc
@@ -1,4 +1,4 @@
 HOMEPAGE = "http://www.gnu.org/software/gettext/gettext.html"
 SRC_URI = "${GNU_MIRROR}/gettext/gettext-${PV}.tar.gz \
            "
-SRC_URI[sha256sum] = "49f089be11b490170bbf09ed2f51e5f5177f55be4cc66504a5861820e0fb06ab"
+SRC_URI[sha256sum] = "839a260b2314ba66274dae7d245ec19fce190a3aa67869bf31354cb558df42c7"
diff --git a/poky/meta/recipes-core/gettext/gettext_0.22.bb b/poky/meta/recipes-core/gettext/gettext_0.22.3.bb
similarity index 100%
rename from poky/meta/recipes-core/gettext/gettext_0.22.bb
rename to poky/meta/recipes-core/gettext/gettext_0.22.3.bb
diff --git a/poky/meta/recipes-core/glib-2.0/glib.inc b/poky/meta/recipes-core/glib-2.0/glib.inc
index cec06b2..fbf3a39 100644
--- a/poky/meta/recipes-core/glib-2.0/glib.inc
+++ b/poky/meta/recipes-core/glib-2.0/glib.inc
@@ -113,6 +113,11 @@
         mkdir -p ${D}${libdir}/gio/modules
 }
 
+do_install:append:class-native () {
+	# Link gio-querymodules into ${bindir} as otherwise tools like meson won't find it
+        ln -rs ${D}${libexecdir}/gio-querymodules ${D}${bindir}
+}
+
 do_install:append:class-target () {
 	# Tests are only installed on targets, not native builds.  Separating this out
 	# keeps glib-2.0-native from depending on DISTRO_FEATURES
diff --git a/poky/meta/recipes-core/glibc/glibc-version.inc b/poky/meta/recipes-core/glibc/glibc-version.inc
index 19b98bc..ccf9d50 100644
--- a/poky/meta/recipes-core/glibc/glibc-version.inc
+++ b/poky/meta/recipes-core/glibc/glibc-version.inc
@@ -1,6 +1,6 @@
 SRCBRANCH ?= "release/2.38/master"
 PV = "2.38+git"
-SRCREV_glibc ?= "750a45a783906a19591fb8ff6b7841470f1f5701"
+SRCREV_glibc ?= "1e04dcec491bd8f48b5b74ce3e8414132578a645"
 SRCREV_localedef ?= "e0eca29583b9e0f62645c4316ced93cf4e4e26e1"
 
 GLIBC_GIT_URI ?= "git://sourceware.org/git/glibc.git;protocol=https"
diff --git a/poky/meta/recipes-core/images/core-image-minimal-initramfs.bb b/poky/meta/recipes-core/images/core-image-minimal-initramfs.bb
index 1c08c7f..7bb0b27 100644
--- a/poky/meta/recipes-core/images/core-image-minimal-initramfs.bb
+++ b/poky/meta/recipes-core/images/core-image-minimal-initramfs.bb
@@ -17,6 +17,9 @@
 # Do not pollute the initrd image with rootfs features
 IMAGE_FEATURES = ""
 
+# Don't allow the initramfs to contain a kernel
+PACKAGE_EXCLUDE = "kernel-image-*"
+
 export IMAGE_BASENAME = "${MLPREFIX}core-image-minimal-initramfs"
 IMAGE_NAME_SUFFIX ?= ""
 IMAGE_LINGUAS = ""
diff --git a/poky/meta/recipes-core/initscripts/init-system-helpers_1.65.2.bb b/poky/meta/recipes-core/initscripts/init-system-helpers_1.66.bb
similarity index 96%
rename from poky/meta/recipes-core/initscripts/init-system-helpers_1.65.2.bb
rename to poky/meta/recipes-core/initscripts/init-system-helpers_1.66.bb
index 1fc23ac..64e08aa 100644
--- a/poky/meta/recipes-core/initscripts/init-system-helpers_1.65.2.bb
+++ b/poky/meta/recipes-core/initscripts/init-system-helpers_1.66.bb
@@ -16,7 +16,7 @@
 LICENSE = "BSD-3-Clause & GPL-2.0-only"
 LIC_FILES_CHKSUM = "file://debian/copyright;md5=c4ec20aa158fa9de26ee1accf78dcaae"
 
-SRCREV = "2f446b69db728b2bda68270a9b81de88102e1fdd"
+SRCREV = "a5439f465dc1d1d4e12329208dc321fb806009f4"
 SRC_URI = "git://salsa.debian.org/debian/init-system-helpers.git;protocol=https;branch=master"
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>(\d+(\.\d+)+))(?!_exp)"
 
diff --git a/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb b/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
index d0321f1..9ab8dc6 100644
--- a/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
+++ b/poky/meta/recipes-core/meta/cve-update-nvd2-native.bb
@@ -26,8 +26,8 @@
 # Use a negative value to skip the update
 CVE_DB_UPDATE_INTERVAL ?= "86400"
 
-# Timeout for blocking socket operations, such as the connection attempt.
-CVE_SOCKET_TIMEOUT ?= "60"
+# Number of attmepts for each http query to nvd server before giving up
+CVE_DB_UPDATE_ATTEMPTS ?= "5"
 
 CVE_DB_TEMP_FILE ?= "${CVE_CHECK_DB_DIR}/temp_nvdcve_2.db"
 
@@ -114,7 +114,7 @@
     if os.path.exists(db_tmp_file):
         os.remove(db_tmp_file)
 
-def nvd_request_next(url, api_key, args):
+def nvd_request_next(url, attempts, api_key, args):
     """
     Request next part of the NVD dabase
     """
@@ -130,7 +130,7 @@
         request.add_header("apiKey", api_key)
     bb.note("Requesting %s" % request.full_url)
 
-    for attempt in range(5):
+    for attempt in range(attempts):
         try:
             r = urllib.request.urlopen(request)
 
@@ -186,10 +186,11 @@
         index = 0
         url = d.getVar("NVDCVE_URL")
         api_key = d.getVar("NVDCVE_API_KEY") or None
+        attempts = int(d.getVar("CVE_DB_UPDATE_ATTEMPTS"))
 
         while True:
             req_args['startIndex'] = index
-            raw_data = nvd_request_next(url, api_key, req_args)
+            raw_data = nvd_request_next(url, attempts, api_key, req_args)
             if raw_data is None:
                 # We haven't managed to download data
                 return False
diff --git a/poky/meta/recipes-core/systemd/systemd-boot_254.4.bb b/poky/meta/recipes-core/systemd/systemd-boot_254.4.bb
index 4ee25ee..2b43ccf 100644
--- a/poky/meta/recipes-core/systemd/systemd-boot_254.4.bb
+++ b/poky/meta/recipes-core/systemd/systemd-boot_254.4.bb
@@ -8,6 +8,10 @@
 inherit meson pkgconfig gettext
 inherit deploy
 
+SRC_URI += " \
+           file://0030-meson-Pass-all-static-pie-args-to-linker.patch \
+           "
+
 LDFLAGS:prepend = "${@ " ".join(d.getVar('LD').split()[1:])} "
 
 EFI_LD = "bfd"
diff --git a/poky/meta/recipes-core/systemd/systemd-compat-units.bb b/poky/meta/recipes-core/systemd/systemd-compat-units.bb
index 253bc9f..c03d97f 100644
--- a/poky/meta/recipes-core/systemd/systemd-compat-units.bb
+++ b/poky/meta/recipes-core/systemd/systemd-compat-units.bb
@@ -27,7 +27,8 @@
 
 pkg_postinst:${PN} () {
 
-	cd $D${sysconfdir}/init.d  ||  exit 0
+	test -d $D${sysconfdir}/init.d  ||  exit 0
+	cd $D${sysconfdir}/init.d
 
 	echo "Disabling the following sysv scripts: "
 
diff --git a/poky/meta/recipes-core/systemd/systemd/0030-meson-Pass-all-static-pie-args-to-linker.patch b/poky/meta/recipes-core/systemd/systemd/0030-meson-Pass-all-static-pie-args-to-linker.patch
new file mode 100644
index 0000000..8e56323
--- /dev/null
+++ b/poky/meta/recipes-core/systemd/systemd/0030-meson-Pass-all-static-pie-args-to-linker.patch
@@ -0,0 +1,35 @@
+From f85a387a67900b02c69abccb88c2ef7191c67277 Mon Sep 17 00:00:00 2001
+From: Jan Janssen <medhefgo@web.de>
+Date: Sun, 1 Oct 2023 09:55:48 +0200
+Subject: [PATCH] meson: Pass all -static-pie args to linker
+
+Fixes: #29381
+
+Upstream-Status: Backport [https://github.com/systemd/systemd/commit/cecbb162a3134b43d2ca160e13198c73ff34c3ef]
+Signed-off-by: Viswanath Kraleti <quic_vkraleti@quicinc.com>
+---
+ src/boot/efi/meson.build | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build
+index 2773eaf286..9a60a57329 100644
+--- a/src/boot/efi/meson.build
++++ b/src/boot/efi/meson.build
+@@ -161,9 +161,14 @@ efi_c_ld_args = [
+         '-Wl,--entry=efi_main',
+         '-Wl,--fatal-warnings',
+ 
+-        # These flags should be passed by -static-pie, but seem to be missing sometimes.
+-        '-Wl,--no-dynamic-linker',
+-        '-z', 'text',
++        # These flags should be passed by -static-pie, but for whatever reason the flag translation
++        # is not enabled on all architectures. Not passing `-static` would just allow the linker to
++        # use dynamic libraries, (which we can't/don't use anyway). But if `-pie` is missing and the
++        # gcc build does not default to `-pie` we get a regular (no-pie) binary that will be
++        # rightfully rejected by elf2efi. Note that meson also passes `-pie` to the linker driver,
++        # but it is overridden by our `-static-pie`. We also need to pass these directly to the
++        # linker as `-static`+`-pie` seem to get translated differently.
++        '-Wl,-static,-pie,--no-dynamic-linker,-z,text',
+ 
+         # EFI has 4KiB pages.
+         '-z', 'common-page-size=4096',
diff --git a/poky/meta/recipes-core/systemd/systemd_254.4.bb b/poky/meta/recipes-core/systemd/systemd_254.4.bb
index ecf693e..4d68a32 100644
--- a/poky/meta/recipes-core/systemd/systemd_254.4.bb
+++ b/poky/meta/recipes-core/systemd/systemd_254.4.bb
@@ -206,7 +206,7 @@
 PACKAGECONFIG[sysext] = "-Dsysext=true, -Dsysext=false"
 PACKAGECONFIG[sysusers] = "-Dsysusers=true,-Dsysusers=false"
 PACKAGECONFIG[sysvinit] = "-Dsysvinit-path=${sysconfdir}/init.d -Dsysvrcnd-path=${sysconfdir},-Dsysvinit-path= -Dsysvrcnd-path=,,systemd-compat-units update-rc.d"
-# When enabled use reproducble build timestamp if set as time epoch,
+# When enabled use reproducible build timestamp if set as time epoch,
 # or build time if not. When disabled, time epoch is unset.
 def build_epoch(d):
     epoch = d.getVar('SOURCE_DATE_EPOCH') or "-1"
diff --git a/poky/meta/recipes-core/udev/eudev/0001-Export-dummies-for.patch b/poky/meta/recipes-core/udev/eudev/0001-Export-dummies-for.patch
deleted file mode 100644
index 21fbf0f..0000000
--- a/poky/meta/recipes-core/udev/eudev/0001-Export-dummies-for.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 45634cc0f09ea354be7efce2ae3d3fa8ffc181ec Mon Sep 17 00:00:00 2001
-From: Boian Bonev <bbonev@ipacct.com>
-Date: Fri, 11 Aug 2023 23:14:02 +0000
-Subject: [PATCH] Export dummies for
-
- - udev_device_has_current_tag
- - udev_device_get_current_tags_list_entry
-
-since the current eudev device database does not support the concept of
-current tags
-
-Upstream-Status: Submitted [https://github.com/eudev-project/eudev/pull/253]
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- src/libudev/libudev-device.c | 11 +++++++++++
- src/libudev/libudev.h        |  2 ++
- src/libudev/libudev.sym      |  6 ++++++
- 3 files changed, 19 insertions(+)
-
-diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
-index ac67ce8..7d7a662 100644
---- a/src/libudev/libudev-device.c
-+++ b/src/libudev/libudev-device.c
-@@ -1819,6 +1819,12 @@ _public_ struct udev_list_entry *udev_device_get_tags_list_entry(struct udev_dev
-         return udev_list_get_entry(&udev_device->tags_list);
- }
- 
-+_public_ struct udev_list_entry *udev_device_get_current_tags_list_entry(struct udev_device *udev_device)
-+{
-+        // TODO: eudev database does not support current tags
-+        return udev_device_get_tags_list_entry(udev_device);
-+}
-+
- /**
-  * udev_device_has_tag:
-  * @udev_device: udev device
-@@ -1842,6 +1848,11 @@ _public_ int udev_device_has_tag(struct udev_device *udev_device, const char *ta
-         return false;
- }
- 
-+_public_ int udev_device_has_current_tag(struct udev_device *udev_device, const char *tag) {
-+        // TODO: eudev database does not support current tags
-+        return udev_device_has_tag(udev_device, tag);
-+}
-+
- #define ENVP_SIZE                        128
- #define MONITOR_BUF_SIZE                4096
- static int update_envp_monitor_buf(struct udev_device *udev_device)
-diff --git a/src/libudev/libudev.h b/src/libudev/libudev.h
-index 8491d2b..0202964 100644
---- a/src/libudev/libudev.h
-+++ b/src/libudev/libudev.h
-@@ -100,6 +100,7 @@ int udev_device_get_is_initialized(struct udev_device *udev_device);
- struct udev_list_entry *udev_device_get_devlinks_list_entry(struct udev_device *udev_device);
- struct udev_list_entry *udev_device_get_properties_list_entry(struct udev_device *udev_device);
- struct udev_list_entry *udev_device_get_tags_list_entry(struct udev_device *udev_device);
-+struct udev_list_entry *udev_device_get_current_tags_list_entry(struct udev_device *udev_device);
- struct udev_list_entry *udev_device_get_sysattr_list_entry(struct udev_device *udev_device);
- const char *udev_device_get_property_value(struct udev_device *udev_device, const char *key);
- const char *udev_device_get_driver(struct udev_device *udev_device);
-@@ -110,6 +111,7 @@ unsigned long long int udev_device_get_usec_since_initialized(struct udev_device
- const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const char *sysattr);
- int udev_device_set_sysattr_value(struct udev_device *udev_device, const char *sysattr, char *value);
- int udev_device_has_tag(struct udev_device *udev_device, const char *tag);
-+int udev_device_has_current_tag(struct udev_device *udev_device, const char *tag);
- 
- /*
-  * udev_monitor
-diff --git a/src/libudev/libudev.sym b/src/libudev/libudev.sym
-index 76726fc..d56c2ae 100644
---- a/src/libudev/libudev.sym
-+++ b/src/libudev/libudev.sym
-@@ -118,3 +118,9 @@ global:
-         udev_queue_flush;
-         udev_queue_get_fd;
- } LIBUDEV_199;
-+
-+LIBUDEV_247 {
-+global:
-+        udev_device_has_current_tag;
-+        udev_device_get_current_tags_list_entry;
-+} LIBUDEV_215;
diff --git a/poky/meta/recipes-core/udev/eudev/0002-Bump-udev-version-to-251.patch b/poky/meta/recipes-core/udev/eudev/0002-Bump-udev-version-to-251.patch
deleted file mode 100644
index 520cc38..0000000
--- a/poky/meta/recipes-core/udev/eudev/0002-Bump-udev-version-to-251.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 7a66d4fe8aac8c8697c3cecb0c189e22524fbc98 Mon Sep 17 00:00:00 2001
-From: Boian Bonev <bbonev@ipacct.com>
-Date: Fri, 11 Aug 2023 22:08:27 +0000
-Subject: [PATCH] Bump udev version to 251
-
-Upstream-Status: Submitted [https://github.com/eudev-project/eudev/pull/253]
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 3e31b0e..069fdfb 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1,6 +1,6 @@
- AC_PREREQ([2.68])
- AC_INIT([eudev],[3.2.12],[https://github.com/gentoo/eudev/issues])
--AC_SUBST(UDEV_VERSION, 243)
-+AC_SUBST(UDEV_VERSION, 251)
- AC_CONFIG_SRCDIR([src/udev/udevd.c])
- 
- AC_USE_SYSTEM_EXTENSIONS
diff --git a/poky/meta/recipes-core/udev/eudev_3.2.12.bb b/poky/meta/recipes-core/udev/eudev_3.2.14.bb
similarity index 93%
rename from poky/meta/recipes-core/udev/eudev_3.2.12.bb
rename to poky/meta/recipes-core/udev/eudev_3.2.14.bb
index e19c6c0..d075869 100644
--- a/poky/meta/recipes-core/udev/eudev_3.2.12.bb
+++ b/poky/meta/recipes-core/udev/eudev_3.2.14.bb
@@ -12,11 +12,9 @@
 SRC_URI = "${GITHUB_BASE_URI}/download/v${PV}/${BP}.tar.gz \
            file://init \
            file://local.rules \
-           file://0001-Export-dummies-for.patch \
-           file://0002-Bump-udev-version-to-251.patch \
            "
 
-SRC_URI[sha256sum] = "ccdd64ec3c381d3c3ed0e99d2e70d1f62988c7763de89ca7bdffafa5eacb9ad8"
+SRC_URI[sha256sum] = "8da4319102f24abbf7fff5ce9c416af848df163b29590e666d334cc1927f006f"
 
 GITHUB_BASE_URI = "https://github.com/eudev-project/eudev/releases"
 
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0001-mention-prototypes-more-prominently-in-NEWS.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0001-mention-prototypes-more-prominently-in-NEWS.patch
deleted file mode 100644
index 3faf6f0..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0001-mention-prototypes-more-prominently-in-NEWS.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 5ffc09fca39de051537fbebd7c6c33d5255a520f Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Mon, 27 Mar 2023 18:10:36 -0700
-Subject: [PATCH 01/29] mention prototypes more prominently in NEWS
-
-* NEWS: Mention the function prototype issue early.
-(From a suggestion by Zack Weinberg.)
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- NEWS | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/NEWS b/NEWS
-index cf01ee210..d64648c6f 100644
---- a/NEWS
-+++ b/NEWS
-@@ -4,6 +4,14 @@ GNU Autoconf NEWS - User visible changes.
- 
- ** Backward incompatibilities
- 
-+*** AC_CHECK_FUNC and similar macros now use function prototypes.
-+  AC_CHECK_FUNC and and similar macros now use C declarations with
-+  function prototypes, a feature introduced in C89.  The new approach
-+  should work better with C23, which removed the non-prototyped K&R
-+  style that AC_CHECK_FUNC previously used.  However, this change
-+  means Autoconf no longer supports pre-1989 C compilers, as they do
-+  not support function prototypes.
-+
- *** Autoconf now requires perl 5.10 (2007) or later.
-   Generated 'configure' scripts continue to run without perl.
- 
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0002-build-run-make-fetch-which-updated-these.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0002-build-run-make-fetch-which-updated-these.patch
deleted file mode 100644
index 35f324c..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0002-build-run-make-fetch-which-updated-these.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From e2220ed33e69d8bc6504e3f6279894afe33a99a5 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Wed, 29 Mar 2023 12:59:09 -0700
-Subject: [PATCH 02/29] build: run "make fetch", which updated these:
-
-* build-aux/texinfo.tex: Update from texinfo.
-* lib/Autom4te/FileUtils.pm: Update from automake.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- build-aux/texinfo.tex     | 50 +++++++++++++++++++++------------------
- lib/Autom4te/FileUtils.pm |  5 +++-
- 2 files changed, 31 insertions(+), 24 deletions(-)
-
-diff --git a/build-aux/texinfo.tex b/build-aux/texinfo.tex
-index d25161109..55a002d27 100644
---- a/build-aux/texinfo.tex
-+++ b/build-aux/texinfo.tex
-@@ -3,7 +3,7 @@
- % Load plain if necessary, i.e., if running under initex.
- \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
- %
--\def\texinfoversion{2023-03-21.06}
-+\def\texinfoversion{2023-03-27.21}
- %
- % Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
- %
-@@ -1102,27 +1102,33 @@ where each line of input produces a line of output.}
- 
- % Output page labels information.
- % See PDF reference v.1.7 p.594, section 8.3.1.
-+% Page label ranges must be increasing.
- \ifpdf
- \def\pagelabels{%
-   \def\title{0 << /P (T-) /S /D >>}%
--  \edef\roman{\the\romancount << /S /r >>}%
--  \edef\arabic{\the\arabiccount << /S /D >>}%
-   %
--  % Page label ranges must be increasing.  Remove any duplicates.
--  % (There is a slight chance of this being wrong if e.g. there is
--  % a @contents but no @titlepage, etc.)
--  %
--  \ifnum\romancount=0 \def\roman{}\fi
--  \ifnum\arabiccount=0 \def\title{}%
--  \else
--    \ifnum\romancount=\arabiccount \def\roman{}\fi
--  \fi
--  %
--  \ifnum\romancount<\arabiccount
--    \pdfcatalog{/PageLabels << /Nums [\title \roman \arabic ] >> }\relax
-+  % support @contents at very end of document
-+  \ifnum\contentsendcount=\pagecount
-+    \ifnum\arabiccount<\romancount
-+      \pdfcatalog{/PageLabels << /Nums
-+                  [\title
-+                   \the\arabiccount << /S /D >>
-+                   \the\romancount << /S /r >>
-+                  ] >> }\relax
-+    \fi
-+  % no contents in document
-+  \else\ifnum\contentsendcount=0
-+    \pdfcatalog{/PageLabels << /Nums
-+                [\title
-+                 \the\arabiccount << /S /D >>
-+                ] >> }\relax
-   \else
--    \pdfcatalog{/PageLabels << /Nums [\title \arabic \roman ] >> }\relax
--  \fi
-+    \pdfcatalog{/PageLabels << /Nums
-+                [\title
-+                 \the\romancount << /S /r >>
-+                 \the\contentsendcount << /S /D >>
-+                ] >> }\relax
-+  \fi\fi
- }
- \else
-   \let\pagelabels\relax
-@@ -1131,6 +1137,8 @@ where each line of input produces a line of output.}
- \newcount\pagecount \pagecount=0
- \newcount\romancount \romancount=0
- \newcount\arabiccount \arabiccount=0
-+\newcount\contentsendcount \contentsendcount=0
-+
- \ifpdf
-   \let\ptxadvancepageno\advancepageno
-   \def\advancepageno{%
-@@ -6809,12 +6817,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
- % Get ready to use Arabic numerals again
- \def\contentsendroman{%
-   \lastnegativepageno = \pageno
--  \global\pageno = \savepageno
--  %
--  % If \romancount > \arabiccount, the contents are at the end of the
--  % document.  Otherwise, advance where the Arabic numerals start for
--  % the page numbers.
--  \ifnum\romancount>\arabiccount\else\global\arabiccount=\pagecount\fi
-+  \global\pageno=1
-+  \contentsendcount = \pagecount
- }
- 
- % Typeset the label for a chapter or appendix for the short contents.
-diff --git a/lib/Autom4te/FileUtils.pm b/lib/Autom4te/FileUtils.pm
-index ab58b9de4..2468fe6d8 100644
---- a/lib/Autom4te/FileUtils.pm
-+++ b/lib/Autom4te/FileUtils.pm
-@@ -39,9 +39,12 @@ use strict;
- use warnings FATAL => 'all';
- 
- use Exporter;
--use Time::HiRes qw(stat);
- use IO::File;
- 
-+# use sub-second resolution timestamps if available,
-+# carry on with one-second resolution timestamps if that is all we have
-+BEGIN { eval { require Time::HiRes; import Time::HiRes qw(stat) } }
-+
- use Autom4te::Channels;
- use Autom4te::ChannelDefs;
- 
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0003-NEWS-Tighten-up-wording.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0003-NEWS-Tighten-up-wording.patch
deleted file mode 100644
index 76c37a0..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0003-NEWS-Tighten-up-wording.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From e05aa447945c0d72ad924fd89a28830cf1a0f8d3 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Fri, 31 Mar 2023 10:37:57 -0700
-Subject: [PATCH 03/29] * NEWS: Tighten up wording.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- NEWS | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index d64648c6f..884e46f45 100644
---- a/NEWS
-+++ b/NEWS
-@@ -5,9 +5,7 @@ GNU Autoconf NEWS - User visible changes.
- ** Backward incompatibilities
- 
- *** AC_CHECK_FUNC and similar macros now use function prototypes.
--  AC_CHECK_FUNC and and similar macros now use C declarations with
--  function prototypes, a feature introduced in C89.  The new approach
--  should work better with C23, which removed the non-prototyped K&R
-+  This should work better with C23, which removed the non-prototyped K&R
-   style that AC_CHECK_FUNC previously used.  However, this change
-   means Autoconf no longer supports pre-1989 C compilers, as they do
-   not support function prototypes.
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch
deleted file mode 100644
index 1b30d99..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 232cab527897bcdf4d55492d41af73d31905bda5 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Fri, 31 Mar 2023 10:46:20 -0700
-Subject: [PATCH 04/29] Cater to programs misusing AC_EGREP_HEADER
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Problem reported by Frederic Berat in:
-https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html
-* lib/autoconf/programs.m4 (AC_PROG_EGREP): Also set
-EGREP_TRADITIONAL and ac_cv_path_EGREP_TRADITIONAL.
-* tests/c.at (AC_PROG_EGREP and AC_EGREP_HEADER):
-New test, taken from Frederic Berat’s email in:
-https://lists.gnu.org/r/autoconf/2023-03/msg00043.html
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/programs.m4 | 10 ++++++++++
- tests/c.at               | 24 ++++++++++++++++++++++++
- 2 files changed, 34 insertions(+)
-
-diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
-index 1b7460c85..62ba6b8b6 100644
---- a/lib/autoconf/programs.m4
-+++ b/lib/autoconf/programs.m4
-@@ -371,6 +371,16 @@ AC_CACHE_CHECK([for egrep], ac_cv_path_EGREP,
-    fi])
-  EGREP="$ac_cv_path_EGREP"
-  AC_SUBST([EGREP])
-+ dnl
-+ dnl Also set EGREP_TRADITIONAL even though unnecessary here,
-+ dnl for wrong but too-common code with the following pattern:
-+ dnl   AC_PROG_EGREP
-+ dnl   if false; then
-+ dnl      AC_EGREP_HEADER([printf], [stdio.h], [has_printf=yes])
-+ dnl   fi
-+ dnl   AC_EGREP_HEADER([malloc], [stdlib.h], [has_malloc=yes])
-+ EGREP_TRADITIONAL=$EGREP
-+ ac_cv_path_EGREP_TRADITIONAL=$EGREP
- ])# AC_PROG_EGREP
- 
- # _AC_PROG_EGREP_TRADITIONAL
-diff --git a/tests/c.at b/tests/c.at
-index c37f43b10..fad54760f 100644
---- a/tests/c.at
-+++ b/tests/c.at
-@@ -232,6 +232,30 @@ AT_CHECK_DEFINES(
- AT_CLEANUP
- 
- 
-+## ----------------------------------- ##
-+## AC_PROG_EGREP and AC_EGREP_HEADER.  ##
-+## ----------------------------------- ##
-+
-+AT_SETUP([AC_PROG_EGREP and AC_EGREP_HEADER])
-+
-+_AT_CHECK_AC_MACRO(
-+[[AC_PROG_CPP
-+  AC_PROG_EGREP
-+
-+  # Although this code is incorrect (it should use AS_IF),
-+  # it follows a too-common real world pattern.
-+  # For now, test for it; we may remove this test later.
-+  if false; then
-+    AC_EGREP_HEADER([^], [limits.h])
-+  fi
-+
-+  AC_EGREP_HEADER([$], [limits.h], [],
-+    [AC_MSG_ERROR([[egrep-related macros do not tolerate misuse of 'if']])])
-+]])
-+
-+AT_CLEANUP
-+
-+
- ## ------------------------------------ ##
- ## AC_NO_EXECUTABLES (working linker).  ##
- ## ------------------------------------ ##
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0006-Fix-timing-bug-on-high-speed-builds.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0006-Fix-timing-bug-on-high-speed-builds.patch
deleted file mode 100644
index 53fb40b..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0006-Fix-timing-bug-on-high-speed-builds.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 713d9822bbfb2923115065efaefed34a0113f8a1 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Sat, 1 Apr 2023 16:44:03 -0700
-Subject: [PATCH 06/29] Fix timing bug on high-speed builds
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Problem reported by Bogdan via Jacob Bachmeyer in:
-https://lists.gnu.org/r/autoconf/2023-04/msg00002.html
-* bin/autom4te.in: If a file timestamp equals a dependency’s
-timestamp, consider the file to be out of date.  Although this may
-result in extra work, it fixes some rare timing bugs.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- bin/autom4te.in | 12 +++++-------
- 1 file changed, 5 insertions(+), 7 deletions(-)
-
-diff --git a/bin/autom4te.in b/bin/autom4te.in
-index 4b61f0a82..71d7e6a62 100644
---- a/bin/autom4te.in
-+++ b/bin/autom4te.in
-@@ -910,10 +910,8 @@ sub up_to_date ($)
-   return 0
-     if ! -f $tfile || ! -f $ofile;
- 
--  # The youngest of the cache files must be older than the oldest of
-+  # The younger of the cache files must be older than the oldest of
-   # the dependencies.
--  # FIXME: These timestamps have only 1-second resolution.
--  # Time::HiRes fixes this, but assumes Perl 5.8 or later.
-   my $tmtime = mtime ($tfile);
-   my $omtime = mtime ($ofile);
-   my ($file, $mtime) = ($tmtime < $omtime
-@@ -926,7 +924,7 @@ sub up_to_date ($)
-   # We depend at least upon the arguments.
-   foreach my $dep (@ARGV)
-     {
--      if ($mtime < mtime ($dep))
-+      if ($mtime <= mtime ($dep))
- 	{
- 	  verb "up_to_date ($file): outdated: $dep";
- 	  return 0;
-@@ -949,7 +947,7 @@ sub up_to_date ($)
-       # timestamp of that missing file was newer).
-       return 0
- 	if ! $dep;
--      if ($mtime < mtime ($dep))
-+      if ($mtime <= mtime ($dep))
- 	{
- 	  verb "up_to_date ($file): outdated: $dep";
- 	  return 0;
-@@ -1038,7 +1036,7 @@ $icache_file = new Autom4te::XFile $icache, O_RDWR|O_CREAT;
- $icache_file->lock (LOCK_EX)
-   if ($flock_implemented eq "yes");
- 
--# Read the cache index if available and older than autom4te itself.
-+# Read the cache index if available and younger than autom4te itself.
- # If autom4te is younger, then some structures such as C4che might
- # have changed, which would corrupt its processing.
- Autom4te::C4che->load ($icache_file)
-@@ -1105,7 +1103,7 @@ else
-     # Actual M4 expansion, if the user wants it, or if $output is old
-     # (STDOUT is pretty old).
-     handle_output ($req, $output)
--      if $force || mtime ($output) < mtime ($ocache . $req->id);
-+      if $force || mtime ($output) <= mtime ($ocache . $req->id);
-   }
- 
- # If we ran up to here, the cache is valid.
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0007-Support-underquoted-callers-better.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0007-Support-underquoted-callers-better.patch
deleted file mode 100644
index f9f9345..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0007-Support-underquoted-callers-better.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 794182506c3c5814d48b2fc4d832770f608ce0ef Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Sat, 1 Apr 2023 20:25:13 -0700
-Subject: [PATCH 07/29] Support underquoted callers better
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Problem reported bh Khem Raj for mcpp 2.7.2 (2008) in:
-https://lists.gnu.org/r/autoconf/2023-04/msg00001.html
-* lib/autoconf/programs.m4 (_AC_PATH_PROG_FLAVOR_GNU):
-Add two ‘@%:@(’s to cater to underquoted callers.
-* lib/m4sugar/m4sh.m4 (_AS_PATH_WALK): Use quadrigraph instead of
-‘#’, for underquoted callers.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/programs.m4 | 5 +++--
- lib/m4sugar/m4sh.m4      | 2 +-
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/lib/autoconf/programs.m4 b/lib/autoconf/programs.m4
-index 62ba6b8b6..d06d18c44 100644
---- a/lib/autoconf/programs.m4
-+++ b/lib/autoconf/programs.m4
-@@ -543,11 +543,12 @@ dnl   # for best performing tool in a list breaks down.
- # ----------------------------------------------------------------
- m4_define([_AC_PATH_PROG_FLAVOR_GNU],
- [# Check for GNU $1
--case `"$1" --version 2>&1` in
-+case `"$1" --version 2>&1` in @%:@(
- *GNU*)
-   $2;;
- m4_ifval([$3],
--[*)
-+[@%:@(
-+*)
-   $3;;
- ])esac
- ])# _AC_PATH_PROG_FLAVOR_GNU
-diff --git a/lib/m4sugar/m4sh.m4 b/lib/m4sugar/m4sh.m4
-index ab5ca7db7..368487fa0 100644
---- a/lib/m4sugar/m4sh.m4
-+++ b/lib/m4sugar/m4sh.m4
-@@ -1389,7 +1389,7 @@ m4_if([$1], m4_translit([[$1]], [:;]),
- for as_dir in $as_dummy])
- do
-   IFS=$as_save_IFS
--  case $as_dir in #(((
-+  case $as_dir in @%:@(((
-     '') as_dir=./ ;;
-     */) ;;
-     *) as_dir=$as_dir/ ;;
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0008-New-script-for-building-inside-Guix-containers.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0008-New-script-for-building-inside-Guix-containers.patch
deleted file mode 100644
index cec7dcd..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0008-New-script-for-building-inside-Guix-containers.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 8babe5f2ccb73cc574933743b381557a4db02424 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Thu, 30 Mar 2023 10:50:36 -0400
-Subject: [PATCH 08/29] New script for building inside Guix containers.
-
-build-aux/test-build-guix, goes with the top level manifest.scm.
-See the top of the file for usage instructions.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- build-aux/test-build-guix | 30 ++++++++++++++++++++++++++++++
- 1 file changed, 30 insertions(+)
- create mode 100755 build-aux/test-build-guix
-
-diff --git a/build-aux/test-build-guix b/build-aux/test-build-guix
-new file mode 100755
-index 000000000..4470af9b7
---- /dev/null
-+++ b/build-aux/test-build-guix
-@@ -0,0 +1,30 @@
-+#! /bin/sh
-+
-+# From a pristine Git checkout, run
-+#  guix shell --container --manifest=manifest.scm -- build-aux/test-build-guix
-+# to perform a complete bootstrap and test build of Autoconf.
-+
-+set -ex
-+
-+# Guix bug? /bin/sh is usually *not* the shell specified in the manifest.
-+SHELL="$(command -v sh)"
-+export SHELL
-+if [ "$(realpath /bin/sh)" != "$(realpath "$SHELL")" ]; then
-+    (
-+        cd /bin
-+        rm sh
-+        ln -s "$SHELL" sh
-+    )
-+    exec "$SHELL" "$0" "$@"
-+fi
-+
-+./bootstrap
-+if [ -d _build ]; then
-+    rm -rf _build/*
-+else
-+    mkdir _build
-+fi
-+cd _build
-+../configure
-+make all info pdf dvi
-+make distcheck
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch
deleted file mode 100644
index c1c60dc..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From dcf9bb7e3b12f3bd74edff60e80b53e668159579 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Sun, 2 Apr 2023 10:27:08 -0400
-Subject: [PATCH 09/29] AC_XENIX_DIR: Rewrite using AC_CANONICAL_HOST.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-AC_XENIX_DIR is an obsolete macro, defined as AC_HEADER_DIRENT plus
-code to make absolutely sure configure scripts that depended on a
-shell variable internal to the original (2.13 era) definition of
-AC_XENIX_DIR are not broken by autoupdate.  (That variable had the
-temptingly public-sounding name “XENIX.”)  This compatibility code
-uses AC_EGREP_CPP, which is itself discouraged for use in new
-configure scripts.
-
-(N.B. codesearch.debian.net does not find any uses whatsoever of
-this macro, nor any code in an .ac or .m4 file that depends on the
-XENIX variable.)
-
-Change the compatibility code to use AC_CANONICAL_HOST instead,
-and clarify which pieces of the code inserted by autoupdate are
-probably still necessary.
-
-* lib/autoconf/specific.m4 (AC_XENIX_DIR): Set XENIX variable
-  based on value of host_os. Clarify what manual cleanup is
-  recommended after autoupdate replaces this obsolete macro.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/specific.m4 | 26 +++++++++++---------------
- 1 file changed, 11 insertions(+), 15 deletions(-)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index 1b3ee661b..a2dc5d488 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -754,9 +754,9 @@ dnl it should only be defined when necessary.
- ## Checks for UNIX variants.  ##
- ## -------------------------- ##
- 
--
--# These are kludges which should be replaced by a single POSIX check.
--# They aren't cached, to discourage their use.
-+# These macros are all obsolete, from the early days of Autoconf,
-+# before the invention of AC_CANONICAL_SYSTEM.  Autoupdate will
-+# replace each with inline code for a more modern feature check.
- 
- # AC_AIX
- # ------
-@@ -776,19 +776,15 @@ AU_DEFUN([AC_ISC_POSIX], [AC_SEARCH_LIBS([strerror], [cposix])])
- # AC_XENIX_DIR
- # ------------
- AU_DEFUN([AC_XENIX_DIR],
--[AC_MSG_CHECKING([for Xenix])
--AC_EGREP_CPP([yes],
--[#if defined M_XENIX && ! defined M_UNIX
--  yes
--@%:@endif],
--	     [AC_MSG_RESULT([yes]); XENIX=yes],
--	     [AC_MSG_RESULT([no]); XENIX=])
--
--AC_HEADER_DIRENT[]dnl
-+[AC_HEADER_DIRENT
-+# Autoupdate added the next two lines to ensure that your configure
-+# script's behavior did not change.  They are safe to remove unless
-+# you have code that depends on the XENIX shell variable.
-+AC_CANONICAL_HOST
-+AS_CASE([$host_os], [xenix*], [XENIX=yes], [XENIX=no])
-+# End of code added by autoupdate
- ],
--[You shouldn't need to depend upon XENIX.  Remove the
--'AC_MSG_CHECKING', 'AC_EGREP_CPP', and this warning if this part
--of the test is useless.])
-+[Check for code depending on the XENIX shell variable.])
- 
- 
- # AC_DYNIX_SEQ
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch
deleted file mode 100644
index 4932271..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 51d98495d1aac00970d791f064e83ca762bf81c7 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Sun, 2 Apr 2023 10:43:51 -0400
-Subject: [PATCH 10/29] AC_TYPE_UID_T: Rewrite using AC_CHECK_TYPE.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-AC_TYPE_UID_T uses AC_EGREP_HEADER to search sys/types.h for
-occurrences of the string ‘uid_t’ and, if found, assumes both
-uid_t and gid_t are available.  This would be better done using
-a pair of AC_CHECK_TYPE operations.
-
-I also converted two uses of old-style AC_CHECK_TYPE, immediately
-below, to new-style.  (There are probably other old-style uses in
-this file, I only did the ones I happened to see.)
-
-* lib/autoconf/types.m4 (AC_TYPE_UID_T): Check for uid_t and gid_t,
-  separately, using AC_CHECK_TYPE, instead of grepping sys/types.h.
-  (AC_TYPE_SIZE_T, AC_TYPE_SSIZE_T): Use new-style AC_CHECK_TYPE.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/types.m4 | 30 +++++++++++++++++-------------
- 1 file changed, 17 insertions(+), 13 deletions(-)
-
-diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
-index ebac0cf6d..ef2456135 100644
---- a/lib/autoconf/types.m4
-+++ b/lib/autoconf/types.m4
-@@ -589,25 +589,29 @@ AC_DEFUN([AC_TYPE_MBSTATE_T],
- 
- # AC_TYPE_UID_T
- # -------------
--# FIXME: Rewrite using AC_CHECK_TYPE.
- AN_IDENTIFIER([gid_t], [AC_TYPE_UID_T])
- AN_IDENTIFIER([uid_t], [AC_TYPE_UID_T])
- AC_DEFUN([AC_TYPE_UID_T],
--[AC_CACHE_CHECK(for uid_t in sys/types.h, ac_cv_type_uid_t,
--[AC_EGREP_HEADER(uid_t, sys/types.h,
--  ac_cv_type_uid_t=yes, ac_cv_type_uid_t=no)])
--if test $ac_cv_type_uid_t = no; then
--  AC_DEFINE(uid_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
--  AC_DEFINE(gid_t, int, [Define to 'int' if <sys/types.h> doesn't define.])
--fi
--])
--
--
-+[AC_CHECK_TYPE([uid_t], [],
-+  [AC_DEFINE([uid_t], [int],
-+    [Define as 'int' if <sys/types.h> doesn't define.])])
-+AC_CHECK_TYPE([gid_t], [],
-+  [AC_DEFINE([gid_t], [int],
-+    [Define as 'int' if <sys/types.h> doesn't define.])])])
-+
-+# This should be obsoleted, size_t is in C90.
- AN_IDENTIFIER([size_t], [AC_TYPE_SIZE_T])
--AC_DEFUN([AC_TYPE_SIZE_T], [AC_CHECK_TYPE(size_t, unsigned int)])
-+AC_DEFUN([AC_TYPE_SIZE_T],
-+[AC_CHECK_TYPE([size_t], [],
-+  [AC_DEFINE([size_t], [unsigned int],
-+    [Define as 'unsigned int' if <stddef.h> doesn't define.])])])
- 
- AN_IDENTIFIER([ssize_t], [AC_TYPE_SSIZE_T])
--AC_DEFUN([AC_TYPE_SSIZE_T], [AC_CHECK_TYPE(ssize_t, int)])
-+AC_DEFUN([AC_TYPE_SSIZE_T],
-+[AC_CHECK_TYPE([ssize_t], [],
-+  [AC_DEFINE([ssize_t], [int],
-+    [Define as 'int' if <sys/types.h> doesn't define.])])])
-+
- 
- AN_IDENTIFIER([pid_t], [AC_TYPE_PID_T])
- AC_DEFUN([AC_TYPE_PID_T],
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch
deleted file mode 100644
index 9c1f435..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From daaca7f74f94d6a7a51d571156d5fbaba5ef9a87 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Sun, 2 Apr 2023 21:03:30 -0400
-Subject: [PATCH 11/29] Make AC_PROG_GCC_TRADITIONAL a compatibility alias for
- AC_PROG_CC.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This macro is one of the last remaining internal uses of AC_EGREP_CPP.
-It has only ever done anything useful with GCC, and GCC dropped
-support for ‘traditional’ compilation in version 3.3 (released 2003)
-so I do not think it is worth trying to preserve.
-
-* lib/autoconf/c.m4 (AC_PROG_GCC_TRADITIONAL): Make into a
-  compatibility alias for AC_PROG_CC, similar to AC_PROG_CC_STDC.
-* lib/autoconf/general.m4 (AC_EGREP_CPP): Remove stale comment.
-* doc/autoconf.texi, NEWS: Document this change.
-* tests/mktests.pl: Exclude AC_PROG_GCC_TRADITIONAL from
-  autoupdate tests.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- NEWS                    |  7 +++++++
- doc/autoconf.texi       | 29 ++++++++++++++---------------
- lib/autoconf/c.m4       | 30 ++++++------------------------
- lib/autoconf/general.m4 |  2 --
- tests/mktests.pl        |  2 +-
- 5 files changed, 28 insertions(+), 42 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index 6a106f155..53c57ff59 100644
---- a/NEWS
-+++ b/NEWS
-@@ -81,6 +81,13 @@ GNU Autoconf NEWS - User visible changes.
-   with plain apostrophes instead of the older GNU style `like this'
-   with grave accent and apostrophe.
- 
-+*** AC_PROG_GCC_TRADITIONAL no longer does anything.
-+
-+  This macro has had no useful effect since GCC dropped support for
-+  traditional-mode compilation in version 3.3 (released in 2003), and
-+  the systems that needed it are also long obsolete.  It is now a
-+  compatibility synonym for AC_PROG_CC.
-+
- ** Notable bug fixes
- 
- *** Autoconf caches now use finer-grained timestamps.
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index 8db64d8bb..037c8055f 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -7764,20 +7764,6 @@ This macro is obsolescent, as current C compilers support prototypes.
- New programs need not use this macro.
- @end defmac
- 
--@anchor{AC_PROG_GCC_TRADITIONAL}
--@defmac AC_PROG_GCC_TRADITIONAL
--@acindex{PROG_GCC_TRADITIONAL}
--@ovindex CC
--Add @option{-traditional} to output variable @code{CC} if using a
--GNU C compiler and @code{ioctl} does not work properly without
--@option{-traditional}.  That usually happens when the fixed header files
--have not been installed on an old system.
--
--This macro is obsolescent, since current versions of the GNU C
--compiler fix the header files automatically when installed.
--@end defmac
--
--
- @node C++ Compiler
- @subsection C++ Compiler Characteristics
- 
-@@ -23986,7 +23972,8 @@ These days portable programs should use @code{waitpid}, not
- 
- @defmac AC_GCC_TRADITIONAL
- @acindex{GCC_TRADITIONAL}
--Replaced by @code{AC_PROG_GCC_TRADITIONAL} (@pxref{AC_PROG_GCC_TRADITIONAL}).
-+Replaced by @code{AC_PROG_GCC_TRADITIONAL} (@pxref{AC_PROG_GCC_TRADITIONAL}),
-+which is itself obsolete.
- @end defmac
- 
- @defmac AC_GETGROUPS_T
-@@ -24369,6 +24356,18 @@ Now done by @code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
- Now done by @code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
- @end defmac
- 
-+@anchor{AC_PROG_GCC_TRADITIONAL}
-+@defmac AC_PROG_GCC_TRADITIONAL
-+@acindex{PROG_GCC_TRADITIONAL}
-+Used to put GCC into ``traditional'' (pre-ISO C) compilation mode,
-+on systems with headers that did not work correctly with a
-+standard-compliant compiler.  GCC has not supported traditional
-+compilation in many years, and all of the systems that required this are
-+long obsolete themselves.  This macro is now a compatibility synonym for
-+@code{AC_PROG_CC} (@pxref{AC_PROG_CC}).
-+
-+@end defmac
-+
- @defmac AC_PROGRAMS_CHECK
- @acindex{PROGRAMS_CHECK}
- Replaced by @code{AC_CHECK_PROGS} (@pxref{AC_CHECK_PROGS}).
-diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
-index fef6c516d..33648b5b9 100644
---- a/lib/autoconf/c.m4
-+++ b/lib/autoconf/c.m4
-@@ -551,30 +551,6 @@ fi[]dnl
- ])# _AC_PROG_CC_G
- 
- 
--# AC_PROG_GCC_TRADITIONAL
--# -----------------------
--AC_DEFUN([AC_PROG_GCC_TRADITIONAL],
--[AC_REQUIRE([AC_PROG_CC])dnl
--if test $ac_cv_c_compiler_gnu = yes; then
--    AC_CACHE_CHECK(whether $CC needs -traditional,
--      ac_cv_prog_gcc_traditional,
--[  ac_pattern="Autoconf.*'x'"
--  AC_EGREP_CPP($ac_pattern, [#include <sgtty.h>
--Autoconf TIOCGETP],
--  ac_cv_prog_gcc_traditional=yes, ac_cv_prog_gcc_traditional=no)
--
--  if test $ac_cv_prog_gcc_traditional = no; then
--    AC_EGREP_CPP($ac_pattern, [#include <termio.h>
--Autoconf TCGETA],
--    ac_cv_prog_gcc_traditional=yes)
--  fi])
--  if test $ac_cv_prog_gcc_traditional = yes; then
--    CC="$CC -traditional"
--  fi
--fi
--])# AC_PROG_GCC_TRADITIONAL
--
--
- # AC_PROG_CC_C_O
- # --------------
- AC_DEFUN([AC_PROG_CC_C_O],
-@@ -1675,6 +1651,12 @@ AU_DEFUN([AC_PROG_CC_STDC],
-   [$0 is obsolete; use AC_PROG_CC]
- )
- 
-+# AC_PROG_GCC_TRADITIONAL
-+# -----------------------
-+AU_DEFUN([AC_PROG_GCC_TRADITIONAL],
-+  [AC_REQUIRE([AC_PROG_CC])],
-+  [$0 is obsolete; use AC_PROG_CC]
-+)
- 
- # AC_C_BACKSLASH_A
- # ----------------
-diff --git a/lib/autoconf/general.m4 b/lib/autoconf/general.m4
-index ecda0a51c..47d896d54 100644
---- a/lib/autoconf/general.m4
-+++ b/lib/autoconf/general.m4
-@@ -2766,8 +2766,6 @@ AU_DEFUN([AC_TRY_CPP],
- # AC_EGREP_CPP(PATTERN, PROGRAM,
- #              [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
- # ------------------------------------------------------
--# Because this macro is used by AC_PROG_GCC_TRADITIONAL, which must
--# come early, it is not included in AC_BEFORE checks.
- AC_DEFUN([AC_EGREP_CPP],
- [AC_LANG_PREPROC_REQUIRE()dnl
- AC_REQUIRE([_AC_PROG_EGREP_TRADITIONAL])dnl
-diff --git a/tests/mktests.pl b/tests/mktests.pl
-index effed0bca..81f63586c 100644
---- a/tests/mktests.pl
-+++ b/tests/mktests.pl
-@@ -112,7 +112,7 @@ my @ac_exclude_list = (
- # Check all AU_DEFUN'ed macros with AT_CHECK_AU_MACRO, except these.
- my @au_exclude_list = (
-   # Empty.
--  qr/^AC_(C_CROSS|PROG_CC_(C[89]9|STDC))$/,
-+  qr/^AC_(C_CROSS|PROG_(CC_(C[89]9|STDC)|GCC_TRADITIONAL))$/,
- 
-   # Use AC_REQUIRE.
-   qr/^AC_(CYGWIN|MINGW32|EMXOS2)$/,
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch
deleted file mode 100644
index 4d28101..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch
+++ /dev/null
@@ -1,328 +0,0 @@
-From b5891a57b586ef6ff78bb752d62915b78cd58d7e Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Sun, 2 Apr 2023 15:07:58 -0400
-Subject: [PATCH 12/29] Overhaul AC_TYPE_GETGROUPS and AC_FUNC_GETGROUPS.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-AC_TYPE_GETGROUPS is the last remaining use of AC_EGREP_HEADER in
-stock Autoconf macros.  It uses it only when cross compiling, as a
-fallback from an AC_RUN_IFELSE check, testing for a bug in system
-headers from the late 1980s or early 1990s, where gid_t *existed*
-but the second argument to getgroups needed to be an array of int,
-and this didn’t cause a compile error (i.e. the system headers
-declare getgroups with no prototype or an incorrect prototype).
-AC_FUNC_GETGROUPS also uses AC_RUN_IFELSE to test for obscure
-problems specific to long-obsolete Unixes.
-
-The downsides of AC_RUN_IFELSE and AC_EGREP_HEADER seem more severe
-than the chances of someone compiling a current-generation program,
-that uses getgroups, on an OS old enough to have one of the really
-nasty bugs.  Accordingly, this patch changes AC_FUNC_GETGROUPS to use
-a host_os-based *blacklist* both in native and cross compilation.
-This is limited to the two host_os values for which either our old
-code, or Gnulib, documented a serious bug: ultrix* and nextstep*.
-Currently it does not try to pin down the exact version ranges subject
-to the bugs — that would require research by someone with access to
-the full history of these OSes.
-
-An incorrect guess by this blacklist can be overridden by setting
-ac_cv_func_getgroups_works in config.site.  AC_TYPE_GETGROUPS, for its
-part, now does a series of regular old AC_COMPILE_IFELSE checks to
-probe the prototype of getgroups, and considers that good enough.
-
-While I was in there I noticed that AC_FUNC_GETGROUPS does not
-AC_SUBST a documented output variable, and that the name of this
-variable is misspelled in the manual.
-
-* lib/autoconf/functions.m4 (AC_FUNC_GETGROUPS): Use AC_SEARCH_LIBS
-  to probe for getgroups.  Use an AC_CANONICAL_HOST-based blacklist
-  for bug detection, not AC_RUN_IFELSE.  AC_SUBST the GETGROUPS_LIB
-  output variable.
-* lib/autoconf/types.m4 (AC_TYPE_GETGROUPS): Check only the prototype
-  of getgroups, using AC_COMPILE_IFELSE; do not use either AC_RUN_IFELSE
-  or AC_EGREP_HEADER.
-* doc/autoconf.texi: Update to match. Correct misspelling of
-  GETGROUPS_LIB.
-* tests.local.at (_AT_CHECK_ENV): Allow GETGROUPS_LIB output variable.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- NEWS                      | 11 +++++
- doc/autoconf.texi         | 25 ++++++----
- lib/autoconf/functions.m4 | 61 ++++++++++++------------
- lib/autoconf/types.m4     | 97 ++++++++++++++++++++++++---------------
- tests/local.at            |  2 +-
- 5 files changed, 120 insertions(+), 76 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index 53c57ff59..8e4ecc1bf 100644
---- a/NEWS
-+++ b/NEWS
-@@ -38,6 +38,17 @@ GNU Autoconf NEWS - User visible changes.
-   This matters only for uses that, contrary to the documentation
-   and despite warnings, use m4_divert with numbered diversions.
- 
-+*** AC_FUNC_GETGROUPS and AC_TYPE_GETGROUPS no longer run test programs.
-+  These macros were testing for OS bugs that we believe are at least
-+  twenty years in the past.  Most operating systems are now trusted to
-+  provide an accurate prototype for getgroups in unistd.h, and to
-+  implement it as specified in POSIX.
-+
-+  AC_FUNC_GETGROUPS still includes a short blacklist of OSes with
-+  known, severe bugs in getgroups.  It can be overridden using
-+  config.site.  If you encounter a mistake in this blacklist
-+  please report it to bug-autoconf.
-+
- ** New features
- 
- *** New macro AC_SYS_YEAR2038.
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index 037c8055f..5d5f613e6 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -5257,17 +5257,26 @@ and also contains workarounds for other portability problems of
- @defmac AC_FUNC_GETGROUPS
- @acindex{FUNC_GETGROUPS}
- @cvindex HAVE_GETGROUPS
--@ovindex GETGROUPS_LIBS
-+@ovindex GETGROUPS_LIB
- @c @fuindex getgroups
- @prindex @code{getgroups}
- @caindex func_getgroups_works
--If the @code{getgroups} function is available and works,
--define @code{HAVE_GETGROUPS}.  Set @code{GETGROUPS_LIBS} to any libraries
--needed to get that function.  This macro runs @code{AC_TYPE_GETGROUPS}.
--
--This macro is obsolescent. New programs need not use this macro.  But
--they may want to use the Gnulib module @code{getgroups}, which provides
--workarounds to other portability problems of this function.
-+Perform all the checks performed by @code{AC_TYPE_GETGROUPS}
-+(@pxref{AC_TYPE_GETGROUPS}).
-+Then, if the @code{getgroups} function is available
-+and known to work correctly, define @code{HAVE_GETGROUPS}.
-+Set the output variable @code{GETGROUPS_LIB} to any libraries
-+needed to get that function.
-+
-+This macro relies on a list of systems with known, serious bugs in
-+@code{getgroups}.  If this list mis-identifies your system's
-+@code{getgroups} as buggy, or as not buggy, you can override it by
-+setting the cache variable @code{ac_cv_func_getgroups_works} in a
-+@file{config.site} file (@pxref{Site Defaults}).  Please also report the
-+error to @email{bug-autoconf@@gnu.org, the Autoconf Bugs mailing list}.
-+
-+The Gnulib module @code{getgroups} provides workarounds for additional,
-+less severe portability problems with this function.
- @end defmac
- 
- @anchor{AC_FUNC_GETLOADAVG}
-diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
-index 655d6ba8f..74512e97d 100644
---- a/lib/autoconf/functions.m4
-+++ b/lib/autoconf/functions.m4
-@@ -698,47 +698,46 @@ AS_IF([test "$ac_cv_func_fseeko_ftello" = "need _LARGEFILE_SOURCE"],
- # When cross-compiling, assume getgroups is broken.
- AN_FUNCTION([getgroups], [AC_FUNC_GETGROUPS])
- AC_DEFUN([AC_FUNC_GETGROUPS],
--[AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
--AC_REQUIRE([AC_TYPE_SIZE_T])dnl
--AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
--AC_CHECK_FUNC(getgroups)
-+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
-+AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
- 
--# If we don't yet have getgroups, see if it's in -lbsd.
-+# On older systems getgroups might be in -lbsd.
- # This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
- ac_save_LIBS=$LIBS
--if test $ac_cv_func_getgroups = no; then
--  AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
--fi
--
--# Run the program to test the functionality of the system-supplied
--# getgroups function only if there is such a function.
-+LIBS=
-+GETGROUPS_LIB=
-+AC_SEARCH_LIBS([getgroups], [bsd],
-+  [test "$ac_res" = "none required" || GETGROUPS_LIB="$ac_res"
-+   ac_cv_func_getgroups=yes],
-+  [ac_cv_func_getgroups=no])
-+LIBS=$ac_save_LIBS
-+AC_SUBST([GETGROUPS_LIB])
-+
-+# Known severe bugs in getgroups on particular systems.
-+#  - On Ultrix 4.3 and NextSTEP 3.2, getgroups (0, 0) is reported to
-+#    fail, rather than returning the number of supplementary groups as
-+#    it ought to.  We do not know the exact range of releases affected
-+#    in either case.
-+# We currently reject all versions of the systems with known bugs, and
-+# no other systems.  Please send corrections to bug-autoconf@gnu.org.
- if test $ac_cv_func_getgroups = yes; then
-+  # This AC_CACHE_CHECK exists so that one may override an incorrect
-+  # guess by setting ac_cv_func_getgroups_works in a config.site file.
-   AC_CACHE_CHECK([for working getgroups], ac_cv_func_getgroups_works,
--   [AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT],
--      [[/* On Ultrix 4.3, getgroups (0, 0) always fails.  */
--       return getgroups (0, 0) == -1;]])],
--		  [ac_cv_func_getgroups_works=yes],
--		  [ac_cv_func_getgroups_works=no],
--		  [case "$host_os" in # ((
--			     # Guess yes on glibc systems.
--		     *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
--			     # If we don't know, assume the worst.
--		     *)      ac_cv_func_getgroups_works="guessing no" ;;
--		   esac])
--   ])
-+   [AS_CASE([$host_os],
-+     [ultrix* | nextstep*],
-+      [ac_cv_func_getgroups_works=no # getgroups(0,0) fails
-+],
-+      [ac_cv_func_getgroups_works=yes])])
- else
-   ac_cv_func_getgroups_works=no
- fi
--case "$ac_cv_func_getgroups_works" in
--  *yes)
--    AC_DEFINE(HAVE_GETGROUPS, 1,
--	      [Define to 1 if your system has a working 'getgroups' function.])
--    ;;
--esac
--LIBS=$ac_save_LIBS
-+if test $ac_cv_func_getgroups_works = yes; then
-+  AC_DEFINE(HAVE_GETGROUPS, 1,
-+            [Define to 1 if your system has a working 'getgroups' function.])
-+fi
- ])# AC_FUNC_GETGROUPS
- 
--
- # _AC_LIBOBJ_GETLOADAVG
- # ---------------------
- # Set up the AC_LIBOBJ replacement of 'getloadavg'.
-diff --git a/lib/autoconf/types.m4 b/lib/autoconf/types.m4
-index ef2456135..af3872b2f 100644
---- a/lib/autoconf/types.m4
-+++ b/lib/autoconf/types.m4
-@@ -258,44 +258,69 @@ AN_IDENTIFIER([ptrdiff_t], [AC_CHECK_TYPES])
- # AC_TYPE_GETGROUPS
- # -----------------
- AC_DEFUN([AC_TYPE_GETGROUPS],
-+dnl We now unconditionally assume that if <unistd.h> has a prototype for
-+dnl getgroups, it is accurate; and that if <unistd.h> does _not_ declare
-+dnl getgroups with a prototype, the second argument is an array of int.
-+dnl (Older versions of Autoconf made these assumptions only when cross
-+dnl compiling.)  See AC_FUNC_GETGROUPS, over in functions.m4, for why
-+dnl this uses AC_COMPILE_IFELSE rather than AC_LINK_IFELSE.
- [AC_REQUIRE([AC_TYPE_UID_T])dnl
--AC_CACHE_CHECK(type of array argument to getgroups, ac_cv_type_getgroups,
--[AC_RUN_IFELSE([AC_LANG_SOURCE(
--[[/* Thanks to Mike Rendell for this test.  */
--]AC_INCLUDES_DEFAULT[
--#define NGID 256
--#undef MAX
--#define MAX(x, y) ((x) > (y) ? (x) : (y))
--
--int
--main (void)
--{
--  gid_t gidset[NGID];
--  int i, n;
--  union { gid_t gval; long int lval; }  val;
--
--  val.lval = -1;
--  for (i = 0; i < NGID; i++)
--    gidset[i] = val.gval;
--  n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1,
--		 gidset);
--  /* Exit non-zero if getgroups seems to require an array of ints.  This
--     happens when gid_t is short int but getgroups modifies an array
--     of ints.  */
--  return n > 0 && gidset[n] != val.gval;
--}]])],
--	       [ac_cv_type_getgroups=gid_t],
--	       [ac_cv_type_getgroups=int],
--	       [ac_cv_type_getgroups=cross])
--if test $ac_cv_type_getgroups = cross; then
--  dnl When we can't run the test program (we are cross compiling), presume
--  dnl that <unistd.h> has either an accurate prototype for getgroups or none.
--  dnl Old systems without prototypes probably use int.
--  AC_EGREP_HEADER([getgroups.*int.*gid_t], unistd.h,
--		  ac_cv_type_getgroups=gid_t, ac_cv_type_getgroups=int)
--fi])
-+AC_CACHE_CHECK([type of array argument to getgroups], ac_cv_type_getgroups,
-+[# If AC_TYPE_UID_T says there isn't any gid_t typedef, then we can skip
-+# everything below.
-+AS_IF([test $ac_cv_type_gid_t = no],
-+  [ac_cv_type_getgroups=int],
-+  [# Test programs below rely on strict type checking of extern declarations:
-+  # 'extern int getgroups(int, int *); extern int getgroups(int, pid_t *);'
-+  # is valid in C89 if and only if pid_t is a typedef for int.  Unlike
-+  # anything involving either an assignment or a function call, compilers
-+  # tend to make this kind of type mismatch a hard error, not just an
-+  # "incompatible pointer types" warning.
-+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-+[AC_INCLUDES_DEFAULT
-+[extern int getgroups(int, gid_t *);]],
-+[[return !(getgroups(0, 0) >= 0);]])],
-+    [ac_getgroups_gidarray=yes],
-+    [ac_getgroups_gidarray=no])
-+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-+[AC_INCLUDES_DEFAULT
-+[extern int getgroups(int, int *);]],
-+[[return !(getgroups(0, 0) >= 0);]])],
-+    [ac_getgroups_intarray=yes],
-+    [ac_getgroups_intarray=no])
-+
-+  AS_CASE([int:$ac_getgroups_intarray,gid:$ac_getgroups_gidarray],
-+    [int:yes,gid:no], [ac_cv_type_getgroups=int],
-+    [int:no,gid:yes], [ac_cv_type_getgroups=gid_t],
-+    [int:yes,gid:yes], [
-+      # Both programs compiled - this means *either* that getgroups
-+      # was declared with no prototype, in which case we should use int,
-+      # or that it was declared prototyped but gid_t is a typedef for int,
-+      # in which case we should use gid_t.  Distinguish the two cases
-+      # by testing if the compiler catches a blatantly incorrect function
-+      # signature for getgroups.
-+      AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
-+[AC_INCLUDES_DEFAULT
-+[extern int getgroups(int, float);]],
-+[[return !(getgroups(0, 0) >= 0);]])], [
-+        # Compiler did not catch incorrect argument list;
-+        # getgroups is unprototyped.
-+        ac_cv_type_getgroups=int
-+      ], [
-+        # Compiler caught incorrect argument list;
-+        # gid_t is a typedef for int.
-+        ac_cv_type_getgroups=gid_t
-+      ])
-+    ], [
-+      # Both programs failed to compile - this probably means getgroups
-+      # wasn't declared at all.  Use 'int', as this is probably a very
-+      # old system where the type _would have been_ int.
-+      ac_cv_type_getgroups=int
-+    ])
-+  ])
-+])dnl AC_CACHE_CHECK
- AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups,
--		   [Define to the type of elements in the array set by
-+		   [Define to the type of elements in the array argument to
- 		    'getgroups'. Usually this is either 'int' or 'gid_t'.])
- ])# AC_TYPE_GETGROUPS
- 
-diff --git a/tests/local.at b/tests/local.at
-index 64a9fb264..db49f84a9 100644
---- a/tests/local.at
-+++ b/tests/local.at
-@@ -401,7 +401,7 @@ if test -f state-env.before && test -f state-env.after; then
-       [interpval|PATH_SEPARATOR],
-       [GFC|F77_DUMMY_MAIN|f77_(case|underscore)],
-       [FC(_DUMMY_MAIN|FLAGS|LIBS|FLAGS_[fF]|_MODEXT|_MODINC|_MODOUT|_DEFINE)?],
--      [ALLOCA|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB],
-+      [ALLOCA|GETGROUPS_LIB|GETLOADAVG_LIBS|KMEM_GROUP|NEED_SETGID|POW_LIB],
-       [AWK|LEX|LEXLIB|LEX_OUTPUT_ROOT|LN_S|M4|MKDIR_P|AR|RANLIB|SET_MAKE|YACC],
-       [EGREP_TRADITIONAL],
-       [GREP|[EF]GREP|SED],
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch
deleted file mode 100644
index 2dadd83..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From a7dc6d83c7d12b8409c512c3c10ad29f01e6c164 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Sun, 2 Apr 2023 21:54:31 -0400
-Subject: [PATCH 13/29] Fold AC_C_STRINGIZE into AC_PROG_CC.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Another of the last few uses of AC_EGREP_CPP is to check for the ISO C
-“stringification” operator.  As this is a feature of C89, let’s fold
-the test into the extensive C89 tests we already have, and make
-AC_C_STRINGIZE just lean on AC_PROG_CC, in the same way
-AC_C_PROTOTYPES does.
-
-* lib/autoconf/c.m4 (_AC_C_C89_TEST_GLOBALS): Add test of preprocessor
-  stringification and token pasting.
-  (AC_C_STRINGIZE): Just check ac_prog_cc_stdc.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/c.m4 | 31 ++++++++++++++++++++-----------
- 1 file changed, 20 insertions(+), 11 deletions(-)
-
-diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
-index 33648b5b9..c8c6a665c 100644
---- a/lib/autoconf/c.m4
-+++ b/lib/autoconf/c.m4
-@@ -1143,6 +1143,21 @@ static char *f (char * (*g) (char **, int), char **p, ...)
-   return s;
- }
- 
-+/* C89 style stringification. */
-+#define noexpand_stringify(a) #a
-+const char *stringified = noexpand_stringify(arbitrary+token=sequence);
-+
-+/* C89 style token pasting.  Exercises some of the corner cases that
-+   e.g. old MSVC gets wrong, but not very hard. */
-+#define noexpand_concat(a,b) a##b
-+#define expand_concat(a,b) noexpand_concat(a,b)
-+extern int vA;
-+extern int vbee;
-+#define aye A
-+#define bee B
-+int *pvA = &expand_concat(v,aye);
-+int *pvbee = &noexpand_concat(v,bee);
-+
- /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-    function prototypes and stuff, but not \xHH hex character constants.
-    These do not provoke an error unfortunately, instead are silently treated
-@@ -2112,16 +2127,10 @@ fi
- # --------------
- # Checks if '#' can be used to glue strings together at the CPP level.
- # Defines HAVE_STRINGIZE if positive.
-+# Obsolete - new code should assume C89 compliance.
- AC_DEFUN([AC_C_STRINGIZE],
--[AC_CACHE_CHECK([for preprocessor stringizing operator],
--		[ac_cv_c_stringize],
--[AC_EGREP_CPP([@%:@teststring],
--	      [@%:@define x(y) #y
--
--char *s = x(teststring);],
--	      [ac_cv_c_stringize=no],
--	      [ac_cv_c_stringize=yes])])
--if test $ac_cv_c_stringize = yes; then
-+[AC_REQUIRE([AC_PROG_CC])
-+if test "$ac_prog_cc_stdc" != no; then
-   AC_DEFINE(HAVE_STRINGIZE, 1,
- 	    [Define to 1 if cpp supports the ANSI @%:@ stringizing operator.])
- fi
-@@ -2130,8 +2139,8 @@ fi
- 
- # AC_C_PROTOTYPES
- # ---------------
--# Check if the C compiler supports prototypes, included if it needs
--# options.
-+# Check if the C compiler supports prototypes.
-+# Obsolete - new code should assume C89 compliance.
- AC_DEFUN([AC_C_PROTOTYPES],
- [AC_REQUIRE([AC_PROG_CC])dnl
- if test "$ac_prog_cc_stdc" != no; then
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch
deleted file mode 100644
index 85e9a45..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From e25dfa75e18295d28de67747b4ff9d65f65c4f06 Mon Sep 17 00:00:00 2001
-From: Zack Weinberg <zackw@panix.com>
-Date: Sun, 2 Apr 2023 22:17:55 -0400
-Subject: [PATCH 14/29] Remove the last few internal uses of AC_EGREP_CPP.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Most of the remaining uses were converted to AC_COMPILE_IFELSE.
-The use in AC_FUNC_LOADAVG becomes an AC_PREPROC_IFELSE because
-we can’t be sure getloadavg.c can be _compiled_ at this point in
-the build.  The use in AC_C_VARARRAYS could be either _PREPROC_ or
-_COMPILE_; we use _COMPILE_ because, _PREPROC_ is never used, then
-we don’t have to do the “checking how to run the C preprocessor” test.
-
-* lib/autoconf/c.m4 (AC_C_VARARRAYS): Use AC_COMPILE_IFELSE instead of
-  AC_EGREP_CPP.
-* lib/autoconf/headers.m4 (_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H)
-  (_AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL_H): Likewise.
-* lib/autoconf/functions.m4 (AC_FUNC_GETLOADAVG): Use AC_PREPROC_IFELSE
-  instead of AC_EGREP_CPP.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/c.m4         |  8 ++++----
- lib/autoconf/functions.m4 | 10 +++++-----
- lib/autoconf/headers.m4   | 24 ++++++++++--------------
- 3 files changed, 19 insertions(+), 23 deletions(-)
-
-diff --git a/lib/autoconf/c.m4 b/lib/autoconf/c.m4
-index c8c6a665c..b8350c339 100644
---- a/lib/autoconf/c.m4
-+++ b/lib/autoconf/c.m4
-@@ -2197,11 +2197,11 @@ AC_DEFUN([AC_C_VARARRAYS],
- [
-   AC_CACHE_CHECK([for variable-length arrays],
-     ac_cv_c_vararrays,
--    [AC_EGREP_CPP([defined],
--       [#ifdef __STDC_NO_VLA__
--	defined
-+    [AC_COMPILE_IFELSE([AC_LANG_SOURCE(
-+[[	#ifndef __STDC_NO_VLA__
-+	#error __STDC_NO_VLA__ not defined
- 	#endif
--       ],
-+]])],
-        [ac_cv_c_vararrays='no: __STDC_NO_VLA__ is defined'],
-        [AC_COMPILE_IFELSE(
- 	  [AC_LANG_PROGRAM(
-diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
-index 74512e97d..499e4c024 100644
---- a/lib/autoconf/functions.m4
-+++ b/lib/autoconf/functions.m4
-@@ -842,11 +842,11 @@ AC_CHECK_FUNCS(getloadavg, [],
- # Some definitions of getloadavg require that the program be installed setgid.
- AC_CACHE_CHECK(whether getloadavg requires setgid,
- 	       ac_cv_func_getloadavg_setgid,
--[AC_EGREP_CPP([Yowza Am I SETGID yet],
--[#include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
--#ifdef LDAV_PRIVILEGED
--Yowza Am I SETGID yet
--@%:@endif],
-+[AC_PREPROC_IFELSE([AC_LANG_SOURCE(
-+[[#include "$srcdir/$ac_config_libobj_dir/getloadavg.c"
-+#ifndef LDAV_PRIVILEGED
-+#error setgid not needed
-+@%:@endif]])],
- 	      ac_cv_func_getloadavg_setgid=yes,
- 	      ac_cv_func_getloadavg_setgid=no)])
- if test $ac_cv_func_getloadavg_setgid = yes; then
-diff --git a/lib/autoconf/headers.m4 b/lib/autoconf/headers.m4
-index 7f70e8fd4..19c124cc3 100644
---- a/lib/autoconf/headers.m4
-+++ b/lib/autoconf/headers.m4
-@@ -721,13 +721,11 @@ you to include it and time.h simultaneously.])
- m4_define([_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H],
- [AC_CACHE_CHECK([whether termios.h defines TIOCGWINSZ],
- 		ac_cv_sys_tiocgwinsz_in_termios_h,
--[AC_EGREP_CPP([yes],
--	      [#include <sys/types.h>
--#include <termios.h>
--#ifdef TIOCGWINSZ
--  yes
--#endif
--],
-+[AC_COMPILE_IFELSE([AC_LANG_SOURCE(
-+[AC_INCLUDES_DEFAULT
-+[#include <termios.h>
-+const int tiocgwinsz = TIOCGWINSZ;
-+]])],
- 		ac_cv_sys_tiocgwinsz_in_termios_h=yes,
- 		ac_cv_sys_tiocgwinsz_in_termios_h=no)])
- ])# _AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H
-@@ -738,13 +736,11 @@ m4_define([_AC_HEADER_TIOCGWINSZ_IN_TERMIOS_H],
- m4_define([_AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL],
- [AC_CACHE_CHECK([whether sys/ioctl.h defines TIOCGWINSZ],
- 		ac_cv_sys_tiocgwinsz_in_sys_ioctl_h,
--[AC_EGREP_CPP([yes],
--	      [#include <sys/types.h>
--#include <sys/ioctl.h>
--#ifdef TIOCGWINSZ
--  yes
--#endif
--],
-+[AC_COMPILE_IFELSE([AC_LANG_SOURCE(
-+[AC_INCLUDES_DEFAULT
-+[#include <sys/ioctl.h>
-+const int tiocgwinsz = TIOCGWINSZ;
-+]])],
- 		ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=yes,
- 		ac_cv_sys_tiocgwinsz_in_sys_ioctl_h=no)])
- ])# _AC_HEADER_TIOCGWINSZ_IN_SYS_IOCTL
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0015-Support-circa-early-2022-Gnulib.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0015-Support-circa-early-2022-Gnulib.patch
deleted file mode 100644
index 36d1a94..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0015-Support-circa-early-2022-Gnulib.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 1982523c6f052a2b361035a9d5d9737510ed0738 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Mon, 3 Apr 2023 09:12:40 -0700
-Subject: [PATCH 15/29] Support circa early 2022 Gnulib
-
-Problem reported by Frederic Berat in:
-https://lists.gnu.org/r/bug-rcs/2023-04/msg00001.html
-* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_INCLUDES):
-Bring back for compatibility with post-2.71, pre-2.73 Gnulib.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/specific.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index a2dc5d488..5dc006959 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -277,6 +277,8 @@ m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
- 		       && LARGE_OFF_T % 2147483647 == 1)
- 		      ? 1 : -1]];[]dnl
- ])
-+# Defined by Autoconf 2.71 and circa 2022 Gnulib unwisely depended on it.
-+m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES], [_AC_SYS_LARGEFILE_TEST_CODE])
- 
- # _AC_SYS_LARGEFILE_OPTIONS
- # -------------------------
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0016-Improve-year2038-largefile-option-processing.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0016-Improve-year2038-largefile-option-processing.patch
deleted file mode 100644
index e96faf2..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0016-Improve-year2038-largefile-option-processing.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From a1e82aff0fd842b0f09e2cd166560dfda725ba13 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Sun, 9 Apr 2023 11:41:57 -0700
-Subject: [PATCH 16/29] Improve year2038, largefile option processing
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-* lib/autoconf/specific.m4 (_AC_SYS_YEAR2038_PROBE)
-(_AC_SYS_YEAR2038_ENABLE, _AC_SYS_YEAR2038_OPT_IN)
-(AC_SYS_YEAR2038, _AC_SYS_LARGEFILE_PROBE)
-(_AC_SYS_LARGEFILE_ENABLE): Do not use enable_largefile to record
-whether largefile is required, as ‘./configure
---disable-largefile’ sets enable_largefile=no even if largefile is
-required and this disables largefile.  Instead, use a separate
-shell variable ac_largefile_required and test it as well.
-Similarly for enable_year2038.
-(_AC_SYS_LARGEFILE_ENABLE): Omit --disable-largefile help string
-if year2038 is required, since largefile is a prereq for year2038.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/specific.m4 | 35 ++++++++++++++++++++++-------------
- 1 file changed, 22 insertions(+), 13 deletions(-)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index 5dc006959..1a3f4a65c 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -155,10 +155,10 @@ AS_CASE([$ac_cv_sys_year2038_opts],
-   ["none needed"], [],
-   ["support not detected"],
-     [ac_have_year2038=no
--     AS_CASE([$enable_year2038],
--      [required],
-+     AS_CASE([$ac_year2038_required,$enable_year2038],
-+      [yes,*],
-         [AC_MSG_FAILURE([support for timestamps after Jan 2038 is required])],
--      [yes],
-+      [*,yes],
-         [# If we're not cross compiling and 'touch' works with a large
-         # timestamp, then we can presume the system supports wider time_t
-         # *somehow* and we just weren't able to detect it.  One common
-@@ -209,10 +209,12 @@ AS_CASE([$ac_cv_sys_year2038_opts],
- m4_define([_AC_SYS_YEAR2038_ENABLE],
- [m4_divert_text([DEFAULTS],
-   m4_provide_if([AC_SYS_YEAR2038_REQUIRED],
--    [enable_year2038=required],
-+    [ac_year2038_required=yes],
-+    [ac_year2038_required=no]))dnl
-+m4_divert_text([DEFAULTS],
-   m4_provide_if([AC_SYS_YEAR2038],
-     [enable_year2038=yes],
--    [enable_year2038=no])))]dnl
-+    [enable_year2038=no]))]dnl
- [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
- [AC_ARG_ENABLE([year2038],
-   m4_provide_if([AC_SYS_YEAR2038],
-@@ -231,7 +233,8 @@ m4_define([_AC_SYS_YEAR2038_ENABLE],
- # documented macro.
- AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
- [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
--  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
-+  AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
-+    [_AC_SYS_YEAR2038_PROBE])
-   AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
- ])])
- 
-@@ -244,7 +247,8 @@ AC_DEFUN([AC_SYS_YEAR2038],
- [m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
-   [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
- [m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
--  AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
-+  AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
-+    [_AC_SYS_YEAR2038_PROBE])
-   AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
- ])])
- 
-@@ -326,7 +330,7 @@ AS_CASE([$ac_cv_sys_largefile_opts],
-   ["none needed"], [],
-   ["support not detected"],
-     [ac_have_largefile=no
--     AS_IF([test $enable_largefile = required],
-+     AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
-        [AC_MSG_FAILURE([support for large files is required])])],
- 
-   ["-D_FILE_OFFSET_BITS=64"],
-@@ -358,11 +362,15 @@ _AC_SYS_YEAR2038_OPT_IN
- m4_define([_AC_SYS_LARGEFILE_ENABLE],
- [m4_divert_text([DEFAULTS],
-   m4_provide_if([AC_SYS_LARGEFILE_REQUIRED],
--    [enable_largefile=required],
--    [enable_largefile=yes]))]dnl
-+    [ac_largefile_required=yes],
-+    [ac_largefile_required=no]))dnl
-+m4_divert_text([DEFAULTS],
-+  [enable_largefile=yes])]dnl
- [m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
--[AC_ARG_ENABLE([largefile],
--  [AS_HELP_STRING([--disable-largefile], [omit support for large files])])])])
-+   [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
-+      [AC_ARG_ENABLE([largefile],
-+         [AS_HELP_STRING([--disable-largefile],
-+	    [omit support for large files])])])])])
- 
- # AC_SYS_LARGEFILE
- # ----------------
-@@ -377,7 +385,8 @@ m4_define([_AC_SYS_LARGEFILE_ENABLE],
- # large files; see also AC_SYS_LARGEFILE_REQUIRED.
- AC_DEFUN([AC_SYS_LARGEFILE],
- [m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
--  AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
-+  AS_IF([test "$ac_largefile_required,$enable_largefile,$ac_year2038_required" != no,no,no],
-+    [_AC_SYS_LARGEFILE_PROBE])
-   AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
- ])])
- 
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch
deleted file mode 100644
index f62fe1c..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 0cc3c4ca8e6c550bf590ae45a916982b6ec50203 Mon Sep 17 00:00:00 2001
-From: Bruno Haible <bruno@clisp.org>
-Date: Fri, 14 Apr 2023 16:18:35 +0200
-Subject: [PATCH 17/29] AC_SYS_YEAR2038: Fix configure failure on 32-bit mingw.
-
-* lib/autoconf/specific.m4 (_AC_SYS_YEAR2038_PROBE): Use the same option
-spelling as in _AC_SYS_YEAR2038_OPTIONS.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/specific.m4 | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index 1a3f4a65c..3bf1a0ed1 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -182,7 +182,7 @@ AS_CASE([$ac_cv_sys_year2038_opts],
-     [AC_DEFINE([_TIME_BITS], [64],
-       [Number of bits in time_t, on hosts where this is settable.])],
- 
--  ["-D__MINGW_USE_VC2005_COMPAT=1"],
-+  ["-D__MINGW_USE_VC2005_COMPAT"],
-     [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
-       [Define to 1 on platforms where this makes time_t a 64-bit type.])],
- 
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0018-Document-limitation-of-BusyBox-tr.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0018-Document-limitation-of-BusyBox-tr.patch
deleted file mode 100644
index 478c4e4..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0018-Document-limitation-of-BusyBox-tr.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From e704a13c9644f4f4b9a9dd4e215ee7a1707f5850 Mon Sep 17 00:00:00 2001
-From: Bruno Haible <bruno@clisp.org>
-Date: Fri, 3 Mar 2023 14:32:13 +0100
-Subject: [PATCH 18/29] Document limitation of BusyBox tr.
-
-BusyBox 1.35.0 tr, which is shipped with Alpine Linux 3.17, does not support
-the POSIX [x*n] syntax.
-
-* doc/autoconf.texi (Limitations of Usual Tools): Document limitation of 'tr'
-from BusyBox.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- doc/autoconf.texi | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index 5d5f613e6..b3c708e87 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -20368,6 +20368,20 @@ $ @kbd{echo abc | coreutils/tr bc d}
- add
- @end example
- 
-+On platforms with the BusyBox tools, @command{tr} does not support the
-+@code{[@var{x}*@var{n}]} option syntax.
-+
-+@example
-+$ @kbd{echo abc | tr 'abcd' '[A*4]'}
-+[A*
-+$ @kbd{echo abc | coreutils/tr 'abcd' '[A*4]'}
-+AAA
-+$ @kbd{echo xyz | tr 'a-z' '[A*]'}
-+]]]
-+$ @kbd{echo xyz | coreutils/tr 'a-z' '[A*]'}
-+AAA
-+@end example
-+
- Posix requires @command{tr} to operate on binary files.  But at least
- Solaris @command{/usr/ucb/tr} and @command{/usr/bin/tr} silently discard
- @code{NUL} in the input prior to doing any translation.  When using
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch
deleted file mode 100644
index db9307e..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 2277f2c15744ad1cc5cd1ecc50a43108e50530a2 Mon Sep 17 00:00:00 2001
-From: Bruno Haible <bruno@clisp.org>
-Date: Wed, 19 Apr 2023 14:17:24 -0700
-Subject: [PATCH 19/29] AC_SYS_YEAR2038_REQUIRED: Fix configure failure with
- MSVC.
-
-* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_PROBE): Distinguish the results
-"support not detected" and "supported through gnulib". If the result is
-"supported through gnulib", don't fail.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/specific.m4 | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index 3bf1a0ed1..f411695fe 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -323,11 +323,24 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
-     test $ac_opt_found = no || break
-   done
-   CC="$ac_save_CC"
-+  dnl Gnulib implements large file support for native Windows, based on the
-+  dnl variables WINDOWS_64_BIT_OFF_T, WINDOWS_64_BIT_ST_SIZE.
-+  m4_ifdef([gl_LARGEFILE], [
-+    AC_REQUIRE([AC_CANONICAL_HOST])
-+    if test $ac_opt_found != yes; then
-+      AS_CASE([$host_os],
-+        [mingw*],
-+          [ac_cv_sys_largefile_opts="supported through gnulib"
-+           ac_opt_found=yes]
-+      )
-+    fi
-+  ])
-   test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"])
- 
- ac_have_largefile=yes
- AS_CASE([$ac_cv_sys_largefile_opts],
-   ["none needed"], [],
-+  ["supported through gnulib"], [],
-   ["support not detected"],
-     [ac_have_largefile=no
-      AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0020-Tone-down-year-2038-changes.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0020-Tone-down-year-2038-changes.patch
deleted file mode 100644
index cbd89cc..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0020-Tone-down-year-2038-changes.patch
+++ /dev/null
@@ -1,405 +0,0 @@
-From 9c0183724614517a67d0955065171465bab7154a Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Wed, 26 Apr 2023 18:21:48 -0700
-Subject: [PATCH 20/29] Tone down year-2038 changes
-
-New macro AC_SYS_YEAR2038_RECOMMENDED replaces new macro
-AC_SYS_YEAR2038_REQUIRED, and gives the builder an out of
-specifying --disable-year2038.  Remove new macro
-AC_SYS_LARGEFILE_REQUIRED, which was added only for symmetry and
-does not seem to have a great need.
-* NEWS, doc/autoconf.texi: Document this.
-* lib/autoconf/specific.m4:
-Be more specific about mid-January 2038 than just Jan 2038.
-(_AC_SYS_YEAR2038_PROBE): Ignore IF-NOT-DETECTED arg.
-If support is not detected, merely set ac_have_year2038=no instead
-of erroring out.  All callers changed.
-(_AC_SYS_YEAR2038_OPT_IN): Remove.  All callers removed.
-(AC_SYS_YEAR2038): Simplify by requiring AC_SYS_LARGEFILE
-and then testing the result.
-(AC_SYS_YEAR2038_REQUIRED, AC_SYS_LARGEFILE_REQUIRED): Remove.
-(AC_SYS_YEAR2038_RECOMMENDED): New macro.
-(_AC_SYS_LARGEFILE_PROBE): If support is not detected, merely set
-ac_have_largefile=no instead of erroring out.  All callers changed.
-Take on the burden of invoking year2038 probe as needed.
-(AC_SYS_LARGEFILE): Simplify.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- NEWS                     |  18 ++--
- doc/autoconf.texi        |  34 +++-----
- lib/autoconf/specific.m4 | 177 +++++++++++----------------------------
- 3 files changed, 69 insertions(+), 160 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index 8e4ecc1bf..a48a00858 100644
---- a/NEWS
-+++ b/NEWS
-@@ -51,7 +51,7 @@ GNU Autoconf NEWS - User visible changes.
- 
- ** New features
- 
--*** New macro AC_SYS_YEAR2038.
-+*** New macros AC_SYS_YEAR2038 and AC_SYS_YEAR2038_RECOMMENDED.
-   This causes 'configure' to widen time_t if possible on systems where
-   time_t by default cannot represent file and other timestamps after
-   January 2038.  Widening is possible only on 32-bit GNU/Linux x86 and
-@@ -67,18 +67,14 @@ GNU Autoconf NEWS - User visible changes.
-   This is similar to longstanding consistency requirements with
-   --enable-largefile and --disable-largefile.
- 
-+  AC_SYS_YEAR2038_RECOMMENDED acts like AC_SYS_YEAR2038 except that
-+  'configure' fails if the target lacks support for post-2038
-+  timestamps and --disable-year2038 is not given.
-+
- *** AC_SYS_LARGEFILE now optionally arranges to widen time_t.
-   It now acts like AC_SYS_YEAR2038, except 'configure' defaults to
--  --disable-year2038 unless AC_SYS_YEAR2038 is also present.
--  As with AC_SYS_YEAR2038, application and library builders should
--  configure consistently.
--
--*** New macros AC_SYS_LARGEFILE_REQUIRED and AC_SYS_YEAR2038_REQUIRED.
--  These act like AC_SYS_LARGEFILE and AC_SYS_YEAR2038 respectively,
--  except that 'configure' fails if the target lacks support
--  for large files and for post-2038 timestamps, respectively.
--  As with AC_SYS_YEAR2038, application and library builders should
--  configure consistently.
-+  --disable-year2038 unless either AC_SYS_YEAR2038 or
-+  AC_SYS_YEAR2038_RECOMMENDED is also present.
- 
- *** AC_USE_SYSTEM_EXTENSIONS now enables C23 Annex F extensions
-   by defining __STDC_WANT_IEC_60559_EXT__.
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index b3c708e87..0f3047b31 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -8808,18 +8808,20 @@ if possible.  These types may include @code{blkcnt_t}, @code{dev_t},
- 
- Also, arrange for a @command{configure} option @code{--enable-year2038}
- to request widening the type @code{time_t} as needed to represent file
--wand other timestamps after January 2038.  This widening is possible
-+wand other timestamps after mid-January 2038.  This widening is possible
- only on 32-bit GNU/Linux x86 and ARM systems with glibc 2.34 or later.
- If year-2038 support is requested but @command{configure} fails to find a way
- to widen @code{time_t} and inspection of the system suggests that
- this feature is available somehow, @command{configure} will error out.
- If you want the default to be @code{--enable-year2038}, you can use
--@code{AC_SYS_YEAR2038} instead of @code{AC_SYS_LARGEFILE}.
-+@code{AC_SYS_YEAR2038} or @code{AC_SYS_YEAR2038_RECOMMENDED}
-+instead of @code{AC_SYS_LARGEFILE}.
- In other words, older packages that have long used @code{AC_SYS_LARGEFILE}
- can have year-2038 support on 32-bit GNU/Linux x86 and ARM systems either by
- regenerating @file{configure} with current Autoconf and configuring with
--@option{--enable-year2038}, or by using @code{AC_SYS_YEAR2038} and
--configuring without @option{--disable-year2038}.
-+@option{--enable-year2038}, or by using @code{AC_SYS_YEAR2038} or
-+@code{AC_SYS_YEAR2038_RECOMMENDED} and configuring without
-+@option{--disable-year2038}.
- A future version of Autoconf might change the @code{AC_SYS_LARGEFILE}
- default to @code{--enable-year2038}; if and when that happens,
- @code{AC_SYS_LARGEFILE} and @code{AC_SYS_YEAR2038} will become equivalent.
-@@ -8886,19 +8888,6 @@ library, enabling or disabling the application's large-file support may
- break binary compatibility with that library.
- @end defmac
- 
--@defmac AC_SYS_LARGEFILE_REQUIRED
--@acindex{SYS_LARGEFILE_REQUIRED}
--This macro has the same effect as @code{AC_SYS_LARGEFILE},
--but also declares that the program being configured
--requires support for large files.
--If a large @code{off_t} is unavailable,
--@command{configure} will error out.
--The @option{--disable-largefile} option will not be available.
--
--Large-file and year-2038 support for applications and libraries should
--be configured compatibly.  @xref{AC_SYS_LARGEFILE}.
--@end defmac
--
- @anchor{AC_SYS_LONG_FILE_NAMES}
- @defmac AC_SYS_LONG_FILE_NAMES
- @acindex{SYS_LONG_FILE_NAMES}
-@@ -8927,14 +8916,13 @@ applications and libraries should be configured compatibly.
- @xref{AC_SYS_LARGEFILE}.
- @end defmac
- 
--@defmac AC_SYS_YEAR2038_REQUIRED
--@acindex{SYS_YEAR2038_REQUIRED}
-+@defmac AC_SYS_YEAR2038_RECOMMENDED
-+@acindex{SYS_YEAR2038_RECOMMENDED}
- This macro has the same effect as @code{AC_SYS_YEAR2038},
- but also declares that the program being configured
--requires support for timestamps after mid-January of 2038.
--If a large @code{time_t} is unavailable,
--@command{configure} will unconditionally error out.
--The @option{--disable-year2038} option will not be available.
-+should support timestamps after mid-January 2038.
-+If a large @code{time_t} is unavailable, @command{configure} will error
-+out unless the @option{--disable-year2038} option is specified.
- 
- Year-2038 support for applications and libraries should be configured
- compatibly.  @xref{AC_SYS_YEAR2038}.
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index f411695fe..88e0479e8 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -115,8 +115,8 @@ m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
-                                       dnl 32-bit MinGW (misconfiguration)
- ))
- 
--# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED])
--# -----------------------------------------
-+# _AC_SYS_YEAR2038_PROBE
-+# ----------------------
- # Subroutine of AC_SYS_YEAR2038.  Probe for time_t that can represent
- # time points more than 2**31 - 1 seconds after the epoch (dates after
- # 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts
-@@ -129,13 +129,10 @@ m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
- # AC_TRY_RUN.  Note also that some systems only support large time_t
- # together with large off_t.
- #
--# If support is not detected, the behavior depends on which of the
--# top-level AC_SYS_YEAR2038 macros was used (see below).
--#
- # If you change this macro you may also need to change
- # _AC_SYS_YEAR2038_OPTIONS.
- AC_DEFUN([_AC_SYS_YEAR2038_PROBE],
--[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038],
-+[AC_CACHE_CHECK([for $CC option for timestamps after 2038],
-   [ac_cv_sys_year2038_opts],
-   [ac_save_CPPFLAGS="$CPPFLAGS"
-   ac_opt_found=no
-@@ -154,29 +151,7 @@ ac_have_year2038=yes
- AS_CASE([$ac_cv_sys_year2038_opts],
-   ["none needed"], [],
-   ["support not detected"],
--    [ac_have_year2038=no
--     AS_CASE([$ac_year2038_required,$enable_year2038],
--      [yes,*],
--        [AC_MSG_FAILURE([support for timestamps after Jan 2038 is required])],
--      [*,yes],
--        [# If we're not cross compiling and 'touch' works with a large
--        # timestamp, then we can presume the system supports wider time_t
--        # *somehow* and we just weren't able to detect it.  One common
--        # case that we deliberately *don't* probe for is a system that
--        # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
--        # wide time_t.  (It would be inappropriate for us to override an
--        # intentional use of -m32.)  Error out, demanding use of
--        # --disable-year2038 if this is intentional.
--        AS_IF([test $cross_compiling = no],
--          [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
--            [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
--              [*'Feb  7  2106'* | *'Feb  7 17:10'*],
--              [AC_MSG_FAILURE(m4_text_wrap(
--      [this system appears to support timestamps after January 2038,
--       but no mechanism for enabling wide 'time_t' was detected.
--       Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.)
--       To proceed with 32-bit time_t, configure with '--disable-year2038'.],
--      [], [], [55]))])])])])],
-+    [ac_have_year2038=no],
- 
-   ["-D_TIME_BITS=64"],
-     [AC_DEFINE([_TIME_BITS], [64],
-@@ -189,7 +164,7 @@ AS_CASE([$ac_cv_sys_year2038_opts],
-   ["-U_USE_32_BIT_TIME_T"*],
-     [AC_MSG_FAILURE(m4_text_wrap(
-       [the 'time_t' type is currently forced to be 32-bit.
--       It will stop working after January 2038.
-+       It will stop working after mid-January 2038.
-        Remove _USE_32BIT_TIME_T from the compiler flags.],
-       [], [], [55]))],
- 
-@@ -199,44 +174,23 @@ AS_CASE([$ac_cv_sys_year2038_opts],
- 
- # _AC_SYS_YEAR2038_ENABLE
- # -----------------------
--# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN.
- # Depending on which of the YEAR2038 macros was used, add either an
--# --enable-year2038, or a --disable-year2038, or no option at all to
--# the configure script.  Note that this is expanded very late and
-+# --enable-year2038 or a --disable-year2038 to
-+# the configure script.  This is expanded very late and
- # therefore there cannot be any code in the AC_ARG_ENABLE.  The
- # default value for 'enable_year2038' is emitted unconditionally
- # because the generated code always looks at this variable.
- m4_define([_AC_SYS_YEAR2038_ENABLE],
- [m4_divert_text([DEFAULTS],
--  m4_provide_if([AC_SYS_YEAR2038_REQUIRED],
--    [ac_year2038_required=yes],
--    [ac_year2038_required=no]))dnl
--m4_divert_text([DEFAULTS],
-   m4_provide_if([AC_SYS_YEAR2038],
-     [enable_year2038=yes],
-     [enable_year2038=no]))]dnl
--[m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
- [AC_ARG_ENABLE([year2038],
-   m4_provide_if([AC_SYS_YEAR2038],
-     [AS_HELP_STRING([--disable-year2038],
--      [omit support for dates after Jan 2038])],
-+      [don't support timestamps after 2038])],
-     [AS_HELP_STRING([--enable-year2038],
--      [include support for dates after Jan 2038])]))])])
--
--# _AC_SYS_YEAR2038_OPT_IN
--# -----------------------
--# If the --enable-year2038 option is given to configure, attempt to
--# detect and activate support for large time_t on 32-bit systems.
--# This macro is automatically invoked by AC_SYS_LARGEFILE when large
--# *file* support is detected.  It does not AC_REQUIRE AC_SYS_LARGEFILE
--# to avoid a dependency loop, and is therefore unsafe to expose as a
--# documented macro.
--AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
--[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
--  AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
--    [_AC_SYS_YEAR2038_PROBE])
--  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
--])])
-+      [support timestamps after 2038])]))])
- 
- # AC_SYS_YEAR2038
- # ---------------
-@@ -244,28 +198,39 @@ AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
- # On systems where time_t is not always 64 bits, this probe can be
- # skipped by passing the --disable-year2038 option to configure.
- AC_DEFUN([AC_SYS_YEAR2038],
--[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
--  [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
--[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
--  AS_IF([test "$ac_year2038_required,$enable_year2038" != no,no],
--    [_AC_SYS_YEAR2038_PROBE])
--  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
--])])
--
--# AC_SYS_YEAR2038_REQUIRED
--# ------------------------
--# Same as AC_SYS_YEAR2038, but declares that this program *requires*
--# support for large time_t.  If we cannot find any way to make time_t
--# capable of representing values larger than 2**31 - 1, configure will
--# error out.  Furthermore, no --enable-year2038 nor --disable-year2038
--# option will be available.
--AC_DEFUN([AC_SYS_YEAR2038_REQUIRED],
--[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
--  [AC_REQUIRE([AC_SYS_LARGEFILE])])]dnl
--[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
--  _AC_SYS_YEAR2038_PROBE
--  AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
--])])
-+[AC_REQUIRE([AC_SYS_LARGEFILE])dnl
-+AS_IF([test "$enable_year2038,$ac_have_year2038,$cross_compiling" = yes,no,no],
-+ [# If we're not cross compiling and 'touch' works with a large
-+  # timestamp, then we can presume the system supports wider time_t
-+  # *somehow* and we just weren't able to detect it.  One common
-+  # case that we deliberately *don't* probe for is a system that
-+  # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
-+  # wide time_t.  (It would be inappropriate for us to override an
-+  # intentional use of -m32.)  Error out, demanding use of
-+  # --disable-year2038 if this is intentional.
-+  AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
-+    [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
-+       [*'Feb  7  2106'* | *'Feb  7 17:10'*],
-+       [AC_MSG_FAILURE(m4_text_wrap(
-+	  [this system appears to support timestamps after mid-January 2038,
-+	   but no mechanism for enabling wide 'time_t' was detected.
-+	   Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
-+	   To proceed with 32-bit time_t, configure with '--disable-year2038'.],
-+	  [], [], [55]))])])])])
-+
-+# AC_SYS_YEAR2038_RECOMMENDED
-+# ---------------------------
-+# Same as AC_SYS_YEAR2038, but recommend support for large time_t.
-+# If we cannot find any way to make time_t capable of representing
-+# values larger than 2**31 - 1, error out unless --disable-year2038 is given.
-+AC_DEFUN([AC_SYS_YEAR2038_RECOMMENDED],
-+[AC_REQUIRE([AC_SYS_YEAR2038])dnl
-+AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
-+   [AC_MSG_FAILURE(m4_text_wrap(
-+      [could not enable timestamps after mid-January 2038.
-+       Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
-+       To proceed with 32-bit time_t, configure with '--disable-year2038'.],
-+      [], [], [55]))])])
- 
- # _AC_SYS_LARGEFILE_TEST_CODE
- # ---------------------------
-@@ -342,9 +307,7 @@ AS_CASE([$ac_cv_sys_largefile_opts],
-   ["none needed"], [],
-   ["supported through gnulib"], [],
-   ["support not detected"],
--    [ac_have_largefile=no
--     AS_IF([test $ac_largefile_required,$ac_year2038_required != no,no],
--       [AC_MSG_FAILURE([support for large files is required])])],
-+    [ac_have_largefile=no],
- 
-   ["-D_FILE_OFFSET_BITS=64"],
-     [AC_DEFINE([_FILE_OFFSET_BITS], [64],
-@@ -360,30 +323,9 @@ AS_CASE([$ac_cv_sys_largefile_opts],
-   [AC_MSG_ERROR(
-     [internal error: bad value for \$ac_cv_sys_largefile_opts])])
- 
--_AC_SYS_YEAR2038_OPT_IN
--])
--
--# _AC_SYS_LARGEFILE_ENABLE
--# ------------------------
--# Subroutine of AC_SYS_LARGEFILE.  If AC_SYS_LARGEFILE_REQUIRED was
--# not used at any point in this configure script, add a
--# --disable-largefile option to the configure script.  Note that this
--# is expanded very late and therefore there cannot be any code in the
--# AC_ARG_ENABLE.  The default value for 'enable_largefile' is emitted
--# unconditionally because the generated shell code always looks at
--# this variable.
--m4_define([_AC_SYS_LARGEFILE_ENABLE],
--[m4_divert_text([DEFAULTS],
--  m4_provide_if([AC_SYS_LARGEFILE_REQUIRED],
--    [ac_largefile_required=yes],
--    [ac_largefile_required=no]))dnl
--m4_divert_text([DEFAULTS],
--  [enable_largefile=yes])]dnl
--[m4_provide_if([AC_SYS_LARGEFILE_REQUIRED], [],
--   [m4_provide_if([AC_SYS_YEAR2038_REQUIRED], [],
--      [AC_ARG_ENABLE([largefile],
--         [AS_HELP_STRING([--disable-largefile],
--	    [omit support for large files])])])])])
-+AS_IF([test "$enable_year2038" != no],
-+  [_AC_SYS_YEAR2038_PROBE])
-+AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])])
- 
- # AC_SYS_LARGEFILE
- # ----------------
-@@ -394,29 +336,12 @@ m4_divert_text([DEFAULTS],
- # Additionally, on Linux file systems with 64-bit inodes a file that happens
- # to have a 64-bit inode number cannot be accessed by 32-bit applications on
- # Linux x86/x86_64.  This can occur with file systems such as XFS and NFS.
--# This macro allows configuration to continue if the system doesn't support
--# large files; see also AC_SYS_LARGEFILE_REQUIRED.
- AC_DEFUN([AC_SYS_LARGEFILE],
--[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
--  AS_IF([test "$ac_largefile_required,$enable_largefile,$ac_year2038_required" != no,no,no],
--    [_AC_SYS_LARGEFILE_PROBE])
--  AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
--])])
--
--# AC_SYS_LARGEFILE_REQUIRED
--# -------------------------
--# Same as AC_SYS_LARGEFILE, but declares that this program *requires*
--# support for large files.  If we cannot find a combination of compiler
--# options and #defines that makes 'off_t' capable of representing 2**63 - 1,
--# 'configure' will error out.  Furthermore, 'configure' will not offer a
--# --disable-largefile command line option.
--# If both AC_SYS_LARGEFILE and AC_SYS_LARGEFILE_REQUIRED are used in the
--# same configure script -- in either order -- AC_SYS_LARGEFILE_REQUIRED wins.
--AC_DEFUN([AC_SYS_LARGEFILE_REQUIRED],
--[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
--  _AC_SYS_LARGEFILE_PROBE
--  AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
--])])
-+[AC_ARG_ENABLE([largefile],
-+   [AS_HELP_STRING([--disable-largefile],
-+      [omit support for large files])])dnl
-+AS_IF([test "$enable_largefile,$enable_year2038" != no,no],
-+  [_AC_SYS_LARGEFILE_PROBE])])
- 
- # AC_SYS_LONG_FILE_NAMES
- # ----------------------
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch
deleted file mode 100644
index 56bcbb6..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 028526149ee804617a302ccef22cc6adbda681b0 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Wed, 10 May 2023 17:20:49 -0700
-Subject: [PATCH 21/29] Port AC_FUNC_MMAP to more-modern systems
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Don’t call
-getpagesize, as it’s tricky to configure, modern POSIX doesn’t
-require it, and calling it without including <unistd.h> provokes a
-compile-time error on modern systems.  Instead, rework the test
-to not need getpagesize.  Add a FIXME comment for unnecessary
-tests; I don't want to remove them now as we're too close to
-a release.  Remove long-obsolete comment about GNU grep.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/functions.m4 | 44 +++++----------------------------------
- 1 file changed, 5 insertions(+), 39 deletions(-)
-
-diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
-index 499e4c024..5a0f01856 100644
---- a/lib/autoconf/functions.m4
-+++ b/lib/autoconf/functions.m4
-@@ -1283,6 +1283,7 @@ AU_ALIAS([AM_FUNC_MKTIME], [AC_FUNC_MKTIME])
- AN_FUNCTION([mmap], [AC_FUNC_MMAP])
- AC_DEFUN([AC_FUNC_MMAP],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
-+dnl FIXME: Remove the unnecessary checks for unistd.h, sys/param.h, getpagesize.
- AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
- AC_CHECK_FUNCS_ONCE([getpagesize])
- AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
-@@ -1305,48 +1306,11 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
-    VM page cache was not coherent with the file system buffer cache
-    like early versions of FreeBSD and possibly contemporary NetBSD.)
-    For shared mappings, we should conversely verify that changes get
--   propagated back to all the places they're supposed to be.
--
--   Grep wants private fixed already mapped.
--   The main things grep needs to know about mmap are:
--   * does it exist and is it safe to write into the mmap'd area
--   * how to use it (BSD variants)  */
-+   propagated back to all the places they're supposed to be.  */
- 
- #include <fcntl.h>
- #include <sys/mman.h>
- 
--/* This mess was copied from the GNU getpagesize.h.  */
--#ifndef HAVE_GETPAGESIZE
--# ifdef _SC_PAGESIZE
--#  define getpagesize() sysconf(_SC_PAGESIZE)
--# else /* no _SC_PAGESIZE */
--#  ifdef HAVE_SYS_PARAM_H
--#   include <sys/param.h>
--#   ifdef EXEC_PAGESIZE
--#    define getpagesize() EXEC_PAGESIZE
--#   else /* no EXEC_PAGESIZE */
--#    ifdef NBPG
--#     define getpagesize() NBPG * CLSIZE
--#     ifndef CLSIZE
--#      define CLSIZE 1
--#     endif /* no CLSIZE */
--#    else /* no NBPG */
--#     ifdef NBPC
--#      define getpagesize() NBPC
--#     else /* no NBPC */
--#      ifdef PAGESIZE
--#       define getpagesize() PAGESIZE
--#      endif /* PAGESIZE */
--#     endif /* no NBPC */
--#    endif /* no NBPG */
--#   endif /* no EXEC_PAGESIZE */
--#  else /* no HAVE_SYS_PARAM_H */
--#   define getpagesize() 8192	/* punt totally */
--#  endif /* no HAVE_SYS_PARAM_H */
--# endif /* no _SC_PAGESIZE */
--
--#endif /* no HAVE_GETPAGESIZE */
--
- int
- main (void)
- {
-@@ -1355,7 +1319,9 @@ main (void)
-   int i, pagesize;
-   int fd, fd2;
- 
--  pagesize = getpagesize ();
-+  /* The "page size" need not equal the system page size,
-+     and need not even be a power of 2.  */
-+  pagesize = 8192;
- 
-   /* First, make a file with some known garbage in it. */
-   data = (char *) malloc (pagesize);
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0022-Fix-port-of-AC_FUNC_MMAP.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0022-Fix-port-of-AC_FUNC_MMAP.patch
deleted file mode 100644
index 1b168c7..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0022-Fix-port-of-AC_FUNC_MMAP.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 33c26d2700f927432c756ccf7a4fc89403d35b95 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Wed, 10 May 2023 22:57:27 -0700
-Subject: [PATCH 22/29] Fix port of AC_FUNC_MMAP
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Problem reported by Matt Turner in:
-https://lists.gnu.org/r/bug-autoconf/2023-05/msg00005.html
-* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Go back to getting the
-page size, since the zero-fill test needs this after all.
-However, prefer sysconf (_SC_PAGESIZE) or sysconf (_SC_PAGE_SIZE)
-to getpagesize (), and use ‘long’ not ‘int’ to store the page size.
-Also, declare getpagesize if it is used as a function.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/functions.m4 | 41 ++++++++++++++++++++++++++++++++++-----
- 1 file changed, 36 insertions(+), 5 deletions(-)
-
-diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
-index 5a0f01856..3d6e4aca8 100644
---- a/lib/autoconf/functions.m4
-+++ b/lib/autoconf/functions.m4
-@@ -1283,7 +1283,6 @@ AU_ALIAS([AM_FUNC_MKTIME], [AC_FUNC_MKTIME])
- AN_FUNCTION([mmap], [AC_FUNC_MMAP])
- AC_DEFUN([AC_FUNC_MMAP],
- [AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles
--dnl FIXME: Remove the unnecessary checks for unistd.h, sys/param.h, getpagesize.
- AC_CHECK_HEADERS_ONCE([unistd.h sys/param.h])
- AC_CHECK_FUNCS_ONCE([getpagesize])
- AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
-@@ -1311,17 +1310,49 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
- #include <fcntl.h>
- #include <sys/mman.h>
- 
-+#ifndef getpagesize
-+# ifdef _SC_PAGESIZE
-+#  define getpagesize() sysconf (_SC_PAGESIZE)
-+# elif defined _SC_PAGE_SIZE
-+#  define getpagesize() sysconf (_SC_PAGE_SIZE)
-+# elif HAVE_GETPAGESIZE
-+int getpagesize ();
-+# else
-+#  ifdef HAVE_SYS_PARAM_H
-+#   include <sys/param.h>
-+#   ifdef EXEC_PAGESIZE
-+#    define getpagesize() EXEC_PAGESIZE
-+#   else /* no EXEC_PAGESIZE */
-+#    ifdef NBPG
-+#     define getpagesize() NBPG * CLSIZE
-+#     ifndef CLSIZE
-+#      define CLSIZE 1
-+#     endif /* no CLSIZE */
-+#    else /* no NBPG */
-+#     ifdef NBPC
-+#      define getpagesize() NBPC
-+#     else /* no NBPC */
-+#      ifdef PAGESIZE
-+#       define getpagesize() PAGESIZE
-+#      endif /* PAGESIZE */
-+#     endif /* no NBPC */
-+#    endif /* no NBPG */
-+#   endif /* no EXEC_PAGESIZE */
-+#  else /* no HAVE_SYS_PARAM_H */
-+#   define getpagesize() 8192	/* punt totally */
-+#  endif /* no HAVE_SYS_PARAM_H */
-+# endif
-+#endif
-+
- int
- main (void)
- {
-   char *data, *data2, *data3;
-   const char *cdata2;
--  int i, pagesize;
-+  long i, pagesize;
-   int fd, fd2;
- 
--  /* The "page size" need not equal the system page size,
--     and need not even be a power of 2.  */
--  pagesize = 8192;
-+  pagesize = getpagesize ();
- 
-   /* First, make a file with some known garbage in it. */
-   data = (char *) malloc (pagesize);
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch
deleted file mode 100644
index 9fb33c3..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From ccc0d640c4d829504568330f9674408af5092ffc Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Sat, 13 May 2023 09:56:33 -0700
-Subject: [PATCH 23/29] Improve AC_SYS_YEAR2038_RECOMMENDED diagnostic
-
-* lib/autoconf/specific.m4 (AC_SYS_YEAR2038_RECOMMENDED):
-Do not recommend gcc -m64, as that likely will not work.
-Problem reported by Bruno Haible in:
-https://lists.gnu.org/r/bug-gnulib/2023-05/msg00060.html
-Instead, mention that 32-bit time_t is not recommended
-for this package, before telling the builder how
-to configure with 32-bit time_t anyway.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/specific.m4 | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index 88e0479e8..91f20bf0d 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -228,8 +228,9 @@ AC_DEFUN([AC_SYS_YEAR2038_RECOMMENDED],
- AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
-    [AC_MSG_FAILURE(m4_text_wrap(
-       [could not enable timestamps after mid-January 2038.
--       Did you mean to build a 64-bit binary? (E.g., 'CC="${CC} -m64"'.)
--       To proceed with 32-bit time_t, configure with '--disable-year2038'.],
-+       This package recommends support for these later timestamps.
-+       However, to proceed with signed 32-bit time_t even though it
-+       will fail then, configure with '--disable-year2038'.],
-       [], [], [55]))])])
- 
- # _AC_SYS_LARGEFILE_TEST_CODE
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0024-Improve-AC_FUNC_MMAP-comments.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0024-Improve-AC_FUNC_MMAP-comments.patch
deleted file mode 100644
index 2644c57..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0024-Improve-AC_FUNC_MMAP-comments.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 8e7281d7bebb5e389befe6e9a5afbb7b2ae13ae0 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Wed, 17 May 2023 11:50:27 -0700
-Subject: [PATCH 24/29] Improve AC_FUNC_MMAP comments
-
-* lib/autoconf/functions.m4 (AC_FUNC_MMAP): Add comment.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/functions.m4 | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/lib/autoconf/functions.m4 b/lib/autoconf/functions.m4
-index 3d6e4aca8..54d04cc38 100644
---- a/lib/autoconf/functions.m4
-+++ b/lib/autoconf/functions.m4
-@@ -1311,6 +1311,8 @@ AC_CACHE_CHECK([for working mmap], [ac_cv_func_mmap_fixed_mapped],
- #include <sys/mman.h>
- 
- #ifndef getpagesize
-+/* Prefer sysconf to the legacy getpagesize function, as getpagesize has
-+   been removed from POSIX and is limited to page sizes that fit in 'int'.  */
- # ifdef _SC_PAGESIZE
- #  define getpagesize() sysconf (_SC_PAGESIZE)
- # elif defined _SC_PAGE_SIZE
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch
deleted file mode 100644
index b7affed..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 103514e40da5f20aebf83a3446452ccebe5172bb Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Mon, 19 Jun 2023 14:04:29 -0700
-Subject: [PATCH 25/29] Fix AC_SYS_LARGEFILE on GNU/Linux alpha, s390x
-
-Problem reported by Matoro <https://bugs.gnu.org/64123>.
-* lib/autoconf/specific.m4 (_AC_SYS_LARGEFILE_TEST_CODE):
-New overridable macro FTYPE, to test types other than off_t.
-(_AC_SYS_LARGEFILE_TEST_CODE): Test ino_t for
--D_FILE_OFFSETBITS=64 too, if no flags are needed for off_t.
-Needed for GNU/Linux on alpha and s390x.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- lib/autoconf/specific.m4 | 21 +++++++++++++++------
- 1 file changed, 15 insertions(+), 6 deletions(-)
-
-diff --git a/lib/autoconf/specific.m4 b/lib/autoconf/specific.m4
-index 91f20bf0d..9d5974548 100644
---- a/lib/autoconf/specific.m4
-+++ b/lib/autoconf/specific.m4
-@@ -238,13 +238,16 @@ AS_IF([test "$enable_year2038,$ac_have_year2038" = yes,no],
- # C code used to probe for large file support.
- m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
- [@%:@include <sys/types.h>
-- /* Check that off_t can represent 2**63 - 1 correctly.
--    We can't simply define LARGE_OFF_T to be 9223372036854775807,
-+@%:@ifndef FTYPE
-+@%:@ define FTYPE off_t
-+@%:@endif
-+ /* Check that FTYPE can represent 2**63 - 1 correctly.
-+    We can't simply define LARGE_FTYPE to be 9223372036854775807,
-     since some C++ compilers masquerading as C compilers
-     incorrectly reject 9223372036854775807.  */
--@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
--  int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
--		       && LARGE_OFF_T % 2147483647 == 1)
-+@%:@define LARGE_FTYPE (((FTYPE) 1 << 31 << 31) - 1 + ((FTYPE) 1 << 31 << 31))
-+  int FTYPE_is_large[[(LARGE_FTYPE % 2147483629 == 721
-+		       && LARGE_FTYPE % 2147483647 == 1)
- 		      ? 1 : -1]];[]dnl
- ])
- # Defined by Autoconf 2.71 and circa 2022 Gnulib unwisely depended on it.
-@@ -284,7 +287,13 @@ AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
-     AS_IF([test x"$ac_opt" != x"none needed"],
-       [CC="$ac_save_CC $ac_opt"])
-     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])],
--      [ac_cv_sys_largefile_opts="$ac_opt"
-+     [AS_IF([test x"$ac_opt" = x"none needed"],
-+	[# GNU/Linux s390x and alpha need _FILE_OFFSET_BITS=64 for wide ino_t.
-+	 CC="$CC -DFTYPE=ino_t"
-+	 AC_COMPILE_IFELSE([], [],
-+	   [CC="$CC -D_FILE_OFFSET_BITS=64"
-+	    AC_COMPILE_IFELSE([], [ac_opt='-D_FILE_OFFSET_BITS=64'])])])
-+      ac_cv_sys_largefile_opts=$ac_opt
-       ac_opt_found=yes])
-     test $ac_opt_found = no || break
-   done
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0026-Modernize-INSTALL.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0026-Modernize-INSTALL.patch
deleted file mode 100644
index 8d25396..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0026-Modernize-INSTALL.patch
+++ /dev/null
@@ -1,270 +0,0 @@
-From a7421b411b4359b97528c8f4e9dd8abe82235813 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Tue, 20 Jun 2023 13:23:19 -0700
-Subject: [PATCH 26/29] Modernize INSTALL
-
-Problem reported for gettext bootstrap by Julien Palard in:
-https://savannah.gnu.org/bugs/?62196
-* doc/install.texi: Give a brief info as to how to bootstrap,
-on packages built from Git rather from a distribution tarball.
-Remove aging details about c99, macOS, X, HP-UX, OSF/1, Solaris,
-Haiku, sun4.  Improve documentation for enable/disable and
-with/without options.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- doc/install.texi | 157 +++++++++++++++++++++--------------------------
- 1 file changed, 70 insertions(+), 87 deletions(-)
-
-diff --git a/doc/install.texi b/doc/install.texi
-index e06689613..cec245fd0 100644
---- a/doc/install.texi
-+++ b/doc/install.texi
-@@ -18,9 +18,21 @@ warranty of any kind.
- @node Basic Installation
- @section Basic Installation
- 
--Briefly, the shell command
--@samp{./configure@tie{}&& make@tie{}&& make@tie{}install}
--should configure, build, and install this package.  The following
-+Briefly, the following shell commands:
-+
-+@example
-+test -f configure || ./bootstrap
-+./configure
-+make
-+make install
-+@end example
-+
-+@noindent
-+should configure, build, and install this package.
-+The @command{./bootstrap} line is intended for developers;
-+you can omit it when building from a distribution tarball.
-+
-+The following
- more-detailed instructions are generic; see the @file{README} file for
- instructions specific to this package.
- @ifclear autoconf
-@@ -32,6 +44,17 @@ More recommendations for GNU packages can be found in
- @ref{Makefile Conventions, , Makefile Conventions, standards,
- GNU Coding Standards}.
- 
-+If the @command{bootstrap} shell script exists, it attempts to build the
-+@command{configure} shell script and related files, perhaps by
-+downloading other software components from the network, and by using
-+developer tools that are less commonly installed.  Because the output of
-+@command{bootstrap} is system-independent, it is normally run by a
-+package developer so that its output can be put into the distribution
-+tarball and ordinary builders and users need not run @command{bootstrap}.
-+Some packages have commands like @command{./autopull.sh} and
-+@command {./autogen.sh} that you can run instead of @command{./bootstrap},
-+for more fine-grained control over bootstrapping.
-+
- The @command{configure} shell script attempts to guess correct values
- for various system-dependent variables used during compilation.  It uses
- those values to create a @file{Makefile} in each directory of the
-@@ -63,8 +86,15 @@ The simplest way to compile this package is:
- 
- @enumerate
- @item
--@command{cd} to the directory containing the package's source code and type
--@samp{./configure} to configure the package for your system.
-+@command{cd} to the directory containing the package's source code.
-+
-+@item
-+If this is a developer checkout and file @samp{configure} does not yet exist,
-+type @samp{./bootstrap} to create it.
-+You may need special developer tools and network access to bootstrap.
-+
-+@item
-+Type @samp{./configure} to configure the package for your system.
- 
- Running @command{configure} might take a while.  While running, it prints some
- messages telling which features it is checking for.
-@@ -124,7 +154,7 @@ parameters by setting variables in the command line or in the environment.
- Here is an example:
- 
- @example
--./configure CC=c99 CFLAGS=-g LIBS=-lposix
-+./configure CC=gcc CFLAGS=-g LIBS=-lposix
- @end example
- 
- @xref{Defining Variables}, for more details.
-@@ -148,21 +178,10 @@ architecture at a time in the source code directory.  After you have
- installed the package for one architecture, use @samp{make distclean}
- before reconfiguring for another architecture.
- 
--On MacOS X 10.5 and later systems, you can create libraries and
--executables that work on multiple system types---known as @dfn{fat} or
--@dfn{universal} binaries---by specifying multiple @option{-arch} options
--to the compiler but only a single @option{-arch} option to the
--preprocessor.  Like this:
--
--@example
--./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
--            CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
--            CPP="gcc -E" CXXCPP="g++ -E"
--@end example
--
--This is not guaranteed to produce working output in all cases, you may
--have to build one architecture at a time and combine the results
--using the @command{lipo} tool if you have problems.
-+Some platforms, notably macOS, support ``fat'' or ``universal'' binaries,
-+where a single binary can execute on different architectures.
-+On these platforms you can configure and compile just once,
-+with options specific to that platform.
- 
- @node Installation Names
- @section Installation Names
-@@ -227,20 +246,16 @@ an extra prefix or suffix on their names by giving @command{configure}
- the option @option{--program-prefix=@var{PREFIX}} or
- @option{--program-suffix=@var{SUFFIX}}.
- 
--Some packages pay attention to @option{--enable-@var{feature}} options
-+Some packages pay attention to @option{--enable-@var{feature}}
-+and @option{--disable-@var{feature}} options
- to @command{configure}, where @var{feature} indicates an optional part
- of the package.  They may also pay attention to
--@option{--with-@var{package}} options, where @var{package} is something
--like @samp{gnu-as} or @samp{x} (for the X Window System).  The
--@file{README} should mention any @option{--enable-} and @option{--with-}
-+@option{--with-@var{package}} and @option{--without-@var{package}} options,
-+where @var{package} is something like @samp{gnu-ld}.
-+@samp{./configure --help} should mention the
-+@option{--enable-...} and @option{--with-...}
- options that the package recognizes.
- 
--For packages that use the X Window System, @command{configure} can
--usually find the X include and library files automatically, but if it
--doesn't, you can use the @command{configure} options
--@option{--x-includes=@var{dir}} and @option{--x-libraries=@var{dir}} to
--specify their locations.
--
- Some packages offer the ability to configure how verbose the execution
- of @command{make} will be.  For these packages, running
- @samp{./configure --enable-silent-rules} sets the default to minimal
-@@ -248,53 +263,6 @@ output, which can be overridden with @code{make V=1}; while running
- @samp{./configure --disable-silent-rules} sets the default to verbose,
- which can be overridden with @code{make V=0}.
- 
--@node Particular Systems
--@section Particular systems
--
--On HP-UX, the default C compiler is not ANSI C compatible.  If GNU CC is
--not installed, it is recommended to use the following options in order to
--use an ANSI C compiler:
--
--@example
--./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
--@end example
--
--@noindent
--and if that doesn't work, install pre-built binaries of GCC for HP-UX.
--
--HP-UX @command{make} updates targets which have the same timestamps as
--their prerequisites, which makes it generally unusable when shipped
--generated files such as @command{configure} are involved.  Use GNU
--@command{make} instead.
--
--On OSF/1 a.k.a.@: Tru64, some versions of the default C compiler cannot
--parse its @code{<wchar.h>} header file.  The option @option{-nodtk} can be
--used as a workaround.  If GNU CC is not installed, it is therefore
--recommended to try
--
--@example
--./configure CC="cc"
--@end example
--
--@noindent
--and if that doesn't work, try
--
--@example
--./configure CC="cc -nodtk"
--@end example
--
--On Solaris, don't put @code{/usr/ucb} early in your @env{PATH}.  This
--directory contains several dysfunctional programs; working variants
--of these programs are available in @code{/usr/bin}.  So, if you need
--@code{/usr/ucb} in your @env{PATH}, put it @emph{after} @code{/usr/bin}.
--
--On Haiku, software installed for all users goes in @file{/boot/common},
--not @file{/usr/local}.  It is recommended to use the following options:
--
--@example
--./configure --prefix=/boot/common
--@end example
--
- @node System Type
- @section Specifying the System Type
- 
-@@ -304,7 +272,8 @@ will run on.  Usually, assuming the package is built to be run on the
- @emph{same} architectures, @command{configure} can figure that out, but
- if it prints a message saying it cannot guess the machine type, give it
- the @option{--build=@var{type}} option.  @var{type} can either be a
--short name for the system type, such as @samp{sun4}, or a canonical name
-+short name like @samp{mingw64} for the system type, or a canonical name
-+like @samp{x86_64-pc-linux-gnu}
- which has the form:
- 
- @example
-@@ -319,6 +288,7 @@ where @var{system} can have one of these forms:
- @var{kernel}-@var{os}
- @end example
- 
-+@noindent
- See the file @file{config.sub} for the possible values of each field.
- If @file{config.sub} isn't included in this package, then this package
- doesn't need to know the machine type.
-@@ -405,13 +375,6 @@ traditionally @file{config.cache}.  @var{file} defaults to
- @itemx -C
- Alias for @option{--cache-file=config.cache}.
- 
--@item --quiet
--@itemx --silent
--@itemx -q
--Do not print messages saying which checks are being made.  To suppress
--all normal output, redirect it to @file{/dev/null} (any error messages
--will still be shown).
--
- @item --srcdir=@var{dir}
- Look for the package's source code in directory @var{dir}.  Usually
- @command{configure} can determine that directory automatically.
-@@ -421,13 +384,33 @@ Use @var{dir} as the installation prefix.  @ref{Installation Names}
- for more details, including other options available for fine-tuning
- the installation locations.
- 
-+@item --build=@var{type}
-+Build for architecture @var{type}.  @ref{Specifying the System Type}
-+for more details, including other system type options.
-+
-+@item --enable-@var{feature}
-+@itemx --disable-@var{feature}
-+Enable or disable the optional @var{feature}.  @xref{Optional Features}.
-+
-+@item --with-@var{package}
-+@itemx --without-@var{package}
-+Use or omit @var{package} when building.  @xref{Optional Features}.
-+
-+@item --quiet
-+@itemx --silent
-+@itemx -q
-+Do not print messages saying which checks are being made.  To suppress
-+all normal output, redirect it to @file{/dev/null} (any error messages
-+will still be shown).
-+
- @item --no-create
- @itemx -n
- Run the configure checks, but stop before creating any output files.
- @end table
- 
- @noindent
--@command{configure} also accepts some other, not widely useful, options.
-+@command{configure} also recognizes several environment variables,
-+and accepts some other, less widely useful, options.
- Run @samp{configure --help} for more details.
- 
- @c Local Variables:
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0027-doc-fix-broken-cross-refs.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0027-doc-fix-broken-cross-refs.patch
deleted file mode 100644
index 7ab5074..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0027-doc-fix-broken-cross-refs.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From eaea61e4485cdecf989fa777ff4e166c945a6eea Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Tue, 20 Jun 2023 13:39:15 -0700
-Subject: [PATCH 27/29] doc: fix broken cross-refs
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- doc/autoconf.texi | 5 +----
- doc/install.texi  | 2 +-
- 2 files changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index 0f3047b31..7817fc1b5 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -604,7 +604,6 @@ Running @command{configure} Scripts
- * Multiple Architectures::      Compiling for multiple architectures at once
- * Installation Names::          Installing in different directories
- * Optional Features::           Selecting optional features
--* Particular Systems::          Particular systems
- * System Type::                 Specifying the system type
- * Sharing Defaults::            Setting site-wide defaults for @command{configure}
- * Defining Variables::          Specifying the compiler etc.
-@@ -23304,7 +23303,6 @@ may use comes with Autoconf.
- * Multiple Architectures::      Compiling for multiple architectures at once
- * Installation Names::          Installing in different directories
- * Optional Features::           Selecting optional features
--* Particular Systems::          Particular systems
- * System Type::                 Specifying the system type
- * Sharing Defaults::            Setting site-wide defaults for @command{configure}
- * Defining Variables::          Specifying the compiler etc.
-@@ -26990,8 +26988,7 @@ for simple differences.
- @item
- Most tests which produce their result in a substituted variable allow to
- override the test by setting the variable on the @command{configure}
--command line (@pxref{Compilers and Options}, @pxref{Defining Variables},
--@pxref{Particular Systems}).
-+command line (@pxref{Compilers and Options}, @pxref{Defining Variables}).
- 
- @item
- Many tests store their result in a cache variable (@pxref{Caching
-diff --git a/doc/install.texi b/doc/install.texi
-index cec245fd0..6d9788fa9 100644
---- a/doc/install.texi
-+++ b/doc/install.texi
-@@ -385,7 +385,7 @@ for more details, including other options available for fine-tuning
- the installation locations.
- 
- @item --build=@var{type}
--Build for architecture @var{type}.  @ref{Specifying the System Type}
-+Build for architecture @var{type}.  @ref{System Type}.
- for more details, including other system type options.
- 
- @item --enable-@var{feature}
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch
deleted file mode 100644
index 95ad80d..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch
+++ /dev/null
@@ -1,224 +0,0 @@
-From 328f9b88ef896e8e31818c50d9ec2ade5c892ea4 Mon Sep 17 00:00:00 2001
-From: Bruno Haible <bruno@clisp.org>
-Date: Fri, 23 Jun 2023 17:37:35 +0200
-Subject: [PATCH 28/29] INSTALL: Clarify --build, --host, --target, and the
- system types.
-
-* doc/install.texi (Compilers and Options): Add another reference.
-(System Types): Renamed from System Type. Explain how to canonicalize
-and how to validate a system type. Don't explain --build, --host,
---target here.
-(Building for a different system type): New section.
-(Troubleshooting the Build Type): New section.
-(Configuring a Compiler): New section.
-(configure Invocation): Mention the --host option, not the --build
-option, since --build is so rarely needed.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- doc/autoconf.texi |   6 +--
- doc/install.texi  | 132 +++++++++++++++++++++++++++++++++++++---------
- 2 files changed, 111 insertions(+), 27 deletions(-)
-
-diff --git a/doc/autoconf.texi b/doc/autoconf.texi
-index 7817fc1b5..043f7fb21 100644
---- a/doc/autoconf.texi
-+++ b/doc/autoconf.texi
-@@ -604,7 +604,7 @@ Running @command{configure} Scripts
- * Multiple Architectures::      Compiling for multiple architectures at once
- * Installation Names::          Installing in different directories
- * Optional Features::           Selecting optional features
--* System Type::                 Specifying the system type
-+* System Types::                Specifying a system type
- * Sharing Defaults::            Setting site-wide defaults for @command{configure}
- * Defining Variables::          Specifying the compiler etc.
- * configure Invocation::        Changing how @command{configure} runs
-@@ -22383,7 +22383,7 @@ system it's running on.  To do so it runs a script called
- command or symbols predefined by the C preprocessor.
- 
- Alternately, the user can specify the system type with command line
--arguments to @command{configure} (@pxref{System Type}.  Doing so is
-+arguments to @command{configure} (@pxref{System Types}.  Doing so is
- necessary when
- cross-compiling.  In the most complex case of cross-compiling, three
- system types are involved.  The options to specify them are:
-@@ -23303,7 +23303,7 @@ may use comes with Autoconf.
- * Multiple Architectures::      Compiling for multiple architectures at once
- * Installation Names::          Installing in different directories
- * Optional Features::           Selecting optional features
--* System Type::                 Specifying the system type
-+* System Types::                Specifying a system type
- * Sharing Defaults::            Setting site-wide defaults for @command{configure}
- * Defining Variables::          Specifying the compiler etc.
- * configure Invocation::        Changing how @command{configure} runs
-diff --git a/doc/install.texi b/doc/install.texi
-index 6d9788fa9..a3ef17828 100644
---- a/doc/install.texi
-+++ b/doc/install.texi
-@@ -157,8 +157,16 @@ Here is an example:
- ./configure CC=gcc CFLAGS=-g LIBS=-lposix
- @end example
- 
--@xref{Defining Variables}, for more details.
--
-+See
-+@ref{Defining Variables} and
-+@ifset autoconf
-+@ref{Preset Output Variables}
-+@end ifset
-+@ifclear autoconf
-+@ref{Preset Output Variables,,, autoconf, Autoconf}
-+@c (@url{https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Preset-Output-Variables.html})
-+@end ifclear
-+for more details.
- 
- @node Multiple Architectures
- @section Compiling For Multiple Architectures
-@@ -263,18 +271,17 @@ output, which can be overridden with @code{make V=1}; while running
- @samp{./configure --disable-silent-rules} sets the default to verbose,
- which can be overridden with @code{make V=0}.
- 
--@node System Type
--@section Specifying the System Type
-+@node System Types
-+@section Specifying a System Type
- 
--There may be some features @command{configure} cannot figure out
--automatically, but needs to determine by the type of machine the package
--will run on.  Usually, assuming the package is built to be run on the
--@emph{same} architectures, @command{configure} can figure that out, but
--if it prints a message saying it cannot guess the machine type, give it
--the @option{--build=@var{type}} option.  @var{type} can either be a
--short name like @samp{mingw64} for the system type, or a canonical name
--like @samp{x86_64-pc-linux-gnu}
--which has the form:
-+The following sections go into details regarding situations where you
-+may have to specify a system type, either through the option
-+@option{--host=@var{type}}, or through the option
-+@option{--build=@var{type}}, or -- in the case of compilers -- through
-+@option{--target=@var{type}}.
-+
-+A system type @var{type} can either be a short name like @samp{mingw64},
-+or a canonical name like @samp{x86_64-pc-linux-gnu} which has the form:
- 
- @example
- @var{cpu}-@var{company}-@var{system}
-@@ -291,16 +298,93 @@ where @var{system} can have one of these forms:
- @noindent
- See the file @file{config.sub} for the possible values of each field.
- If @file{config.sub} isn't included in this package, then this package
--doesn't need to know the machine type.
-+doesn't need to know any machine type.
-+
-+The file @file{config.sub} is a program that validates and canonicalizes
-+a system type.
-+It can do canonicalization, as in
-+
-+@example
-+$ sh config.sub x86_64-linux
-+x86_64-pc-linux-gnu
-+$ sh config.sub arm64-linux
-+aarch64-unknown-linux-gnu
-+@end example
-+
-+@noindent
-+It also validates the parts.  For example, this interaction tells you
-+that ``crusoe'' is not a valid cpu architecture name:
- 
--If you are @emph{building} compiler tools for cross-compiling, you
--should use the option @option{--target=@var{type}} to select the type of
--system they will produce code for.
-+@example
-+$ sh config.sub crusoe-linux
-+Invalid configuration `crusoe-linux': machine `crusoe-unknown' not recognized
-+@end example
-+
-+@node Building for a different system type
-+@section Creating binaries for a different system type
-+
-+When you want to create binaries that will run on a different machine
-+type than the one you are building on, you need to specify both
-+@itemize @bullet
-+@item
-+a @option{--host=@var{type}} option, specifying the machine type on
-+which the binaries shall run,
-+@item
-+compiler variables (@code{CC} for the C compiler, @code{CXX} for the C++
-+compiler, and so on), pointing to compilers that generate object code
-+for that machine type.
-+@end itemize
-+
-+For example, to create binaries intended to run on a 64-bit ARM
-+processor:
-+@example
-+./configure --host=aarch64-linux-gnu \
-+            CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
-+@end example
- 
--If you want to @emph{use} a cross compiler, that generates code for a
--platform different from the build platform, you should specify the
--@dfn{host} platform (i.e., that on which the generated programs will
--eventually be run) with @option{--host=@var{type}}.
-+If you do this on a machine that can execute such binaries (e.g.@: by
-+virtue of the @code{qemu-aarch64} program, system libraries for that
-+architecture under @code{$QEMU_LD_PREFIX}, and a Linux
-+@code{binfmt_misc} configuration), the build behaves like a native
-+build.
-+If not, the build is a cross-build, in the sense that @code{configure}
-+will make cross-compilation guesses instead of running test programs,
-+and ``make check'' will not work.
-+
-+@node Troubleshooting the Build Type
-+@section Fixing a ``cannot guess build type'' error
-+
-+In rare cases, it may happen that @code{configure} fails with the error
-+message ``cannot guess build type''.
-+This error means that the files @file{config.guess} and
-+@file{config.sub} don't recognize the type of the system on which you
-+are building.
-+In this case, first fetch the newest versions of these files, from
-+@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess}
-+and
-+@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub},
-+respectively, and use these as drop-in replacement for the files
-+@file{config.guess} and @file{config.sub} that were shipped with this
-+package.
-+
-+If this resolves the problem, feel free to report the solution to the
-+maintainers of this package.
-+
-+Otherwise, it means that your system is not yet supported by
-+@file{config.guess} and @file{config.sub}.
-+As a workaround, you can use a configure option
-+@option{--build=@var{type}}, where @var{type} comes closest to your
-+system type.
-+Also, you're welcome to file a report to
-+@email{config-patches@@gnu.org}.
-+
-+@node Configuring a Compiler
-+@section Configuration options specific to a compiler
-+
-+If you are building a compiler, and this compiler should generate code
-+for a system type that is different from the one on which the compiler
-+binaries shall run on, use the option @option{--target=@var{type}} to
-+select the type of system for which the compiler should produce code.
- 
- @node Sharing Defaults
- @section Sharing Defaults
-@@ -384,9 +468,9 @@ Use @var{dir} as the installation prefix.  @ref{Installation Names}
- for more details, including other options available for fine-tuning
- the installation locations.
- 
--@item --build=@var{type}
--Build for architecture @var{type}.  @ref{System Type}.
--for more details, including other system type options.
-+@item --host=@var{type}
-+Build binaries for architecture @var{type}.  @ref{System Types} and
-+@ref{Building for a different system type} for more details.
- 
- @item --enable-@var{feature}
- @itemx --disable-@var{feature}
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0029-Shorten-and-improve-INSTALL.patch b/poky/meta/recipes-devtools/autoconf/autoconf/backports/0029-Shorten-and-improve-INSTALL.patch
deleted file mode 100644
index 9129ab7..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf/backports/0029-Shorten-and-improve-INSTALL.patch
+++ /dev/null
@@ -1,366 +0,0 @@
-From d8ca8b323873e5cd9d969a062f70b31db450ba53 Mon Sep 17 00:00:00 2001
-From: Paul Eggert <eggert@cs.ucla.edu>
-Date: Sat, 24 Jun 2023 14:39:34 -0700
-Subject: [PATCH 29/29] Shorten and improve INSTALL
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Rewrite install.texi so that INSTALL is shorter and hopefully
-more useful for new installers.
-* doc/install.texi: When not building the Autoconf manual, put
-copyright notice at the end, and omit external references as they
-do not work in INSTALL.
-Avoid long URLs as they do not work well in INSTALL or
-in info files.  Be more consistent (though not entirely
-consistent) about “system” vs “architecture”.
-(System Types, Building for a different system type)
-(Troubleshooting the Build Type): Coalesce into a single section
-and rewrite for clarity and brevity.  Mention build-aux.  Do not
-mention --target here as it’s too rare to make the cut.
-
-Upstream-Status: Backport
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- doc/install.texi | 224 +++++++++++++++++------------------------------
- 1 file changed, 82 insertions(+), 142 deletions(-)
-
-diff --git a/doc/install.texi b/doc/install.texi
-index a3ef17828..6c3a9c21c 100644
---- a/doc/install.texi
-+++ b/doc/install.texi
-@@ -2,23 +2,13 @@
- @c the INSTALL file.
- 
- @ifclear autoconf
--
- @unnumbered Installation Instructions
--
--Copyright @copyright{} 1994--1996, 1999--2002, 2004--2017, 2020--2023
--Free Software Foundation, Inc.
--
--Copying and distribution of this file, with or without modification, are
--permitted in any medium without royalty provided the copyright notice
--and this notice are preserved.  This file is offered as-is, without
--warranty of any kind.
--
- @end ifclear
- 
- @node Basic Installation
- @section Basic Installation
- 
--Briefly, the following shell commands:
-+The following shell commands:
- 
- @example
- test -f configure || ./bootstrap
-@@ -41,8 +31,13 @@ of the features documented below.  The lack of an optional feature in a
- given package is not necessarily a bug.
- @end ifclear
- More recommendations for GNU packages can be found in
-+@ifset autoconf
- @ref{Makefile Conventions, , Makefile Conventions, standards,
- GNU Coding Standards}.
-+@end ifset
-+@ifclear autoconf
-+the GNU Coding Standards.
-+@end ifclear
- 
- If the @command{bootstrap} shell script exists, it attempts to build the
- @command{configure} shell script and related files, perhaps by
-@@ -61,8 +56,8 @@ those values to create a @file{Makefile} in each directory of the
- package.  It may also create one or more @file{.h} files containing
- system-dependent definitions.  Finally, it creates a shell script
- @file{config.status} that you can run in the future to recreate the
--current configuration, and a file @file{config.log} containing compiler
--output (useful mainly for debugging @command{configure}).
-+current configuration, and a file @file{config.log} containing
-+output useful for debugging @command{configure}.
- 
- It can also use an optional file (typically called @file{config.cache}
- and enabled with @option{--cache-file=config.cache} or simply
-@@ -77,10 +72,9 @@ they can be considered for the next release.  If you are using the
- cache, and at some point @file{config.cache} contains results you don't
- want to keep, you may remove or edit it.
- 
--The file @file{configure.ac} (or @file{configure.in}) is used to create
--@file{configure} by a program called @command{autoconf}.  You need
--@file{configure.ac} if you want to change it or regenerate
--@file{configure} using a newer version of @command{autoconf}.
-+The @command{autoconf} program generates @file{configure} from the file
-+@file{configure.ac}.  Normally you should edit @file{configure.ac}
-+instead of editing @file{configure} directly.
- 
- The simplest way to compile this package is:
- 
-@@ -95,8 +89,7 @@ You may need special developer tools and network access to bootstrap.
- 
- @item
- Type @samp{./configure} to configure the package for your system.
--
--Running @command{configure} might take a while.  While running, it prints some
-+This might take a while.  While running, @command{configure} prints
- messages telling which features it is checking for.
- 
- @item
-@@ -125,21 +118,11 @@ code directory by typing @samp{make clean}.  To also remove the files
- that @command{configure} created (so you can compile the package for a
- different kind of computer), type @samp{make distclean}.  There is also
- a @samp{make maintainer-clean} target, but that is intended mainly for
--the package's developers.  If you use it, you may have to get all sorts
--of other programs in order to regenerate files that came with the
--distribution.
-+the package's developers.  If you use it, you may have to bootstrap again.
- 
- @item
--Often, you can also type @samp{make uninstall} to remove the installed
--files again.  In practice, not all packages have tested that
--uninstallation works correctly, even though it is required by the
--GNU Coding Standards.
--
--@item
--Some packages, particularly those that use Automake, provide @samp{make
--distcheck}, which can by used by developers to test that all other
--targets like @samp{make install} and @samp{make uninstall} work
--correctly.  This target is generally not run by end users.
-+If the package follows the GNU Coding Standards,
-+you can type @samp{make uninstall} to remove the installed files.
- @end enumerate
- 
- @node Compilers and Options
-@@ -158,21 +141,17 @@ Here is an example:
- @end example
- 
- See
--@ref{Defining Variables} and
-+@ref{Defining Variables}
- @ifset autoconf
--@ref{Preset Output Variables}
-+and @ref{Preset Output Variables}
- @end ifset
--@ifclear autoconf
--@ref{Preset Output Variables,,, autoconf, Autoconf}
--@c (@url{https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.71/html_node/Preset-Output-Variables.html})
--@end ifclear
- for more details.
- 
- @node Multiple Architectures
- @section Compiling For Multiple Architectures
- 
- You can compile the package for more than one kind of computer at the
--same time, by placing the object files for each architecture in their
-+same time, by placing the object files for each system in their
- own directory.  To do this, you can use GNU @command{make}.
- @command{cd} to the directory where you want the object files and
- executables to go and run the @command{configure} script.
-@@ -182,9 +161,9 @@ known as a @dfn{VPATH} build.
- 
- With a non-GNU @command{make},
- it is safer to compile the package for one
--architecture at a time in the source code directory.  After you have
--installed the package for one architecture, use @samp{make distclean}
--before reconfiguring for another architecture.
-+system at a time in the source code directory.  After you have
-+installed the package for one system, use @samp{make distclean}
-+before reconfiguring for another system.
- 
- Some platforms, notably macOS, support ``fat'' or ``universal'' binaries,
- where a single binary can execute on different architectures.
-@@ -274,117 +253,65 @@ which can be overridden with @code{make V=0}.
- @node System Types
- @section Specifying a System Type
- 
--The following sections go into details regarding situations where you
--may have to specify a system type, either through the option
--@option{--host=@var{type}}, or through the option
--@option{--build=@var{type}}, or -- in the case of compilers -- through
--@option{--target=@var{type}}.
--
--A system type @var{type} can either be a short name like @samp{mingw64},
--or a canonical name like @samp{x86_64-pc-linux-gnu} which has the form:
--
--@example
--@var{cpu}-@var{company}-@var{system}
--@end example
--
--@noindent
--where @var{system} can have one of these forms:
-+By default @command{configure} builds for the current system.
-+To create binaries that can run on a different system type,
-+specify a @option{--host=@var{type}} option along with compiler
-+variables that specify how to generate object code for @var{type}.
-+For example, to create binaries intended to run on a 64-bit ARM
-+processor:
- 
- @example
--@var{os}
--@var{kernel}-@var{os}
-+./configure --host=aarch64-linux-gnu \
-+   CC=aarch64-linux-gnu-gcc \
-+   CXX=aarch64-linux-gnu-g++
- @end example
- 
- @noindent
--See the file @file{config.sub} for the possible values of each field.
--If @file{config.sub} isn't included in this package, then this package
--doesn't need to know any machine type.
--
--The file @file{config.sub} is a program that validates and canonicalizes
--a system type.
--It can do canonicalization, as in
-+If done on a machine that can execute these binaries
-+(e.g., via @command{qemu-aarch64}, @env{$QEMU_LD_PREFIX}, and Linux's
-+@code{binfmt_misc} capability), the build behaves like a native build.
-+Otherwise it is a cross-build: @code{configure}
-+will make cross-compilation guesses instead of running test programs,
-+and @code{make check} will not work.
-+
-+A system type can either be a short name like @samp{mingw64},
-+or a canonical name like @samp{x86_64-pc-linux-gnu}.
-+Canonical names have the form @var{cpu}-@var{company}-@var{system}
-+where @var{system} is either @var{os} or @var{kernel}-@var{os}.
-+To canonicalize and validate a system type,
-+you can run the command @file{config.sub},
-+which is often squirreled away in a subdirectory like @file{build-aux}.
-+For example:
- 
- @example
--$ sh config.sub x86_64-linux
--x86_64-pc-linux-gnu
--$ sh config.sub arm64-linux
-+$ build-aux/config.sub arm64-linux
- aarch64-unknown-linux-gnu
-+$ build-aux/config.sub riscv-lnx
-+Invalid configuration 'riscv-lnx': OS 'lnx' not recognized
- @end example
- 
- @noindent
--It also validates the parts.  For example, this interaction tells you
--that ``crusoe'' is not a valid cpu architecture name:
--
--@example
--$ sh config.sub crusoe-linux
--Invalid configuration `crusoe-linux': machine `crusoe-unknown' not recognized
--@end example
--
--@node Building for a different system type
--@section Creating binaries for a different system type
--
--When you want to create binaries that will run on a different machine
--type than the one you are building on, you need to specify both
--@itemize @bullet
--@item
--a @option{--host=@var{type}} option, specifying the machine type on
--which the binaries shall run,
--@item
--compiler variables (@code{CC} for the C compiler, @code{CXX} for the C++
--compiler, and so on), pointing to compilers that generate object code
--for that machine type.
--@end itemize
--
--For example, to create binaries intended to run on a 64-bit ARM
--processor:
--@example
--./configure --host=aarch64-linux-gnu \
--            CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++
--@end example
--
--If you do this on a machine that can execute such binaries (e.g.@: by
--virtue of the @code{qemu-aarch64} program, system libraries for that
--architecture under @code{$QEMU_LD_PREFIX}, and a Linux
--@code{binfmt_misc} configuration), the build behaves like a native
--build.
--If not, the build is a cross-build, in the sense that @code{configure}
--will make cross-compilation guesses instead of running test programs,
--and ``make check'' will not work.
--
--@node Troubleshooting the Build Type
--@section Fixing a ``cannot guess build type'' error
--
--In rare cases, it may happen that @code{configure} fails with the error
--message ``cannot guess build type''.
--This error means that the files @file{config.guess} and
--@file{config.sub} don't recognize the type of the system on which you
--are building.
--In this case, first fetch the newest versions of these files, from
--@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess}
--and
--@url{https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub},
--respectively, and use these as drop-in replacement for the files
--@file{config.guess} and @file{config.sub} that were shipped with this
--package.
--
--If this resolves the problem, feel free to report the solution to the
--maintainers of this package.
--
--Otherwise, it means that your system is not yet supported by
--@file{config.guess} and @file{config.sub}.
--As a workaround, you can use a configure option
--@option{--build=@var{type}}, where @var{type} comes closest to your
--system type.
--Also, you're welcome to file a report to
-+You can look at the @file{config.sub} file to see which types are recognized.
-+If the file is absent, this package does not need the system type.
-+
-+If @command{configure} fails with the diagnostic ``cannot guess build type''.
-+@file{config.sub} did not recognize your system's type.
-+In this case, first fetch the newest versions of these files
-+from the @url{https://savannah.gnu.org/projects/config, GNU config package}.
-+If that fixes things, please report it to the
-+maintainers of the package containing @command{configure}.
-+Otherwise, you can try the configure option
-+@option{--build=@var{type}} where @var{type} comes close to your
-+system type; also, please report the problem to
- @email{config-patches@@gnu.org}.
- 
--@node Configuring a Compiler
--@section Configuration options specific to a compiler
--
--If you are building a compiler, and this compiler should generate code
--for a system type that is different from the one on which the compiler
--binaries shall run on, use the option @option{--target=@var{type}} to
--select the type of system for which the compiler should produce code.
-+For more details about configuring system types, see
-+@ifset autoconf
-+@ref{Manual Configuration}.
-+@end ifset
-+@ifclear autoconf
-+the Autoconf documentation.
-+@end ifclear
- 
- @node Sharing Defaults
- @section Sharing Defaults
-@@ -469,8 +396,8 @@ for more details, including other options available for fine-tuning
- the installation locations.
- 
- @item --host=@var{type}
--Build binaries for architecture @var{type}.  @ref{System Types} and
--@ref{Building for a different system type} for more details.
-+Build binaries for system @var{type}.
-+@xref{System Types}.
- 
- @item --enable-@var{feature}
- @itemx --disable-@var{feature}
-@@ -497,6 +424,19 @@ Run the configure checks, but stop before creating any output files.
- and accepts some other, less widely useful, options.
- Run @samp{configure --help} for more details.
- 
-+@ifclear autoconf
-+@node Copyright notice
-+@section Copyright notice
-+
-+Copyright @copyright{} 1994--1996, 1999--2002, 2004--2017, 2020--2023
-+Free Software Foundation, Inc.
-+
-+Copying and distribution of this file, with or without modification, are
-+permitted in any medium without royalty provided the copyright notice
-+and this notice are preserved.  This file is offered as-is, without
-+warranty of any kind.
-+@end ifclear
-+
- @c Local Variables:
- @c fill-column: 72
- @c ispell-local-dictionary: "american"
--- 
-2.41.0
-
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf_2.72c.bb b/poky/meta/recipes-devtools/autoconf/autoconf_2.72c.bb
deleted file mode 100644
index 76130d5..0000000
--- a/poky/meta/recipes-devtools/autoconf/autoconf_2.72c.bb
+++ /dev/null
@@ -1,114 +0,0 @@
-SUMMARY = "A GNU tool that produce shell scripts to automatically configure software"
-DESCRIPTION = "Autoconf is an extensible package of M4 macros that produce shell scripts to automatically \ 
-configure software source code packages. Autoconf creates a configuration script for a package from a template \
-file that lists the operating system features that the package can use, in the form of M4 macro calls."
-LICENSE = "GPL-3.0-or-later"
-HOMEPAGE = "http://www.gnu.org/software/autoconf/"
-SECTION = "devel"
-DEPENDS = "m4-native autoconf-native automake-native gnu-config-native help2man-native"
-DEPENDS:remove:class-native = "autoconf-native automake-native help2man-native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=cc3f3a7596cb558bbd9eb7fbaa3ef16c \
-		    file://COPYINGv3;md5=1ebbd3e34237af26da5dc08a4e440464"
-
-SRC_URI = " \
-           https://alpha.gnu.org/gnu/autoconf/autoconf-2.72c.tar.gz \
-           file://program_prefix.patch \
-           file://autoreconf-exclude.patch \
-           file://remove-usr-local-lib-from-m4.patch \
-           file://preferbash.patch \
-           file://autotest-automake-result-format.patch \
-           file://man-host-perl.patch \
-	   ${BACKPORTS} \
-"
-SRC_URI:append:class-native = " file://no-man.patch"
-
-BACKPORTS = "\
-           file://backports/0001-mention-prototypes-more-prominently-in-NEWS.patch \
-           file://backports/0002-build-run-make-fetch-which-updated-these.patch \
-           file://backports/0003-NEWS-Tighten-up-wording.patch \
-           file://backports/0004-Cater-to-programs-misusing-AC_EGREP_HEADER.patch \
-           file://backports/0006-Fix-timing-bug-on-high-speed-builds.patch \
-           file://backports/0007-Support-underquoted-callers-better.patch \
-           file://backports/0008-New-script-for-building-inside-Guix-containers.patch \
-           file://backports/0009-AC_XENIX_DIR-Rewrite-using-AC_CANONICAL_HOST.patch \
-           file://backports/0010-AC_TYPE_UID_T-Rewrite-using-AC_CHECK_TYPE.patch \
-           file://backports/0011-Make-AC_PROG_GCC_TRADITIONAL-a-compatibility-alias-f.patch \
-           file://backports/0012-Overhaul-AC_TYPE_GETGROUPS-and-AC_FUNC_GETGROUPS.patch \
-           file://backports/0013-Fold-AC_C_STRINGIZE-into-AC_PROG_CC.patch \
-           file://backports/0014-Remove-the-last-few-internal-uses-of-AC_EGREP_CPP.patch \
-           file://backports/0015-Support-circa-early-2022-Gnulib.patch \
-           file://backports/0016-Improve-year2038-largefile-option-processing.patch \
-           file://backports/0017-AC_SYS_YEAR2038-Fix-configure-failure-on-32-bit-ming.patch \
-           file://backports/0018-Document-limitation-of-BusyBox-tr.patch \
-           file://backports/0019-AC_SYS_YEAR2038_REQUIRED-Fix-configure-failure-with-.patch \
-           file://backports/0020-Tone-down-year-2038-changes.patch \
-           file://backports/0021-Port-AC_FUNC_MMAP-to-more-modern-systems.patch \
-           file://backports/0022-Fix-port-of-AC_FUNC_MMAP.patch \
-           file://backports/0023-Improve-AC_SYS_YEAR2038_RECOMMENDED-diagnostic.patch \
-           file://backports/0024-Improve-AC_FUNC_MMAP-comments.patch \
-           file://backports/0025-Fix-AC_SYS_LARGEFILE-on-GNU-Linux-alpha-s390x.patch \
-           file://backports/0026-Modernize-INSTALL.patch \
-           file://backports/0027-doc-fix-broken-cross-refs.patch \
-           file://backports/0028-INSTALL-Clarify-build-host-target-and-the-system-typ.patch \
-           file://backports/0029-Shorten-and-improve-INSTALL.patch \
-"
-
-SRC_URI[sha256sum] = "21b64169c820c6cdf27fc981ca9c2fb615546e5dead92bccf8d92d0784cdd364"
-
-RDEPENDS:${PN} = "m4 gnu-config \
-		  perl \
-		  perl-module-bytes \
-		  perl-module-carp \
-		  perl-module-constant \
-		  perl-module-data-dumper \
-		  perl-module-errno \
-		  perl-module-exporter \
-		  perl-module-file-basename \
-		  perl-module-file-compare \
-		  perl-module-file-copy \
-		  perl-module-file-find \
-		  perl-module-file-glob \
-		  perl-module-file-path \
-		  perl-module-file-spec \
-		  perl-module-file-spec-unix \
-		  perl-module-file-stat \
-                  perl-module-file-temp \
-		  perl-module-getopt-long \
-		  perl-module-io-file \
-                  perl-module-list-util \
-		  perl-module-overloading \
-		  perl-module-posix \
-                  perl-module-scalar-util \
-		  perl-module-symbol \
-		  perl-module-thread-queue \
-		  perl-module-threads \
-		 "
-RDEPENDS:${PN}:class-native = "m4-native gnu-config-native hostperl-runtime-native"
-
-inherit autotools texinfo
-
-PERL = "${USRBINPATH}/perl"
-PERL:class-native = "/usr/bin/env perl"
-PERL:class-nativesdk = "/usr/bin/env perl"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
-
-EXTRA_OECONF += "ac_cv_path_M4=m4 ac_cv_prog_TEST_EMACS=no"
-
-# As autoconf installs its own config.* files, ensure that they're always up to date.
-update_gnu_config() {
-	install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/build-aux
-	install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/build-aux
-}
-do_configure[prefuncs] += "update_gnu_config"
-
-do_configure:class-native() {
-	oe_runconf
-}
-
-do_install:append() {
-    rm -rf ${D}${datadir}/emacs
-}
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/autoconf/autoconf_2.72d.bb b/poky/meta/recipes-devtools/autoconf/autoconf_2.72d.bb
new file mode 100644
index 0000000..939fc3a
--- /dev/null
+++ b/poky/meta/recipes-devtools/autoconf/autoconf_2.72d.bb
@@ -0,0 +1,82 @@
+SUMMARY = "A GNU tool that produce shell scripts to automatically configure software"
+DESCRIPTION = "Autoconf is an extensible package of M4 macros that produce shell scripts to automatically \ 
+configure software source code packages. Autoconf creates a configuration script for a package from a template \
+file that lists the operating system features that the package can use, in the form of M4 macro calls."
+LICENSE = "GPL-3.0-or-later"
+HOMEPAGE = "http://www.gnu.org/software/autoconf/"
+SECTION = "devel"
+DEPENDS = "m4-native autoconf-native automake-native gnu-config-native help2man-native"
+DEPENDS:remove:class-native = "autoconf-native automake-native help2man-native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=cc3f3a7596cb558bbd9eb7fbaa3ef16c \
+		    file://COPYINGv3;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = " \
+           https://alpha.gnu.org/gnu/autoconf/${BP}.tar.gz \
+           file://program_prefix.patch \
+           file://autoreconf-exclude.patch \
+           file://remove-usr-local-lib-from-m4.patch \
+           file://preferbash.patch \
+           file://autotest-automake-result-format.patch \
+           file://man-host-perl.patch \
+"
+SRC_URI:append:class-native = " file://no-man.patch"
+
+SRC_URI[sha256sum] = "c09dcba3d051507459df2fcd58d6f19e5b342568fa910e3bb3a74b4402cde3a6"
+
+RDEPENDS:${PN} = "m4 gnu-config \
+		  perl \
+		  perl-module-bytes \
+		  perl-module-carp \
+		  perl-module-constant \
+		  perl-module-data-dumper \
+		  perl-module-errno \
+		  perl-module-exporter \
+		  perl-module-file-basename \
+		  perl-module-file-compare \
+		  perl-module-file-copy \
+		  perl-module-file-find \
+		  perl-module-file-glob \
+		  perl-module-file-path \
+		  perl-module-file-spec \
+		  perl-module-file-spec-unix \
+		  perl-module-file-stat \
+                  perl-module-file-temp \
+		  perl-module-getopt-long \
+		  perl-module-io-file \
+                  perl-module-list-util \
+		  perl-module-overloading \
+		  perl-module-posix \
+                  perl-module-scalar-util \
+		  perl-module-symbol \
+		  perl-module-thread-queue \
+		  perl-module-threads \
+		 "
+RDEPENDS:${PN}:class-native = "m4-native gnu-config-native hostperl-runtime-native"
+
+inherit autotools texinfo
+
+PERL = "${USRBINPATH}/perl"
+PERL:class-native = "/usr/bin/env perl"
+PERL:class-nativesdk = "/usr/bin/env perl"
+
+CACHED_CONFIGUREVARS += "ac_cv_path_PERL='${PERL}'"
+
+EXTRA_OECONF += "ac_cv_path_M4=m4 ac_cv_prog_TEST_EMACS=no"
+
+# As autoconf installs its own config.* files, ensure that they're always up to date.
+update_gnu_config() {
+	install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.guess ${S}/build-aux
+	install -m 0755 ${STAGING_DATADIR_NATIVE}/gnu-config/config.sub ${S}/build-aux
+}
+do_configure[prefuncs] += "update_gnu_config"
+
+do_configure:class-native() {
+	oe_runconf
+}
+
+do_install:append() {
+    rm -rf ${D}${datadir}/emacs
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/binutils/binutils-2.41.inc b/poky/meta/recipes-devtools/binutils/binutils-2.41.inc
index b4934c0..804f092 100644
--- a/poky/meta/recipes-devtools/binutils/binutils-2.41.inc
+++ b/poky/meta/recipes-devtools/binutils/binutils-2.41.inc
@@ -18,7 +18,7 @@
 
 UPSTREAM_CHECK_GITTAGREGEX = "binutils-(?P<pver>\d+_(\d_?)*)"
 
-SRCREV ?= "cb4c3555ac4cf8aaf0935cb6e4b09e6882436d21"
+SRCREV ?= "c1321df4eb0a136304205085cd4913dd4eb01054"
 BINUTILS_GIT_URI ?= "git://sourceware.org/git/binutils-gdb.git;branch=${SRCBRANCH};protocol=https"
 SRC_URI = "\
      ${BINUTILS_GIT_URI} \
diff --git a/poky/meta/recipes-devtools/cmake/cmake-native_3.27.5.bb b/poky/meta/recipes-devtools/cmake/cmake-native_3.27.7.bb
similarity index 100%
rename from poky/meta/recipes-devtools/cmake/cmake-native_3.27.5.bb
rename to poky/meta/recipes-devtools/cmake/cmake-native_3.27.7.bb
diff --git a/poky/meta/recipes-devtools/cmake/cmake.inc b/poky/meta/recipes-devtools/cmake/cmake.inc
index ef4eec5..ecb0e48 100644
--- a/poky/meta/recipes-devtools/cmake/cmake.inc
+++ b/poky/meta/recipes-devtools/cmake/cmake.inc
@@ -19,7 +19,7 @@
 SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \
 "
 
-SRC_URI[sha256sum] = "5175e8fe1ca9b1dd09090130db7201968bcce1595971ff9e9998c2f0765004c9"
+SRC_URI[sha256sum] = "08f71a106036bf051f692760ef9558c0577c42ac39e96ba097e7662bd4158d8e"
 
 UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake b/poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
index d6a1e04..6434b27 100644
--- a/poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
+++ b/poky/meta/recipes-devtools/cmake/cmake/OEToolchainConfig.cmake
@@ -18,3 +18,6 @@
 foreach(config ${toolchain_config_files})
     include(${config})
 endforeach()
+
+unset(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES)
+unset(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES)
diff --git a/poky/meta/recipes-devtools/cmake/cmake_3.27.5.bb b/poky/meta/recipes-devtools/cmake/cmake_3.27.7.bb
similarity index 100%
rename from poky/meta/recipes-devtools/cmake/cmake_3.27.5.bb
rename to poky/meta/recipes-devtools/cmake/cmake_3.27.7.bb
diff --git a/poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb b/poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.27.bb
similarity index 76%
rename from poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb
rename to poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.27.bb
index f6d1146..55c88af 100644
--- a/poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.26.bb
+++ b/poky/meta/recipes-devtools/desktop-file-utils/desktop-file-utils_0.27.bb
@@ -8,18 +8,14 @@
                     file://src/validator.c;beginline=4;endline=27;md5=281e1114ee6c486a1a0a4295986b9416"
 
 SRC_URI = "http://freedesktop.org/software/${BPN}/releases/${BP}.tar.xz"
-SRC_URI[md5sum] = "29739e005f5887cf41639b8450f3c23f"
-SRC_URI[sha256sum] = "b26dbde79ea72c8c84fb7f9d870ffd857381d049a86d25e0038c4cef4c747309"
+SRC_URI[sha256sum] = "a0817df39ce385b6621880407c56f1f298168c040c2032cedf88d5b76affe836"
 
 DEPENDS = "glib-2.0"
 
-inherit autotools pkgconfig
-
-EXTRA_OECONF += "ac_cv_prog_EMACS=no"
+inherit meson pkgconfig
 
 BBCLASSEXTEND = "native nativesdk"
 
 do_install:append() {
         rm -rf ${D}${datadir}/emacs
 }
-
diff --git a/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.6.bb b/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.7.1.bb
similarity index 70%
rename from poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.6.bb
rename to poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.7.1.bb
index 5a89e4b..a23cb33 100644
--- a/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.6.bb
+++ b/poky/meta/recipes-devtools/erofs-utils/erofs-utils_1.7.1.bb
@@ -5,11 +5,8 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=73001d804ea1e3d84365f652242cca20"
 HOMEPAGE = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/tree/README"
 
-SRCREV = "21710612d35cd952490959bfa6ea9fe87aaa52dd"
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git;branch=master;protocol=https \
-           file://0001-erofs-utils-fsck-don-t-allocate-read-too-large-exten.patch \
-           file://0002-erofs-utils-fsck-block-insane-long-paths-when-extrac.patch \
-"
+SRCREV = "83d94dc619075e71ca4d0f42941cfc18d269a2af"
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git;branch=master;protocol=https"
 
 UPSTREAM_CHECK_GITTAGREGEX = "v(?P<pver>(\d+(\.\d+)+))"
 
@@ -19,8 +16,9 @@
 
 inherit pkgconfig autotools
 
-PACKAGECONFIG ??= "lz4"
+PACKAGECONFIG ??= "lz4 zlib"
 PACKAGECONFIG[lz4] = "--enable-lz4,--disable-lz4,lz4"
+PACKAGECONFIG[zlib] = "--with-zlib,--without-zlib,zlib"
 
 EXTRA_OECONF = "${PACKAGECONFIG_CONFARGS} --disable-fuse"
 
diff --git a/poky/meta/recipes-devtools/erofs-utils/files/0001-erofs-utils-fsck-don-t-allocate-read-too-large-exten.patch b/poky/meta/recipes-devtools/erofs-utils/files/0001-erofs-utils-fsck-don-t-allocate-read-too-large-exten.patch
deleted file mode 100644
index 52f475d..0000000
--- a/poky/meta/recipes-devtools/erofs-utils/files/0001-erofs-utils-fsck-don-t-allocate-read-too-large-exten.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From c769805c79d5acede65d96e5786aa5ebb46c01e0 Mon Sep 17 00:00:00 2001
-From: Gao Xiang <hsiangkao@linux.alibaba.com>
-Date: Fri, 2 Jun 2023 11:05:19 +0800
-Subject: [PATCH 1/2] erofs-utils: fsck: don't allocate/read too large extents
-
-Since some crafted EROFS filesystem images could have insane large
-extents, which causes unexpected bahaviors when extracting data.
-
-Fix it by extracting large extents with a buffer of a reasonable
-maximum size limit and reading multiple times instead.
-
-Note that only `--extract` option is impacted.
-
-CVE: CVE-2023-33552
-Closes: https://nvd.nist.gov/vuln/detail/CVE-2023-33552
-Reported-by: Chaoming Yang <lometsj@live.com>
-Fixes: 412c8f908132 ("erofs-utils: fsck: add --extract=X support to extract to path X")
-Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
-Link: https://lore.kernel.org/r/20230602030519.117071-1-hsiangkao@linux.alibaba.com
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
----
- fsck/main.c | 63 +++++++++++++++++++++++++++++++++++++++++------------
- 1 file changed, 49 insertions(+), 14 deletions(-)
-
-diff --git a/fsck/main.c b/fsck/main.c
-index 6b42252..6689ad8 100644
---- a/fsck/main.c
-+++ b/fsck/main.c
-@@ -392,6 +392,8 @@ static int erofs_verify_inode_data(struct erofs_inode *inode, int outfd)
- 	}
- 
- 	while (pos < inode->i_size) {
-+		unsigned int alloc_rawsize;
-+
- 		map.m_la = pos;
- 		if (compressed)
- 			ret = z_erofs_map_blocks_iter(inode, &map,
-@@ -420,10 +422,28 @@ static int erofs_verify_inode_data(struct erofs_inode *inode, int outfd)
- 		if (!(map.m_flags & EROFS_MAP_MAPPED) || !fsckcfg.check_decomp)
- 			continue;
- 
--		if (map.m_plen > raw_size) {
--			raw_size = map.m_plen;
--			raw = realloc(raw, raw_size);
--			BUG_ON(!raw);
-+		if (map.m_plen > Z_EROFS_PCLUSTER_MAX_SIZE) {
-+			if (compressed) {
-+				erofs_err("invalid pcluster size %" PRIu64 " @ offset %" PRIu64 " of nid %" PRIu64,
-+					  map.m_plen, map.m_la,
-+					  inode->nid | 0ULL);
-+				ret = -EFSCORRUPTED;
-+				goto out;
-+			}
-+			alloc_rawsize = Z_EROFS_PCLUSTER_MAX_SIZE;
-+		} else {
-+			alloc_rawsize = map.m_plen;
-+		}
-+
-+		if (alloc_rawsize > raw_size) {
-+			char *newraw = realloc(raw, alloc_rawsize);
-+
-+			if (!newraw) {
-+				ret = -ENOMEM;
-+				goto out;
-+			}
-+			raw = newraw;
-+			raw_size = alloc_rawsize;
- 		}
- 
- 		if (compressed) {
-@@ -434,18 +454,27 @@ static int erofs_verify_inode_data(struct erofs_inode *inode, int outfd)
- 			}
- 			ret = z_erofs_read_one_data(inode, &map, raw, buffer,
- 						    0, map.m_llen, false);
-+			if (ret)
-+				goto out;
-+
-+			if (outfd >= 0 && write(outfd, buffer, map.m_llen) < 0)
-+				goto fail_eio;
- 		} else {
--			ret = erofs_read_one_data(&map, raw, 0, map.m_plen);
--		}
--		if (ret)
--			goto out;
-+			u64 p = 0;
- 
--		if (outfd >= 0 && write(outfd, compressed ? buffer : raw,
--					map.m_llen) < 0) {
--			erofs_err("I/O error occurred when verifying data chunk @ nid %llu",
--				  inode->nid | 0ULL);
--			ret = -EIO;
--			goto out;
-+			do {
-+				u64 count = min_t(u64, alloc_rawsize,
-+						  map.m_llen);
-+
-+				ret = erofs_read_one_data(&map, raw, p, count);
-+				if (ret)
-+					goto out;
-+
-+				if (outfd >= 0 && write(outfd, raw, count) < 0)
-+					goto fail_eio;
-+				map.m_llen -= count;
-+				p += count;
-+			} while (map.m_llen);
- 		}
- 	}
- 
-@@ -460,6 +489,12 @@ out:
- 	if (buffer)
- 		free(buffer);
- 	return ret < 0 ? ret : 0;
-+
-+fail_eio:
-+	erofs_err("I/O error occurred when verifying data chunk @ nid %llu",
-+		  inode->nid | 0ULL);
-+	ret = -EIO;
-+	goto out;
- }
- 
- static inline int erofs_extract_dir(struct erofs_inode *inode)
--- 
-2.34.1
-
diff --git a/poky/meta/recipes-devtools/erofs-utils/files/0002-erofs-utils-fsck-block-insane-long-paths-when-extrac.patch b/poky/meta/recipes-devtools/erofs-utils/files/0002-erofs-utils-fsck-block-insane-long-paths-when-extrac.patch
deleted file mode 100644
index f2f1e34..0000000
--- a/poky/meta/recipes-devtools/erofs-utils/files/0002-erofs-utils-fsck-block-insane-long-paths-when-extrac.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 6cebfbb79b1d5d8feb48801e1008eea5bfa8b599 Mon Sep 17 00:00:00 2001
-From: Gao Xiang <hsiangkao@linux.alibaba.com>
-Date: Fri, 2 Jun 2023 13:52:56 +0800
-Subject: [PATCH 2/2] erofs-utils: fsck: block insane long paths when
- extracting images
-
-Since some crafted EROFS filesystem images could have insane deep
-hierarchy (or may form directory loops) which triggers the
-PATH_MAX-sized path buffer OR stack overflow.
-
-Actually some crafted images cannot be deemed as real corrupted
-images but over-PATH_MAX paths are not something that we'd like to
-support for now.
-
-CVE: CVE-2023-33551
-Closes: https://nvd.nist.gov/vuln/detail/CVE-2023-33551
-Reported-by: Chaoming Yang <lometsj@live.com>
-Fixes: f44043561491 ("erofs-utils: introduce fsck.erofs")
-Fixes: b11f84f593f9 ("erofs-utils: fsck: convert to use erofs_iterate_dir()")
-Fixes: 412c8f908132 ("erofs-utils: fsck: add --extract=X support to extract to path X")
-Signeo-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
-Link: https://lore.kernel.org/r/20230602055256.18061-1-hsiangkao@linux.alibaba.com
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
----
- fsck/main.c | 23 +++++++++++++++--------
- 1 file changed, 15 insertions(+), 8 deletions(-)
-
-diff --git a/fsck/main.c b/fsck/main.c
-index 6689ad8..28d95ec 100644
---- a/fsck/main.c
-+++ b/fsck/main.c
-@@ -680,28 +680,35 @@ again:
- static int erofsfsck_dirent_iter(struct erofs_dir_context *ctx)
- {
- 	int ret;
--	size_t prev_pos = fsckcfg.extract_pos;
-+	size_t prev_pos, curr_pos;
- 
- 	if (ctx->dot_dotdot)
- 		return 0;
- 
--	if (fsckcfg.extract_path) {
--		size_t curr_pos = prev_pos;
-+	prev_pos = fsckcfg.extract_pos;
-+	curr_pos = prev_pos;
-+
-+	if (prev_pos + ctx->de_namelen >= PATH_MAX) {
-+		erofs_err("unable to fsck since the path is too long (%u)",
-+			  curr_pos + ctx->de_namelen);
-+		return -EOPNOTSUPP;
-+	}
- 
-+	if (fsckcfg.extract_path) {
- 		fsckcfg.extract_path[curr_pos++] = '/';
- 		strncpy(fsckcfg.extract_path + curr_pos, ctx->dname,
- 			ctx->de_namelen);
- 		curr_pos += ctx->de_namelen;
- 		fsckcfg.extract_path[curr_pos] = '\0';
--		fsckcfg.extract_pos = curr_pos;
-+	} else {
-+		curr_pos += ctx->de_namelen;
- 	}
--
-+	fsckcfg.extract_pos = curr_pos;
- 	ret = erofsfsck_check_inode(ctx->dir->nid, ctx->de_nid);
- 
--	if (fsckcfg.extract_path) {
-+	if (fsckcfg.extract_path)
- 		fsckcfg.extract_path[prev_pos] = '\0';
--		fsckcfg.extract_pos = prev_pos;
--	}
-+	fsckcfg.extract_pos = prev_pos;
- 	return ret;
- }
- 
--- 
-2.34.1
-
diff --git a/poky/meta/recipes-devtools/git/git_2.42.1.bb b/poky/meta/recipes-devtools/git/git_2.43.0.bb
similarity index 97%
rename from poky/meta/recipes-devtools/git/git_2.42.1.bb
rename to poky/meta/recipes-devtools/git/git_2.43.0.bb
index 33269d3..f913290 100644
--- a/poky/meta/recipes-devtools/git/git_2.42.1.bb
+++ b/poky/meta/recipes-devtools/git/git_2.43.0.bb
@@ -160,4 +160,4 @@
                  "
 EXTRA_OEMAKE += "NO_GETTEXT=1"
 
-SRC_URI[tarball.sha256sum] = "839d75c91ddfa9f7534f7b0888e462e3ad1422bb8ef12ec35f6261cea18efe33"
+SRC_URI[tarball.sha256sum] = "ed238f5c72a014f238cc49fe7df4c6883732a3881111b381c105e2c5be77302f"
diff --git a/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb b/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb
index 2a0e6f8..718f798 100644
--- a/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb
+++ b/poky/meta/recipes-devtools/gnu-config/gnu-config_git.bb
@@ -9,8 +9,8 @@
 
 INHIBIT_DEFAULT_DEPS = "1"
 
-SRCREV = "63acb96f92473ceb5e21d873d7c0aee266b3d6d3"
-PV = "20230216+git"
+SRCREV = "28ea239c53a2d5d8800c472bc2452eaa16e37af2"
+PV = "20231127+git"
 
 SRC_URI = "git://git.savannah.gnu.org/git/config.git;protocol=https;branch=master \
            file://gnu-configize.in"
diff --git a/poky/meta/recipes-devtools/json-c/json-c_0.17.bb b/poky/meta/recipes-devtools/json-c/json-c_0.17.bb
index f4b7a32..20bcece 100644
--- a/poky/meta/recipes-devtools/json-c/json-c_0.17.bb
+++ b/poky/meta/recipes-devtools/json-c/json-c_0.17.bb
@@ -17,6 +17,9 @@
 
 RPROVIDES:${PN} = "libjson"
 
+# Required for ICECC builds
+EXTRA_OECMAKE = "-DDISABLE_WERROR=ON"
+
 inherit cmake ptest
 
 do_install_ptest() {
diff --git a/poky/meta/recipes-devtools/llvm/llvm_git.bb b/poky/meta/recipes-devtools/llvm/llvm_git.bb
index de8d411..9a88549 100644
--- a/poky/meta/recipes-devtools/llvm/llvm_git.bb
+++ b/poky/meta/recipes-devtools/llvm/llvm_git.bb
@@ -14,14 +14,14 @@
 
 inherit cmake pkgconfig
 
-PV = "17.0.5"
+PV = "17.0.6"
 
 MAJOR_VERSION = "${@oe.utils.trim_version("${PV}", 1)}"
 
 LLVM_RELEASE = "${PV}"
 
 BRANCH = "release/${MAJOR_VERSION}.x"
-SRCREV = "98bfdac5ce82d1679f8af9a57501471812ab68d7"
+SRCREV = "6009708b4367171ccdbf4b5905cb6a803753fe18"
 SRC_URI = "git://github.com/llvm/llvm-project.git;branch=${BRANCH};protocol=https \
            file://0007-llvm-allow-env-override-of-exe-path.patch;striplevel=2 \
            file://0001-AsmMatcherEmitter-sort-ClassInfo-lists-by-name-as-we.patch;striplevel=2 \
diff --git a/poky/meta/recipes-devtools/log4cplus/log4cplus_2.1.0.bb b/poky/meta/recipes-devtools/log4cplus/log4cplus_2.1.1.bb
similarity index 90%
rename from poky/meta/recipes-devtools/log4cplus/log4cplus_2.1.0.bb
rename to poky/meta/recipes-devtools/log4cplus/log4cplus_2.1.1.bb
index e0c16d2..be3c787 100644
--- a/poky/meta/recipes-devtools/log4cplus/log4cplus_2.1.0.bb
+++ b/poky/meta/recipes-devtools/log4cplus/log4cplus_2.1.1.bb
@@ -9,7 +9,7 @@
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/project/${BPN}/${BPN}-stable/${PV}/${BP}.tar.gz \
           "
-SRC_URI[sha256sum] = "2a8eb99d71b0680c0520c7c16248cdb4195da82f396b79fea30b0d9e289c8c72"
+SRC_URI[sha256sum] = "42dc435928917fd2f847046c4a0c6086b2af23664d198c7fc1b982c0bfe600c1"
 
 UPSTREAM_CHECK_URI = "https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/"
 UPSTREAM_CHECK_REGEX = "log4cplus-stable/(?P<pver>\d+(\.\d+)+)/"
diff --git a/poky/meta/recipes-devtools/meson/meson_1.2.2.bb b/poky/meta/recipes-devtools/meson/meson_1.3.0.bb
similarity index 98%
rename from poky/meta/recipes-devtools/meson/meson_1.2.2.bb
rename to poky/meta/recipes-devtools/meson/meson_1.3.0.bb
index c38d88f..e794bb2 100644
--- a/poky/meta/recipes-devtools/meson/meson_1.2.2.bb
+++ b/poky/meta/recipes-devtools/meson/meson_1.3.0.bb
@@ -15,7 +15,7 @@
            file://0001-Make-CPU-family-warnings-fatal.patch \
            file://0002-Support-building-allarch-recipes-again.patch \
            "
-SRC_URI[sha256sum] = "4a0f04de331fbc7af3b802a844fc8838f4ccd1ded1e792ba4f8f2faf8c5fe4d6"
+SRC_URI[sha256sum] = "4ba253ef60e454e23234696119cbafa082a0aead0bd3bbf6991295054795f5dc"
 
 inherit python_setuptools_build_meta github-releases
 
diff --git a/poky/meta/recipes-devtools/python/python-pyasn1.inc b/poky/meta/recipes-devtools/python/python-pyasn1.inc
index 9eb8735..52fd985 100644
--- a/poky/meta/recipes-devtools/python/python-pyasn1.inc
+++ b/poky/meta/recipes-devtools/python/python-pyasn1.inc
@@ -3,7 +3,7 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=190f79253908c986e6cacf380c3a5f6d"
 
-SRC_URI[sha256sum] = "97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde"
+SRC_URI[sha256sum] = "6d391a96e59b23130a5cfa74d6fd7f388dbbe26cc8f1edf39fdddf08d9d6676c"
 
 RDEPENDS:${PN}:class-target += " \
     ${PYTHON_PN}-codecs \
diff --git a/poky/meta/recipes-devtools/python/python3-certifi_2023.7.22.bb b/poky/meta/recipes-devtools/python/python3-certifi_2023.11.17.bb
similarity index 75%
rename from poky/meta/recipes-devtools/python/python3-certifi_2023.7.22.bb
rename to poky/meta/recipes-devtools/python/python3-certifi_2023.11.17.bb
index c4e1e7b..daed712 100644
--- a/poky/meta/recipes-devtools/python/python3-certifi_2023.7.22.bb
+++ b/poky/meta/recipes-devtools/python/python3-certifi_2023.11.17.bb
@@ -5,9 +5,9 @@
 HOMEPAGE = " http://certifi.io/"
 
 LICENSE = "ISC"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3c2b7404369c587c3559afb604fce2f2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=11618cb6a975948679286b1211bd573c"
 
-SRC_URI[sha256sum] = "539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"
+SRC_URI[sha256sum] = "9b469f3a900bf28dc19b8cfbf8019bf47f7fdd1a65a1d4ffb98fc14166beb4d1"
 
 inherit pypi setuptools3
 
diff --git a/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc b/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc
index da0a3f2..3a5edaa 100644
--- a/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc
+++ b/poky/meta/recipes-devtools/python/python3-cryptography-crates.inc
@@ -9,6 +9,7 @@
     crate://crates.io/autocfg/1.1.0 \
     crate://crates.io/base64/0.13.1 \
     crate://crates.io/bitflags/1.3.2 \
+    crate://crates.io/bitflags/2.4.1 \
     crate://crates.io/cc/1.0.79 \
     crate://crates.io/cfg-if/1.0.0 \
     crate://crates.io/foreign-types/0.3.2 \
@@ -18,9 +19,9 @@
     crate://crates.io/lock_api/0.4.9 \
     crate://crates.io/memoffset/0.8.0 \
     crate://crates.io/once_cell/1.17.2 \
-    crate://crates.io/openssl/0.10.54 \
+    crate://crates.io/openssl/0.10.60 \
     crate://crates.io/openssl-macros/0.1.1 \
-    crate://crates.io/openssl-sys/0.9.88 \
+    crate://crates.io/openssl-sys/0.9.96 \
     crate://crates.io/ouroboros/0.15.6 \
     crate://crates.io/ouroboros_macro/0.15.6 \
     crate://crates.io/parking_lot/0.12.1 \
@@ -64,6 +65,7 @@
 SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
 SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
 SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.4.1.sha256sum] = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
 SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
 SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 SRC_URI[foreign-types-0.3.2.sha256sum] = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
@@ -73,9 +75,9 @@
 SRC_URI[lock_api-0.4.9.sha256sum] = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"
 SRC_URI[memoffset-0.8.0.sha256sum] = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
 SRC_URI[once_cell-1.17.2.sha256sum] = "9670a07f94779e00908f3e686eab508878ebb390ba6e604d3a284c00e8d0487b"
-SRC_URI[openssl-0.10.54.sha256sum] = "69b3f656a17a6cbc115b5c7a40c616947d213ba182135b014d6051b73ab6f019"
+SRC_URI[openssl-0.10.60.sha256sum] = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800"
 SRC_URI[openssl-macros-0.1.1.sha256sum] = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-SRC_URI[openssl-sys-0.9.88.sha256sum] = "c2ce0f250f34a308dcfdbb351f511359857d4ed2134ba715a4eadd46e1ffd617"
+SRC_URI[openssl-sys-0.9.96.sha256sum] = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f"
 SRC_URI[ouroboros-0.15.6.sha256sum] = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db"
 SRC_URI[ouroboros_macro-0.15.6.sha256sum] = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7"
 SRC_URI[parking_lot-0.12.1.sha256sum] = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
diff --git a/poky/meta/recipes-devtools/python/python3-cryptography-vectors_41.0.5.bb b/poky/meta/recipes-devtools/python/python3-cryptography-vectors_41.0.7.bb
similarity index 83%
rename from poky/meta/recipes-devtools/python/python3-cryptography-vectors_41.0.5.bb
rename to poky/meta/recipes-devtools/python/python3-cryptography-vectors_41.0.7.bb
index 44c67fd..eda492d 100644
--- a/poky/meta/recipes-devtools/python/python3-cryptography-vectors_41.0.5.bb
+++ b/poky/meta/recipes-devtools/python/python3-cryptography-vectors_41.0.7.bb
@@ -9,7 +9,7 @@
 # NOTE: Make sure to keep this recipe at the same version as python3-cryptography
 #       Upgrade both recipes at the same time
 
-SRC_URI[sha256sum] = "75e82aea2982729312af735adb2983f347bb21fff88ad5dda3673ed70e1d1caf"
+SRC_URI[sha256sum] = "7b36f976b6e58cc1801310e1c93c584c6539d371da7f8538edd8fc463dc80d5b"
 
 PYPI_PACKAGE = "cryptography_vectors"
 
@@ -27,3 +27,5 @@
 BBCLASSEXTEND = "native nativesdk"
 
 UPSTREAM_CHECK_REGEX = ""
+
+RECIPE_NO_UPDATE_REASON = "Must be updated in sync with python3-cryptography."
diff --git a/poky/meta/recipes-devtools/python/python3-cryptography_41.0.5.bb b/poky/meta/recipes-devtools/python/python3-cryptography_41.0.7.bb
similarity index 95%
rename from poky/meta/recipes-devtools/python/python3-cryptography_41.0.5.bb
rename to poky/meta/recipes-devtools/python/python3-cryptography_41.0.7.bb
index 17b08f0..4585677 100644
--- a/poky/meta/recipes-devtools/python/python3-cryptography_41.0.5.bb
+++ b/poky/meta/recipes-devtools/python/python3-cryptography_41.0.7.bb
@@ -8,7 +8,7 @@
                    "
 LDSHARED += "-pthread"
 
-SRC_URI[sha256sum] = "392cb88b597247177172e02da6b7a63deeff1937fa6fec3bbf902ebd75d97ec7"
+SRC_URI[sha256sum] = "13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc"
 
 SRC_URI += "file://0001-pyproject.toml-remove-benchmark-disable-option.patch \
             file://0001-Fix-include-directory-when-cross-compiling-9129.patch \
diff --git a/poky/meta/recipes-devtools/python/python3-hypothesis_6.89.0.bb b/poky/meta/recipes-devtools/python/python3-hypothesis_6.90.0.bb
similarity index 91%
rename from poky/meta/recipes-devtools/python/python3-hypothesis_6.89.0.bb
rename to poky/meta/recipes-devtools/python/python3-hypothesis_6.90.0.bb
index 035809c..1760bb3 100644
--- a/poky/meta/recipes-devtools/python/python3-hypothesis_6.89.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-hypothesis_6.90.0.bb
@@ -13,7 +13,7 @@
     file://test_rle.py \
     "
 
-SRC_URI[sha256sum] = "9168bb12cd29001067e66b5f25f1bbdeff08b80c29c3909e19fc8205d8b9aeed"
+SRC_URI[sha256sum] = "0ab33900b9362318bd03d911a77a0dda8629c1877420074d87ae466919f6e4c0"
 
 RDEPENDS:${PN} += " \
     python3-attrs \
diff --git a/poky/meta/recipes-devtools/python/python3-idna_3.4.bb b/poky/meta/recipes-devtools/python/python3-idna_3.6.bb
similarity index 63%
rename from poky/meta/recipes-devtools/python/python3-idna_3.4.bb
rename to poky/meta/recipes-devtools/python/python3-idna_3.6.bb
index 41a666f..228dce6 100644
--- a/poky/meta/recipes-devtools/python/python3-idna_3.4.bb
+++ b/poky/meta/recipes-devtools/python/python3-idna_3.6.bb
@@ -1,9 +1,9 @@
 SUMMARY = "Internationalised Domain Names in Applications"
 HOMEPAGE = "https://github.com/kjd/idna"
 LICENSE = "BSD-3-Clause & Python-2.0 & Unicode-TOU"
-LIC_FILES_CHKSUM = "file://LICENSE.md;md5=239668a7c6066d9e0c5382e9c8c6c0e1"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=dbec47b98e1469f6a104c82ff9698cee"
 
-SRC_URI[sha256sum] = "814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"
+SRC_URI[sha256sum] = "9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"
 
 inherit pypi python_flit_core
 
diff --git a/poky/meta/recipes-devtools/python/python3-pyasn1_0.5.0.bb b/poky/meta/recipes-devtools/python/python3-pyasn1_0.5.1.bb
similarity index 100%
rename from poky/meta/recipes-devtools/python/python3-pyasn1_0.5.0.bb
rename to poky/meta/recipes-devtools/python/python3-pyasn1_0.5.1.bb
diff --git a/poky/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb b/poky/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb
index c3f1fb7..9d08e7a 100644
--- a/poky/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-pyproject-hooks_1.0.0.bb
@@ -22,3 +22,5 @@
 do_compile:class-native () {
     python_flit_core_do_manual_build
 }
+
+UPSTREAM_CHECK_PYPI_PACKAGE = "${PYPI_PACKAGE}"
diff --git a/poky/meta/recipes-devtools/python/python3-scons_4.5.2.bb b/poky/meta/recipes-devtools/python/python3-scons_4.6.0.bb
similarity index 90%
rename from poky/meta/recipes-devtools/python/python3-scons_4.5.2.bb
rename to poky/meta/recipes-devtools/python/python3-scons_4.6.0.bb
index e0173a3..c3cc3f0 100644
--- a/poky/meta/recipes-devtools/python/python3-scons_4.5.2.bb
+++ b/poky/meta/recipes-devtools/python/python3-scons_4.6.0.bb
@@ -5,7 +5,7 @@
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d903b0b8027f461402bac9b5169b36f7"
 
 SRC_URI += " file://0001-Fix-man-page-installation.patch"
-SRC_URI[sha256sum] = "813360b2bce476bc9cc12a0f3a22d46ce520796b352557202cb07d3e402f5458"
+SRC_URI[sha256sum] = "7db28958b188b800f803c287d0680cc3ac7c422ed0b1cf9895042c52567803ec"
 
 PYPI_PACKAGE = "SCons"
 
diff --git a/poky/meta/recipes-devtools/python/python3-setuptools_68.2.2.bb b/poky/meta/recipes-devtools/python/python3-setuptools_69.0.2.bb
similarity index 94%
rename from poky/meta/recipes-devtools/python/python3-setuptools_68.2.2.bb
rename to poky/meta/recipes-devtools/python/python3-setuptools_69.0.2.bb
index 06957d7..8093ab9 100644
--- a/poky/meta/recipes-devtools/python/python3-setuptools_68.2.2.bb
+++ b/poky/meta/recipes-devtools/python/python3-setuptools_69.0.2.bb
@@ -11,7 +11,7 @@
 SRC_URI += " \
             file://0001-_distutils-sysconfig.py-make-it-possible-to-substite.patch"
 
-SRC_URI[sha256sum] = "4ac1475276d2f1c48684874089fefcd83bd7162ddaafb81fac866ba0db282a87"
+SRC_URI[sha256sum] = "735896e78a4742605974de002ac60562d286fa8051a7e2299445e8e8fbb01aa6"
 
 DEPENDS += "${PYTHON_PN}"
 
diff --git a/poky/meta/recipes-devtools/python/python3-sphinx-rtd-theme_1.3.0.bb b/poky/meta/recipes-devtools/python/python3-sphinx-rtd-theme_2.0.0.bb
similarity index 88%
rename from poky/meta/recipes-devtools/python/python3-sphinx-rtd-theme_1.3.0.bb
rename to poky/meta/recipes-devtools/python/python3-sphinx-rtd-theme_2.0.0.bb
index 83bf705..46b46bf 100644
--- a/poky/meta/recipes-devtools/python/python3-sphinx-rtd-theme_1.3.0.bb
+++ b/poky/meta/recipes-devtools/python/python3-sphinx-rtd-theme_2.0.0.bb
@@ -13,7 +13,7 @@
 
 PYPI_PACKAGE = "sphinx_rtd_theme"
 
-SRC_URI[sha256sum] = "590b030c7abb9cf038ec053b95e5380b5c70d61591eb0b552063fbe7c41f0931"
+SRC_URI[sha256sum] = "bd5d7b80622406762073a04ef8fadc5f9151261563d47027de09910ce03afe6b"
 UPSTREAM_CHECK_REGEX ?= "/sphinx-rtd-theme/(?P<pver>(\d+[\.\-_]*)+)/"
 
 inherit setuptools3 pypi
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.4.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.4.bb
deleted file mode 100644
index e352601..0000000
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.4.bb
+++ /dev/null
@@ -1,10 +0,0 @@
-SUMMARY = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
-HOMEPAGE = "https://www.sphinx-doc.org"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c7715857042d4c8c0105999ca0c072c5"
-
-SRC_URI[sha256sum] = "828f867945bbe39817c210a1abfd1bc4895c8b73fcaade56d45357a348a07d7e"
-
-inherit pypi python_setuptools_build_meta
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.7.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.7.bb
new file mode 100644
index 0000000..ec36706
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-applehelp_1.0.7.bb
@@ -0,0 +1,13 @@
+SUMMARY = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books"
+HOMEPAGE = "https://www.sphinx-doc.org"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c7715857042d4c8c0105999ca0c072c5"
+
+SRC_URI[sha256sum] = "39fdc8d762d33b01a7d8f026a3b7d71563ea3b72787d5f00ad8465bd9d6dfbfa"
+
+inherit pypi python_flit_core
+
+PYPI_ARCHIVE_NAME = "sphinxcontrib_applehelp-${PV}.${PYPI_PACKAGE_EXT}"
+S = "${WORKDIR}/sphinxcontrib_applehelp-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.2.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.2.bb
deleted file mode 100644
index 0d03436..0000000
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.2.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
-HOMEPAGE = "https://www.sphinx-doc.org"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fd30d9972a142c857a80c9f312e92b93"
-
-SRC_URI[sha256sum] = "ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"
-
-PYPI_PACKAGE = "sphinxcontrib-devhelp"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.5.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.5.bb
new file mode 100644
index 0000000..47934bd
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-devhelp_1.0.5.bb
@@ -0,0 +1,15 @@
+SUMMARY = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document."
+HOMEPAGE = "https://www.sphinx-doc.org"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=fd30d9972a142c857a80c9f312e92b93"
+
+SRC_URI[sha256sum] = "63b41e0d38207ca40ebbeabcf4d8e51f76c03e78cd61abe118cf4435c73d4212"
+
+PYPI_PACKAGE = "sphinxcontrib-devhelp"
+
+inherit pypi python_flit_core
+
+PYPI_ARCHIVE_NAME = "sphinxcontrib_devhelp-${PV}.${PYPI_PACKAGE_EXT}"
+S = "${WORKDIR}/sphinxcontrib_devhelp-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.1.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.1.bb
deleted file mode 100644
index bf034fb..0000000
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
-HOMEPAGE = "https://www.sphinx-doc.org"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=24dce5ef6a13563241c24bc366f48886"
-
-SRC_URI[sha256sum] = "0cbdd302815330058422b98a113195c9249825d681e18f11e8b1f78a2f11efff"
-
-PYPI_PACKAGE = "sphinxcontrib-htmlhelp"
-
-inherit pypi python_setuptools_build_meta
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.4.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.4.bb
new file mode 100644
index 0000000..a0a4b44
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-htmlhelp_2.0.4.bb
@@ -0,0 +1,15 @@
+SUMMARY = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files"
+HOMEPAGE = "https://www.sphinx-doc.org"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=24dce5ef6a13563241c24bc366f48886"
+
+SRC_URI[sha256sum] = "6c26a118a05b76000738429b724a0568dbde5b72391a688577da08f11891092a"
+
+PYPI_PACKAGE = "sphinxcontrib-htmlhelp"
+
+inherit pypi python_flit_core
+
+PYPI_ARCHIVE_NAME = "sphinxcontrib_htmlhelp-${PV}.${PYPI_PACKAGE_EXT}"
+S = "${WORKDIR}/sphinxcontrib_htmlhelp-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.3.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.3.bb
deleted file mode 100644
index 41d2b61..0000000
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.3.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = "Is a sphinx extension which outputs QtHelp document."
-HOMEPAGE = "http://babel.edgewall.org/"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=f7a83b72ea86d04827575ec0b63430eb"
-
-SRC_URI[sha256sum] = "4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"
-
-PYPI_PACKAGE = "sphinxcontrib-qthelp"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.6.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.6.bb
new file mode 100644
index 0000000..3538b06
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-qthelp_1.0.6.bb
@@ -0,0 +1,15 @@
+SUMMARY = "Is a sphinx extension which outputs QtHelp document."
+HOMEPAGE = "http://babel.edgewall.org/"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f7a83b72ea86d04827575ec0b63430eb"
+
+SRC_URI[sha256sum] = "62b9d1a186ab7f5ee3356d906f648cacb7a6bdb94d201ee7adf26db55092982d"
+
+PYPI_PACKAGE = "sphinxcontrib-qthelp"
+
+inherit pypi python_flit_core
+
+PYPI_ARCHIVE_NAME = "sphinxcontrib_qthelp-${PV}.${PYPI_PACKAGE_EXT}"
+S = "${WORKDIR}/sphinxcontrib_qthelp-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.5.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.5.bb
deleted file mode 100644
index 7fa6d8a..0000000
--- a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.5.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-SUMMARY = 'sphinxcontrib-serializinghtml is a sphinx extension which outputs "serialized" HTML files (json and pickle).'
-HOMEPAGE = "https://www.sphinx-doc.org"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=32a84ac5cd3bbd10c4d479233ad588b6"
-
-SRC_URI[sha256sum] = "aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"
-
-PYPI_PACKAGE = "sphinxcontrib-serializinghtml"
-
-inherit pypi setuptools3
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.9.bb b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.9.bb
new file mode 100644
index 0000000..fbf0c3c
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3-sphinxcontrib-serializinghtml_1.1.9.bb
@@ -0,0 +1,15 @@
+SUMMARY = 'sphinxcontrib-serializinghtml is a sphinx extension which outputs "serialized" HTML files (json and pickle).'
+HOMEPAGE = "https://www.sphinx-doc.org"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=32a84ac5cd3bbd10c4d479233ad588b6"
+
+SRC_URI[sha256sum] = "0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54"
+
+PYPI_PACKAGE = "sphinxcontrib-serializinghtml"
+
+inherit pypi python_flit_core
+
+PYPI_ARCHIVE_NAME = "sphinxcontrib_serializinghtml-${PV}.${PYPI_PACKAGE_EXT}"
+S = "${WORKDIR}/sphinxcontrib_serializinghtml-${PV}"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-devtools/python/python3-trove-classifiers_2023.11.14.bb b/poky/meta/recipes-devtools/python/python3-trove-classifiers_2023.11.22.bb
similarity index 86%
rename from poky/meta/recipes-devtools/python/python3-trove-classifiers_2023.11.14.bb
rename to poky/meta/recipes-devtools/python/python3-trove-classifiers_2023.11.22.bb
index a6c7e95..44a6f5d 100644
--- a/poky/meta/recipes-devtools/python/python3-trove-classifiers_2023.11.14.bb
+++ b/poky/meta/recipes-devtools/python/python3-trove-classifiers_2023.11.22.bb
@@ -3,7 +3,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRC_URI[sha256sum] = "64b5e78305a5de347f2cd7ec8c12d704a3ef0cb85cc10c0ca5f73488d1c201f8"
+SRC_URI[sha256sum] = "c31a7e92f965f060a244b57d8ed5ee6f53fcb413ee17ce790e00577cb369ad99"
 
 inherit pypi python_setuptools_build_meta ptest
 
diff --git a/poky/meta/recipes-devtools/python/python3-urllib3_2.0.7.bb b/poky/meta/recipes-devtools/python/python3-urllib3_2.1.0.bb
similarity index 87%
rename from poky/meta/recipes-devtools/python/python3-urllib3_2.0.7.bb
rename to poky/meta/recipes-devtools/python/python3-urllib3_2.1.0.bb
index c286838..b5b37e2 100644
--- a/poky/meta/recipes-devtools/python/python3-urllib3_2.0.7.bb
+++ b/poky/meta/recipes-devtools/python/python3-urllib3_2.1.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=52d273a3054ced561275d4d15260ecda"
 
-SRC_URI[sha256sum] = "c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"
+SRC_URI[sha256sum] = "df7aa8afb0148fa78488e7899b2c59b5f4ffcfa82e6c54ccb9dd37c1d7b52d54"
 
 inherit pypi python_hatchling
 
diff --git a/poky/meta/recipes-devtools/python/python3-wcwidth_0.2.9.bb b/poky/meta/recipes-devtools/python/python3-wcwidth_0.2.11.bb
similarity index 87%
rename from poky/meta/recipes-devtools/python/python3-wcwidth_0.2.9.bb
rename to poky/meta/recipes-devtools/python/python3-wcwidth_0.2.11.bb
index 983852d..c4db61e 100644
--- a/poky/meta/recipes-devtools/python/python3-wcwidth_0.2.9.bb
+++ b/poky/meta/recipes-devtools/python/python3-wcwidth_0.2.11.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=b15979c39a2543892fca8cd86b4b52cb"
 
-SRC_URI[sha256sum] = "a675d1a4a2d24ef67096a04b85b02deeecd8e226f57b5e3a72dbb9ed99d27da8"
+SRC_URI[sha256sum] = "25eb3ecbec328cdb945f56f2a7cfe784bdf7a73a8197398c7a7c65e7fe93e9ae"
 
 inherit pypi setuptools3 ptest
 
diff --git a/poky/meta/recipes-devtools/python/python3-wheel_0.41.3.bb b/poky/meta/recipes-devtools/python/python3-wheel_0.42.0.bb
similarity index 85%
rename from poky/meta/recipes-devtools/python/python3-wheel_0.41.3.bb
rename to poky/meta/recipes-devtools/python/python3-wheel_0.42.0.bb
index bdba98b..807888e 100644
--- a/poky/meta/recipes-devtools/python/python3-wheel_0.41.3.bb
+++ b/poky/meta/recipes-devtools/python/python3-wheel_0.42.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=7ffb0db04527cfe380e4f2726bd05ebf"
 
-SRC_URI[sha256sum] = "4d4987ce51a49370ea65c0bfd2234e8ce80a12780820d9dc462597a6e60d0841"
+SRC_URI[sha256sum] = "c45be39f7882c9d34243236f2d63cbd58039e360f85d0913425fbd7ceea617a8"
 
 inherit python_flit_core pypi
 
diff --git a/poky/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch b/poky/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
new file mode 100644
index 0000000..199031d
--- /dev/null
+++ b/poky/meta/recipes-devtools/python/python3/0001-test_storlines-skip-due-to-load-variability.patch
@@ -0,0 +1,32 @@
+From 013ff01fdf2aa6ca69a7c80a2a2996630877e4ea Mon Sep 17 00:00:00 2001
+From: Trevor Gamblin <tgamblin@baylibre.com>
+Date: Fri, 6 Oct 2023 10:59:44 -0400
+Subject: [PATCH] test_storlines: skip due to load variability
+
+This is yet another test that intermittently fails on the Yocto AB when
+a worker is under heavy load, so skip it during testing.
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+[YOCTO #14933]
+
+Signed-off-by: Trevor Gamblin <tgamblin@baylibre.com>
+---
+ Lib/test/test_ftplib.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Lib/test/test_ftplib.py b/Lib/test/test_ftplib.py
+index 082a90d46b..508814d56a 100644
+--- a/Lib/test/test_ftplib.py
++++ b/Lib/test/test_ftplib.py
+@@ -629,6 +629,7 @@ def test_storbinary_rest(self):
+             self.client.storbinary('stor', f, rest=r)
+             self.assertEqual(self.server.handler_instance.rest, str(r))
+ 
++    @unittest.skip('timing related test, dependent on load')
+     def test_storlines(self):
+         data = RETR_DATA.replace('\r\n', '\n').encode(self.client.encoding)
+         f = io.BytesIO(data)
+-- 
+2.41.0
+
diff --git a/poky/meta/recipes-devtools/python/python3_3.11.5.bb b/poky/meta/recipes-devtools/python/python3_3.11.5.bb
index 8e023c7..d375de4 100644
--- a/poky/meta/recipes-devtools/python/python3_3.11.5.bb
+++ b/poky/meta/recipes-devtools/python/python3_3.11.5.bb
@@ -33,6 +33,7 @@
            file://0001-Avoid-shebang-overflow-on-python-config.py.patch \
            file://0001-Update-test_sysconfig-for-posix_user-purelib.patch \
            file://0001-skip-no_stdout_fileno-test-due-to-load-variability.patch \
+           file://0001-test_storlines-skip-due-to-load-variability.patch \
            "
 
 SRC_URI:append:class-native = " \
diff --git a/poky/meta/recipes-devtools/repo/repo/0001-python3-shebang.patch b/poky/meta/recipes-devtools/repo/repo/0001-python3-shebang.patch
index d3888c8..fba89a3 100644
--- a/poky/meta/recipes-devtools/repo/repo/0001-python3-shebang.patch
+++ b/poky/meta/recipes-devtools/repo/repo/0001-python3-shebang.patch
@@ -19,8 +19,8 @@
 @@ -1,4 +1,4 @@
 -#!/usr/bin/env python
 +#!/usr/bin/env python3
- # -*- coding:utf-8 -*-
  #
  # Copyright (C) 2008 The Android Open Source Project
+ #
 --
 2.33.0
diff --git a/poky/meta/recipes-devtools/repo/repo_2.37.bb b/poky/meta/recipes-devtools/repo/repo_2.39.bb
similarity index 94%
rename from poky/meta/recipes-devtools/repo/repo_2.37.bb
rename to poky/meta/recipes-devtools/repo/repo_2.39.bb
index d6d3d03..a0633a5 100644
--- a/poky/meta/recipes-devtools/repo/repo_2.37.bb
+++ b/poky/meta/recipes-devtools/repo/repo_2.39.bb
@@ -12,7 +12,7 @@
 SRC_URI = "git://gerrit.googlesource.com/git-repo.git;protocol=https;branch=main \
            file://0001-python3-shebang.patch \
            "
-SRCREV = "83c66ec661e39e47795086a5d26d0f3782ac1d49"
+SRCREV = "b99272c601bc5f466c3cfc782bb852c2c967ad27"
 
 MIRRORS += "git://gerrit.googlesource.com/git-repo.git git://github.com/GerritCodeReview/git-repo.git"
 
diff --git a/poky/meta/recipes-devtools/rust/rust-llvm_1.70.0.bb b/poky/meta/recipes-devtools/rust/rust-llvm_1.70.0.bb
index 57bbe79..5bfc1fa 100644
--- a/poky/meta/recipes-devtools/rust/rust-llvm_1.70.0.bb
+++ b/poky/meta/recipes-devtools/rust/rust-llvm_1.70.0.bb
@@ -30,9 +30,11 @@
 
 LLVM_DIR = "llvm${LLVM_RELEASE}"
 
+RUST_LLVM_TARGETS ?= "ARM;AArch64;Mips;PowerPC;RISCV;X86"
+
 EXTRA_OECMAKE = " \
     -DCMAKE_BUILD_TYPE=Release \
-    -DLLVM_TARGETS_TO_BUILD='ARM;AArch64;Mips;PowerPC;RISCV;X86' \
+    -DLLVM_TARGETS_TO_BUILD='${RUST_LLVM_TARGETS}' \
     -DLLVM_BUILD_DOCS=OFF \
     -DLLVM_ENABLE_TERMINFO=OFF \
     -DLLVM_ENABLE_ZLIB=OFF \
diff --git a/poky/meta/recipes-devtools/rust/rust-source.inc b/poky/meta/recipes-devtools/rust/rust-source.inc
index 4a720e6..7a0790f 100644
--- a/poky/meta/recipes-devtools/rust/rust-source.inc
+++ b/poky/meta/recipes-devtools/rust/rust-source.inc
@@ -12,8 +12,5 @@
 
 RUSTSRC = "${WORKDIR}/rustc-${RUST_VERSION}-src"
 
-# Used by crossbeam_atomic.patch
-export TARGET_VENDOR
-
 UPSTREAM_CHECK_URI = "https://forge.rust-lang.org/infra/other-installation-methods.html"
 UPSTREAM_CHECK_REGEX = "rustc-(?P<pver>\d+(\.\d+)+)-src"
diff --git a/poky/meta/recipes-devtools/rust/rust_1.70.0.bb b/poky/meta/recipes-devtools/rust/rust_1.70.0.bb
index 16d4339..3d176e5 100644
--- a/poky/meta/recipes-devtools/rust/rust_1.70.0.bb
+++ b/poky/meta/recipes-devtools/rust/rust_1.70.0.bb
@@ -72,10 +72,7 @@
 
 python do_configure() {
     import json
-    try:
-        import configparser
-    except ImportError:
-        import ConfigParser as configparser
+    import configparser
 
     # toml is rather similar to standard ini like format except it likes values
     # that look more JSON like. So for our purposes simply escaping all values
@@ -157,13 +154,9 @@
 
     config.set("build", "vendor", e(True))
 
-    if not "targets" in locals():
-        targets = [d.getVar("RUST_TARGET_SYS")]
-    config.set("build", "target", e(targets))
+    config.set("build", "target", e([d.getVar("RUST_TARGET_SYS")]))
 
-    if not "hosts" in locals():
-        hosts = [d.getVar("RUST_HOST_SYS")]
-    config.set("build", "host", e(hosts))
+    config.set("build", "host", e([d.getVar("RUST_HOST_SYS")]))
 
     # We can't use BUILD_SYS since that is something the rust snapshot knows
     # nothing about when trying to build some stage0 tools (like fabricate)
@@ -232,9 +225,11 @@
 
 ALLOW_EMPTY:${PN} = "1"
 
-PACKAGES =+ "${PN}-tools-clippy ${PN}-tools-rustfmt"
+PACKAGES =+ "${PN}-rustdoc ${PN}-tools-clippy ${PN}-tools-rustfmt"
+FILES:${PN}-rustdoc = "${bindir}/rustdoc"
 FILES:${PN}-tools-clippy = "${bindir}/cargo-clippy ${bindir}/clippy-driver"
 FILES:${PN}-tools-rustfmt = "${bindir}/rustfmt"
+RDEPENDS:${PN}-rustdoc = "${PN}"
 RDEPENDS:${PN}-tools-clippy = "${PN}"
 RDEPENDS:${PN}-tools-rustfmt = "${PN}"
 
diff --git a/poky/meta/recipes-extended/bash/bash/0001-changes-to-SIGINT-handler-while-waiting-for-a-child-.patch b/poky/meta/recipes-extended/bash/bash/0001-changes-to-SIGINT-handler-while-waiting-for-a-child-.patch
new file mode 100644
index 0000000..df92c24
--- /dev/null
+++ b/poky/meta/recipes-extended/bash/bash/0001-changes-to-SIGINT-handler-while-waiting-for-a-child-.patch
@@ -0,0 +1,226 @@
+From 721d5be99eb37d31e48bd66d61808a66a4c5ab84 Mon Sep 17 00:00:00 2001
+From: Chet Ramey <chet.ramey@case.edu>
+Date: Mon, 30 Oct 2023 12:16:07 -0400
+Subject: [PATCH] changes to SIGINT handler while waiting for a child; skip
+ vertical whitespace after translating an integer
+
+Upstream-Status: Backport from
+[https://git.savannah.gnu.org/cgit/bash.git/commit/?h=devel&id=fe24a6a55e8850298b496c5b9d82f1866eba190e]
+
+[Adjust and drop some codes to be applicable the tree]
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ general.c         |  5 +++--
+ jobs.c            | 24 ++++++++++++++++--------
+ tests/redir.right |  4 ++--
+ tests/redir11.sub |  2 ++
+ tests/type.right  | 16 ++++++++--------
+ tests/type.tests  | 24 ++++++++++++------------
+ 6 files changed, 43 insertions(+), 32 deletions(-)
+
+diff --git a/general.c b/general.c
+index 85c5a8b6..65e2ee06 100644
+--- a/general.c
++++ b/general.c
+@@ -262,8 +262,9 @@ legal_number (string, result)
+   if (errno || ep == string)
+     return 0;	/* errno is set on overflow or underflow */
+ 
+-  /* Skip any trailing whitespace, since strtoimax does not. */
+-  while (whitespace (*ep))
++  /* Skip any trailing whitespace, since strtoimax does not, using the same
++     test that strtoimax uses for leading whitespace. */
++  while (isspace ((unsigned char) *ep))
+     ep++;
+ 
+   /* If *string is not '\0' but *ep is '\0' on return, the entire string
+diff --git a/jobs.c b/jobs.c
+index 6b986ed7..262d78de 100644
+--- a/jobs.c
++++ b/jobs.c
+@@ -2718,6 +2718,10 @@ wait_for_background_pids (ps)
+ #define INVALID_SIGNAL_HANDLER (SigHandler *)wait_for_background_pids
+ static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER;
+ 
++/* The current SIGINT handler as set by restore_sigint_handler. Only valid
++   immediately after restore_sigint_handler, used for continuations. */
++static SigHandler *cur_sigint_handler = INVALID_SIGNAL_HANDLER;   
++
+ static int wait_sigint_received;
+ static int child_caught_sigint;
+ 
+@@ -2735,6 +2739,7 @@ wait_sigint_cleanup ()
+ static void
+ restore_sigint_handler ()
+ {
++  cur_sigint_handler = old_sigint_handler;
+   if (old_sigint_handler != INVALID_SIGNAL_HANDLER)
+     {
+       set_signal_handler (SIGINT, old_sigint_handler);
+@@ -2758,8 +2763,7 @@ wait_sigint_handler (sig)
+       restore_sigint_handler ();
+       /* If we got a SIGINT while in `wait', and SIGINT is trapped, do
+ 	 what POSIX.2 says (see builtins/wait.def for more info). */
+-      if (this_shell_builtin && this_shell_builtin == wait_builtin &&
+-	  signal_is_trapped (SIGINT) &&
++      if (signal_is_trapped (SIGINT) &&
+ 	  ((sigint_handler = trap_to_sighandler (SIGINT)) == trap_handler))
+ 	{
+ 	  trap_handler (SIGINT);	/* set pending_traps[SIGINT] */
+@@ -2782,6 +2786,8 @@ wait_sigint_handler (sig)
+     {
+       set_exit_status (128+SIGINT);
+       restore_sigint_handler ();
++      if (cur_sigint_handler == INVALID_SIGNAL_HANDLER)
++	set_sigint_handler ();		/* XXX - only do this in one place */
+       kill (getpid (), SIGINT);
+     }
+ 
+@@ -2926,11 +2932,13 @@ wait_for (pid, flags)
+     {
+       SigHandler *temp_sigint_handler;
+ 
+-      temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+-      if (temp_sigint_handler == wait_sigint_handler)
+-	internal_debug ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap);
+-      else
+-	old_sigint_handler = temp_sigint_handler;
++      temp_sigint_handler = old_sigint_handler;
++      old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
++      if (old_sigint_handler == wait_sigint_handler)
++	{
++	  internal_debug ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap);
++	  old_sigint_handler = temp_sigint_handler;
++	}
+       waiting_for_child = 0;
+       if (old_sigint_handler == SIG_IGN)
+ 	set_signal_handler (SIGINT, old_sigint_handler);
+@@ -4136,7 +4144,7 @@ set_job_status_and_cleanup (job)
+ 		 SIGINT (if we reset the sighandler to the default).
+ 		 In this case, we have to fix things up.  What a crock. */
+ 	      if (temp_handler == trap_handler && signal_is_trapped (SIGINT) == 0)
+-		  temp_handler = trap_to_sighandler (SIGINT);
++		temp_handler = trap_to_sighandler (SIGINT);
+ 	      restore_sigint_handler ();
+ 	      if (temp_handler == SIG_DFL)
+ 		termsig_handler (SIGINT);	/* XXX */
+diff --git a/tests/redir.right b/tests/redir.right
+index 8db10414..9e1403c8 100644
+--- a/tests/redir.right
++++ b/tests/redir.right
+@@ -154,10 +154,10 @@ foo
+ 1
+ 7
+ after: 42
+-./redir11.sub: line 53: $(ss= declare -i ss): ambiguous redirect
++./redir11.sub: line 55: $(ss= declare -i ss): ambiguous redirect
+ after: 42
+ a+=3
+ foo
+ foo
+-./redir11.sub: line 75: 42: No such file or directory
++./redir11.sub: line 77: 42: No such file or directory
+ 42
+diff --git a/tests/redir11.sub b/tests/redir11.sub
+index d417cdb6..ca9854cd 100644
+--- a/tests/redir11.sub
++++ b/tests/redir11.sub
+@@ -34,6 +34,8 @@ a=4 b=7 ss=4 declare -i ss
+ a=4 b=7 foo
+ echo after: $a
+ 
++exec 7>&- 4>&-
++
+ unset a
+ a=4 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 3'; }
+ a=1 echo foo 2>&1 >&$(foo) | { grep -q 'Bad file' || echo 'redir11 bad 4'; }
+diff --git a/tests/type.right b/tests/type.right
+index bbc228e8..e0a66745 100644
+--- a/tests/type.right
++++ b/tests/type.right
+@@ -24,15 +24,15 @@ func ()
+ }
+ while
+ while is a shell keyword
+-./type.tests: line 56: type: m: not found
+-alias m='more'
+-alias m='more'
+-m is aliased to `more'
++./type.tests: line 59: type: morealias: not found
++alias morealias='more'
++alias morealias='more'
++morealias is aliased to `more'
+ alias
+-alias m='more'
+-alias m='more'
+-alias m='more'
+-m is aliased to `more'
++alias morealias='more'
++alias morealias='more'
++alias morealias='more'
++morealias is aliased to `more'
+ builtin
+ builtin is a shell builtin
+ /bin/sh
+diff --git a/tests/type.tests b/tests/type.tests
+index fd39c18a..ddc15407 100644
+--- a/tests/type.tests
++++ b/tests/type.tests
+@@ -25,8 +25,6 @@ type -r ${THIS_SH}
+ type notthere
+ command -v notthere
+ 
+-alias m=more
+-
+ unset -f func 2>/dev/null
+ func() { echo this is func; }
+ 
+@@ -49,24 +47,26 @@ command -V func
+ command -v while
+ command -V while
+ 
++alias morealias=more
++
+ # the following two lines should produce the same output
+ # post-3.0 patch makes command -v silent, as posix specifies
+ # first test with alias expansion off (should all fail or produce no output)
+-type -t m
+-type m
+-command -v m
++type -t morealias
++type morealias
++command -v morealias
+ alias -p
+-alias m
++alias morealias
+ 
+ # then test with alias expansion on 
+ shopt -s expand_aliases
+-type m
+-type -t m
+-command -v m
++type morealias
++type -t morealias
++command -v morealias
+ alias -p
+-alias m
++alias morealias
+ 
+-command -V m
++command -V morealias
+ shopt -u expand_aliases
+ 
+ command -v builtin
+@@ -76,7 +76,7 @@ command -V /bin/sh
+ 
+ unset -f func
+ type func
+-unalias m
++unalias morealias
+ type m
+ 
+ hash -r
+-- 
+2.35.5
+
diff --git a/poky/meta/recipes-extended/bash/bash_5.2.21.bb b/poky/meta/recipes-extended/bash/bash_5.2.21.bb
index 6df73b6..46d921b 100644
--- a/poky/meta/recipes-extended/bash/bash_5.2.21.bb
+++ b/poky/meta/recipes-extended/bash/bash_5.2.21.bb
@@ -12,6 +12,7 @@
            file://run-bash-ptests \
            file://fix-run-builtins.patch \
            file://use_aclocal.patch \
+           file://0001-changes-to-SIGINT-handler-while-waiting-for-a-child-.patch \
            "
 
 SRC_URI[tarball.sha256sum] = "c8e31bdc59b69aaffc5b36509905ba3e5cbb12747091d27b4b977f078560d5b8"
diff --git a/poky/meta/recipes-extended/cups/cups.inc b/poky/meta/recipes-extended/cups/cups.inc
index ff5f55e..31f686c 100644
--- a/poky/meta/recipes-extended/cups/cups.inc
+++ b/poky/meta/recipes-extended/cups/cups.inc
@@ -57,7 +57,7 @@
                --enable-debug \
                --disable-relro \
                --enable-libusb \
-               --with-system-groups=lpadmin \
+               --with-system-groups=lpadmin,root,sys,wheel \
                --with-cups-group=lp \
                --with-domainsocket=/run/cups/cups.sock \
                --with-pkgconfpath=${libdir}/pkgconfig \
diff --git a/poky/meta/recipes-extended/ethtool/ethtool_6.5.bb b/poky/meta/recipes-extended/ethtool/ethtool_6.6.bb
similarity index 93%
rename from poky/meta/recipes-extended/ethtool/ethtool_6.5.bb
rename to poky/meta/recipes-extended/ethtool/ethtool_6.6.bb
index ef925e1..ab82435 100644
--- a/poky/meta/recipes-extended/ethtool/ethtool_6.5.bb
+++ b/poky/meta/recipes-extended/ethtool/ethtool_6.6.bb
@@ -11,7 +11,7 @@
            file://avoid_parallel_tests.patch \
            "
 
-SRC_URI[sha256sum] = "aed41ca58b3129126f18429172064d214191d7e7ef52c6e3f6b2ff7503706c03"
+SRC_URI[sha256sum] = "d4cdb4f7498781fb516e2b3d0eadab28691da3fd3e3445954e82d745de95fb96"
 
 UPSTREAM_CHECK_URI = "https://www.kernel.org/pub/software/network/ethtool/"
 
diff --git a/poky/meta/recipes-extended/iptables/iptables/0001-configure-Add-option-to-enable-disable-libnfnetlink.patch b/poky/meta/recipes-extended/iptables/iptables/0001-configure-Add-option-to-enable-disable-libnfnetlink.patch
index 0c2c97c..8824bf2 100644
--- a/poky/meta/recipes-extended/iptables/iptables/0001-configure-Add-option-to-enable-disable-libnfnetlink.patch
+++ b/poky/meta/recipes-extended/iptables/iptables/0001-configure-Add-option-to-enable-disable-libnfnetlink.patch
@@ -1,7 +1,7 @@
-From 698ed332e2c592235d2b737c545ac25ad0970e15 Mon Sep 17 00:00:00 2001
+From 0096c854d5015918ed154dccb3ad472fd06c1010 Mon Sep 17 00:00:00 2001
 From: "Maxin B. John" <maxin.john@intel.com>
 Date: Tue, 21 Feb 2017 11:16:31 +0200
-Subject: [PATCH 1/4] configure: Add option to enable/disable libnfnetlink
+Subject: [PATCH] configure: Add option to enable/disable libnfnetlink
 
 This changes the configure behaviour from autodetecting
 for libnfnetlink to having an option to disable it explicitly
@@ -10,12 +10,13 @@
 
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
 Signed-off-by: Maxin B. John <maxin.john@intel.com>
+
 ---
  configure.ac | 10 +++++++---
  1 file changed, 7 insertions(+), 3 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index bc2ed47b..e27745e5 100644
+index d99fa3b..d607772 100644
 --- a/configure.ac
 +++ b/configure.ac
 @@ -63,6 +63,9 @@ AC_ARG_WITH([pkgconfigdir], AS_HELP_STRING([--with-pkgconfigdir=PATH],
@@ -28,9 +29,9 @@
  AC_ARG_ENABLE([connlabel],
  	AS_HELP_STRING([--disable-connlabel],
  	[Do not build libnetfilter_conntrack]),
-@@ -117,9 +120,10 @@ if test "x$enable_bpfc" = "xyes" || test "x$enable_nfsynproxy" = "xyes"; then
- 	AC_CHECK_LIB(pcap, pcap_compile,, AC_MSG_ERROR(missing libpcap library required by bpf compiler or nfsynproxy tool))
- fi
+@@ -113,9 +116,10 @@ AM_CONDITIONAL([ENABLE_SYNCONF], [test "$enable_nfsynproxy" = "yes"])
+ AM_CONDITIONAL([ENABLE_NFTABLES], [test "$enable_nftables" = "yes"])
+ AM_CONDITIONAL([ENABLE_CONNLABEL], [test "$enable_connlabel" = "yes"])
  
 -PKG_CHECK_MODULES([libnfnetlink], [libnfnetlink >= 1.0],
 -	[nfnetlink=1], [nfnetlink=0])
@@ -40,8 +41,5 @@
 +    ])
 +AM_CONDITIONAL([HAVE_LIBNFNETLINK], [test "x$enable_libnfnetlink" = "xyes"])
  
- if test "x$enable_nftables" = "xyes"; then
- 	PKG_CHECK_MODULES([libmnl], [libmnl >= 1.0], [mnl=1], [mnl=0])
--- 
-2.30.2
-
+ if test "x$enable_bpfc" = "xyes" || test "x$enable_nfsynproxy" = "xyes"; then
+ 	PKG_CHECK_MODULES([libpcap], [libpcap], [], [
diff --git a/poky/meta/recipes-extended/iptables/iptables/0002-iptables-xshared.h-add-missing-sys.types.h-include.patch b/poky/meta/recipes-extended/iptables/iptables/0002-iptables-xshared.h-add-missing-sys.types.h-include.patch
index 9621d46..a190c7e 100644
--- a/poky/meta/recipes-extended/iptables/iptables/0002-iptables-xshared.h-add-missing-sys.types.h-include.patch
+++ b/poky/meta/recipes-extended/iptables/iptables/0002-iptables-xshared.h-add-missing-sys.types.h-include.patch
@@ -1,7 +1,7 @@
-From d4699d2169fe2d91d0f1f4369d40d2e5f42b8877 Mon Sep 17 00:00:00 2001
+From 465e3ef77f1763d225adc76220e43ee9bd73b178 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex@linutronix.de>
 Date: Tue, 17 May 2022 10:56:59 +0200
-Subject: [PATCH 2/4] iptables/xshared.h: add missing sys.types.h include
+Subject: [PATCH] iptables/xshared.h: add missing sys.types.h include
 
 This resolves the build error under musl:
 
@@ -12,12 +12,13 @@
 
 Upstream-Status: Submitted [via email to phil@nwl.cc]
 Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+
 ---
  iptables/xshared.h | 1 +
  1 file changed, 1 insertion(+)
 
 diff --git a/iptables/xshared.h b/iptables/xshared.h
-index 0ed9f3c2..b1413834 100644
+index a200e0d..f543dbf 100644
 --- a/iptables/xshared.h
 +++ b/iptables/xshared.h
 @@ -6,6 +6,7 @@
@@ -28,6 +29,3 @@
  #include <linux/netfilter_arp/arp_tables.h>
  #include <linux/netfilter_ipv4/ip_tables.h>
  #include <linux/netfilter_ipv6/ip6_tables.h>
--- 
-2.30.2
-
diff --git a/poky/meta/recipes-extended/iptables/iptables/0003-Makefile.am-do-not-install-etc-ethertypes.patch b/poky/meta/recipes-extended/iptables/iptables/0003-Makefile.am-do-not-install-etc-ethertypes.patch
deleted file mode 100644
index cbc9757..0000000
--- a/poky/meta/recipes-extended/iptables/iptables/0003-Makefile.am-do-not-install-etc-ethertypes.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 28291b41bc3717f51e8d9d465f0100f1ca99dc26 Mon Sep 17 00:00:00 2001
-From: Trevor Gamblin <trevor.gamblin@windriver.com>
-Date: Wed, 9 Mar 2022 12:50:39 -0500
-Subject: [PATCH 3/4] Makefile.am: do not install /etc/ethertypes
-
-The /etc/ethertypes is provided by netbase since 6.0[1].
-Do not instal the file in ebtables, otherwise there would be a conflict:
-Error: Transaction test error:
-  file /etc/ethertypes conflicts between attempted installs of
-netbase-1:6.2-r0.corei7_64 and iptables-1.8.7-r0.corei7_64
-
-[1]
-https://salsa.debian.org/md/netbase/-/commit/316680c6a2c3641b6abc76b3eebf88781f609d35)
-
-This patch is based off of the same change made for the ebtables recipe:
-
-http://cgit.openembedded.org/meta-openembedded/tree/meta-networking/recipes-filter/ebtables/ebtables-2.0.11/0001-Makefile.am-do-not-install-etc-ethertypes.patch?h=master
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Trevor Gamblin <trevor.gamblin@windriver.com>
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 451c3cb2..5125238c 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -20,7 +20,7 @@ EXTRA_DIST	= autogen.sh iptables-test.py xlate-test.py
- 
- if ENABLE_NFTABLES
- confdir		= $(sysconfdir)
--dist_conf_DATA	= etc/ethertypes etc/xtables.conf
-+dist_conf_DATA	= etc/xtables.conf
- endif
- 
- .PHONY: tarball
--- 
-2.30.2
-
diff --git a/poky/meta/recipes-extended/iptables/iptables/0004-configure.ac-only-check-conntrack-when-libnfnetlink-.patch b/poky/meta/recipes-extended/iptables/iptables/0004-configure.ac-only-check-conntrack-when-libnfnetlink-.patch
index 20c40c4..5a022eb 100644
--- a/poky/meta/recipes-extended/iptables/iptables/0004-configure.ac-only-check-conntrack-when-libnfnetlink-.patch
+++ b/poky/meta/recipes-extended/iptables/iptables/0004-configure.ac-only-check-conntrack-when-libnfnetlink-.patch
@@ -1,7 +1,7 @@
-From e7aa1dd2831f9bb5d0603c5e5027387ad7721b00 Mon Sep 17 00:00:00 2001
+From 6832501bbb90a3dab977a4625d0391804c0e795c Mon Sep 17 00:00:00 2001
 From: "Maxin B. John" <maxin.john@intel.com>
 Date: Tue, 21 Feb 2017 11:49:07 +0200
-Subject: [PATCH 4/4] configure.ac:
+Subject: [PATCH] configure.ac:
  only-check-conntrack-when-libnfnetlink-enabled.patch
 
 Package libnetfilter-conntrack depends on package libnfnetlink. iptables
@@ -23,15 +23,16 @@
 
 Signed-off-by: Kai Kang <kai.kang@windriver.com>
 Signed-off-by: Maxin B. John <maxin.john@intel.com>
+
 ---
  configure.ac | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/configure.ac b/configure.ac
-index e27745e5..528f1bb5 100644
+index d607772..25a8e75 100644
 --- a/configure.ac
 +++ b/configure.ac
-@@ -158,10 +158,12 @@ if test "$nftables" != 1; then
+@@ -159,10 +159,12 @@ if test "$nftables" != 1; then
  fi
  
  if test "x$enable_connlabel" = "xyes"; then
@@ -46,6 +47,3 @@
  	if test "$nfconntrack" -ne 1; then
  		blacklist_modules="$blacklist_modules connlabel";
  		echo "WARNING: libnetfilter_conntrack not found, connlabel match will not be built";
--- 
-2.30.2
-
diff --git a/poky/meta/recipes-extended/iptables/iptables/format-security.patch b/poky/meta/recipes-extended/iptables/iptables/format-security.patch
deleted file mode 100644
index fae920f..0000000
--- a/poky/meta/recipes-extended/iptables/iptables/format-security.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From ed4082a7405a5838c205a34c1559e289949200cc Mon Sep 17 00:00:00 2001
-From: Phil Sutter <phil@nwl.cc>
-Date: Thu, 12 Jan 2023 14:38:44 +0100
-Subject: extensions: NAT: Fix for -Werror=format-security
-
-Have to pass either a string literal or format string to xt_xlate_add().
-
-Fixes: f30c5edce0413 ("extensions: Merge SNAT, DNAT, REDIRECT and MASQUERADE")
-Signed-off-by: Phil Sutter <phil@nwl.cc>
-Upstream-Status: Backport [https://git.netfilter.org/iptables/commit/?id=ed4082a7405a5838c205a34c1559e289949200cc]
-Signed-off-by: Alexander Kanavin <alex@linutronix.de>
----
- extensions/libxt_NAT.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/extensions/libxt_NAT.c b/extensions/libxt_NAT.c
-index da9f2201..2a634398 100644
---- a/extensions/libxt_NAT.c
-+++ b/extensions/libxt_NAT.c
-@@ -424,7 +424,7 @@ __NAT_xlate(struct xt_xlate *xl, const struct nf_nat_range2 *r,
- 	if (r->flags & NF_NAT_RANGE_PROTO_OFFSET)
- 		return 0;
- 
--	xt_xlate_add(xl, tgt);
-+	xt_xlate_add(xl, "%s", tgt);
- 	if (strlen(range_str))
- 		xt_xlate_add(xl, " to %s", range_str);
- 	if (r->flags & NF_NAT_RANGE_PROTO_RANDOM) {
--- 
-cgit v1.2.3
-
diff --git a/poky/meta/recipes-extended/iptables/iptables_1.8.9.bb b/poky/meta/recipes-extended/iptables/iptables_1.8.10.bb
similarity index 95%
rename from poky/meta/recipes-extended/iptables/iptables_1.8.9.bb
rename to poky/meta/recipes-extended/iptables/iptables_1.8.10.bb
index dc91973..cd2f3bc 100644
--- a/poky/meta/recipes-extended/iptables/iptables_1.8.9.bb
+++ b/poky/meta/recipes-extended/iptables/iptables_1.8.10.bb
@@ -15,11 +15,9 @@
            file://ip6tables.rules \
            file://0001-configure-Add-option-to-enable-disable-libnfnetlink.patch \
            file://0002-iptables-xshared.h-add-missing-sys.types.h-include.patch \
-           file://0003-Makefile.am-do-not-install-etc-ethertypes.patch \
            file://0004-configure.ac-only-check-conntrack-when-libnfnetlink-.patch \
-           file://format-security.patch \
            "
-SRC_URI[sha256sum] = "ef6639a43be8325a4f8ea68123ffac236cb696e8c78501b64e8106afb008c87f"
+SRC_URI[sha256sum] = "5cc255c189356e317d070755ce9371eb63a1b783c34498fb8c30264f3cc59c9c"
 
 SYSTEMD_SERVICE:${PN} = "\
     iptables.service \
diff --git a/poky/meta/recipes-extended/libsolv/libsolv_0.7.26.bb b/poky/meta/recipes-extended/libsolv/libsolv_0.7.27.bb
similarity index 95%
rename from poky/meta/recipes-extended/libsolv/libsolv_0.7.26.bb
rename to poky/meta/recipes-extended/libsolv/libsolv_0.7.27.bb
index bae7960..2ea80c6 100644
--- a/poky/meta/recipes-extended/libsolv/libsolv_0.7.26.bb
+++ b/poky/meta/recipes-extended/libsolv/libsolv_0.7.27.bb
@@ -12,7 +12,7 @@
            file://0001-utils-Conside-musl-when-wrapping-qsort_r.patch \
 "
 
-SRCREV = "48c985375134d2443eee551613161cadc278af2f"
+SRCREV = "0caa2edb94ba228003bf18960e4574256e92f8fb"
 
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+(\.\d+)+)"
 
diff --git a/poky/meta/recipes-extended/pam/libpam_1.5.3.bb b/poky/meta/recipes-extended/pam/libpam_1.5.3.bb
index 7af3ea9..809d927 100644
--- a/poky/meta/recipes-extended/pam/libpam_1.5.3.bb
+++ b/poky/meta/recipes-extended/pam/libpam_1.5.3.bb
@@ -57,6 +57,11 @@
 FILES:${PN}-runtime = "${sysconfdir} ${sbindir} ${systemd_system_unitdir}"
 FILES:${PN}-xtests = "${datadir}/Linux-PAM/xtests"
 
+# libpam installs /etc/environment for use with the pam_env plugin. Make sure it is
+# packaged with the pam-plugin-env package to avoid breaking installations which
+# install that file via other packages
+FILES:pam-plugin-env = "${sysconfdir}/environment"
+
 PACKAGES_DYNAMIC += "^${MLPREFIX}pam-plugin-.*"
 
 def get_multilib_bit(d):
@@ -113,7 +118,7 @@
     pam_pkgname = mlprefix + 'pam-plugin%s'
 
     do_split_packages(d, pam_libdir, r'^pam(.*)\.so$', pam_pkgname,
-                      'PAM plugin for %s', hook=pam_plugin_hook, extra_depends='')
+                      'PAM plugin for %s', hook=pam_plugin_hook, extra_depends='', prepend=True)
     do_split_packages(d, pam_filterdir, r'^(.*)$', 'pam-filter-%s', 'PAM filter for %s', extra_depends='')
 }
 
diff --git a/poky/meta/recipes-extended/shadow/files/CVE-2023-4641.patch b/poky/meta/recipes-extended/shadow/files/CVE-2023-4641.patch
new file mode 100644
index 0000000..1fabfe9
--- /dev/null
+++ b/poky/meta/recipes-extended/shadow/files/CVE-2023-4641.patch
@@ -0,0 +1,147 @@
+From 25dbe2ce166a13322b7536ff2f738786ea2e61e7 Mon Sep 17 00:00:00 2001
+From: Alejandro Colomar <alx@kernel.org>
+Date: Sat, 10 Jun 2023 16:20:05 +0200
+Subject: [PATCH] gpasswd(1): Fix password leak
+
+How to trigger this password leak?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When gpasswd(1) asks for the new password, it asks twice (as is usual
+for confirming the new password).  Each of those 2 password prompts
+uses agetpass() to get the password.  If the second agetpass() fails,
+the first password, which has been copied into the 'static' buffer
+'pass' via STRFCPY(), wasn't being zeroed.
+
+agetpass() is defined in <./libmisc/agetpass.c> (around line 91), and
+can fail for any of the following reasons:
+
+-  malloc(3) or readpassphrase(3) failure.
+
+   These are going to be difficult to trigger.  Maybe getting the system
+   to the limits of memory utilization at that exact point, so that the
+   next malloc(3) gets ENOMEM, and possibly even the OOM is triggered.
+   About readpassphrase(3), ENFILE and EINTR seem the only plausible
+   ones, and EINTR probably requires privilege or being the same user;
+   but I wouldn't discard ENFILE so easily, if a process starts opening
+   files.
+
+-  The password is longer than PASS_MAX.
+
+   The is plausible with physical access.  However, at that point, a
+   keylogger will be a much simpler attack.
+
+And, the attacker must be able to know when the second password is being
+introduced, which is not going to be easy.
+
+How to read the password after the leak?
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Provoking the leak yourself at the right point by entering a very long
+password is easy, and inspecting the process stack at that point should
+be doable.  Try to find some consistent patterns.
+
+Then, search for those patterns in free memory, right after the victim
+leaks their password.
+
+Once you get the leak, a program should read all the free memory
+searching for patterns that gpasswd(1) leaves nearby the leaked
+password.
+
+On 6/10/23 03:14, Seth Arnold wrote:
+> An attacker process wouldn't be able to use malloc(3) for this task.
+> There's a handful of tools available for userspace to allocate memory:
+>
+> -  brk / sbrk
+> -  mmap MAP_ANONYMOUS
+> -  mmap /dev/zero
+> -  mmap some other file
+> -  shm_open
+> -  shmget
+>
+> Most of these return only pages of zeros to a process.  Using mmap of an
+> existing file, you can get some of the contents of the file demand-loaded
+> into the memory space on the first use.
+>
+> The MAP_UNINITIALIZED flag only works if the kernel was compiled with
+> CONFIG_MMAP_ALLOW_UNINITIALIZED.  This is rare.
+>
+> malloc(3) doesn't zero memory, to our collective frustration, but all the
+> garbage in the allocations is from previous allocations in the current
+> process.  It isn't leftover from other processes.
+>
+> The avenues available for reading the memory:
+> -  /dev/mem and /dev/kmem (requires root, not available with Secure Boot)
+> -  /proc/pid/mem (requires ptrace privileges, mediated by YAMA)
+> -  ptrace (requires ptrace privileges, mediated by YAMA)
+> -  causing memory to be swapped to disk, and then inspecting the swap
+>
+> These all require a certain amount of privileges.
+
+How to fix it?
+~~~~~~~~~~~~~~
+
+memzero(), which internally calls explicit_bzero(3), or whatever
+alternative the system provides with a slightly different name, will
+make sure that the buffer is zeroed in memory, and optimizations are not
+allowed to impede this zeroing.
+
+This is not really 100% effective, since compilers may place copies of
+the string somewhere hidden in the stack.  Those copies won't get zeroed
+by explicit_bzero(3).  However, that's arguably a compiler bug, since
+compilers should make everything possible to avoid optimizing strings
+that are later passed to explicit_bzero(3).  But we all know that
+sometimes it's impossible to have perfect knowledge in the compiler, so
+this is plausible.  Nevertheless, there's nothing we can do against such
+issues, except minimizing the time such passwords are stored in plain
+text.
+
+Security concerns
+~~~~~~~~~~~~~~~~~
+
+We believe this isn't easy to exploit.  Nevertheless, and since the fix
+is trivial, this fix should probably be applied soon, and backported to
+all supported distributions, to prevent someone else having more
+imagination than us to find a way.
+
+Affected versions
+~~~~~~~~~~~~~~~~~
+
+All.  Bug introduced in shadow 19990709.  That's the second commit in
+the git history.
+
+Fixes: 45c6603cc86c ("[svn-upgrade] Integrating new upstream version, shadow (19990709)")
+
+CVE: CVE-2023-4641
+Upstream-Status: Backport [https://github.com/shadow-maint/shadow/commit/65c88a43a23c2391dcc90c0abda3e839e9c57904]
+
+Reported-by: Alejandro Colomar <alx@kernel.org>
+Cc: Serge Hallyn <serge@hallyn.com>
+Cc: Iker Pedrosa <ipedrosa@redhat.com>
+Cc: Seth Arnold <seth.arnold@canonical.com>
+Cc: Christian Brauner <christian@brauner.io>
+Cc: Balint Reczey <rbalint@debian.org>
+Cc: Sam James <sam@gentoo.org>
+Cc: David Runge <dvzrv@archlinux.org>
+Cc: Andreas Jaeger <aj@suse.de>
+Cc: <~hallyn/shadow@lists.sr.ht>
+Signed-off-by: Alejandro Colomar <alx@kernel.org>
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ src/gpasswd.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/gpasswd.c b/src/gpasswd.c
+index 5983f787..2d8869ef 100644
+--- a/src/gpasswd.c
++++ b/src/gpasswd.c
+@@ -896,6 +896,7 @@ static void change_passwd (struct group *gr)
+ 		strzero (cp);
+ 		cp = getpass (_("Re-enter new password: "));
+ 		if (NULL == cp) {
++			memzero (pass, sizeof pass);
+ 			exit (1);
+ 		}
+ 
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-extended/shadow/shadow.inc b/poky/meta/recipes-extended/shadow/shadow.inc
index 83e1a84..ce3ce62 100644
--- a/poky/meta/recipes-extended/shadow/shadow.inc
+++ b/poky/meta/recipes-extended/shadow/shadow.inc
@@ -17,6 +17,7 @@
 	   file://0001-Fix-can-not-print-full-login.patch \
            file://CVE-2023-29383.patch \
            file://0001-Overhaul-valid_field.patch \
+           file://CVE-2023-4641.patch \
            "
 
 SRC_URI:append:class-target = " \
diff --git a/poky/meta/recipes-gnome/epiphany/epiphany_44.6.bb b/poky/meta/recipes-gnome/epiphany/epiphany_45.1.bb
similarity index 94%
rename from poky/meta/recipes-gnome/epiphany/epiphany_44.6.bb
rename to poky/meta/recipes-gnome/epiphany/epiphany_45.1.bb
index 577eb43..c8631e0 100644
--- a/poky/meta/recipes-gnome/epiphany/epiphany_44.6.bb
+++ b/poky/meta/recipes-gnome/epiphany/epiphany_45.1.bb
@@ -31,7 +31,7 @@
            file://migrator.patch \
            file://distributor.patch \
            "
-SRC_URI[archive.sha256sum] = "5335dd573581db61e126d854dc16ae519657a5b8790789a47d25e43e17cd3a43"
+SRC_URI[archive.sha256sum] = "7c994ef34ecd60e915de331ee123c08938f9623cefada6d50b99e3c9c5ad8135"
 
 # Developer mode enables debugging
 PACKAGECONFIG[developer-mode] = "-Ddeveloper_mode=true,-Ddeveloper_mode=false"
diff --git a/poky/meta/recipes-gnome/gi-docgen/gi-docgen_2023.1.bb b/poky/meta/recipes-gnome/gi-docgen/gi-docgen_2023.3.bb
similarity index 94%
rename from poky/meta/recipes-gnome/gi-docgen/gi-docgen_2023.1.bb
rename to poky/meta/recipes-gnome/gi-docgen/gi-docgen_2023.3.bb
index 7722ebd..54d7ef7 100644
--- a/poky/meta/recipes-gnome/gi-docgen/gi-docgen_2023.1.bb
+++ b/poky/meta/recipes-gnome/gi-docgen/gi-docgen_2023.3.bb
@@ -10,7 +10,7 @@
 
 SRC_URI = "git://gitlab.gnome.org/GNOME/gi-docgen.git;protocol=https;branch=main"
 
-SRCREV = "63b4fad4181e793f34b7777a89e5cb58fe8ac7e6"
+SRCREV = "96f2e9b93e1d8a5338eb05b87fd879856ab7b3cc"
 
 S = "${WORKDIR}/git"
 
diff --git a/poky/meta/recipes-graphics/drm/libdrm_2.4.117.bb b/poky/meta/recipes-graphics/drm/libdrm_2.4.118.bb
similarity index 96%
rename from poky/meta/recipes-graphics/drm/libdrm_2.4.117.bb
rename to poky/meta/recipes-graphics/drm/libdrm_2.4.118.bb
index 3e6fb16..7e0b23e 100644
--- a/poky/meta/recipes-graphics/drm/libdrm_2.4.117.bb
+++ b/poky/meta/recipes-graphics/drm/libdrm_2.4.118.bb
@@ -13,7 +13,7 @@
 SRC_URI = "http://dri.freedesktop.org/libdrm/${BP}.tar.xz \
           "
 
-SRC_URI[sha256sum] = "a2888d69e3eb1c8a77adc08a75a60fbae01f0d208d26f034d1a12e362361242b"
+SRC_URI[sha256sum] = "a777bd85f2b5fc9c57f886c82058300578317cafdbc77d0a769d7e9a9567ab88"
 
 inherit meson pkgconfig manpages
 
diff --git a/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch b/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch
index 8230ba5..06379ee 100644
--- a/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch
+++ b/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-meson.build-use-python3-directly-for-python.patch
@@ -1,4 +1,4 @@
-From c853c9e5c44f1b23a15a7ba629ee02f7d8ec23a0 Mon Sep 17 00:00:00 2001
+From 2afe24fc95dbb89e99df29ccbe73afa835f58202 Mon Sep 17 00:00:00 2001
 From: Alexander Kanavin <alex.kanavin@gmail.com>
 Date: Mon, 6 Jan 2020 12:44:42 +0100
 Subject: [PATCH] meson.build: use 'python3' directly for python
@@ -14,15 +14,15 @@
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 diff --git a/meson.build b/meson.build
-index 13d95bb..b241eb2 100644
+index de6d16b5..79cedbf6 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -64,7 +64,7 @@ flags = [
+@@ -68,7 +68,7 @@ flags = [
  
  add_project_arguments(cc.get_supported_arguments(flags), language : 'c')
  
 -prog_python = import('python').find_installation('python3')
 +prog_python = 'python3'
  
- libdrm_dep = dependency('libdrm', version : '>=2.4.50')
- thread_dep = dependency('threads')
+ not_found = dependency('', required: false)
+ libdrm_dep = dependency('libdrm', version : '>=2.4.50', required: get_option('drm').enabled() or get_option('venus'))
diff --git a/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-Fix-undefined-behavior-with-clang.patch b/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-Fix-undefined-behavior-with-clang.patch
new file mode 100644
index 0000000..48488d7
--- /dev/null
+++ b/poky/meta/recipes-graphics/virglrenderer/virglrenderer/0001-vtest-Fix-undefined-behavior-with-clang.patch
@@ -0,0 +1,56 @@
+From ea328b246d093477cf26a68b42e975aaaef6abad Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 28 Nov 2023 21:55:36 -0800
+Subject: [PATCH] vtest: Fix undefined behavior with clang
+
+This is seen when compiling with CC="clang -D_FORTIFY_SOURCE=2"
+Move #ifdef outside of printf() call.
+
+Fixes
+
+| ../git/vtest/vtest_server.c:244:2: error: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive]
+|   244 | #ifdef ENABLE_VENUS
+|       |  ^
+| ../git/vtest/vtest_server.c:246:2: error: embedding a directive within macro arguments has undefined behavior [-Werror,-Wembedded-directive]
+|   246 | #endif
+|       |  ^
+
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1309]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ vtest/vtest_server.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/vtest/vtest_server.c b/vtest/vtest_server.c
+index 1ca7f74f..93d949d7 100644
+--- a/vtest/vtest_server.c
++++ b/vtest/vtest_server.c
+@@ -197,6 +197,12 @@ static void vtest_server_parse_args(int argc, char **argv)
+    /* getopt_long stores the option index here. */
+    int option_index = 0;
+ 
++#ifdef ENABLE_VENUS
++   char* ven = " [--venus]";
++#else
++   char* ven = "";
++#endif
++
+    do {
+       ret = getopt_long(argc, argv, "", long_options, &option_index);
+ 
+@@ -244,10 +250,8 @@ static void vtest_server_parse_args(int argc, char **argv)
+          printf("Usage: %s [--no-fork] [--no-loop-or-fork] [--multi-clients] "
+                 "[--use-glx] [--use-egl-surfaceless] [--use-gles] [--no-virgl]"
+                 "[--rendernode <dev>] [--socket-path <path>] "
+-#ifdef ENABLE_VENUS
+-                " [--venus]"
+-#endif
+-                " [file]\n", argv[0]);
++                "%s"
++                " [file]\n", argv[0], ven);
+          exit(EXIT_FAILURE);
+          break;
+       }
+-- 
+2.43.0
+
diff --git a/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.10.4.bb b/poky/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.0.bb
similarity index 83%
rename from poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.10.4.bb
rename to poky/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.0.bb
index f76e7cb..eb7ba10 100644
--- a/poky/meta/recipes-graphics/virglrenderer/virglrenderer_0.10.4.bb
+++ b/poky/meta/recipes-graphics/virglrenderer/virglrenderer_1.0.0.bb
@@ -9,18 +9,19 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=c81c08eeefd9418fca8f88309a76db10"
 
 DEPENDS = "libdrm libepoxy virtual/egl virtual/libgbm"
-SRCREV = "88b9fe3bfc64b23a701e4875006dbc0e769f14f6"
-SRC_URI = "git://gitlab.freedesktop.org/virgl/virglrenderer.git;branch=master;protocol=https \
+SRCREV = "9c9d55ecbe502e0d71ee99529709efcca69aac42"
+SRC_URI = "git://gitlab.freedesktop.org/virgl/virglrenderer.git;branch=main;protocol=https \
            file://0001-meson.build-use-python3-directly-for-python.patch \
+           file://0001-vtest-Fix-undefined-behavior-with-clang.patch \
            "
 
 S = "${WORKDIR}/git"
 
 inherit meson pkgconfig features_check
 
-PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'venus-experimental', '', d)}"
+PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'vulkan', 'venus', '', d)}"
 
-PACKAGECONFIG[venus-experimental] = "-Dvenus-experimental=true,-Dvenus-experimental=false,vulkan-loader vulkan-headers"
+PACKAGECONFIG[venus] = "-Dvenus=true,-Dvenus=false,vulkan-loader vulkan-headers"
 PACKAGECONFIG[va] = "-Dvideo=true,-Dvideo=false,libva"
 PACKAGECONFIG[render-server] = "-Drender-server=true,-Drender-server=false"
 PACKAGECONFIG[drm-msm-experimental] = "-Ddrm-msm-experimental=true,-Ddrm-msm-experimental=false"
diff --git a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.5.0.bb b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.6.0.bb
similarity index 92%
rename from poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.5.0.bb
rename to poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.6.0.bb
index 62e9b15..02045cc 100644
--- a/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.5.0.bb
+++ b/poky/meta/recipes-graphics/xorg-lib/libxkbcommon_1.6.0.bb
@@ -9,11 +9,11 @@
 
 SRC_URI = "http://xkbcommon.org/download/${BPN}-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "560f11c4bbbca10f495f3ef7d3a6aa4ca62b4f8fb0b52e7d459d18a26e46e017"
+SRC_URI[sha256sum] = "0edc14eccdd391514458bc5f5a4b99863ed2d651e4dd761a90abf4f46ef99c2b"
 
 UPSTREAM_CHECK_URI = "http://xkbcommon.org/"
 
-inherit meson pkgconfig
+inherit meson pkgconfig bash-completion
 
 PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'x11 wayland', d)} xkbregistry"
 
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-fix-phys_proc_id-and-cpu_core_id-moved-in-linux-6.7..patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-fix-phys_proc_id-and-cpu_core_id-moved-in-linux-6.7..patch
new file mode 100644
index 0000000..598f5a7
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-fix-phys_proc_id-and-cpu_core_id-moved-in-linux-6.7..patch
@@ -0,0 +1,79 @@
+From 4f32efe70b618c4721bf197692fc9d709d352528 Mon Sep 17 00:00:00 2001
+From: Kienan Stewart <kstewart@efficios.com>
+Date: Mon, 20 Nov 2023 11:27:12 -0500
+Subject: [PATCH 1/2] fix: phys_proc_id and cpu_core_id moved in linux
+ 6.7.0-rc1
+
+See upstream commit:
+
+    commit 02fb601d27a7abf60d52b21bdf5b100a8d63da3f
+    Author: Thomas Gleixner <tglx@linutronix.de>
+    Date:   Mon Aug 14 10:18:30 2023 +0200
+
+        x86/cpu: Move phys_proc_id into topology info
+
+        Rename it to pkg_id which is the terminology used in the kernel.
+
+        No functional change.
+
+See upstream commit:
+
+    commit e95256335d45cc965cd12c423535002974313340
+    Author: Thomas Gleixner <tglx@linutronix.de>
+    Date:   Mon Aug 14 10:18:34 2023 +0200
+
+        x86/cpu: Move cpu_core_id into topology info
+
+        Rename it to core_id and stick it to the other ID fields.
+
+        No functional change.
+
+Upstream-Status: Backport [commit 4f32efe7]
+
+Signed-off-by: Kienan Stewart <kstewart@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Change-Id: I574b02430210d5bb72c4b9db901d0e3a6dc7bea0
+---
+ .../instrumentation/events/lttng-statedump.h  | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+diff --git a/include/instrumentation/events/lttng-statedump.h b/include/instrumentation/events/lttng-statedump.h
+index 642aa356..4831a941 100644
+--- a/include/instrumentation/events/lttng-statedump.h
++++ b/include/instrumentation/events/lttng-statedump.h
+@@ -253,6 +253,23 @@ LTTNG_TRACEPOINT_EVENT(lttng_statedump_interrupt,
+ 
+ #define LTTNG_HAVE_STATEDUMP_CPU_TOPOLOGY
+ 
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,7,0))
++LTTNG_TRACEPOINT_EVENT(lttng_statedump_cpu_topology,
++	TP_PROTO(struct lttng_kernel_session *session, struct cpuinfo_x86 *c),
++	TP_ARGS(session, c),
++	TP_FIELDS(
++		ctf_string(architecture, "x86")
++		ctf_integer(uint16_t, cpu_id, c->cpu_index)
++		ctf_string(vendor, c->x86_vendor_id[0] ? c->x86_vendor_id : "unknown")
++		ctf_integer(uint8_t, family, c->x86)
++		ctf_integer(uint8_t, model, c->x86_model)
++		ctf_string(model_name, c->x86_model_id[0] ? c->x86_model_id : "unknown")
++		ctf_integer(uint16_t, physical_id, c->topo.pkg_id)
++		ctf_integer(uint16_t, core_id, c->topo.core_id)
++		ctf_integer(uint16_t, cores, c->booted_cores)
++	)
++)
++#else
+ LTTNG_TRACEPOINT_EVENT(lttng_statedump_cpu_topology,
+ 	TP_PROTO(struct lttng_kernel_session *session, struct cpuinfo_x86 *c),
+ 	TP_ARGS(session, c),
+@@ -268,6 +285,8 @@ LTTNG_TRACEPOINT_EVENT(lttng_statedump_cpu_topology,
+ 		ctf_integer(uint16_t, cores, c->booted_cores)
+ 	)
+ )
++#endif /* LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,7,0) */
++
+ #endif /* CONFIG_X86_32 || CONFIG_X86_64 */
+ 
+ #endif /*  LTTNG_TRACE_LTTNG_STATEDUMP_H */
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch
index 76a5787..120528b 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-src-Kbuild-change-missing-CONFIG_TRACEPOINTS-to-warn.patch
@@ -19,10 +19,10 @@
  src/Kbuild | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
-diff --git a/src/Kbuild b/src/Kbuild
-index 7137874..04eb5c9 100644
---- a/src/Kbuild
-+++ b/src/Kbuild
+Index: lttng-modules-2.13.10/src/Kbuild
+===================================================================
+--- lttng-modules-2.13.10.orig/src/Kbuild
++++ lttng-modules-2.13.10/src/Kbuild
 @@ -2,10 +2,13 @@
  
  ifdef CONFIG_LOCALVERSION	# Check if dot-config is included.
@@ -38,7 +38,7 @@
  TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST)))/..
  
  lttng_check_linux_version = $(shell pwd)/include/linux/version.h
-@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump-impl.o
+@@ -150,3 +153,5 @@ lttng-statedump-objs := lttng-statedump-
  obj-$(CONFIG_LTTNG) += probes/
  obj-$(CONFIG_LTTNG) += lib/
  obj-$(CONFIG_LTTNG) += tests/
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0001-wrapper-fdtable-adjust-fd-lookup-to-v6.7.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-wrapper-fdtable-adjust-fd-lookup-to-v6.7.patch
new file mode 100644
index 0000000..b374483
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0001-wrapper-fdtable-adjust-fd-lookup-to-v6.7.patch
@@ -0,0 +1,35 @@
+From 76e4ea0c33a8c7726c0df28083d5c8bc1c1335e8 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Thu, 23 Nov 2023 13:49:51 -0500
+Subject: [PATCH] wrapper/fdtable: adjust fd lookup to v6.7+
+
+commit 0ede61d8589cc2d93 [file: convert to SLAB_TYPESAFE_BY_RCU]
+renames lookup_fd_rcu to lookup_fdget_rcu, so we need to
+version adjust the fdtable wrapper accordingly.
+
+Upstream-Status: Submitted [https://lists.lttng.org/pipermail/lttng-dev/2023-November/030667.html]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ include/wrapper/fdtable.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/include/wrapper/fdtable.h b/include/wrapper/fdtable.h
+index fa5f7207..aaf2b9e7 100644
+--- a/include/wrapper/fdtable.h
++++ b/include/wrapper/fdtable.h
+@@ -16,7 +16,11 @@
+ static inline
+ struct file *lttng_lookup_fd_rcu(unsigned int fd)
+ {
++#if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(6,7,0))
+ 	return lookup_fd_rcu(fd);
++#else
++	return lookup_fdget_rcu(fd);
++#endif
+ }
+ #else
+ static inline
+-- 
+2.34.1
+
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules/0002-fix-mm-vmscan-signatures-changed-in-linux-6.7.0-rc1.patch b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-fix-mm-vmscan-signatures-changed-in-linux-6.7.0-rc1.patch
new file mode 100644
index 0000000..a1b979c
--- /dev/null
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules/0002-fix-mm-vmscan-signatures-changed-in-linux-6.7.0-rc1.patch
@@ -0,0 +1,71 @@
+From aee34d916bdae79abcf103ef098cbb2e0c20bf83 Mon Sep 17 00:00:00 2001
+From: Kienan Stewart <kstewart@efficios.com>
+Date: Mon, 20 Nov 2023 11:33:14 -0500
+Subject: [PATCH 2/2] fix: mm, vmscan signatures changed in linux 6.7.0-rc1
+
+See upstream commit:
+
+    commit 3dfbb555c98ac55b9d911f9af0e35014b445fb41
+    Author: Vlastimil Babka <vbabka@suse.cz>
+    Date:   Thu Sep 14 15:16:39 2023 +0200
+
+        mm, vmscan: remove ISOLATE_UNMAPPED
+
+        This isolate_mode_t flag is effectively unused since 89f6c88a6ab4 ("mm:
+        __isolate_lru_page_prepare() in isolate_migratepages_block()") as
+        sc->may_unmap is now checked directly (and only node_reclaim has a mode
+        that sets it to 0).  The last remaining place is mm_vmscan_lru_isolate
+        tracepoint for the isolate_mode parameter.  That one was mainly used to
+        indicate the active/inactive mode, which the trace-vmscan-postprocess.pl
+        script consumed, but that got silently broken.  After fixing the script by
+        the previous patch, it does not need the isolate_mode anymore.  So just
+        remove the parameter and with that the whole ISOLATE_UNMAPPED flag.
+
+Upstream-Status: Backport [commit aee34d91]
+
+Signed-off-by: Kienan Stewart <kstewart@efficios.com>
+Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+Change-Id: Ie7346886d926a1a9d20bcb1570c587c5e943a1c3
+---
+ include/instrumentation/events/mm_vmscan.h | 28 +++++++++++++++++++++-
+ 1 file changed, 27 insertions(+), 1 deletion(-)
+
+Index: lttng-modules-2.13.10/include/instrumentation/events/mm_vmscan.h
+===================================================================
+--- lttng-modules-2.13.10.orig/include/instrumentation/events/mm_vmscan.h
++++ lttng-modules-2.13.10/include/instrumentation/events/mm_vmscan.h
+@@ -369,7 +369,33 @@ LTTNG_TRACEPOINT_EVENT_MAP(mm_shrink_sla
+ )
+ #endif
+ 
+-#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0))
++#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(6,7,0))
++LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_isolate,
++
++	TP_PROTO(int classzone_idx,
++		int order,
++		unsigned long nr_requested,
++		unsigned long nr_scanned,
++		unsigned long nr_skipped,
++		unsigned long nr_taken,
++		int lru
++	),
++
++	TP_ARGS(classzone_idx, order, nr_requested, nr_scanned, nr_skipped,
++		nr_taken, lru
++	),
++
++	TP_FIELDS(
++		ctf_integer(int, classzone_idx, classzone_idx)
++		ctf_integer(int, order, order)
++		ctf_integer(unsigned long, nr_requested, nr_requested)
++		ctf_integer(unsigned long, nr_scanned, nr_scanned)
++		ctf_integer(unsigned long, nr_skipped, nr_skipped)
++		ctf_integer(unsigned long, nr_taken, nr_taken)
++		ctf_integer(int, lru, lru)
++	)
++)
++#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(4,11,0))
+ LTTNG_TRACEPOINT_EVENT(mm_vmscan_lru_isolate,
+ 
+ 	TP_PROTO(int classzone_idx,
diff --git a/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.10.bb b/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.10.bb
index 4c0e37e..a7e3096 100644
--- a/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.10.bb
+++ b/poky/meta/recipes-kernel/lttng/lttng-modules_2.13.10.bb
@@ -10,6 +10,9 @@
 include lttng-platforms.inc
 
 SRC_URI = "https://lttng.org/files/${BPN}/${BPN}-${PV}.tar.bz2 \
+           file://0001-fix-phys_proc_id-and-cpu_core_id-moved-in-linux-6.7..patch \
+           file://0002-fix-mm-vmscan-signatures-changed-in-linux-6.7.0-rc1.patch \
+           file://0001-wrapper-fdtable-adjust-fd-lookup-to-v6.7.patch \
            "
 
 # Use :append here so that the patch is applied also when using devupstream
diff --git a/poky/meta/recipes-multimedia/mpg123/mpg123_1.31.3.bb b/poky/meta/recipes-multimedia/mpg123/mpg123_1.32.3.bb
similarity index 95%
rename from poky/meta/recipes-multimedia/mpg123/mpg123_1.31.3.bb
rename to poky/meta/recipes-multimedia/mpg123/mpg123_1.32.3.bb
index b03ee9f..3ea68b1 100644
--- a/poky/meta/recipes-multimedia/mpg123/mpg123_1.31.3.bb
+++ b/poky/meta/recipes-multimedia/mpg123/mpg123_1.32.3.bb
@@ -10,7 +10,7 @@
 LIC_FILES_CHKSUM = "file://COPYING;md5=e7b9c15fcfb986abb4cc5e8400a24169"
 
 SRC_URI = "https://www.mpg123.de/download/${BP}.tar.bz2"
-SRC_URI[sha256sum] = "1ca77d3a69a5ff845b7a0536f783fee554e1041139a6b978f6afe14f5814ad1a"
+SRC_URI[sha256sum] = "2d9913a57d4ee8f497a182c6e82582602409782a4fb481e989feebf4435867b4"
 
 UPSTREAM_CHECK_REGEX = "mpg123-(?P<pver>\d+(\.\d+)+)\.tar"
 
@@ -40,7 +40,6 @@
 EXTRA_OECONF = " \
     --enable-shared \
     --enable-largefile \
-    --disable-lfs-alias \
     --with-audio='${AUDIOMODS}' \
     ${@bb.utils.contains('TUNE_FEATURES', 'neon', '--with-cpu=neon', '', d)} \
     ${@bb.utils.contains('TUNE_FEATURES', 'altivec', '--with-cpu=altivec', '', d)} \
diff --git a/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch b/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
index e996776..a1fc9e2 100644
--- a/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
+++ b/poky/meta/recipes-rt/rt-tests/files/0001-Makefile-Allow-for-CC-and-AR-to-be-overridden.patch
@@ -1,4 +1,4 @@
-From 174fd202f2c85e43261139d71ad18908cc29b586 Mon Sep 17 00:00:00 2001
+From 7cf4cf097895bd4c3f3d3a6f783c766b3173cf1a Mon Sep 17 00:00:00 2001
 From: Randy Witt <randy.e.witt@intel.com>
 Date: Fri, 16 Oct 2020 16:54:30 -0700
 Subject: [PATCH] Makefile: Allow for CC and AR to be overridden
@@ -15,11 +15,11 @@
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/Makefile b/Makefile
-index 4df61ec..a229986 100644
+index 223a839..a735584 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1,6 +1,6 @@
- VERSION = 2.5
+ VERSION = 2.6
 -CC = $(CROSS_COMPILE)gcc
 -AR = $(CROSS_COMPILE)ar
 +CC ?= $(CROSS_COMPILE)gcc
diff --git a/poky/meta/recipes-rt/rt-tests/rt-tests.inc b/poky/meta/recipes-rt/rt-tests/rt-tests.inc
index 527e14a..70315c4 100644
--- a/poky/meta/recipes-rt/rt-tests/rt-tests.inc
+++ b/poky/meta/recipes-rt/rt-tests/rt-tests.inc
@@ -1,5 +1,5 @@
-SRCREV = "4579b9a6d85ae528f76e92421eb5e7b33cd26b17"
-PV = "2.5"
+SRCREV = "217cd8518c5f7777d490892aa9c765a6b2782cb5"
+PV = "2.6"
 PE = "1"
 
 SRC_URI = "git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git;branch=main;protocol=https"
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/0d3344e17d258106617b0e6d783d073b188a2548.patch b/poky/meta/recipes-sato/webkit/webkitgtk/0d3344e17d258106617b0e6d783d073b188a2548.patch
index 34e0ff9..e5ece82 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk/0d3344e17d258106617b0e6d783d073b188a2548.patch
+++ b/poky/meta/recipes-sato/webkit/webkitgtk/0d3344e17d258106617b0e6d783d073b188a2548.patch
@@ -1,4 +1,4 @@
-From 647c93de99a0f71f478d76a4cc7714eba7ba1447 Mon Sep 17 00:00:00 2001
+From 95398982f4a120147a98a27e176facf6d95b2bf7 Mon Sep 17 00:00:00 2001
 From: Adrian Perez de Castro <aperez@igalia.com>
 Date: Thu, 2 Jun 2022 11:19:06 +0300
 Subject: [PATCH] FELightningNEON.cpp fails to build, NEON fast path seems
@@ -33,6 +33,7 @@
 
 Upstream-Status: Submitted [https://github.com/WebKit/WebKit/pull/1233]
 Signed-off-by: Khem Raj <raj.khem@gmail.com>
+
 ---
  .../cpu/arm/filters/FELightingNEON.cpp        |  4 +-
  .../graphics/cpu/arm/filters/FELightingNEON.h | 52 +++++++++----------
@@ -203,7 +204,7 @@
 -
 -#endif // FELightingNEON_h
 diff --git a/Source/WebCore/platform/graphics/filters/DistantLightSource.h b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
-index 70c6512f..b032c82e 100644
+index 70f583b3..7d5d27e5 100644
 --- a/Source/WebCore/platform/graphics/filters/DistantLightSource.h
 +++ b/Source/WebCore/platform/graphics/filters/DistantLightSource.h
 @@ -26,6 +26,10 @@
@@ -218,7 +219,7 @@
  
  class DistantLightSource : public LightSource {
 diff --git a/Source/WebCore/platform/graphics/filters/FELighting.h b/Source/WebCore/platform/graphics/filters/FELighting.h
-index 53beb596..e78a9354 100644
+index 179edf6d..694d712d 100644
 --- a/Source/WebCore/platform/graphics/filters/FELighting.h
 +++ b/Source/WebCore/platform/graphics/filters/FELighting.h
 @@ -35,8 +35,6 @@
@@ -229,8 +230,8 @@
 -
  class FELighting : public FilterEffect {
  public:
-     const Color& lightingColor() const { return m_lightingColor; }
-@@ -64,11 +62,6 @@ protected:
+     bool operator==(const FELighting&) const;
+@@ -68,11 +66,6 @@ protected:
  
      std::unique_ptr<FilterEffectApplier> createSoftwareApplier() const override;
  
@@ -243,7 +244,7 @@
      float m_surfaceScale;
      float m_diffuseConstant;
 diff --git a/Source/WebCore/platform/graphics/filters/PointLightSource.h b/Source/WebCore/platform/graphics/filters/PointLightSource.h
-index 3a5723f0..675d63f5 100644
+index a8cfdab8..34f867bb 100644
 --- a/Source/WebCore/platform/graphics/filters/PointLightSource.h
 +++ b/Source/WebCore/platform/graphics/filters/PointLightSource.h
 @@ -26,6 +26,10 @@
@@ -258,7 +259,7 @@
  
  class PointLightSource : public LightSource {
 diff --git a/Source/WebCore/platform/graphics/filters/SpotLightSource.h b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
-index 684626f7..dea58389 100644
+index 6404467a..5cac38f2 100644
 --- a/Source/WebCore/platform/graphics/filters/SpotLightSource.h
 +++ b/Source/WebCore/platform/graphics/filters/SpotLightSource.h
 @@ -26,6 +26,10 @@
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk/check-GST_GL_HAVE_PLATFORM_GLX.patch b/poky/meta/recipes-sato/webkit/webkitgtk/check-GST_GL_HAVE_PLATFORM_GLX.patch
deleted file mode 100644
index ae99810..0000000
--- a/poky/meta/recipes-sato/webkit/webkitgtk/check-GST_GL_HAVE_PLATFORM_GLX.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Add additional check on GST_GL_HAVE_PLATFORM_GLX before using gst_gl_display_x11_new_with_display
-
-This ensures that there is a compile time check for glx support in gstreamer as
-runtime check is not enough because gst_gl_display_x11_new_with_display() API comes from
-gst/gl/x11/gstgldisplay_x11.h which is only included when GST_GL_HAVE_PLATFORM_GLX is defined
-therefore make this check consistent to fix build with some platforms which use pvr gl drivers
-where this problem appear at compile time.
-
-
-/mnt/b/yoe/master/build/tmp/work/riscv64-yoe-linux/webkitgtk/2.40.2-r0/webkitgtk-2.40.2/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp:68:31: error: use of undeclared identifier 'gst_gl_display_x11_new_with_display'; did you mean 'gst_gl_display_egl_new_with_egl_display'?
-   68 |         return GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
-      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      |                               gst_gl_display_egl_new_with_egl_display
-
-This issue is 2.40 specific since GLX support is removed [1] from trunk upstream, therefore
-this patch wont be needed when upgrading to 2.42+
-
-[1] https://github.com/WebKit/WebKit/commit/320560f9e53ddcd53954059bd005e0c75eb91abf
-
-Upstream-Status: Inappropriate [GLX support is gone in 2.41+]
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
---- a/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp	2023-02-20 01:22:18.917743700 -0800
-+++ b/Source/WebCore/platform/graphics/gstreamer/PlatformDisplayGStreamer.cpp	2023-07-08 08:45:09.739177065 -0700
-@@ -63,7 +63,7 @@
-     if (glPlatform == GST_GL_PLATFORM_EGL)
-         return GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(sharedDisplay.eglDisplay()));
- #endif
--#if USE(GLX)
-+#if USE(GLX) && GST_GL_HAVE_PLATFORM_GLX
-     if (is<PlatformDisplayX11>(sharedDisplay) && glPlatform == GST_GL_PLATFORM_GLX)
-         return GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
- #endif
diff --git a/poky/meta/recipes-sato/webkit/webkitgtk_2.40.5.bb b/poky/meta/recipes-sato/webkit/webkitgtk_2.42.2.bb
similarity index 97%
rename from poky/meta/recipes-sato/webkit/webkitgtk_2.40.5.bb
rename to poky/meta/recipes-sato/webkit/webkitgtk_2.42.2.bb
index 0c54f20..2ba60eb 100644
--- a/poky/meta/recipes-sato/webkit/webkitgtk_2.40.5.bb
+++ b/poky/meta/recipes-sato/webkit/webkitgtk_2.42.2.bb
@@ -13,10 +13,9 @@
            file://0001-FindGObjectIntrospection.cmake-prefix-variables-obta.patch \
            file://reproducibility.patch \
            file://0d3344e17d258106617b0e6d783d073b188a2548.patch \
-           file://check-GST_GL_HAVE_PLATFORM_GLX.patch \
            file://0001-CMake-Add-a-variable-to-control-macro-__PAS_ALWAYS_I.patch \
            "
-SRC_URI[sha256sum] = "7de051a263668621d91a61a5eb1c3771d1a7cec900043d4afef06c326c16037f"
+SRC_URI[sha256sum] = "5720aa3e8627f1b9f63252187d4df0f8233ae71d697b1796ebfbe5ca750bd118"
 
 inherit cmake pkgconfig gobject-introspection perlnative features_check upstream-version-is-even gi-docgen
 
@@ -75,6 +74,7 @@
 PACKAGECONFIG[journald] = "-DENABLE_JOURNALD_LOG=ON,-DENABLE_JOURNALD_LOG=OFF,systemd"
 PACKAGECONFIG[avif] = "-DUSE_AVIF_LOG=ON,-DUSE_AVIF=OFF,libavif"
 PACKAGECONFIG[media-recorder] = "-DENABLE_MEDIA_RECORDER=ON,-DENABLE_MEDIA_RECORDER=OFF,gstreamer1.0-plugins-bad"
+PACKAGECONFIG[jpegxl] = "-DUSE_JPEGXL=ON,-DUSE_JPEGXL=OFF,libjxl"
 
 EXTRA_OECMAKE = " \
                  -DPORT=GTK \
diff --git a/poky/meta/recipes-support/diffoscope/diffoscope_251.bb b/poky/meta/recipes-support/diffoscope/diffoscope_252.bb
similarity index 93%
rename from poky/meta/recipes-support/diffoscope/diffoscope_251.bb
rename to poky/meta/recipes-support/diffoscope/diffoscope_252.bb
index 8862509..86dc85d 100644
--- a/poky/meta/recipes-support/diffoscope/diffoscope_251.bb
+++ b/poky/meta/recipes-support/diffoscope/diffoscope_252.bb
@@ -12,7 +12,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "c9ba2fc24379b2ba4457dc7be6970884cc2ee94c20d44f3889c2a4741e6178d3"
+SRC_URI[sha256sum] = "e268384fa484f3dd8a936da626e6ef1b231dcb286d09a360f37548637f8dd46d"
 
 RDEPENDS:${PN} += "\
         binutils \
diff --git a/poky/meta/recipes-support/gnutls/gnutls_3.8.1.bb b/poky/meta/recipes-support/gnutls/gnutls_3.8.2.bb
similarity index 97%
rename from poky/meta/recipes-support/gnutls/gnutls_3.8.1.bb
rename to poky/meta/recipes-support/gnutls/gnutls_3.8.2.bb
index 455031d..43fb5c4 100644
--- a/poky/meta/recipes-support/gnutls/gnutls_3.8.1.bb
+++ b/poky/meta/recipes-support/gnutls/gnutls_3.8.2.bb
@@ -25,7 +25,7 @@
            file://Add-ptest-support.patch \
            "
 
-SRC_URI[sha256sum] = "ba8b9e15ae20aba88f44661978f5b5863494316fe7e722ede9d069fe6294829c"
+SRC_URI[sha256sum] = "e765e5016ffa9b9dd243e363a0460d577074444ee2491267db2e96c9c2adef77"
 
 inherit autotools texinfo pkgconfig gettext lib_package gtk-doc ptest
 
diff --git a/poky/meta/recipes-support/icu/icu_73-2.bb b/poky/meta/recipes-support/icu/icu_74-1.bb
similarity index 95%
rename from poky/meta/recipes-support/icu/icu_73-2.bb
rename to poky/meta/recipes-support/icu/icu_74-1.bb
index 7c59f8b..88ded16 100644
--- a/poky/meta/recipes-support/icu/icu_73-2.bb
+++ b/poky/meta/recipes-support/icu/icu_74-1.bb
@@ -78,7 +78,7 @@
 
 BBCLASSEXTEND = "native nativesdk"
 
-LIC_FILES_CHKSUM = "file://../LICENSE;md5=80c2cf39ad8ae12b9b9482a1737c6650"
+LIC_FILES_CHKSUM = "file://../LICENSE;md5=08dc3852df8fffa807301902ad899ff8"
 
 def icu_download_version(d):
     pvsplit = d.getVar('PV').split('-')
@@ -111,8 +111,8 @@
 SRC_URI:append:class-target = "\
            file://0001-Disable-LDFLAGSICUDT-for-Linux.patch \
           "
-SRC_URI[code.sha256sum] = "818a80712ed3caacd9b652305e01afc7fa167e6f2e94996da44b90c2ab604ce1"
-SRC_URI[data.sha256sum] = "ca1ee076163b438461e484421a7679fc33a64cd0a54f9d4b401893fa1eb42701"
+SRC_URI[code.sha256sum] = "86ce8e60681972e60e4dcb2490c697463fcec60dd400a5f9bffba26d0b52b8d0"
+SRC_URI[data.sha256sum] = "67d5ab39c5187e1dd0fed60a3fe52794dce9784b4c045cb85e19f5d317fd783f"
 
 UPSTREAM_CHECK_REGEX = "releases/tag/release-(?P<pver>(?!.+rc).+)"
 GITHUB_BASE_URI = "https://github.com/unicode-org/icu/releases"
diff --git a/poky/meta/recipes-support/libgcrypt/libgcrypt_1.10.2.bb b/poky/meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb
similarity index 95%
rename from poky/meta/recipes-support/libgcrypt/libgcrypt_1.10.2.bb
rename to poky/meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb
index 524b06c..1c4f4d6 100644
--- a/poky/meta/recipes-support/libgcrypt/libgcrypt_1.10.2.bb
+++ b/poky/meta/recipes-support/libgcrypt/libgcrypt_1.10.3.bb
@@ -27,7 +27,7 @@
            file://no-bench-slope.patch \
            file://run-ptest \
            "
-SRC_URI[sha256sum] = "3b9c02a004b68c256add99701de00b383accccf37177e0d6c58289664cce0c03"
+SRC_URI[sha256sum] = "8b0870897ac5ac67ded568dcfadf45969cfa8a6beb0fd60af2a9eadc2a3272aa"
 
 CVE_STATUS[CVE-2018-12433] = "disputed: CVE is disputed and not affecting crypto libraries for any distro."
 CVE_STATUS[CVE-2018-12438] = "disputed: CVE is disputed and not affecting crypto libraries for any distro."
diff --git a/poky/meta/recipes-support/libksba/libksba_1.6.4.bb b/poky/meta/recipes-support/libksba/libksba_1.6.5.bb
similarity index 93%
rename from poky/meta/recipes-support/libksba/libksba_1.6.4.bb
rename to poky/meta/recipes-support/libksba/libksba_1.6.5.bb
index f9636f9..62ba73d 100644
--- a/poky/meta/recipes-support/libksba/libksba_1.6.4.bb
+++ b/poky/meta/recipes-support/libksba/libksba_1.6.5.bb
@@ -24,7 +24,7 @@
 SRC_URI = "${GNUPG_MIRROR}/${BPN}/${BPN}-${PV}.tar.bz2 \
            file://ksba-add-pkgconfig-support.patch"
 
-SRC_URI[sha256sum] = "bbb43f032b9164d86c781ffe42213a83bf4f2fee91455edfa4654521b8b03b6b"
+SRC_URI[sha256sum] = "a564628c574c99287998753f98d750babd91a4e9db451f46ad140466ef2a6d16"
 
 do_configure:prepend () {
 	# Else these could be used in preference to those in aclocal-copy
diff --git a/poky/meta/recipes-support/libsoup/libsoup-2.4/0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch b/poky/meta/recipes-support/libsoup/libsoup-2.4/0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch
new file mode 100644
index 0000000..d867e5b
--- /dev/null
+++ b/poky/meta/recipes-support/libsoup/libsoup-2.4/0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch
@@ -0,0 +1,44 @@
+From ced3c5d8cad0177b297666343f1561799dfefb0d Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 22 Nov 2023 18:49:10 -0800
+Subject: [PATCH] Fix build with libxml2-2.12.0 and clang-17
+
+Fixes build errors about missing function prototypes with clang-17
+
+Fixes
+| ../libsoup-2.74.3/libsoup/soup-xmlrpc-old.c:512:8: error: call to undeclared function 'xmlParseMemory'; ISO C99 and later do not support implicit function declarations
+
+Upstream-Status: Submitted [https://gitlab.gnome.org/GNOME/libsoup/-/merge_requests/385]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ libsoup/soup-xmlrpc-old.c | 1 +
+ libsoup/soup-xmlrpc.c     | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/libsoup/soup-xmlrpc-old.c b/libsoup/soup-xmlrpc-old.c
+index c57086b6..527e3b23 100644
+--- a/libsoup/soup-xmlrpc-old.c
++++ b/libsoup/soup-xmlrpc-old.c
+@@ -11,6 +11,7 @@
+ 
+ #include <string.h>
+ 
++#include <libxml/parser.h>
+ #include <libxml/tree.h>
+ 
+ #include "soup-xmlrpc-old.h"
+diff --git a/libsoup/soup-xmlrpc.c b/libsoup/soup-xmlrpc.c
+index 42dcda9c..e991cbf0 100644
+--- a/libsoup/soup-xmlrpc.c
++++ b/libsoup/soup-xmlrpc.c
+@@ -17,6 +17,7 @@
+ 
+ #include <string.h>
+ #include <errno.h>
++#include <libxml/parser.h>
+ #include <libxml/tree.h>
+ #include "soup-xmlrpc.h"
+ #include "soup.h"
+-- 
+2.43.0
+
diff --git a/poky/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb b/poky/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
index a605857..ee20530 100644
--- a/poky/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
+++ b/poky/meta/recipes-support/libsoup/libsoup-2.4_2.74.3.bb
@@ -11,7 +11,8 @@
 
 SHRT_VER = "${@d.getVar('PV').split('.')[0]}.${@d.getVar('PV').split('.')[1]}"
 
-SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz"
+SRC_URI = "${GNOME_MIRROR}/libsoup/${SHRT_VER}/libsoup-${PV}.tar.xz \
+           file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch"
 SRC_URI[sha256sum] = "e4b77c41cfc4c8c5a035fcdc320c7bc6cfb75ef7c5a034153df1413fa1d92f13"
 
 CVE_PRODUCT = "libsoup"
diff --git a/poky/meta/recipes-support/libxslt/libxslt_1.1.38.bb b/poky/meta/recipes-support/libxslt/libxslt_1.1.39.bb
similarity index 95%
rename from poky/meta/recipes-support/libxslt/libxslt_1.1.38.bb
rename to poky/meta/recipes-support/libxslt/libxslt_1.1.39.bb
index ed5b15b..2cc0c84 100644
--- a/poky/meta/recipes-support/libxslt/libxslt_1.1.38.bb
+++ b/poky/meta/recipes-support/libxslt/libxslt_1.1.39.bb
@@ -15,7 +15,7 @@
 
 SRC_URI = "https://download.gnome.org/sources/libxslt/1.1/libxslt-${PV}.tar.xz"
 
-SRC_URI[sha256sum] = "1f32450425819a09acaff2ab7a5a7f8a2ec7956e505d7beeb45e843d0e1ecab1"
+SRC_URI[sha256sum] = "2a20ad621148339b0759c4d4e96719362dee64c9a096dbba625ba053846349f0"
 
 UPSTREAM_CHECK_REGEX = "libxslt-(?P<pver>\d+(\.\d+)+)\.tar"
 
diff --git a/poky/meta/recipes-support/p11-kit/files/strerror-1.patch b/poky/meta/recipes-support/p11-kit/files/strerror-1.patch
deleted file mode 100644
index 6af4fee..0000000
--- a/poky/meta/recipes-support/p11-kit/files/strerror-1.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 3ba2c55dfdc8ff20de369f07f6c57d08718d3add Mon Sep 17 00:00:00 2001
-From: Adam Sampson <ats@offog.org>
-Date: Sun, 2 Jul 2023 15:22:49 +0100
-Subject: [PATCH] Check for GNU strerror_r using the compiler only
-
-The new test that was added to distinguish GNU/XSI strerror_r ran a
-compiled program, which doesn't work when cross-compiling. The only
-difference at compile time is that the GNU version returns char * and
-the XSI version returns int, so detect it by compiling a program that
-dereferences the return value.
-
-Signed-off-by: Adam Sampson <ats@offog.org>
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
----
- configure.ac | 19 +++++++------------
- meson.build  | 10 +++++-----
- 2 files changed, 12 insertions(+), 17 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 40f5a583..29890622 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -146,19 +146,14 @@ if test "$os_unix" = "yes"; then
- 
- 	AC_CHECK_FUNC(
- 		[strerror_r],
--		[AC_RUN_IFELSE(
--			[AC_LANG_SOURCE([[
--				#include <errno.h>
--				#include <string.h>
--
--				int main (void)
--				{
--					char buf[32];
--					return strerror_r (EINVAL, buf, 32);
--				}
--			]])],
--                        [AC_DEFINE([HAVE_XSI_STRERROR_R], 1, [Whether XSI-compliant strerror_r() is available])],
-+		[AC_COMPILE_IFELSE(
-+			[AC_LANG_PROGRAM([[#include <errno.h>
-+					   #include <string.h>]],
-+					 [[/* GNU strerror_r returns char *, XSI returns int */
-+					    char buf[32];
-+					    return *strerror_r (EINVAL, buf, 32);]])],
- 			[AC_DEFINE([HAVE_GNU_STRERROR_R], 1, [Whether GNU-specific strerror_r() is available])],
-+                        [AC_DEFINE([HAVE_XSI_STRERROR_R], 1, [Whether XSI-compliant strerror_r() is available])],
- 			[])],
- 		[])
- 
-diff --git a/meson.build b/meson.build
-index 0f8c8da0..4cc3f89a 100644
---- a/meson.build
-+++ b/meson.build
-@@ -306,15 +306,15 @@ if cc.has_function('strerror_r', prefix: '#include <string.h>')
- 
- int main (void)
- {
-+    /* GNU strerror_r returns char *, XSI returns int */
-     char buf[32];
--    return strerror_r (EINVAL, buf, 32);
-+    return *strerror_r (EINVAL, buf, 32);
- }
- '''
--  strerror_r_check = cc.run(strerror_r_code, name : 'strerror_r check')
--  if strerror_r_check.returncode() == 0
--    conf.set('HAVE_XSI_STRERROR_R', 1)
--  else
-+  if cc.compiles(strerror_r_code, name : 'GNU strerror_r check')
-     conf.set('HAVE_GNU_STRERROR_R', 1)
-+  else
-+    conf.set('HAVE_XSI_STRERROR_R', 1)
-   endif
- endif
- 
diff --git a/poky/meta/recipes-support/p11-kit/files/strerror-2.patch b/poky/meta/recipes-support/p11-kit/files/strerror-2.patch
deleted file mode 100644
index 1a9180b..0000000
--- a/poky/meta/recipes-support/p11-kit/files/strerror-2.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 7aa6251bf4ce36d027d53c9c96bb05f90ef7eb5b Mon Sep 17 00:00:00 2001
-From: Adam Sampson <ats@offog.org>
-Date: Sun, 2 Jul 2023 15:44:06 +0100
-Subject: [PATCH] Define _GNU_SOURCE when testing for strerror_r
-
-The Meson check for GNU/XSI strerror_r didn't inherit the project
-options that include _GNU_SOURCE (unlike the autoconf version), so the
-result didn't match how the code that uses it will be compiled. Add
-_GNU_SOURCE explicitly as with the following checks.
-
-Signed-off-by: Adam Sampson <ats@offog.org>
-
-Upstream-Status: Backport
-Signed-off-by: Ross Burton <ross.burton@arm.com>
----
- meson.build | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/meson.build b/meson.build
-index 4cc3f89a..9a72e148 100644
---- a/meson.build
-+++ b/meson.build
-@@ -301,6 +301,7 @@ endforeach
- 
- if cc.has_function('strerror_r', prefix: '#include <string.h>')
-   strerror_r_code = '''
-+#define _GNU_SOURCE
- #include <errno.h>
- #include <string.h>
- 
diff --git a/poky/meta/recipes-support/p11-kit/p11-kit_0.25.0.bb b/poky/meta/recipes-support/p11-kit/p11-kit_0.25.2.bb
similarity index 85%
rename from poky/meta/recipes-support/p11-kit/p11-kit_0.25.0.bb
rename to poky/meta/recipes-support/p11-kit/p11-kit_0.25.2.bb
index ad1fda3..d00ef2d 100644
--- a/poky/meta/recipes-support/p11-kit/p11-kit_0.25.0.bb
+++ b/poky/meta/recipes-support/p11-kit/p11-kit_0.25.2.bb
@@ -10,10 +10,8 @@
 
 DEPENDS:append = "${@' glib-2.0' if d.getVar('GTKDOC_ENABLED') == 'True' else ''}"
 
-SRC_URI = "git://github.com/p11-glue/p11-kit;branch=master;protocol=https \
-           file://strerror-1.patch \
-           file://strerror-2.patch"
-SRCREV = "a8cce8bd8065bbf80bd47219f85f0cd9cf27dd0c"
+SRC_URI = "gitsm://github.com/p11-glue/p11-kit;branch=master;protocol=https"
+SRCREV = "66d6b42ef8dd84fcd8e199ac9f23f822f1a058c9"
 S = "${WORKDIR}/git"
 
 PACKAGECONFIG ??= ""
diff --git a/poky/meta/recipes-support/shared-mime-info/shared-mime-info/0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch b/poky/meta/recipes-support/shared-mime-info/shared-mime-info/0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch
new file mode 100644
index 0000000..936f72c
--- /dev/null
+++ b/poky/meta/recipes-support/shared-mime-info/shared-mime-info/0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch
@@ -0,0 +1,26 @@
+From 665383306c725f299a1b373f947cda01949d49e4 Mon Sep 17 00:00:00 2001
+From: David Faure <faure@kde.org>
+Date: Sun, 19 Nov 2023 11:18:11 +0100
+Subject: [PATCH] Fix build with libxml2-2.12.0 and clang-17
+
+Fixes #219
+
+Upstream-Status: Backport [https://gitlab.freedesktop.org/xdg/shared-mime-info/-/commit/c918fe77e255150938e83a6aec259f153d303573]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/test-subclassing.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/test-subclassing.c b/src/test-subclassing.c
+index dd099e4..0758164 100644
+--- a/src/test-subclassing.c
++++ b/src/test-subclassing.c
+@@ -1,4 +1,5 @@
+ #include <libxml/tree.h>
++#include <libxml/parser.h>
+ #include <stdio.h>
+ #include <string.h>
+ 
+-- 
+2.43.0
+
diff --git a/poky/meta/recipes-support/shared-mime-info/shared-mime-info/0002-Handle-build-with-older-versions-of-GCC.patch b/poky/meta/recipes-support/shared-mime-info/shared-mime-info/0002-Handle-build-with-older-versions-of-GCC.patch
new file mode 100644
index 0000000..2af6b46
--- /dev/null
+++ b/poky/meta/recipes-support/shared-mime-info/shared-mime-info/0002-Handle-build-with-older-versions-of-GCC.patch
@@ -0,0 +1,54 @@
+From 461d00fcd5c5842b9a56f7462d55d46bf21163cc Mon Sep 17 00:00:00 2001
+From: Patrick Williams <patrick@stwcx.xyz>
+Date: Fri, 1 Dec 2023 11:19:02 -0600
+Subject: [PATCH] Handle build with older versions of GCC
+
+Older versions of GCC (prior to 9.1) did not put the `std::filesystem`
+support directly into libstdcpp, but in a separate `libstdc++fs`.  Add
+meson logic to detect if an extra linker flag is necessary.
+
+Fixes #223.
+
+Tested on AlmaLinux 8 which uses GCC-8.
+
+Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
+Upstream-Status: Submitted [https://gitlab.freedesktop.org/xdg/shared-mime-info/-/merge_requests/278]
+---
+ meson.build | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index ecc012f..93acd40 100644
+--- a/meson.build
++++ b/meson.build
+@@ -11,6 +11,7 @@ config = configuration_data()
+ i18n = import('i18n')
+ 
+ cc = meson.get_compiler('c')
++cxx = meson.get_compiler('cpp')
+ 
+ ###############################################################################
+ # Project configuration
+@@ -46,6 +47,19 @@ if not xdgmime_found
+     ''')
+ endif
+ 
++###############################################################################
++# Check if GCC needs -lstdc++fs (before 9.1)
++
++if not cxx.links('''
++        #include <filesystem>
++        int main() {
++            return std::filesystem::is_directory(
++                std::filesystem::status("/tmp")) ? 0 : 1;
++        }
++        ''', name: 'std++fs-check')
++    add_project_link_arguments('-lstdc++fs', language : 'cpp')
++endif
++
+ ###############################################################################
+ # Dependencies
+ 
+-- 
+2.41.0
+
diff --git a/poky/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb b/poky/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb
index 5ba4023..ef5df44 100644
--- a/poky/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb
+++ b/poky/meta/recipes-support/shared-mime-info/shared-mime-info_2.4.bb
@@ -8,7 +8,9 @@
 
 DEPENDS = "libxml2 itstool-native glib-2.0 shared-mime-info-native xmlto-native"
 
-SRC_URI = "git://gitlab.freedesktop.org/xdg/shared-mime-info.git;protocol=https;branch=master"
+SRC_URI = "git://gitlab.freedesktop.org/xdg/shared-mime-info.git;protocol=https;branch=master \
+           file://0001-Fix-build-with-libxml2-2.12.0-and-clang-17.patch \
+           file://0002-Handle-build-with-older-versions-of-GCC.patch"
 SRCREV = "9a6d6b8e963935f145f3a1ef446552de6996dada"
 
 S = "${WORKDIR}/git"
diff --git a/poky/meta/recipes-support/vim/vim.inc b/poky/meta/recipes-support/vim/vim.inc
index a37310a..6b440d8 100644
--- a/poky/meta/recipes-support/vim/vim.inc
+++ b/poky/meta/recipes-support/vim/vim.inc
@@ -19,8 +19,8 @@
            file://no-path-adjust.patch \
            "
 
-PV .= ".2068"
-SRCREV = "9198c1f2b1ddecde22af918541e0de2a32f0f45a"
+PV .= ".2130"
+SRCREV = "075ad7047457debfeef13442c01e74088b461092"
 
 # Do not consider .z in x.y.z, as that is updated with every commit
 UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+)\.0"
diff --git a/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch b/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
index b4100fc..8934d5f 100644
--- a/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
+++ b/poky/meta/recipes-support/vte/vte/0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch
@@ -11,32 +11,25 @@
 Signed-off-by: Andreas Müller <schnitzeltony@gmail.com>
 
 [1] https://gitlab.gnome.org/GNOME/vte/issues/72
-
 ---
- src/missing.hh | 4 ++++
- src/widget.cc  | 1 +
- 2 files changed, 5 insertions(+)
+ src/widget.cc  | 4 +++
+ 1 files changed, 4 insertions(+)
 
---- a/src/missing.hh
-+++ b/src/missing.hh
-@@ -24,6 +24,10 @@
- #define NSIG (8 * sizeof(sigset_t))
- #endif
+diff --git a/src/widget.cc b/src/widget.cc
+index 07f7cabf..31a77f68 100644
+--- a/src/widget.cc
++++ b/src/widget.cc
+@@ -16,6 +16,10 @@
+  * along with this library.  If not, see <https://www.gnu.org/licenses/>.
+  */
  
 +#ifndef W_EXITCODE
 +#define W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
 +#endif
 +
- #ifndef HAVE_FDWALK
- int fdwalk(int (*cb)(void* data, int fd),
-            void* data);
---- a/src/widget.cc
-+++ b/src/widget.cc
-@@ -21,6 +21,7 @@
+ #include "config.h"
+ 
  #include "widget.hh"
- 
- #include <sys/wait.h> // for W_EXITCODE
-+#include "missing.hh" // for W_EXITCODE on non-glibc systems
- 
- #include <exception>
- #include <new>
+-- 
+2.42.0
+
diff --git a/poky/meta/recipes-support/vte/vte_0.72.2.bb b/poky/meta/recipes-support/vte/vte_0.72.2.bb
deleted file mode 100644
index 44e7149..0000000
--- a/poky/meta/recipes-support/vte/vte_0.72.2.bb
+++ /dev/null
@@ -1,53 +0,0 @@
-SUMMARY = "Virtual terminal emulator GTK+ widget library"
-DESCRIPTION = "VTE provides a virtual terminal widget for GTK applications."
-HOMEPAGE = "https://wiki.gnome.org/Apps/Terminal/VTE"
-BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
-LICENSE = "GPL-3.0-only & LGPL-3.0-or-later & MIT"
-LICENSE:libvte = "LGPL-3.0-or-later"
-
-LIC_FILES_CHKSUM = " \
-    file://COPYING.GPL3;md5=cc702cf3444d1f19680c794cc61948f9 \
-    file://COPYING.LGPL3;md5=b52f2d57d10c4f7ee67a7eb9615d5d24 \
-    file://COPYING.XTERM;md5=d7fc3a23c16c039afafe2e042030f057 \
-"
-
-DEPENDS = "glib-2.0 glib-2.0-native gtk+3 libpcre2 libxml2-native gperf-native icu"
-
-GIR_MESON_OPTION = 'gir'
-GIDOCGEN_MESON_OPTION = "docs"
-
-inherit gnomebase gi-docgen features_check upstream-version-is-even gobject-introspection
-
-# vapigen.m4 is required when vala is not present (but the one from vala should be used normally)
-SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch"
-SRC_URI[archive.sha256sum] = "f7966fd185a6981f53964162b71cfef7e606495155d6f5827b72aa0dd6741c9e"
-
-ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
-
-# Help g-ir-scanner find the .so for linking
-do_compile:prepend() {
-    export GIR_EXTRA_LIBS_PATH="${B}/src/.libs"
-}
-
-# Package additional files
-FILES:${PN}-dev += "${datadir}/vala/vapi/*"
-
-PACKAGECONFIG ??= "gnutls"
-PACKAGECONFIG[vala] = "-Dvapi=true,-Dvapi=false,vala-native vala"
-PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
-PACKAGECONFIG[systemd] = "-D_systemd=true,-D_systemd=false,systemd"
-# vala requires gir
-PACKAGECONFIG:remove:class-native = "vala"
-
-CFLAGS += "-D_GNU_SOURCE"
-
-PACKAGES =+ "libvte ${PN}-prompt"
-FILES:libvte = "${libdir}/*.so.* ${libdir}/girepository-1.0/*"
-FILES:${PN}-prompt = " \
-    ${sysconfdir}/profile.d \
-    ${libexecdir}/vte-urlencode-cwd \
-"
-
-FILES:${PN}-dev += "${datadir}/glade/"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/poky/meta/recipes-support/vte/vte_0.74.1.bb b/poky/meta/recipes-support/vte/vte_0.74.1.bb
new file mode 100644
index 0000000..071f668
--- /dev/null
+++ b/poky/meta/recipes-support/vte/vte_0.74.1.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Virtual terminal emulator GTK+ widget library"
+DESCRIPTION = "VTE provides a virtual terminal widget for GTK applications."
+HOMEPAGE = "https://wiki.gnome.org/Apps/Terminal/VTE"
+BUGTRACKER = "https://bugzilla.gnome.org/buglist.cgi?product=vte"
+LICENSE = "GPL-3.0-only & LGPL-3.0-or-later & MIT"
+LICENSE:libvte = "LGPL-3.0-or-later"
+
+LIC_FILES_CHKSUM = " \
+    file://COPYING.GPL3;md5=cc702cf3444d1f19680c794cc61948f9 \
+    file://COPYING.LGPL3;md5=b52f2d57d10c4f7ee67a7eb9615d5d24 \
+    file://COPYING.XTERM;md5=d7fc3a23c16c039afafe2e042030f057 \
+"
+
+DEPENDS = "glib-2.0 glib-2.0-native gtk+3 libpcre2 libxml2-native gperf-native icu"
+
+GIR_MESON_OPTION = 'gir'
+GIDOCGEN_MESON_OPTION = "docs"
+
+inherit gnomebase gi-docgen features_check upstream-version-is-even gobject-introspection systemd vala
+
+SRC_URI += "file://0001-Add-W_EXITCODE-macro-for-non-glibc-systems.patch"
+SRC_URI[archive.sha256sum] = "2328c3f1c998350a18e0e513348e9fc581d57ea4e7b89aedf11e0e3c65042b4f"
+
+ANY_OF_DISTRO_FEATURES = "${GTK3DISTROFEATURES}"
+
+EXTRA_OEMESON += "${@bb.utils.contains('GI_DATA_ENABLED', 'True', '-Dvapi=true', '-Dvapi=false', d)}"
+EXTRA_OEMESON:append = " ${@bb.utils.contains('GI_DATA_ENABLED', 'False', '-Ddocs=false', '', d)}"
+
+PACKAGECONFIG ??= " \
+	gnutls \
+	${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+	${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gtk4', '', d)} \
+"
+PACKAGECONFIG[fribidi] = "-Dfribidi=true,-Dfribidi=false,fribidi"
+PACKAGECONFIG[gtk4] = "-Dgtk4=true,-Dgtk4=false,gtk4"
+PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls"
+PACKAGECONFIG[systemd] = "-D_systemd=true,-D_systemd=false,systemd"
+
+PACKAGES =+ "libvte-gtk4 ${PN}-gtk4 ${PN}-gtk4-dev libvte ${PN}-prompt"
+FILES:libvte-gtk4 = "${libdir}/lib*gtk4.so.* ${libdir}/girepository-1.0/Vte-3.91.typelib"
+FILES:${PN}-gtk4 ="${bindir}/vte-2.91-gtk4"
+FILES:${PN}-gtk4-dev = "${libdir}/lib*gtk4.so \
+                        ${libdir}/pkgconfig/vte-2.91-gtk4.pc \
+                        ${datadir}/gir-1.0/Vte-3.91.gir \
+                        ${datadir}/vala/vapi/vte-2.91-gtk4.deps \
+                        ${datadir}/vala/vapi/vte-2.91-gtk4.vapi \
+                        ${includedir}/vte-2.91-gtk4 \
+                        "
+FILES:${PN} +="${systemd_user_unitdir}"
+FILES:libvte = "${libdir}/*.so.* ${libdir}/girepository-1.0/*"
+FILES:${PN}-prompt = " \
+    ${sysconfdir}/profile.d \
+    ${libexecdir}/vte-urlencode-cwd \
+"
+
+FILES:${PN}-dev += "${datadir}/glade/"
diff --git a/poky/scripts/lib/devtool/__init__.py b/poky/scripts/lib/devtool/__init__.py
index 702db66..b4f998a 100644
--- a/poky/scripts/lib/devtool/__init__.py
+++ b/poky/scripts/lib/devtool/__init__.py
@@ -233,6 +233,30 @@
     bb.process.run('git checkout -b %s' % devbranch, cwd=repodir)
     bb.process.run('git tag -f %s' % basetag, cwd=repodir)
 
+    # if recipe unpacks another git repo inside S, we need to declare it as a regular git submodule now,
+    # so we will be able to tag branches on it and extract patches when doing finish/update on the recipe
+    stdout, _ = bb.process.run("git status --porcelain", cwd=repodir)
+    found = False
+    for line in stdout.splitlines():
+        if line.endswith("/"):
+            new_dir = line.split()[1]
+            for root, dirs, files in os.walk(os.path.join(repodir, new_dir)):
+                if ".git" in dirs + files:
+                    (stdout, _) = bb.process.run('git remote', cwd=root)
+                    remote = stdout.splitlines()[0]
+                    (stdout, _) = bb.process.run('git remote get-url %s' % remote, cwd=root)
+                    remote_url = stdout.splitlines()[0]
+                    logger.error(os.path.relpath(os.path.join(root, ".."), root))
+                    bb.process.run('git submodule add %s %s' % (remote_url, os.path.relpath(root, os.path.join(root, ".."))), cwd=os.path.join(root, ".."))
+                    found = True
+                if found:
+                    useroptions = []
+                    oe.patch.GitApplyTree.gitCommandUserOptions(useroptions, d=d)
+                    bb.process.run('git %s commit -m "Adding additionnal submodule from SRC_URI\n\n%s"' % (' '.join(useroptions), oe.patch.GitApplyTree.ignore_commit_prefix), cwd=os.path.join(root, ".."))
+                    found = False
+    if os.path.exists(os.path.join(repodir, '.gitmodules')):
+        bb.process.run('git submodule foreach --recursive  "git tag -f %s"' % basetag, cwd=repodir)
+
 def recipe_to_append(recipefile, config, wildcard=False):
     """
     Convert a recipe file to a bbappend file path within the workspace.
diff --git a/poky/scripts/lib/devtool/standard.py b/poky/scripts/lib/devtool/standard.py
index d53fb81..ad6e346 100644
--- a/poky/scripts/lib/devtool/standard.py
+++ b/poky/scripts/lib/devtool/standard.py
@@ -234,10 +234,14 @@
         if args.fetchuri and not args.no_git:
             setup_git_repo(srctree, args.version, 'devtool', d=tinfoil.config_data)
 
-        initial_rev = None
+        initial_rev = {}
         if os.path.exists(os.path.join(srctree, '.git')):
             (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
-            initial_rev = stdout.rstrip()
+            initial_rev["."] = stdout.rstrip()
+            (stdout, _) = bb.process.run('git submodule --quiet foreach --recursive  \'echo `git rev-parse HEAD` $PWD\'', cwd=srctree)
+            for line in stdout.splitlines():
+                (rev, submodule) = line.split()
+                initial_rev[os.path.relpath(submodule, srctree)] = rev
 
         if args.src_subdir:
             srctree = os.path.join(srctree, args.src_subdir)
@@ -251,7 +255,8 @@
             if b_is_s:
                 f.write('EXTERNALSRC_BUILD = "%s"\n' % srctree)
             if initial_rev:
-                f.write('\n# initial_rev: %s\n' % initial_rev)
+                for key, value in initial_rev.items():
+                    f.write('\n# initial_rev %s: %s\n' % (key, value))
 
             if args.binary:
                 f.write('do_install:append() {\n')
@@ -823,8 +828,8 @@
 
         _check_compatible_recipe(pn, rd)
 
-        initial_rev = None
-        commits = []
+        initial_revs = {}
+        commits = {}
         check_commits = False
 
         if bb.data.inherits_class('kernel-yocto', rd):
@@ -880,15 +885,23 @@
                 args.no_extract = True
 
         if not args.no_extract:
-            initial_rev, _ = _extract_source(srctree, args.keep_temp, args.branch, False, config, basepath, workspace, args.fixed_setup, rd, tinfoil, no_overrides=args.no_overrides)
-            if not initial_rev:
+            initial_revs["."], _ = _extract_source(srctree, args.keep_temp, args.branch, False, config, basepath, workspace, args.fixed_setup, rd, tinfoil, no_overrides=args.no_overrides)
+            if not initial_revs["."]:
                 return 1
             logger.info('Source tree extracted to %s' % srctree)
+
             if os.path.exists(os.path.join(srctree, '.git')):
                 # Get list of commits since this revision
-                (stdout, _) = bb.process.run('git rev-list --reverse %s..HEAD' % initial_rev, cwd=srctree)
-                commits = stdout.split()
+                (stdout, _) = bb.process.run('git rev-list --reverse %s..HEAD' % initial_revs["."], cwd=srctree)
+                commits["."] = stdout.split()
                 check_commits = True
+                (stdout, _) = bb.process.run('git submodule --quiet foreach --recursive  \'echo `git rev-parse devtool-base` $PWD\'', cwd=srctree)
+                for line in stdout.splitlines():
+                    (rev, submodule_path) = line.split()
+                    submodule = os.path.relpath(submodule_path, srctree)
+                    initial_revs[submodule] = rev
+                    (stdout, _) = bb.process.run('git rev-list --reverse devtool-base..HEAD', cwd=submodule_path)
+                    commits[submodule] = stdout.split()
         else:
             if os.path.exists(os.path.join(srctree, '.git')):
                 # Check if it's a tree previously extracted by us. This is done
@@ -905,11 +918,11 @@
                 for line in stdout.splitlines():
                     if line.startswith('*'):
                         (stdout, _) = bb.process.run('git rev-parse devtool-base', cwd=srctree)
-                        initial_rev = stdout.rstrip()
-                if not initial_rev:
+                        initial_revs["."] = stdout.rstrip()
+                if not initial_revs["."]:
                     # Otherwise, just grab the head revision
                     (stdout, _) = bb.process.run('git rev-parse HEAD', cwd=srctree)
-                    initial_rev = stdout.rstrip()
+                    initial_revs["."] = stdout.rstrip()
 
         branch_patches = {}
         if check_commits:
@@ -976,10 +989,11 @@
                 '        ln -sfT ${KCONFIG_CONFIG_ROOTDIR}/.config ${S}/.config.new\n'
                 '    fi\n'
                 '}\n')
-            if initial_rev:
-                f.write('\n# initial_rev: %s\n' % initial_rev)
-                for commit in commits:
-                    f.write('# commit: %s\n' % commit)
+            if initial_revs:
+                for name, rev in initial_revs.items():
+                        f.write('\n# initial_rev %s: %s\n' % (name, rev))
+                        for commit in commits[name]:
+                            f.write('# commit %s: %s\n' % (name, commit))
             if branch_patches:
                 for branch in branch_patches:
                     if branch == args.branch:
@@ -1202,44 +1216,56 @@
     branchname = stdout.rstrip()
 
     # Parse initial rev from recipe if not specified
-    commits = []
+    commits = {}
     patches = []
+    initial_revs = {}
     with open(recipe_path, 'r') as f:
         for line in f:
-            if line.startswith('# initial_rev:'):
-                if not initial_rev:
-                    initial_rev = line.split(':')[-1].strip()
-            elif line.startswith('# commit:') and not force_patch_refresh:
-                commits.append(line.split(':')[-1].strip())
-            elif line.startswith('# patches_%s:' % branchname):
-                patches = line.split(':')[-1].strip().split(',')
+            pattern = r'^#\s.*\s(.*):\s([0-9a-fA-F]+)$'
+            match = re.search(pattern, line)
+            if match:
+                name = match.group(1)
+                rev = match.group(2)
+                if line.startswith('# initial_rev'):
+                    if not (name == "." and initial_rev):
+                        initial_revs[name] = rev
+                elif line.startswith('# commit') and not force_patch_refresh:
+                    if name not in commits:
+                        commits[name] = [rev]
+                    else:
+                        commits[name].append(rev)
+                elif line.startswith('# patches_%s:' % branchname):
+                    patches = line.split(':')[-1].strip().split(',')
 
-    update_rev = initial_rev
-    changed_revs = None
-    if initial_rev:
+    update_revs = dict(initial_revs)
+    changed_revs = {}
+    for name, rev in initial_revs.items():
         # Find first actually changed revision
         stdout, _ = bb.process.run('git rev-list --reverse %s..HEAD' %
-                                   initial_rev, cwd=srctree)
+                                   rev, cwd=os.path.join(srctree, name))
         newcommits = stdout.split()
-        for i in range(min(len(commits), len(newcommits))):
-            if newcommits[i] == commits[i]:
-                update_rev = commits[i]
+        if name in commits:
+            for i in range(min(len(commits[name]), len(newcommits))):
+                if newcommits[i] == commits[name][i]:
+                    update_revs[name] = commits[name][i]
 
         try:
             stdout, _ = bb.process.run('git cherry devtool-patched',
-                                        cwd=srctree)
+                                        cwd=os.path.join(srctree, name))
         except bb.process.ExecutionError as err:
             stdout = None
 
         if stdout is not None and not force_patch_refresh:
-            changed_revs = []
             for line in stdout.splitlines():
                 if line.startswith('+ '):
                     rev = line.split()[1]
                     if rev in newcommits:
-                        changed_revs.append(rev)
+                        if name not in changed_revs:
+                            changed_revs[name] = [rev]
+                        else:
+                            changed_revs[name].append(rev)
 
-    return initial_rev, update_rev, changed_revs, patches
+    return initial_revs, update_revs, changed_revs, patches
 
 def _remove_file_entries(srcuri, filelist):
     """Remove file:// entries from SRC_URI"""
@@ -1294,14 +1320,17 @@
                         raise
 
 
-def _export_patches(srctree, rd, start_rev, destdir, changed_revs=None):
+def _export_patches(srctree, rd, start_revs, destdir, changed_revs=None):
     """Export patches from srctree to given location.
        Returns three-tuple of dicts:
          1. updated - patches that already exist in SRCURI
          2. added - new patches that don't exist in SRCURI
          3  removed - patches that exist in SRCURI but not in exported patches
-      In each dict the key is the 'basepath' of the URI and value is the
-      absolute path to the existing file in recipe space (if any).
+       In each dict the key is the 'basepath' of the URI and value is:
+         - for updated and added dicts, a dict with 2 optionnal keys:
+            - 'path': the absolute path to the existing file in recipe space (if any)
+            - 'patchdir': the directory in wich the patch should be applied (if any)
+         - for removed dict, the absolute path to the existing file in recipe space
     """
     import oe.recipeutils
     from oe.patch import GitApplyTree
@@ -1315,54 +1344,60 @@
 
     # Generate patches from Git, exclude local files directory
     patch_pathspec = _git_exclude_path(srctree, 'oe-local-files')
-    GitApplyTree.extractPatches(srctree, start_rev, destdir, patch_pathspec)
+    GitApplyTree.extractPatches(srctree, start_revs, destdir, patch_pathspec)
+    for dirpath, dirnames, filenames in os.walk(destdir):
+        new_patches = filenames
+        reldirpath = os.path.relpath(dirpath, destdir)
+        for new_patch in new_patches:
+            # Strip numbering from patch names. If it's a git sequence named patch,
+            # the numbers might not match up since we are starting from a different
+            # revision This does assume that people are using unique shortlog
+            # values, but they ought to be anyway...
+            new_basename = seqpatch_re.match(new_patch).group(2)
+            match_name = None
+            for old_patch in existing_patches:
+                old_basename = seqpatch_re.match(old_patch).group(2)
+                old_basename_splitext = os.path.splitext(old_basename)
+                if old_basename.endswith(('.gz', '.bz2', '.Z')) and old_basename_splitext[0] == new_basename:
+                    old_patch_noext = os.path.splitext(old_patch)[0]
+                    match_name = old_patch_noext
+                    break
+                elif new_basename == old_basename:
+                    match_name = old_patch
+                    break
+            if match_name:
+                # Rename patch files
+                if new_patch != match_name:
+                    bb.utils.rename(os.path.join(destdir, new_patch),
+                              os.path.join(destdir, match_name))
+                # Need to pop it off the list now before checking changed_revs
+                oldpath = existing_patches.pop(old_patch)
+                if changed_revs is not None and dirpath in changed_revs:
+                    # Avoid updating patches that have not actually changed
+                    with open(os.path.join(dirpath, match_name), 'r') as f:
+                        firstlineitems = f.readline().split()
+                        # Looking for "From <hash>" line
+                        if len(firstlineitems) > 1 and len(firstlineitems[1]) == 40:
+                            if not firstlineitems[1] in changed_revs[dirpath]:
+                                continue
+                # Recompress if necessary
+                if oldpath.endswith(('.gz', '.Z')):
+                    bb.process.run(['gzip', match_name], cwd=destdir)
+                    if oldpath.endswith('.gz'):
+                        match_name += '.gz'
+                    else:
+                        match_name += '.Z'
+                elif oldpath.endswith('.bz2'):
+                    bb.process.run(['bzip2', match_name], cwd=destdir)
+                    match_name += '.bz2'
+                updated[match_name] = {'path' : oldpath}
+                if reldirpath != ".":
+                    updated[match_name]['patchdir'] = reldirpath
+            else:
+                added[new_patch] = {}
+                if reldirpath != ".":
+                    added[new_patch]['patchdir'] = reldirpath
 
-    new_patches = sorted(os.listdir(destdir))
-    for new_patch in new_patches:
-        # Strip numbering from patch names. If it's a git sequence named patch,
-        # the numbers might not match up since we are starting from a different
-        # revision This does assume that people are using unique shortlog
-        # values, but they ought to be anyway...
-        new_basename = seqpatch_re.match(new_patch).group(2)
-        match_name = None
-        for old_patch in existing_patches:
-            old_basename = seqpatch_re.match(old_patch).group(2)
-            old_basename_splitext = os.path.splitext(old_basename)
-            if old_basename.endswith(('.gz', '.bz2', '.Z')) and old_basename_splitext[0] == new_basename:
-                old_patch_noext = os.path.splitext(old_patch)[0]
-                match_name = old_patch_noext
-                break
-            elif new_basename == old_basename:
-                match_name = old_patch
-                break
-        if match_name:
-            # Rename patch files
-            if new_patch != match_name:
-                bb.utils.rename(os.path.join(destdir, new_patch),
-                          os.path.join(destdir, match_name))
-            # Need to pop it off the list now before checking changed_revs
-            oldpath = existing_patches.pop(old_patch)
-            if changed_revs is not None:
-                # Avoid updating patches that have not actually changed
-                with open(os.path.join(destdir, match_name), 'r') as f:
-                    firstlineitems = f.readline().split()
-                    # Looking for "From <hash>" line
-                    if len(firstlineitems) > 1 and len(firstlineitems[1]) == 40:
-                        if not firstlineitems[1] in changed_revs:
-                            continue
-            # Recompress if necessary
-            if oldpath.endswith(('.gz', '.Z')):
-                bb.process.run(['gzip', match_name], cwd=destdir)
-                if oldpath.endswith('.gz'):
-                    match_name += '.gz'
-                else:
-                    match_name += '.Z'
-            elif oldpath.endswith('.bz2'):
-                bb.process.run(['bzip2', match_name], cwd=destdir)
-                match_name += '.bz2'
-            updated[match_name] = oldpath
-        else:
-            added[new_patch] = None
     return (updated, added, existing_patches)
 
 
@@ -1530,6 +1565,12 @@
     recipedir = os.path.basename(recipefile)
     logger.info('Updating SRCREV in recipe %s%s' % (recipedir, dry_run_suffix))
 
+    # Get original SRCREV
+    old_srcrev = rd.getVar('SRCREV') or ''
+    if old_srcrev == "INVALID":
+            raise DevtoolError('Update mode srcrev is only valid for recipe fetched from an SCM repository')
+    old_srcrev = {'.': old_srcrev}
+
     # Get HEAD revision
     try:
         stdout, _ = bb.process.run('git rev-parse HEAD', cwd=srctree)
@@ -1556,13 +1597,12 @@
         if not no_remove:
             # Find list of existing patches in recipe file
             patches_dir = tempfile.mkdtemp(dir=tempdir)
-            old_srcrev = rd.getVar('SRCREV') or ''
             upd_p, new_p, del_p = _export_patches(srctree, rd, old_srcrev,
                                                   patches_dir)
             logger.debug('Patches: update %s, new %s, delete %s' % (dict(upd_p), dict(new_p), dict(del_p)))
 
             # Remove deleted local files and "overlapping" patches
-            remove_files = list(del_f.values()) + list(upd_p.values()) + list(del_p.values())
+            remove_files = list(del_f.values()) + [value["path"] for value in upd_p.values() if "path" in value] + [value["path"] for value in del_p.values() if "path" in value]
             if remove_files:
                 removedentries = _remove_file_entries(srcuri, remove_files)[0]
                 update_srcuri = True
@@ -1576,11 +1616,10 @@
                 patchfields['SRC_URI'] = '\\\n    '.join(srcuri)
             if dry_run_outdir:
                 logger.info('Creating bbappend (dry-run)')
-            else:
-                appendfile, destpath = oe.recipeutils.bbappend_recipe(
-                        rd, appendlayerdir, files, wildcardver=wildcard_version,
-                        extralines=patchfields, removevalues=removevalues,
-                        redirect_output=dry_run_outdir)
+            appendfile, destpath = oe.recipeutils.bbappend_recipe(
+                    rd, appendlayerdir, files, wildcardver=wildcard_version,
+                    extralines=patchfields, removevalues=removevalues,
+                    redirect_output=dry_run_outdir)
         else:
             files_dir = _determine_files_dir(rd)
             for basepath, path in upd_f.items():
@@ -1632,15 +1671,15 @@
     else:
         patchdir_params = {'patchdir': relpatchdir}
 
-    def srcuri_entry(basepath):
+    def srcuri_entry(basepath, patchdir_params):
         if patchdir_params:
             paramstr = ';' + ';'.join('%s=%s' % (k,v) for k,v in patchdir_params.items())
         else:
             paramstr = ''
         return 'file://%s%s' % (basepath, paramstr)
 
-    initial_rev, update_rev, changed_revs, filter_patches = _get_patchset_revs(srctree, append, initial_rev, force_patch_refresh)
-    if not initial_rev:
+    initial_revs, update_revs, changed_revs, filter_patches = _get_patchset_revs(srctree, append, initial_rev, force_patch_refresh)
+    if not initial_revs:
         raise DevtoolError('Unable to find initial revision - please specify '
                            'it with --initial-rev')
 
@@ -1658,11 +1697,11 @@
 
         # Get updated patches from source tree
         patches_dir = tempfile.mkdtemp(dir=tempdir)
-        upd_p, new_p, _ = _export_patches(srctree, rd, update_rev,
+        upd_p, new_p, _ = _export_patches(srctree, rd, update_revs,
                                           patches_dir, changed_revs)
         # Get all patches from source tree and check if any should be removed
         all_patches_dir = tempfile.mkdtemp(dir=tempdir)
-        _, _, del_p = _export_patches(srctree, rd, initial_rev,
+        _, _, del_p = _export_patches(srctree, rd, initial_revs,
                                       all_patches_dir)
         logger.debug('Pre-filtering: update: %s, new: %s' % (dict(upd_p), dict(new_p)))
         if filter_patches:
@@ -1677,18 +1716,31 @@
         updaterecipe = False
         destpath = None
         srcuri = (rd.getVar('SRC_URI', False) or '').split()
+
         if appendlayerdir:
             files = OrderedDict((os.path.join(local_files_dir, key), val) for
                          key, val in list(upd_f.items()) + list(new_f.items()))
             files.update(OrderedDict((os.path.join(patches_dir, key), val) for
                               key, val in list(upd_p.items()) + list(new_p.items())))
+
+            params = []
+            for file, param in files.items():
+                patchdir_param = dict(patchdir_params)
+                patchdir = param.get('patchdir', ".")
+                if patchdir != "." :
+                    if patchdir_param:
+                       patchdir_param['patchdir'] += patchdir
+                    else:
+                        patchdir_param['patchdir'] = patchdir
+                params.append(patchdir_param)
+
             if files or remove_files:
                 removevalues = None
                 if remove_files:
                     removedentries, remaining = _remove_file_entries(
                                                     srcuri, remove_files)
                     if removedentries or remaining:
-                        remaining = [srcuri_entry(os.path.basename(item)) for
+                        remaining = [srcuri_entry(os.path.basename(item), patchdir_params) for
                                      item in remaining]
                         removevalues = {'SRC_URI': removedentries + remaining}
                 appendfile, destpath = oe.recipeutils.bbappend_recipe(
@@ -1696,7 +1748,7 @@
                                 wildcardver=wildcard_version,
                                 removevalues=removevalues,
                                 redirect_output=dry_run_outdir,
-                                params=[patchdir_params] * len(files))
+                                params=params)
             else:
                 logger.info('No patches or local source files needed updating')
         else:
@@ -1713,14 +1765,22 @@
                     _move_file(os.path.join(local_files_dir, basepath), path,
                                dry_run_outdir=dry_run_outdir, base_outdir=recipedir)
                 updatefiles = True
-            for basepath, path in upd_p.items():
-                patchfn = os.path.join(patches_dir, basepath)
+            for basepath, param in upd_p.items():
+                path = param['path']
+                patchdir = param.get('patchdir', ".")
+                if patchdir != "." :
+                    patchdir_param = dict(patchdir_params)
+                    if patchdir_param:
+                       patchdir_param['patchdir'] += patchdir
+                    else:
+                        patchdir_param['patchdir'] = patchdir
+                patchfn = os.path.join(patches_dir, patchdir, basepath)
                 if os.path.dirname(path) + '/' == dl_dir:
                     # This is a a downloaded patch file - we now need to
                     # replace the entry in SRC_URI with our local version
                     logger.info('Replacing remote patch %s with updated local version' % basepath)
                     path = os.path.join(files_dir, basepath)
-                    _replace_srcuri_entry(srcuri, basepath, srcuri_entry(basepath))
+                    _replace_srcuri_entry(srcuri, basepath, srcuri_entry(basepath, patchdir_param))
                     updaterecipe = True
                 else:
                     logger.info('Updating patch %s%s' % (basepath, dry_run_suffix))
@@ -1734,15 +1794,23 @@
                            os.path.join(files_dir, basepath),
                            dry_run_outdir=dry_run_outdir,
                            base_outdir=recipedir)
-                srcuri.append(srcuri_entry(basepath))
+                srcuri.append(srcuri_entry(basepath, patchdir_params))
                 updaterecipe = True
-            for basepath, path in new_p.items():
+            for basepath, param in new_p.items():
+                patchdir = param.get('patchdir', ".")
                 logger.info('Adding new patch %s%s' % (basepath, dry_run_suffix))
-                _move_file(os.path.join(patches_dir, basepath),
+                _move_file(os.path.join(patches_dir, patchdir, basepath),
                            os.path.join(files_dir, basepath),
                            dry_run_outdir=dry_run_outdir,
                            base_outdir=recipedir)
-                srcuri.append(srcuri_entry(basepath))
+                params = dict(patchdir_params)
+                if patchdir != "." :
+                    if params:
+                       params['patchdir'] += patchdir
+                    else:
+                        params['patchdir'] = patchdir
+
+                srcuri.append(srcuri_entry(basepath, params))
                 updaterecipe = True
             # Update recipe, if needed
             if _remove_file_entries(srcuri, remove_files)[0]:
diff --git a/poky/scripts/lib/devtool/upgrade.py b/poky/scripts/lib/devtool/upgrade.py
index 9cd50be..10827a7 100644
--- a/poky/scripts/lib/devtool/upgrade.py
+++ b/poky/scripts/lib/devtool/upgrade.py
@@ -90,7 +90,7 @@
     _rename_recipe_dirs(oldpv, newpv, path)
     return _rename_recipe_file(oldrecipe, bpn, oldpv, newpv, path)
 
-def _write_append(rc, srctreebase, srctree, same_dir, no_same_dir, rev, copied, workspace, d):
+def _write_append(rc, srctreebase, srctree, same_dir, no_same_dir, revs, copied, workspace, d):
     """Writes an append file"""
     if not os.path.exists(rc):
         raise DevtoolError("bbappend not created because %s does not exist" % rc)
@@ -119,8 +119,9 @@
         if b_is_s:
             f.write('EXTERNALSRC_BUILD:pn-%s = "%s"\n' % (pn, srctree))
         f.write('\n')
-        if rev:
-            f.write('# initial_rev: %s\n' % rev)
+        if revs:
+            for name, rev in revs.items():
+                f.write('# initial_rev %s: %s\n' % (name, rev))
         if copied:
             f.write('# original_path: %s\n' % os.path.dirname(d.getVar('FILE')))
             f.write('# original_files: %s\n' % ' '.join(copied))
@@ -182,10 +183,15 @@
     uri, rev = _get_uri(crd)
     if srcrev:
         rev = srcrev
+    paths = [srctree]
     if uri.startswith('git://') or uri.startswith('gitsm://'):
         __run('git fetch')
         __run('git checkout %s' % rev)
         __run('git tag -f devtool-base-new')
+        __run('git submodule update --recursive')
+        __run('git submodule foreach \'git tag -f devtool-base-new\'')
+        (stdout, _) = __run('git submodule --quiet foreach \'echo $sm_path\'')
+        paths += [os.path.join(srctree, p) for p in stdout.splitlines()]
         md5 = None
         sha256 = None
         _, _, _, _, _, params = bb.fetch2.decodeurl(uri)
@@ -256,29 +262,32 @@
         __run('git %s commit -q -m "Commit of upstream changes at version %s" --allow-empty' % (' '.join(useroptions), newpv))
         __run('git tag -f devtool-base-%s' % newpv)
 
-    (stdout, _) = __run('git rev-parse HEAD')
-    rev = stdout.rstrip()
+    revs = {}
+    for path in paths:
+        (stdout, _) = _run('git rev-parse HEAD', cwd=path)
+        revs[os.path.relpath(path,srctree)] = stdout.rstrip()
 
     if no_patch:
         patches = oe.recipeutils.get_recipe_patches(crd)
         if patches:
             logger.warning('By user choice, the following patches will NOT be applied to the new source tree:\n  %s' % '\n  '.join([os.path.basename(patch) for patch in patches]))
     else:
-        __run('git checkout devtool-patched -b %s' % branch)
-        (stdout, _) = __run('git branch --list devtool-override-*')
-        branches_to_rebase = [branch] + stdout.split()
-        for b in branches_to_rebase:
-            logger.info("Rebasing {} onto {}".format(b, rev))
-            __run('git checkout %s' % b)
-            try:
-                __run('git rebase %s' % rev)
-            except bb.process.ExecutionError as e:
-                if 'conflict' in e.stdout:
-                    logger.warning('Command \'%s\' failed:\n%s\n\nYou will need to resolve conflicts in order to complete the upgrade.' % (e.command, e.stdout.rstrip()))
-                    __run('git rebase --abort')
-                else:
-                    logger.warning('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
-        __run('git checkout %s' % branch)
+        for path in paths:
+            _run('git checkout devtool-patched -b %s' % branch, cwd=path)
+            (stdout, _) = _run('git branch --list devtool-override-*', cwd=path)
+            branches_to_rebase = [branch] + stdout.split()
+            for b in branches_to_rebase:
+                logger.info("Rebasing {} onto {}".format(b, revs[os.path.relpath(path,srctree)]))
+                _run('git checkout %s' % b, cwd=path)
+                try:
+                    _run('git rebase %s' % revs[os.path.relpath(path, srctree)], cwd=path)
+                except bb.process.ExecutionError as e:
+                    if 'conflict' in e.stdout:
+                        logger.warning('Command \'%s\' failed:\n%s\n\nYou will need to resolve conflicts in order to complete the upgrade.' % (e.command, e.stdout.rstrip()))
+                        _run('git rebase --abort', cwd=path)
+                    else:
+                        logger.warning('Command \'%s\' failed:\n%s' % (e.command, e.stdout))
+            _run('git checkout %s' % branch, cwd=path)
 
     if tmpsrctree:
         if keep_temp:
@@ -288,7 +297,7 @@
             if tmpdir != tmpsrctree:
                 shutil.rmtree(tmpdir)
 
-    return (rev, md5, sha256, srcbranch, srcsubdir_rel)
+    return (revs, md5, sha256, srcbranch, srcsubdir_rel)
 
 def _add_license_diff_to_recipe(path, diff):
     notice_text = """# FIXME: the LIC_FILES_CHKSUM values have been updated by 'devtool upgrade'.
diff --git a/poky/scripts/lib/recipetool/append.py b/poky/scripts/lib/recipetool/append.py
index 9dbb1cc..4b6a711 100644
--- a/poky/scripts/lib/recipetool/append.py
+++ b/poky/scripts/lib/recipetool/append.py
@@ -299,7 +299,7 @@
                 if st.st_mode & stat.S_IXUSR:
                     perms = '0755'
             install = {args.newfile: (args.targetpath, perms)}
-        oe.recipeutils.bbappend_recipe(rd, args.destlayer, {args.newfile: sourcepath}, install, wildcardver=args.wildcard_version, machine=args.machine)
+        oe.recipeutils.bbappend_recipe(rd, args.destlayer, {args.newfile: {'path' : sourcepath}}, install, wildcardver=args.wildcard_version, machine=args.machine)
         tinfoil.modified_files()
         return 0
     else:
@@ -353,7 +353,7 @@
                 logger.warning('{0!r} is already in SRC_URI, not adding'.format(source_uri))
         else:
             extralines.append('SRC_URI += {0}'.format(source_uri))
-        copyfiles[newfile] = srcfile
+        copyfiles[newfile] = {'path' : srcfile}
 
     oe.recipeutils.bbappend_recipe(rd, args.destlayer, copyfiles, None, wildcardver=args.wildcard_version, machine=args.machine, extralines=extralines)
     tinfoil.modified_files()
diff --git a/poky/scripts/lib/wic/plugins/source/bootimg-efi.py b/poky/scripts/lib/wic/plugins/source/bootimg-efi.py
index 4f30926..13a9cdd 100644
--- a/poky/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/poky/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -400,9 +400,10 @@
 
                 exec_native_cmd(objcopy_cmd, native_sysroot)
         else:
-            install_cmd = "install -m 0644 %s/%s %s/%s" % \
-                (staging_kernel_dir, kernel, hdddir, kernel)
-            exec_cmd(install_cmd)
+            if source_params.get('install-kernel-into-boot-dir') != 'false':
+                install_cmd = "install -m 0644 %s/%s %s/%s" % \
+                    (staging_kernel_dir, kernel, hdddir, kernel)
+                exec_cmd(install_cmd)
 
         if get_bitbake_var("IMAGE_EFI_BOOT_FILES"):
             for src_path, dst_path in cls.install_task:
diff --git a/poky/scripts/lib/wic/plugins/source/rawcopy.py b/poky/scripts/lib/wic/plugins/source/rawcopy.py
index ccf3325..21903c2 100644
--- a/poky/scripts/lib/wic/plugins/source/rawcopy.py
+++ b/poky/scripts/lib/wic/plugins/source/rawcopy.py
@@ -58,7 +58,8 @@
         decompressor = {
             ".bz2": "bzip2",
             ".gz": "gzip",
-            ".xz": "xz"
+            ".xz": "xz",
+            ".zst": "zstd -f",
         }.get(extension)
         if not decompressor:
             raise WicError("Not supported compressor filename extension: %s" % extension)
