Skip to content

Prepare for releasing through the ROS buildfarm - #173

Merged
kou merged 1 commit into
enactic:mainfrom
kou:ros-buildfarm
Oct 20, 2026
Merged

kou merged 1 commit into
enactic:mainfrom
kou:ros-buildfarm

Conversation

@kou

@kou kou commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

We want to release openarm_can with bloom so that ROS 2 packages that depend on it can be installed from the ROS apt repository. See enactic/openarm_ros2#101.

package.xml

  • Use opensource@enactic.ai as the maintainer address. It's the address of our release key.
  • Depend on cmake instead of ament_cmake because we use plain CMake.
  • Add the missing CLI11 build dependency (cli11). The buildfarm builds in a clean environment, so the build fails without it.

CMakeLists.txt

  • Build a shared library by default. bloom doesn't specify BUILD_SHARED_LIBS, so we built a static library for ROS. Other plain CMake packages in ROS, such as ruckig, do the same.
  • packages/debian/rules doesn't need -DBUILD_SHARED_LIBS=ON anymore.
  • The Python bindings still build their bundled copy statically.

CI

  • Add a ROS job. It installs dependencies with rosdep based only on package.xml and builds a .deb with bloom, as the buildfarm does. It uploads the built .deb packages as artifacts.
  • Set LD_LIBRARY_PATH in the Python test. The Python bindings now link to the shared library, which is installed in a non-standard location.

We want to release openarm_can with bloom so that ROS 2 packages that
depend on it can be installed from the ROS apt repository. See
enactic/openarm_ros2#101.

## `package.xml`

- Use `opensource@enactic.ai` as the maintainer address. It's the
  address of our release key.
- Depend on `cmake` instead of `ament_cmake` because we use plain CMake.
- Add the missing CLI11 build dependency (`cli11`). The buildfarm builds
  in a clean environment, so the build fails without it.

## `CMakeLists.txt`

- Build a shared library by default. bloom doesn't specify
  `BUILD_SHARED_LIBS`, so we built a static library for ROS. Other plain
  CMake packages in ROS, such as ruckig, do the same.
- `packages/debian/rules` doesn't need `-DBUILD_SHARED_LIBS=ON` anymore.
- The Python bindings still build their bundled copy statically.

## CI

- Add a ROS job. It installs dependencies with rosdep based only on
  `package.xml` and builds a `.deb` with bloom, as the buildfarm does.
  It uploads the built `.deb` packages as artifacts.
- Set `LD_LIBRARY_PATH` in the Python test. The Python bindings now link
  to the shared library, which is installed in a non-standard location.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@packit-as-a-service

Copy link
Copy Markdown

Congratulations! One of the builds has completed. 🍾

You can install the built RPMs by following these steps:

  • sudo dnf install -y 'dnf*-command(copr)'
  • dnf copr enable packit/enactic-openarm_can-173
  • And now you can install the packages.

Please note that the RPMs should be used only in a testing environment.

@kou
kou merged commit 2a1e26d into enactic:main Oct 20, 2026
24 checks passed
@kou
kou deleted the ros-buildfarm branch October 20, 2026 02:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant