diff --git a/README.md b/README.md
index 3e5943b39c3..c8f4f800e39 100644
--- a/README.md
+++ b/README.md
@@ -13,16 +13,17 @@ Releases and ROS Distros. Releases and distros not shown in the table above
can be presumed unsupported.
-| Yocto Release | | ROS1 Distros | ROS 2 Distros | |
-| --- | --- | --- | --- | --- |
-| | *(Rolling)* | **Noetic** | **Humble (LTS)** | **Iron** |
-| | | May 2025 | May 2027 | Nov 2024 |
-| **Styhead (Dev)** | (Future) | **May 2025** | (Future) | **Nov 2024** |
-| **Scarthgap (LTS)** | Apr 2028 | **May 2025** | **May 2027** | **Nov 2024** |
-| Nanbield | ~~Apr 2024~~ | ~~Apr 2024~~ | ~~Apr 2024~~ | ~~Apr 2024~~ |
-| Mickledore | ~~Nov 2023~~ | ~~Nov 2023~~ | Nov 2023 1 | ~~Nov 2023~~ |
-| Langdale | ~~May 2023~~ | ~~May 2023~~ | ~~May 2023~~ | ~~May 2023~~ |
-| **Kirkstone (LTS)** | Apr 2026 | **Apr 2024** | **Apr 2026** | **Nov 2024** |
+| Yocto Release | | ROS1 Distros | ROS 2 Distros | | |
+| --- | --- | --- | --- | --- | --- |
+| | *(Rolling)* | **Noetic** | **Humble (LTS)** | **Iron** | *Jazzy* |
+| | | May 2025 | May 2027 | Nov 2024 | May 2029 |
+| **Walnascar (Dev)** | (Future) | **May 2025** | **May 2027** | **Nov 2024** | (Future) |
+| **Styhead** | May 2025 | **May 2025** | **May 2025** | **Nov 2024** | **May 2025** |
+| **Scarthgap (LTS)** | Apr 2028 | **May 2025** | **May 2027** | **Nov 2024** | **Apr 2028** |
+| Nanbield | ~~Apr 2024~~ | ~~Apr 2024~~ | ~~Apr 2024~~ | ~~Apr 2024~~ | ~~Apr 2024~~ |
+| Mickledore | ~~Nov 2023~~ | ~~Nov 2023~~ | Nov 2023 1 | ~~Nov 2023~~ | ~~Nov 2023~~ |
+| Langdale | ~~May 2023~~ | ~~May 2023~~ | ~~May 2023~~ | ~~May 2023~~ | ~~May 2023~~ |
+| **Kirkstone (LTS)** | Apr 2026 | **Apr 2024** | **Apr 2026** | **Nov 2024** | **Apr 2026** |
diff --git a/meta-ros-common/classes/ros_cmake.bbclass b/meta-ros-common/classes/ros_cmake.bbclass
index 75e53c5304c..fd4a0d00600 100644
--- a/meta-ros-common/classes/ros_cmake.bbclass
+++ b/meta-ros-common/classes/ros_cmake.bbclass
@@ -3,7 +3,7 @@
inherit cmake
-EXTRA_OECMAKE:prepend = "\
+EXTRA_OECMAKE:prepend:class-target = "\
-DCMAKE_PREFIX_PATH='${STAGING_DIR_HOST}${ros_prefix};${STAGING_DIR_HOST}${prefix}' \
-DCMAKE_INSTALL_PREFIX:PATH='${ros_prefix}' \
-DCMAKE_MODULE_PATH='${STAGING_DIR_HOST}${ros_datadir}/cmake/Modules/' \
@@ -13,3 +13,8 @@ EXTRA_OECMAKE:prepend:class-native = "\
-DCMAKE_PREFIX_PATH='${STAGING_DIR_NATIVE}${ros_prefix};${STAGING_DIR_NATIVE}${prefix}' \
-DCMAKE_INSTALL_PREFIX:PATH='${ros_prefix}' \
"
+
+EXTRA_OECMAKE:prepend:class-nativesdk = "\
+ -DCMAKE_PREFIX_PATH='${STAGING_DIR_NATIVE}${ros_prefix};${STAGING_DIR_NATIVE}${prefix}' \
+ -DCMAKE_INSTALL_PREFIX:PATH='${ros_prefix}' \
+"
diff --git a/meta-ros-common/classes/ros_opt_prefix.bbclass b/meta-ros-common/classes/ros_opt_prefix.bbclass
index 4f0e7cc3663..ac53ecea8c9 100644
--- a/meta-ros-common/classes/ros_opt_prefix.bbclass
+++ b/meta-ros-common/classes/ros_opt_prefix.bbclass
@@ -4,7 +4,8 @@
# Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved
#
-ros_prefix ?= "${base_prefix}/opt/ros/${ROS_DISTRO}"
+ros_base_prefix ?= "/opt/ros/${ROS_DISTRO}"
+ros_prefix ?= "${base_prefix}${ros_base_prefix}"
ros_bindir = "${ros_prefix}/bin"
ros_sbindir = "${ros_prefix}/sbin"
@@ -30,8 +31,8 @@ inherit ${@'python3-dir' if d.getVar('ROS_PYTHON_VERSION') == '3' else 'python-d
PKG_CONFIG_PATH .= ":${PKG_CONFIG_DIR}:${STAGING_DIR_HOST}${ros_libdir}/pkgconfig:${STAGING_DATADIR}/pkgconfig"
PYTHON_SITEPACKAGES_DIR = "${ros_libdir}/${PYTHON_DIR}/site-packages"
-export PYTHONPATH = "${STAGING_DIR_NATIVE}${PYTHON_SITEPACKAGES_DIR}"
-PYTHONPATH:class-native = "${PYTHON_SITEPACKAGES_DIR}"
+export PYTHONPATH = "${STAGING_DIR_NATIVE}${PYTHON_SITEPACKAGES_DIR}:$PYTHONPATH"
+PYTHONPATH:class-native = "${PYTHON_SITEPACKAGES_DIR}:$PYTHONPATH"
FILES_SOLIBSDEV += " ${ros_libdir}/lib*${SOLIBSDEV}"
diff --git a/meta-ros-common/conf/layer.conf b/meta-ros-common/conf/layer.conf
index 7c8b127bb6d..df9dcc406be 100644
--- a/meta-ros-common/conf/layer.conf
+++ b/meta-ros-common/conf/layer.conf
@@ -22,6 +22,6 @@ LAYERDEPENDS_ros-common-layer = " \
openembedded-layer \
"
-LAYERSERIES_COMPAT_ros-common-layer = "scarthgap"
+LAYERSERIES_COMPAT_ros-common-layer = "walnascar styhead"
require conf/ros-distro/ros-distro.conf
diff --git a/meta-ros-common/recipes-dbs/postgresql/postgresql_%.bbappend b/meta-ros-common/recipes-dbs/postgresql/postgresql_%.bbappend
new file mode 100644
index 00000000000..d1f8a7200a7
--- /dev/null
+++ b/meta-ros-common/recipes-dbs/postgresql/postgresql_%.bbappend
@@ -0,0 +1,3 @@
+# Copyright (c) 2023 Wind River Systems, Inc.
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-ros-common/recipes-devtools/backward-cpp/backward-cpp_1.6.bb b/meta-ros-common/recipes-devtools/backward-cpp/backward-cpp_1.6.bb
new file mode 100644
index 00000000000..f5173038766
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/backward-cpp/backward-cpp_1.6.bb
@@ -0,0 +1,16 @@
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=74ea9734864a5514a5d672f385e3b382"
+
+SRC_URI = "git://github.com/bombela/backward-cpp.git;protocol=https;branch=master"
+
+SRCREV = "3bb9240cb15459768adb3e7d963a20e1523a6294"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "libunwind elfutils"
+
+inherit cmake
+
+FILES:${PN}-dev += "${libdir}/backward/BackwardConfig.cmake"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-ros-common/recipes-devtools/coinor/coinor-buildtools_git.bb b/meta-ros-common/recipes-devtools/coinor/coinor-buildtools_git.bb
new file mode 100644
index 00000000000..117a9f953c8
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/coinor/coinor-buildtools_git.bb
@@ -0,0 +1,22 @@
+LICENSE = "EPL-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fa146738cbe7d5c7435f87912e8b77"
+
+SRC_URI = "git://github.com/coin-or-tools/BuildTools.git;protocol=https;branch=master"
+
+SRCREV = "20208f47f7bbc0056a92adefdfd43fded969f674"
+
+PV = "0.8.10+git"
+S = "${WORKDIR}/git"
+
+do_install () {
+ install -d -m 0755 ${D}/${datadir}/coinor
+ install -D -m 0755 ${S}/coin.m4 ${D}${datadir}/coinor
+ install -D -m 0755 ${S}/coin-functions ${D}${datadir}/coinor
+ install -D -m 0755 ${S}/coin_chk_lapack.m4 ${D}${datadir}/coinor
+ install -D -m 0755 ${S}/coin_chk_libhdr.m4 ${D}${datadir}/coinor
+ install -D -m 0755 ${S}/coin_chk_pkg.m4 ${D}${datadir}/coinor
+ install -D -m 0755 ${S}/coin_fortran.m4 ${D}${datadir}/coinor
+ install -D -m 0755 ${S}/coin_math.m4 ${D}${datadir}/coinor
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-bash_0.4.2.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-bash_0.5.0.bb
similarity index 78%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-bash_0.4.2.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-bash_0.5.0.bb
index e15448e2e5b..2b235a6f4eb 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-bash_0.4.2.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-bash_0.5.0.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=21;endline=21;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "86950ca62293b655ef8d655d2994d110321fff2fc6739c46a64f005a0cee1bdd"
+SRC_URI[sha256sum] = "29a223a66828e18aad9b8db5087f7114e388601830091830ca17b095ada2cbac"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-cmake_0.2.26.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-cmake_0.2.28.bb
similarity index 81%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-cmake_0.2.26.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-cmake_0.2.28.bb
index 3ba6016f7e0..13d64990803 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-cmake_0.2.26.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-cmake_0.2.28.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "5a227fe812766be5fc3895c821bf9190f571e8c25eb73962967310d6b524349f"
+SRC_URI[sha256sum] = "5e910890148d9d3c7f82f5c0e97904478e0e0bf156b786729099ead73d6ec4f0"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-common-extensions_0.2.1.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-common-extensions_0.3.0.bb
similarity index 92%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-common-extensions_0.2.1.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-common-extensions_0.3.0.bb
index 820c82231f7..7237b2d8d1c 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-common-extensions_0.2.1.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-common-extensions_0.3.0.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "73af96598efc24748234d68c0f3a7419cb1e47a4c3c90f6b0d70bcffef034826"
+SRC_URI[sha256sum] = "84408d13f8a46044851a7a4e686749940539d2b3d02e6752746cbbc9a89049ff"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0001-Remove-optional-pytest-dependencies.patch b/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0001-Remove-optional-pytest-dependencies.patch
index 49a5be51227..e9cc20885d5 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0001-Remove-optional-pytest-dependencies.patch
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0001-Remove-optional-pytest-dependencies.patch
@@ -9,18 +9,18 @@ Upstream-Status: Pending
setup.cfg | 4 ----
1 file changed, 4 deletions(-)
-diff --git a/setup.cfg b/setup.cfg
-index 64b4562..09afd3c 100644
---- a/setup.cfg
-+++ b/setup.cfg
-@@ -30,10 +30,6 @@ install_requires =
- coloredlogs; sys_platform == 'win32'
- distlib
+Index: colcon-core-0.18.3/setup.cfg
+===================================================================
+--- colcon-core-0.18.3.orig/setup.cfg
++++ colcon-core-0.18.3/setup.cfg
+@@ -32,10 +32,6 @@ install_requires =
EmPy
+ importlib-metadata; python_version < "3.8"
+ packaging
- pytest
- pytest-cov
- pytest-repeat
- pytest-rerunfailures
setuptools>=30.3.0
+ tomli>=1.0.0; python_version < "3.11"
packages = find:
- tests_require =
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0002-Fix-regression-when-enitre-workspace-is-symlinked.patch b/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0002-Fix-regression-when-enitre-workspace-is-symlinked.patch
deleted file mode 100644
index 22573ac1fb8..00000000000
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0002-Fix-regression-when-enitre-workspace-is-symlinked.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b1dadc6f0ca2456f8a3320198653c1aad550e22d Mon Sep 17 00:00:00 2001
-From: Windel Bouwman
-Date: Fri, 12 Nov 2021 15:21:02 +0100
-Subject: [PATCH] Fix regression when enitre workspace is symlinked
-
-Upstream-Status: Backport [https://github.com/colcon/colcon-core/pull/412]
-
----
- colcon_core/task/python/build.py | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/colcon_core/task/python/build.py b/colcon_core/task/python/build.py
-index 27059b5..7181d20 100644
---- a/colcon_core/task/python/build.py
-+++ b/colcon_core/task/python/build.py
-@@ -70,7 +70,8 @@ class PythonBuildTask(TaskExtensionPoint):
- cmd = [
- executable, 'setup.py',
- 'egg_info', '--egg-base', os.path.relpath(
-- args.build_base, args.path),
-+ os.path.realpath(args.build_base),
-+ os.path.realpath(args.path)),
- 'build', '--build-base', os.path.join(
- args.build_base, 'build'),
- 'install', '--prefix', args.install_base,
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0002-Force-shebang-to-usr-bin-env-python3.patch b/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0002-Force-shebang-to-usr-bin-env-python3.patch
new file mode 100644
index 00000000000..d39bacde257
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-core/0002-Force-shebang-to-usr-bin-env-python3.patch
@@ -0,0 +1,22 @@
+python3-colcon-core: Fix python interpreter
+
+This ensures that the colcon-core Python module sets the correct
+Python executable when building scripts with setuptools.
+
+Upstream-Status: Pending
+
+Signed-off-by: Stephen Street
+
+Index: colcon-core-0.18.3/colcon_core/task/python/build.py
+===================================================================
+--- colcon-core-0.18.3.orig/colcon_core/task/python/build.py
++++ colcon-core-0.18.3/colcon_core/task/python/build.py
+@@ -113,7 +113,7 @@ class PythonBuildTask(TaskExtensionPoint
+ os.path.realpath(args.path))]
+ cmd += [
+ 'build', '--build-base', os.path.join(
+- args.build_base, 'build'),
++ args.build_base, 'build'), '--executable', '/usr/bin/env python3',
+ 'install',
+ '--record', os.path.join(args.build_base, 'install.log')]
+ # Extract and explicitly pass install-scripts to setuptools.
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-core_0.6.1.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-core_0.18.3.bb
similarity index 70%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-core_0.6.1.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-core_0.18.3.bb
index c0826580c3c..b74214014f5 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-core_0.6.1.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-core_0.18.3.bb
@@ -4,10 +4,9 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI += "file://0001-Remove-optional-pytest-dependencies.patch \
- file://0002-Fix-regression-when-enitre-workspace-is-symlinked.patch \
- "
-SRC_URI[sha256sum] = "fc14534b2ce745fcc332afc0bb0ddf3e45d5d69c15da15b9471cfb7b0b9edbe9"
+SRC_URI = "file://0001-Remove-optional-pytest-dependencies.patch \
+ file://0002-Force-shebang-to-usr-bin-env-python3.patch"
+SRC_URI[sha256sum] = "8b3dcf0b140b2851a9169c60b3ed2ca78a6e48fec8ececdeefa287a6715f2e17"
inherit pypi setuptools3
@@ -16,6 +15,7 @@ RDEPENDS:${PN} += "\
${PYTHON_PN}-coloredlogs \
${PYTHON_PN}-distlib \
${PYTHON_PN}-empy \
+ ${PYTHON_PN}-packaging \
"
# The pytest dependencies are optional:
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-defaults_0.2.5.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-defaults_0.2.8.bb
similarity index 80%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-defaults_0.2.5.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-defaults_0.2.8.bb
index e592a6da8ed..3d8c47353da 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-defaults_0.2.5.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-defaults_0.2.8.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "ac40fc4ec85cc0633d6c56aa6ebb43203c373cd919d554b1f07fb8f27fdaa2d2"
+SRC_URI[sha256sum] = "053e8a18fbae04cf182a2968d7f7ed474c5125bf3b306b8049250574f4096fa1"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-devtools_0.2.2.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-devtools_0.3.0.bb
similarity index 80%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-devtools_0.2.2.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-devtools_0.3.0.bb
index f5ad3e73dd0..085e748a14f 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-devtools_0.2.2.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-devtools_0.3.0.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "6ed3f29052c44e021b64106d5ae338e2b8936ba58c9f1c0496478327973d3f7b"
+SRC_URI[sha256sum] = "34ae3877f60ce04f50acbf11ceadb660e6eaebde837e6d8b035ab9fb8ca36e05"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-notification_0.2.13.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-notification_0.3.0.bb
similarity index 83%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-notification_0.2.13.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-notification_0.3.0.bb
index a430002b4b3..b949c6f2876 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-notification_0.2.13.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-notification_0.3.0.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "6aae1ffe73ae956bcb36e330822cd230a2a88c9181b3170aafd1a446638e69b3"
+SRC_URI[sha256sum] = "c45b898073a8e98c4518333b7587f9ea49ac1bc129a7bc4e1390059057031fb8"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-output_0.2.12.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-output_0.2.13.bb
similarity index 79%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-output_0.2.12.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-output_0.2.13.bb
index 08ddb28463a..2b0c1c1bb4f 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-output_0.2.12.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-output_0.2.13.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "a211e9f1f70edb1567c0747532ad222e47799cef25cb863e4a43af4660798b30"
+SRC_URI[sha256sum] = "44d2d349ebdb61688b41e00d565ea1a199e8fc5c2c77af279cfaac74dc01c04d"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-package-information_0.3.3.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-package-information_0.4.0.bb
similarity index 78%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-package-information_0.3.3.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-package-information_0.4.0.bb
index 90c3db1a216..a183d579203 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-package-information_0.3.3.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-package-information_0.4.0.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "db0b1200bfec91fcf396d9d7671eb410f0eb5a18a0819f778f335ebac82e0b9e"
+SRC_URI[sha256sum] = "20f5184ae1b05db0a76f244bc85622f6b25e48ef7398f55784ccfe455d40bcfb"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-parallel-executor_0.2.4.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-parallel-executor_0.3.0.bb
similarity index 78%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-parallel-executor_0.2.4.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-parallel-executor_0.3.0.bb
index 8d909914362..c34816b680f 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-parallel-executor_0.2.4.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-parallel-executor_0.3.0.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "6c04ec240ce0a6b6bae69b13d8859ea1eac03469424fa220be43a99e7d1d3123"
+SRC_URI[sha256sum] = "e7137fcaf4c61db792955fd641bfad7dbad4b41928c6b81ff87a78339e116644"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-python-setup-py_0.2.7.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-python-setup-py_0.2.9.bb
similarity index 81%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-python-setup-py_0.2.7.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-python-setup-py_0.2.9.bb
index 520e8dc0ed3..d4f202dc94d 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-python-setup-py_0.2.7.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-python-setup-py_0.2.9.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "eec293085c4301797706d9e61634fa0cb2136be9b820aa556b2b8baa0bde412d"
+SRC_URI[sha256sum] = "4d8bab2e05ba334e29eee3715fbde490281342ed8e000e252130e5c51915383a"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-recursive-crawl_0.2.1.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-recursive-crawl_0.2.3.bb
similarity index 78%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-recursive-crawl_0.2.1.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-recursive-crawl_0.2.3.bb
index b73b8440532..f0162a3cefb 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-recursive-crawl_0.2.1.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-recursive-crawl_0.2.3.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "80a11b3a203960aff4187e9b562930ffe4bb54c061178ae1daedbf06b6da1b96"
+SRC_URI[sha256sum] = "fca5f619214d20306daaf012f91399d4d3b605364b121e5df80399432c55c603"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/colcon/python3-colcon-ros_0.3.21.bb b/meta-ros-common/recipes-devtools/colcon/python3-colcon-ros_0.5.0.bb
similarity index 85%
rename from meta-ros-common/recipes-devtools/colcon/python3-colcon-ros_0.3.21.bb
rename to meta-ros-common/recipes-devtools/colcon/python3-colcon-ros_0.5.0.bb
index fbabf6fafd7..86b69855916 100644
--- a/meta-ros-common/recipes-devtools/colcon/python3-colcon-ros_0.3.21.bb
+++ b/meta-ros-common/recipes-devtools/colcon/python3-colcon-ros_0.5.0.bb
@@ -4,7 +4,7 @@ SECTION = "devel/python"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://setup.cfg;beginline=22;endline=22;md5=3d0bd1ac53c1dd582844ed15eee7f8e2"
-SRC_URI[sha256sum] = "9dccfa4bce1a18a06e1edcd589aa287e1807afc853af26c25e716830a8b6eaa3"
+SRC_URI[sha256sum] = "79a7e89f6fa636f7e4fd44a88b7860fb1da99d51f0ba7bcf0b9b624a1a578365"
inherit pypi setuptools3
diff --git a/meta-ros-common/recipes-devtools/dartsim/dartsim/fix-pkgconfig-cflags.patch b/meta-ros-common/recipes-devtools/dartsim/dartsim/fix-pkgconfig-cflags.patch
new file mode 100644
index 00000000000..45f7afebaa9
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/dartsim/dartsim/fix-pkgconfig-cflags.patch
@@ -0,0 +1,19 @@
+Use includedir to avoid host contamination
+
+The dart pkgconfig contains CMAKE_CXX_FLAGS which contains paths from the
+build host. Set Cflags to includedir for a better default value.
+
+Upstream-Status: Pending
+
+Signed-off-by: Rob Woolley
+
+diff --git a/cmake/dart.pc.in b/cmake/dart.pc.in
+index 402c496c4298..31e0a80c5c4d 100644
+--- a/cmake/dart.pc.in
++++ b/cmake/dart.pc.in
+@@ -9,4 +9,4 @@ Description: @DART_PKG_DESC@
+ Version: @DART_VERSION@
+ Requires: @DART_PKG_EXTERNAL_DEPS@
+ Libs: -L${libdir} -ldart
+-Cflags: @CMAKE_CXX_FLAGS@
++Cflags: -I${includedir}
diff --git a/meta-ros-common/recipes-devtools/dartsim/dartsim/python3-fixes.patch b/meta-ros-common/recipes-devtools/dartsim/dartsim/python3-fixes.patch
new file mode 100644
index 00000000000..8940a8c9fb4
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/dartsim/dartsim/python3-fixes.patch
@@ -0,0 +1,42 @@
+Replace outdated distuils.log with logging
+
+Upstream-Status: Pending
+
+Signed-off-by: Rob Woolley
+
+diff --git a/python/dartpy/CMakeLists.txt b/python/dartpy/CMakeLists.txt
+index b316e8671479..6e9e92089cdb 100644
+--- a/python/dartpy/CMakeLists.txt
++++ b/python/dartpy/CMakeLists.txt
+@@ -7,8 +7,7 @@
+ # This file is provided under the "BSD-style" License
+
+ execute_process(COMMAND ${Python3_EXECUTABLE} -c
+- "from distutils.sysconfig import get_python_lib;\
+- print(get_python_lib(plat_specific=True))"
++ "import sysconfig; print(sysconfig.get_path('platlib'))"
+ OUTPUT_VARIABLE PYTHON_SITE_PACKAGES
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+diff --git a/setup.py b/setup.py
+index e24332b0bd9c..ed5a6388514d 100644
+--- a/setup.py
++++ b/setup.py
+@@ -4,7 +4,7 @@
+ # References:
+ # - https://pybind11.readthedocs.io/en/stable/compiling.html
+
+-import distutils.log
++import logging
+ import os
+ import re
+ import subprocess
+@@ -32,7 +32,7 @@ with open(os.path.join(dart_root, "README.md"), encoding="utf-8") as f:
+ long_description = f.read()
+ description = "Python API of Dynamic Animation and Robotics Toolkit."
+
+-distutils.log.set_verbosity(distutils.log.DEBUG) # Set DEBUG level
++logging.basicConfig(level=logging.DEBUG) # Set DEBUG level
+
+
+ # A CMakeExtension needs a sourcedir instead of a file list.
diff --git a/meta-ros-common/recipes-devtools/dartsim/dartsim/remove-buildpath.patch b/meta-ros-common/recipes-devtools/dartsim/dartsim/remove-buildpath.patch
new file mode 100644
index 00000000000..e16ba4bc530
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/dartsim/dartsim/remove-buildpath.patch
@@ -0,0 +1,32 @@
+Remove reference to build path
+
+The dart config.hpp file is generated using CMAKE_CURRENT_SOURCE_DIR as
+the value for DART_SOURCE_DIR.
+
+This results in host contamination with the build path being in the target:
+
+ WARNING: dartsim-6.13.2-r0 do_package_qa: QA Issue: File /usr/lib/libdart-utils.so.6.14.0 in package dartsim contains reference to TMPDIR [buildpaths]
+
+Replacing it with the installation path ensure that it reflects where the
+header file is located on the target.
+
+Upstream-Status: Pending
+
+Signed-off-by: Rob Woolley
+
+diff --git a/dart/config.hpp.in b/dart/config.hpp.in
+index 7ee2997fd7a8..15dc0d872af9 100644
+--- a/dart/config.hpp.in
++++ b/dart/config.hpp.in
+@@ -81,9 +81,9 @@
+
+ // Deprecated in DART 6.2 and will be removed in DART 7.
+-#define DART_ROOT_PATH "@DART_SOURCE_DIR@/"
++#define DART_ROOT_PATH "@DART_ADDITIONAL_DOCUMENTATION_INSTALL_PATH@/"
+-#define DART_DATA_PATH "@DART_SOURCE_DIR@/data/"
++#define DART_DATA_PATH "@DART_ADDITIONAL_DOCUMENTATION_INSTALL_PATH@/data/"
+
+-#define DART_DATA_LOCAL_PATH "@DART_SOURCE_DIR@/data/"
++#define DART_DATA_LOCAL_PATH "@DART_ADDITIONAL_DOCUMENTATION_INSTALL_PATH@/data/"
+ #define DART_DATA_GLOBAL_PATH \
+ "@CMAKE_INSTALL_PREFIX@/@DART_ADDITIONAL_DOCUMENTATION_INSTALL_PATH@/data/"
diff --git a/meta-ros-common/recipes-devtools/dartsim/dartsim/use-system-googletest.patch b/meta-ros-common/recipes-devtools/dartsim/dartsim/use-system-googletest.patch
new file mode 100644
index 00000000000..f145f108d30
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/dartsim/dartsim/use-system-googletest.patch
@@ -0,0 +1,29 @@
+Direct dartsim to use the system-provided GoogleTest
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Rob Woolley
+
+Index: git/tests/CMakeLists.txt
+===================================================================
+--- git.orig/tests/CMakeLists.txt
++++ git/tests/CMakeLists.txt
+@@ -31,17 +31,11 @@
+ #
+
+ # Set up GoogleTest
+-include(FetchContent)
+-FetchContent_Declare(
+- googletest
+- GIT_REPOSITORY https://github.com/google/googletest
+- GIT_TAG v1.14.0
+-)
++find_package(GTest REQUIRED)
+ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+ set(gtest_disable_pthreads ON CACHE BOOL "" FORCE)
+ set(BUILD_GMOCK ON CACHE BOOL "" FORCE)
+ set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
+-FetchContent_MakeAvailable(googletest)
+
+ #===============================================================================
+ # This function uses following global properties:
diff --git a/meta-ros-common/recipes-devtools/dartsim/dartsim/use-system-pybind11.patch b/meta-ros-common/recipes-devtools/dartsim/dartsim/use-system-pybind11.patch
new file mode 100644
index 00000000000..c38d6ea1c5f
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/dartsim/dartsim/use-system-pybind11.patch
@@ -0,0 +1,25 @@
+Use system pybind11
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Rob Woolley
+
+Index: git/python/CMakeLists.txt
+===================================================================
+--- git.orig/python/CMakeLists.txt
++++ git/python/CMakeLists.txt
+@@ -6,13 +6,7 @@ if(NOT DART_BUILD_DARTPY)
+ endif()
+
+ # Set up pybind11
+-include(FetchContent)
+-FetchContent_Declare(
+- pybind11
+- GIT_REPOSITORY https://github.com/pybind/pybind11
+- GIT_TAG v2.12.0
+-)
+-FetchContent_MakeAvailable(pybind11)
++find_package(pybind11)
+
+ if(NOT pybind11_FOUND)
+ message(WARNING "Disabling [dartpy] due to missing pybind11 >= 2.2.0.")
diff --git a/meta-ros-common/recipes-devtools/dartsim/dartsim_6.14.4.bb b/meta-ros-common/recipes-devtools/dartsim/dartsim_6.14.4.bb
new file mode 100644
index 00000000000..70852adce3f
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/dartsim/dartsim_6.14.4.bb
@@ -0,0 +1,57 @@
+HOMEPAGE = "https://github.com/dartsim/dart"
+LICENSE = "BSD-2-Clause & BSD-3-Clause & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=a89a91ad8b0e80a94a412a7a37b5b492 \
+ file://data/mjcf/openai/LICENSE.md;md5=b7fcc920c21836f90e2ba40fd8fad0a7"
+
+SRC_URI = "git://github.com/dartsim/dart.git;protocol=https;branch=release-6.14 \
+ file://python3-fixes.patch \
+ file://use-system-googletest.patch \
+ file://use-system-pybind11.patch \
+ file://fix-pkgconfig-cflags.patch \
+ file://remove-buildpath.patch \
+"
+
+SRCREV = "2b6abb557652fe4eb7f80a7be52706d7ca20cf86"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = " \
+ assimp \
+ bullet \
+ doxygen-native \
+ fmt-native \
+ fcl \
+ google-benchmark \
+ googletest-native \
+ libccd \
+ libeigen \
+ libtinyxml2 \
+ ipopt \
+ nlopt \
+ octomap \
+ ode \
+ openscenegraph \
+ pagmo \
+ python3-pybind11 \
+ python3-requests \
+ python3-pytest \
+ urdfdom \
+ urdfdom-headers \
+ virtual/libgl \
+"
+
+
+inherit setuptools3 cmake pkgconfig
+
+inherit ros_opt_prefix
+EXTRA_OECMAKE:prepend = "\
+ -DCMAKE_PREFIX_PATH='${STAGING_DIR_HOST}${ros_prefix};${STAGING_DIR_HOST}${prefix}' \
+ -DDART_ENABLE_SIMD=OFF \
+"
+
+CXXFLAGS += "-Wno-error=deprecated-copy -Wno-error=reorder"
+
+FILES:${PN} += "${datadir}/dart"
+
+# ERROR: dartsim-6.13.2-r0 do_package_qa: QA Issue: File ... in package dartsim doesn't have GNU_HASH (didn't pass LDFLAGS?)
+INSANE_SKIP:${PN} += "ldflags"
diff --git a/meta-ros-common/recipes-devtools/gazebo/gz-cmake3/Fix-pkgconfig-install-dir.patch b/meta-ros-common/recipes-devtools/gazebo/gz-cmake3/Fix-pkgconfig-install-dir.patch
new file mode 100644
index 00000000000..367290bbabd
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/gazebo/gz-cmake3/Fix-pkgconfig-install-dir.patch
@@ -0,0 +1,27 @@
+
+Fix pkgconfig installation directory
+
+Packages which use gz-cmake3 will fail to install when
+building cross-platform and CMAKE_INSTALL_PREFIX is set.
+
+This happens because pkgconfig_install_dir uses
+CMAKE_INSTALL_FULL_LIBDIR/pkgconfig which is an absolute path.
+
+We should use CMAKE_INSTALL_LIBDIR instead so that it is a
+relative path and CMAKE_INSTALL_PREFIX can be used.
+
+Signed-off by: Rob Woolley
+
+diff --git a/cmake/GzPackaging.cmake b/cmake/GzPackaging.cmake
+index f3a8ae0..4a2b633 100644
+--- a/cmake/GzPackaging.cmake
++++ b/cmake/GzPackaging.cmake
+@@ -227,7 +227,7 @@ function(_gz_create_pkgconfig)
+
+ install(
+ FILES ${pkgconfig_output}
+- DESTINATION ${pkgconfig_install_dir}
++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
+ COMPONENT pkgconfig)
+
+ endfunction()
diff --git a/meta-ros-common/recipes-devtools/gazebo/gz-cmake3_3.5.3.bb b/meta-ros-common/recipes-devtools/gazebo/gz-cmake3_3.5.3.bb
new file mode 100644
index 00000000000..2f98565e704
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/gazebo/gz-cmake3_3.5.3.bb
@@ -0,0 +1,23 @@
+# Copyright (c) 2024 Wind River Systems, Inc.
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2a461be67a1edf991251f85f3aadd1d0"
+
+SRC_URI = "git://github.com/gazebosim/gz-cmake.git;protocol=https;branch=gz-cmake3 \
+ file://Fix-pkgconfig-install-dir.patch"
+
+SRCREV = "ddd38ff196640024d6e054ff59cf5fea1ef01d73"
+
+S = "${WORKDIR}/git"
+
+inherit cmake
+
+FILES:${PN} += "${datadir}/gz/gz-cmake3/*"
+
+FILES:${PN}-dev += " \
+ pkgconfig/gz-cmake3.pc \
+ ${includedir} \
+ ${datadir}/cmake/gz-cmake3/cmake3/ \
+ ${datadir}/gz/gz-cmake3/ \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-ros-common/recipes-devtools/gazebo/gz-common5/add-missing-headers.patch b/meta-ros-common/recipes-devtools/gazebo/gz-common5/add-missing-headers.patch
new file mode 100644
index 00000000000..da670e07b77
--- /dev/null
+++ b/meta-ros-common/recipes-devtools/gazebo/gz-common5/add-missing-headers.patch
@@ -0,0 +1,42 @@
+Add missing standard headers
+
+The build fails with the following errors due to standard C++ headers not being
+explicitly included.
+
+git/test/performance/logging.cc:79:16: error: 'max_element' is not a member of 'std'; did you mean 'tuple_element'?
+git/test/performance/logging.cc:109:12: error: 'max_element' is not a member of 'std'; did you mean 'tuple_element'?
+git/testing/include/gz/common/testing/detail/AutoLogFixture.hh:79:8: error: 'replace' is not a member of 'std'
+git/testing/include/gz/common/testing/detail/AutoLogFixture.hh:79:8: error: 'replace' is not a member of 'std'
+git/testing/include/gz/common/testing/detail/AutoLogFixture.hh:79:8: error: 'replace' is not a member of 'std'
+
+Upstream-Status: Pending
+
+Signed-off-by: Rob Woolley
+
+diff --git a/test/performance/logging.cc b/test/performance/logging.cc
+index 8d1d77e6..52194013 100644
+--- a/test/performance/logging.cc
++++ b/test/performance/logging.cc
+@@ -16,6 +16,7 @@
+ */
+ #include
+
++#include
+ #include
+ #include