Debian Packaging

Creating .deb packages for FiveAges Sim components.

Overview

Several components ship prebuilt .deb files on GitHub Releases (not on packages.ros.org / Ubuntu apt):

Package Documentation

Detailed packaging instructions are in repository-specific README.deb.md files:

arms_ros2_control

See arms_ros2_control/README.deb.md for:

  • Build configuration

  • Dependencies

  • Release process

robot-descriptions-common

Official notes: README.deb.md.

  • Workflow: .github/workflows/build-common-deb.yml

  • PR merge to main refreshes rolling Release tag pre-release; v* tag / workflow_dispatch makes a formal release

  • Deb name: ros-jazzy-robot-descriptions-common_{Version}_{arch}.deb (GitHub upload turns ~ into .)

  • Install example in that README: gh release download pre-release --repo fiveages-sim/robot-descriptions-common --pattern '*_amd64.deb' then sudo dpkg -i …

General Process

Prerequisites

sudo apt install python3-bloom fakeroot debhelper

Create Package

cd <package>
bloom-generate rosdebian --ros-distro jazzy
fakeroot debian/rules binary

Resulting Package

Output: ../<package>_<version>_amd64.deb

Install

sudo dpkg -i <package>_<version>_amd64.deb
sudo apt install -f  # Fix dependencies

Version Management

Semantic Versioning

Use semantic versioning: MAJOR.MINOR.PATCH

  • MAJOR: Breaking changes

  • MINOR: New features

  • PATCH: Bug fixes

Changelog

Maintain changelog for releases:

package (1.2.3-1) jazzy; urgency=medium

  * Fix gripper control bug
  * Add new robot support

 -- Maintainer <email>  Date

CI/CD Integration

Packages are built and tested in CI:

  • Build on each release tag

  • Publish .deb assets to GitHub Releases

  • Test installation

TODO

Document the per-repo GitHub Release workflow (asset names, tags, and deb_versions.conf) in more detail.