diff --git a/2.0.5.tar.gz b/2.0.5.tar.gz
deleted file mode 100644
index eaa2b3319f424ed55892c2348f04918a3a327c97..0000000000000000000000000000000000000000
Binary files a/2.0.5.tar.gz and /dev/null differ
diff --git a/_multibuild b/_multibuild
new file mode 100644
index 0000000000000000000000000000000000000000..591eb58c544d5f621513b9f10482c9c11b171b1f
--- /dev/null
+++ b/_multibuild
@@ -0,0 +1,15 @@
+
+ actionlib-msgs
+ common-interfaces
+ diagnostic-msgs
+ geometry-msgs
+ nav-msgs
+ sensor-msgs
+ sensor-msgs-py
+ shape-msgs
+ std-msgs
+ std-srvs
+ stereo-msgs
+ trajectory-msgs
+ visualization-msgs
+
diff --git a/actionlib-msgs.spec b/actionlib-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..64db231c414be6986cbe4b6b83bbf294004366a1
--- /dev/null
+++ b/actionlib-msgs.spec
@@ -0,0 +1,102 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName actionlib-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some message definitions used in the implementation of ROS 1 actions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-builtin-interfaces
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some message definitions used in the implementation of ROS 1 actions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/common-interfaces.spec b/common-interfaces.spec
new file mode 100644
index 0000000000000000000000000000000000000000..09f5b1d6a9ce5daf5b6807d8ed8295751bbeca29
--- /dev/null
+++ b/common-interfaces.spec
@@ -0,0 +1,109 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName common-interfaces
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: common_interfaces contains messages and services that are widely used by other ROS packages.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-actionlib-msgs
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-diagnostic-msgs
+Requires: ros-%{ros_distro}-geometry-msgs
+Requires: ros-%{ros_distro}-nav-msgs
+Requires: ros-%{ros_distro}-sensor-msgs
+Requires: ros-%{ros_distro}-shape-msgs
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-std-srvs
+Requires: ros-%{ros_distro}-stereo-msgs
+Requires: ros-%{ros_distro}-trajectory-msgs
+Requires: ros-%{ros_distro}-visualization-msgs
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-auto
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+common_interfaces contains messages and services that are widely used by other ROS packages.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/common_interfaces.spec b/common_interfaces.spec
deleted file mode 100644
index 76f00f51aedc45c49fcd7917fb8bdb42eea66192..0000000000000000000000000000000000000000
--- a/common_interfaces.spec
+++ /dev/null
@@ -1,208 +0,0 @@
-Name: ros-foxy-ros-common_interfaces
-Version: 2.0.5
-Release: 1
-Summary: This is ROS foxy %{name} Package
-License: Public Domain and Apache-2.0 and BSD and MIT and BSL-1.0 and LGPL-2.1-only and MPL-2.0 and GPL-3.0-only and GPL-2.0-or-later and MPL-1.1 and IJG and Zlib and OFL-1.1
-URL: https://github.com/ros2/common_interfaces.git
-Source0: https://github.com/ros2/common_interfaces/archive/refs/tags/2.0.5.tar.gz
-BuildRequires: gcc-c++
-BuildRequires: cmake
-BuildRequires: python3-devel
-BuildRequires: python3-setuptools
-BuildRequires: python3-pytest
-BuildRequires: asio-devel
-BuildRequires: tinyxml2-devel
-BuildRequires: git
-BuildRequires: maven
-
-%description
-This is ROS foxy %{name} Package.
-
-%prep
-%setup
-
-%install
-cd 3rdparty/
-
-cd empy-3.3.4/
-python3 setup.py install --user
-cd ..
-
-cd six-1.15.0/
-python3 setup.py install --user
-cd ..
-
-cd setuptools_scm-4.1.2/
-python3 setup.py install --user
-cd ..
-
-cd python-dateutil-2.8.1/
-python3 setup.py install --user
-cd ..
-
-cd pyparsing-2.4.7/
-python3 setup.py install --user
-cd ..
-
-cd docutils-0.16/
-python3 setup.py install --user
-cd ..
-
-cd catkin_pkg-0.4.22/
-python3 setup.py install --user
-cd ..
-
-cd lark-1.0.0
-python3 setup.py install --user
-cd ..
-
-cd Cython-0.29.24
-python3 setup.py install --user
-cd ..
-
-cd numpy-1.21.2
-python3 setup.py install --user
-cd ..
-
-#ros2
-
-cd distlib-0.3.3/
-python3 setup.py install --user
-cd ..
-
-cd attrs-21.2.0
-python3 setup.py install --user
-cd ..
-
-cd more-itertools-5.0.0
-python3 setup.py install --user
-cd ..
-
-cd zipp-1.0.0
-python3 setup.py install --user
-cd ..
-
-cd wheel-0.33.0
-python3 setup.py install --user
-cd ..
-
-cd toml-0.10.2
-python3 setup.py install --user
-cd ..
-
-cd importlib_metadata-3.8.0
-python3 setup.py install --user
-cd ..
-
-cd py-1.11.0
-python3 setup.py install --user
-cd ..
-
-cd packaging-21.3
-python3 setup.py install --user
-cd ..
-
-cd iniconfig-1.1.1
-python3 setup.py install --user
-cd ..
-
-cd pluggy-1.0.0
-python3 setup.py install --user
-cd ..
-
-cd typing_extensions-3.7.4
-python3 setup.py install --user
-cd ..
-
-cd pytest-6.2.5
-python3 setup.py install --user
-cd ..
-
-cd coverage-5.4
-python3 setup.py install --user
-cd ..
-
-cd pytest-cov-3.0.0
-python3 setup.py install --user
-cd ..
-
-cd pytest-repeat-0.9.1
-python3 setup.py install --user
-cd ..
-
-cd pytest-rerunfailures-10.2
-python3 setup.py install --user
-cd ..
-
-cd pytest-runner-5.3.1
-python3 setup.py install --user
-cd ..
-
-cd PyYAML-6.0
-python3 setup.py install --user
-cd ..
-
-cd setuptools-60.0.0
-python3 setup.py install --user
-cd ..
-
-cd argcomplete-1.11.1
-python3 setup.py install --user
-cd ..
-
-cd notify2-0.3.1
-python3 setup.py install --user
-cd ..
-
-cd ..
-
-# for colcon build tools
-cd build_tools
-export BUILD_WORSPCE=$PWD
-./colcon/colcon-core/bin/colcon build --paths colcon/* --merge-install
-source install/local_setup.sh
-cd ..
-
-# for workspace
-cd workspace
-colcon build --merge-install
-cp ../install_dependence.sh install/
-cp -r ../build_tools/install/bin install/
-cp -r ../build_tools/install/lib install/
-cp -r ../build_tools/install/share install/
-
-####
-# 对install内部的变量名称进行替换
-#
-####
-SRC_PATH=$PWD/install
-DST_PATH=/opt/ros/foxy
-sed -i "s:${SRC_PATH}:${DST_PATH}:g" `grep -rIln "${SRC_PATH}" install/*`
-
-
-SRC_PATH=$BUILD_WORSPCE/install
-DST_PATH=/opt/ros/foxy
-sed -i "s:${SRC_PATH}:${DST_PATH}:g" `grep -rIln "${SRC_PATH}" install/*`
-
-####
-# install
-#
-####
-mkdir -p %{buildroot}/opt/ros/foxy/
-cp -r install/* %{buildroot}/opt/ros/foxy/
-
-###for debug
-#mkdir -p %{buildroot}/opt/ros/foxy/log
-#cp -r log/ %{buildroot}/opt/ros/foxy/log
-
-%files
-%defattr(-,root,root)
-/opt/ros/foxy/*
-
-%changelog
-* Wed Sep 21 2022 openEuler Buildteam - 2.0.5-1
-- Update Package to OpenEuler 22.03
-* Tue Nov 30 2021 openEuler Buildteam - 2.0.4-1
-- Package init
-* Tue Jan 5 2022 openEuler Buildteam - 2.0.4-1
-- Package update
diff --git a/diagnostic-msgs.spec b/diagnostic-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..4d99df75ecb55fd40b22f95e76ceb397f6136d64
--- /dev/null
+++ b/diagnostic-msgs.spec
@@ -0,0 +1,104 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName diagnostic-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some diagnostics related message and service definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-geometry-msgs
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-builtin-interfaces
+BuildRequires: ros-%{ros_distro}-geometry-msgs
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some diagnostics related message and service definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/geometry-msgs.spec b/geometry-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..edf6cfceeec2184448be18656515eff0348a8a88
--- /dev/null
+++ b/geometry-msgs.spec
@@ -0,0 +1,100 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName geometry-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some geometry related message definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some geometry related message definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/nav-msgs.spec b/nav-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..1548583b80665889bc84ecfcf92f80a5a4716a00
--- /dev/null
+++ b/nav-msgs.spec
@@ -0,0 +1,104 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName nav-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some navigation related message and service definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-geometry-msgs
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-builtin-interfaces
+BuildRequires: ros-%{ros_distro}-geometry-msgs
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some navigation related message and service definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/ros-humble-actionlib-msgs_4.2.3.orig.tar.gz b/ros-humble-actionlib-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..414a2563ecc5d1fd60f95ecd2cb9a2024813cbf8
Binary files /dev/null and b/ros-humble-actionlib-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-common-interfaces_4.2.3.orig.tar.gz b/ros-humble-common-interfaces_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..ecfadebfc078ff594e0315b4bf79db9b15d697b8
Binary files /dev/null and b/ros-humble-common-interfaces_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-diagnostic-msgs_4.2.3.orig.tar.gz b/ros-humble-diagnostic-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..05584440f719fb201d2f2f2830ada313fb02359b
Binary files /dev/null and b/ros-humble-diagnostic-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-geometry-msgs_4.2.3.orig.tar.gz b/ros-humble-geometry-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..9568ecfc10d057685d7f36b379f73079a77b48ba
Binary files /dev/null and b/ros-humble-geometry-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-nav-msgs_4.2.3.orig.tar.gz b/ros-humble-nav-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..bcec2fd505ca13b1482602dfce4fc2fb86f0498b
Binary files /dev/null and b/ros-humble-nav-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-sensor-msgs-py_4.2.3.orig.tar.gz b/ros-humble-sensor-msgs-py_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..f9a0b082062bd6dd045bbb2f9adf0fba98091493
Binary files /dev/null and b/ros-humble-sensor-msgs-py_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-sensor-msgs_4.2.3.orig.tar.gz b/ros-humble-sensor-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..59afbda0490d500b41a5453437d472d3029c7813
Binary files /dev/null and b/ros-humble-sensor-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-shape-msgs_4.2.3.orig.tar.gz b/ros-humble-shape-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..0af069aa2636eb56f5a418f6ba295540f6f6780c
Binary files /dev/null and b/ros-humble-shape-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-std-msgs_4.2.3.orig.tar.gz b/ros-humble-std-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..4821126ff3c1bf99bebe7841e01924fb8857236c
Binary files /dev/null and b/ros-humble-std-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-std-srvs_4.2.3.orig.tar.gz b/ros-humble-std-srvs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..b85a8ebf5fe3de098e195a6ceb02e10984e7d3d8
Binary files /dev/null and b/ros-humble-std-srvs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-stereo-msgs_4.2.3.orig.tar.gz b/ros-humble-stereo-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..acbb7f12d601a1c3c7cc615f5e6fecc4a0f1b43c
Binary files /dev/null and b/ros-humble-stereo-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-trajectory-msgs_4.2.3.orig.tar.gz b/ros-humble-trajectory-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..611d89fa80994ce1992f47887ca4f1a9a2059da7
Binary files /dev/null and b/ros-humble-trajectory-msgs_4.2.3.orig.tar.gz differ
diff --git a/ros-humble-visualization-msgs_4.2.3.orig.tar.gz b/ros-humble-visualization-msgs_4.2.3.orig.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..1d6981981134361914f5dcc1146a501975b3d525
Binary files /dev/null and b/ros-humble-visualization-msgs_4.2.3.orig.tar.gz differ
diff --git a/sensor-msgs-py.spec b/sensor-msgs-py.spec
new file mode 100644
index 0000000000000000000000000000000000000000..21698c77db07278fb3a66581690cff117eed34b9
--- /dev/null
+++ b/sensor-msgs-py.spec
@@ -0,0 +1,75 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName sensor-msgs-py
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package for easy creation and reading of PointCloud2 messages in Python.
+
+License: BSD
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-sensor-msgs
+Requires: python3-numpy
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-copyright
+BuildRequires: ros-%{ros_distro}-ament-flake8
+BuildRequires: ros-%{ros_distro}-ament-pep257
+BuildRequires: python3-pytest
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package for easy creation and reading of PointCloud2 messages in Python.
+
+%prep
+%autosetup -p1
+
+%build
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%py3_build
+
+%install
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%py3_install -- --prefix "/opt/ros/%{ros_distro}"
+
+%if 0%{?with_tests}
+%check
+# Look for a directory with a name indicating that it contains tests
+TEST_TARGET=$(ls -d * | grep -m1 "\(test\|tests\)" ||:)
+if [ -n "$TEST_TARGET" ] && %__python3 -m pytest --version; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%__python3 -m pytest $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/sensor-msgs.spec b/sensor-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..a969d822a6bbe02eb78f18c573e4db6a73cfcc3e
--- /dev/null
+++ b/sensor-msgs.spec
@@ -0,0 +1,107 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName sensor-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some sensor data related message and service definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-geometry-msgs
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-builtin-interfaces
+BuildRequires: ros-%{ros_distro}-geometry-msgs
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-cmake-gtest
+BuildRequires: ros-%{ros_distro}-ament-lint-auto
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+BuildRequires: ros-%{ros_distro}-rosidl-cmake
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some sensor data related message and service definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/shape-msgs.spec b/shape-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..a565fe63bb29fbdac5b55f85ad57e5aafc432e1e
--- /dev/null
+++ b/shape-msgs.spec
@@ -0,0 +1,100 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName shape-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some message definitions which describe geometric shapes.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-geometry-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-geometry-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some message definitions which describe geometric shapes.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/std-msgs.spec b/std-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..ca58d8dcf78b35df746a1614a92760b607af6a4a
--- /dev/null
+++ b/std-msgs.spec
@@ -0,0 +1,100 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName std-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some standard message definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-builtin-interfaces
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some standard message definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/std-srvs.spec b/std-srvs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..7b3f836333afbd754de7b76815650cb49bcd8642
--- /dev/null
+++ b/std-srvs.spec
@@ -0,0 +1,98 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName std-srvs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some standard service definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some standard service definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/stereo-msgs.spec b/stereo-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..ff1c81fb401fac1cb82c31d562af9dbfd2919c39
--- /dev/null
+++ b/stereo-msgs.spec
@@ -0,0 +1,102 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName stereo-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some stereo camera related message definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-sensor-msgs
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-sensor-msgs
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some stereo camera related message definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/trajectory-msgs.spec b/trajectory-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..b6a16df137a91382a62b000ad08388c71747c010
--- /dev/null
+++ b/trajectory-msgs.spec
@@ -0,0 +1,104 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName trajectory-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some robot trajectory message definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-geometry-msgs
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-builtin-interfaces
+BuildRequires: ros-%{ros_distro}-geometry-msgs
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some robot trajectory message definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools
diff --git a/visualization-msgs.spec b/visualization-msgs.spec
new file mode 100644
index 0000000000000000000000000000000000000000..2128e9d81708f606b7f3670e17a1bdf55b98fc71
--- /dev/null
+++ b/visualization-msgs.spec
@@ -0,0 +1,106 @@
+%bcond_without tests
+%bcond_without weak_deps
+
+%global debug_package %{nil}
+%global __os_install_post %(echo '%{__os_install_post}' | sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g')
+%global __provides_exclude_from ^/opt/ros/%{ros_distro}/.*$
+%global __requires_exclude_from ^/opt/ros/%{ros_distro}/.*$
+
+%define RosPkgName visualization-msgs
+
+Name: ros-%{ros_distro}-%{RosPkgName}
+Version: 4.2.3
+Release: 1%{?dist}%{?release_suffix}
+Summary: A package containing some visualization and interaction related message definitions.
+
+License: Apache License 2.0
+Source0: %{name}_%{version}.orig.tar.gz
+
+Requires: ros-%{ros_distro}-builtin-interfaces
+Requires: ros-%{ros_distro}-geometry-msgs
+Requires: ros-%{ros_distro}-sensor-msgs
+Requires: ros-%{ros_distro}-std-msgs
+Requires: ros-%{ros_distro}-rosidl-default-runtime
+Requires: ros-%{ros_distro}-ros-workspace
+
+BuildRequires: ros-%{ros_distro}-builtin-interfaces
+BuildRequires: ros-%{ros_distro}-geometry-msgs
+BuildRequires: ros-%{ros_distro}-sensor-msgs
+BuildRequires: ros-%{ros_distro}-std-msgs
+BuildRequires: ros-%{ros_distro}-ament-cmake
+BuildRequires: ros-%{ros_distro}-rosidl-default-generators
+BuildRequires: ros-%{ros_distro}-ros-workspace
+
+%if 0%{?with_tests}
+BuildRequires: ros-%{ros_distro}-ament-lint-common
+%endif
+
+Provides: %{name}-devel = %{version}-%{release}
+Provides: %{name}-doc = %{version}-%{release}
+Provides: %{name}-runtime = %{version}-%{release}
+
+%description
+A package containing some visualization and interaction related message definitions.
+
+%prep
+%autosetup -p1
+
+%build
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+mkdir -p .obj-%{_target_platform} && cd .obj-%{_target_platform}
+%cmake3 \
+ -UINCLUDE_INSTALL_DIR \
+ -ULIB_INSTALL_DIR \
+ -USYSCONF_INSTALL_DIR \
+ -USHARE_INSTALL_PREFIX \
+ -ULIB_SUFFIX \
+ -DCMAKE_INSTALL_PREFIX="/opt/ros/%{ros_distro}" \
+ -DAMENT_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DCMAKE_PREFIX_PATH="/opt/ros/%{ros_distro}" \
+ -DSETUPTOOLS_DEB_LAYOUT=OFF \
+%if !0%{?with_tests}
+ -DBUILD_TESTING=OFF \
+%endif
+ ..
+
+%make_build
+
+%install
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+%make_install -C .obj-%{_target_platform}
+
+%if 0%{?with_tests}
+%check
+# Needed to bootstrap since the ros_workspace package does not yet exist.
+export PYTHONPATH=/opt/ros/%{ros_distro}/lib/python%{python3_version}/site-packages
+
+# Look for a Makefile target with a name indicating that it runs tests
+TEST_TARGET=$(%__make -qp -C .obj-%{_target_platform} | sed "s/^\(test\|check\):.*/\\1/;t f;d;:f;q0")
+if [ -n "$TEST_TARGET" ]; then
+# In case we're installing to a non-standard location, look for a setup.sh
+# in the install tree and source it. It will set things like
+# CMAKE_PREFIX_PATH, PKG_CONFIG_PATH, and PYTHONPATH.
+if [ -f "/opt/ros/%{ros_distro}/setup.sh" ]; then . "/opt/ros/%{ros_distro}/setup.sh"; fi
+CTEST_OUTPUT_ON_FAILURE=1 \
+ %make_build -C .obj-%{_target_platform} $TEST_TARGET || echo "RPM TESTS FAILED"
+else echo "RPM TESTS SKIPPED"; fi
+%endif
+
+%files
+/opt/ros/%{ros_distro}
+
+%changelog
+* Thu May 04 2023 Geoffrey Biggs geoff@openrobotics.org - 4.2.3-1
+- Autogenerated by ros-porting-tools