From bde7dd971d0b784ebf024f0073d060f92a65c204 Mon Sep 17 00:00:00 2001 From: I-am-a-robot Date: Wed, 2 Jul 2025 02:42:46 +0000 Subject: [PATCH] apply new package qbdevice-ros --- files_in_srpm.txt | 2 + qbdevice-ros.spec | 111 ++++++++++++++++++++ qbdevice-ros.src.rpm | Bin 0 -> 10815 bytes ros-humble-qb-device-msgs_4.1.3.orig.tar.gz | Bin 0 -> 3295 bytes 4 files changed, 113 insertions(+) create mode 100644 files_in_srpm.txt create mode 100644 qbdevice-ros.spec create mode 100644 qbdevice-ros.src.rpm create mode 100644 ros-humble-qb-device-msgs_4.1.3.orig.tar.gz diff --git a/files_in_srpm.txt b/files_in_srpm.txt new file mode 100644 index 0000000..0c085bf --- /dev/null +++ b/files_in_srpm.txt @@ -0,0 +1,2 @@ +qb-device-msgs.spec +ros-humble-qb-device-msgs_4.1.3.orig.tar.gz diff --git a/qbdevice-ros.spec b/qbdevice-ros.spec new file mode 100644 index 0000000..72617ee --- /dev/null +++ b/qbdevice-ros.spec @@ -0,0 +1,111 @@ +%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 qb-device-msgs +%define ros_distro humble +%define with_tests 0 + +Name: ros-%{ros_distro}-%{RosPkgName} +Version: 4.1.3 +Release: 1%{?dist}%{?release_suffix} +Summary: ROS qb-device-msgs package + +Url: http://wiki.ros.org/qb_device_msgs +License: BSD 3-Clause +Source0: %{name}_%{version}.orig.tar.gz + +Requires: ros-%{ros_distro}-std-srvs +Requires: ros-%{ros_distro}-std-msgs +Requires: ros-%{ros_distro}-rosidl-default-runtime + +BuildRequires: ros-%{ros_distro}-std-srvs +BuildRequires: ros-%{ros_distro}-std-msgs +BuildRequires: ros-%{ros_distro}-ament-cmake +BuildRequires: ros-%{ros_distro}-rosidl-default-generators + +%if 0%{?with_tests} +%endif + +Provides: %{name}-devel = %{version}-%{release} +Provides: %{name}-doc = %{version}-%{release} +Provides: %{name}-runtime = %{version}-%{release} + +%description + + This package contains the device-independent custom ROS messages for qbrobotics® devices. + + + This package contains the device-independent custom ROS messages for qbrobotics® devices. + + +%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 + +export ROS_DISTRO=%{ros_distro} +export ROS_PYTHON_VERSION=%{python3_version} + +# 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}" \ + -DCMAKE_INSTALL_LIBDIR="/opt/ros/%{ros_distro}/lib" \ + -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 +* Fri May 23 2025 qb Support Team support@qbrobotics.com - 4.1.3-1 +- Autogenerated by ros-porting-tools diff --git a/qbdevice-ros.src.rpm b/qbdevice-ros.src.rpm new file mode 100644 index 0000000000000000000000000000000000000000..5ddfec11fc55ad394198237fa8ee8040647f4ec4 GIT binary patch literal 10815 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 Cx)hZF literal 0 HcmV?d00001 diff --git a/ros-humble-qb-device-msgs_4.1.3.orig.tar.gz b/ros-humble-qb-device-msgs_4.1.3.orig.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..34ec59784fbd9e211e122a8cdb5980ae46dc1cd4 GIT binary patch literal 3295 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 dLk%_5P(uwh)KEhWHPrBQ;D1Hg^E3c>0040coyh