From 3980e9c3e8bfd6454526416defda51ca305c7bbd Mon Sep 17 00:00:00 2001 From: I-am-a-robot Date: Wed, 10 Dec 2025 12:02:42 +0000 Subject: [PATCH] apply new package hatchbed_common --- files_in_srpm.txt | 2 + hatchbed_common.spec | 104 +++++++++++++++++++ hatchbed_common.src.rpm | Bin 0 -> 15881 bytes ros-humble-hatchbed-common_0.1.1.orig.tar.gz | Bin 0 -> 8643 bytes 4 files changed, 106 insertions(+) create mode 100644 files_in_srpm.txt create mode 100644 hatchbed_common.spec create mode 100644 hatchbed_common.src.rpm create mode 100644 ros-humble-hatchbed-common_0.1.1.orig.tar.gz diff --git a/files_in_srpm.txt b/files_in_srpm.txt new file mode 100644 index 0000000..1f25df9 --- /dev/null +++ b/files_in_srpm.txt @@ -0,0 +1,2 @@ +hatchbed-common.spec +ros-humble-hatchbed-common_0.1.1.orig.tar.gz diff --git a/hatchbed_common.spec b/hatchbed_common.spec new file mode 100644 index 0000000..d60b216 --- /dev/null +++ b/hatchbed_common.spec @@ -0,0 +1,104 @@ +%bcond_without tests +%bcond_without weak_deps + +%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}/.*$ +%global debug_package %{nil} + +%define RosPkgName hatchbed-common +%define ros_distro humble +%define with_tests 0 + +Name: ros-%{ros_distro}-%{RosPkgName} +Version: 0.1.1 +Release: 1%{?dist}%{?release_suffix} +Summary: Common Hatchbed C++ utility code for ROS, such registering and handling updates to ros parameters. + +License: BSD +Source0: %{name}_%{version}.orig.tar.gz + +Requires: ros-%{ros_distro}-rclcpp + +BuildRequires: ros-%{ros_distro}-rclcpp +BuildRequires: ros-%{ros_distro}-ament-cmake +BuildRequires: ros-%{ros_distro}-ros-environment + +%if 0%{?with_tests} +BuildRequires: ament_lint_auto +BuildRequires: ament_lint_common +%endif + +Provides: %{name}-devel = %{version}-%{release} +Provides: %{name}-doc = %{version}-%{release} +Provides: %{name}-runtime = %{version}-%{release} + +%description +Common Hatchbed C++ utility code for ROS, such registering and handling updates to ros parameters. + +%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 +* Sat May 24 2025 Marc Alban marcalban@hatchbed.com - 0.1.1-1 +- Autogenerated by ros-porting-tools diff --git a/hatchbed_common.src.rpm b/hatchbed_common.src.rpm new file mode 100644 index 0000000000000000000000000000000000000000..5992d4a56c187e9caa9d577f4d35f5b4682eb868 GIT binary patch literal 15881 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