25.0.18
Description
Abstract
Add Jazzy (ROS 2 / Ubuntu 24.04) support to the Dockerfile and the Docker.yaml CI workflow, and silence an overloaded-virtual build error that surfaces only on ARM64 in traffic_simulator.
Background
The Docker image was previously built only for Humble (Ubuntu 22.04, amd64/arm64). Jazzy is the next supported ROS 2 distribution for Autoware, and we need parity in the published images so downstream users can pull jazzy-* tags.
Details
Dockerfile
- Added
ENV PIP_BREAK_SYSTEM_PACKAGES=1to both stages sopip installworks on Ubuntu 24.04's PEP 668-managed Python. - Added
-DBUILD_TESTING=OFFto the colcon invocation so the development image does not pull/build test-only dependencies. - Runtime stage refactor: dropped the hand-maintained apt package list (which hard-coded
humble-prefixed package names and Ubuntu 22.04 library) in favor of:- copying
src/from the development stage early, - running
rosdep install --dependency-types=execagainst the workspace'spackage.xmlfiles to resolve runtime deps for whicheverROS_DISTROis being built, - explicitly installing
ros-${ROS_DISTRO}-rmw-cyclonedds-cppand settingRMW_IMPLEMENTATION=rmw_cyclonedds_cppas the default RMW.
- copying
- Note:
vcs importis intentionally pinned todependency_humble.reposfor now — the same external repo set is used for both distros until a Jazzy-specific repos file is needed.
.github/workflows/Docker.yaml
- Added
ubuntu-24.04(amd64) andubuntu-24.04-arm(arm64) matrix entries withrosdistro: jazzyandimage_tag: jazzy. - Added matching
jazzyentries (desktop,-devel,-runtime) to themergejob so the multi-arch manifests get pushed under thejazzy-*tags.
simulation/traffic_simulator/CMakeLists.txt
- Extended the existing ARM64-only compile-options block with
-Wno-error=overloaded-virtualso the warning no longer fails the build onaarch64/arm64. The warning itself is left enabled; only its promotion to an error is suppressed.
Destructive Changes
None.
Known Limitations
vcs importstill readsdependency_humble.reposeven when building Jazzy. If a dependency in that file is incompatible with Jazzy, the development stage will fail to build. A follow-up should introducedependency_jazzy.repos(or confirm the file is distro-agnostic and rename it).- The
-Wno-error=overloaded-virtualsuppression is a workaround. The underlying overload(s) hidden by a base-class virtual should be audited and either renamed, markedusing Base::foo;, or explicitly overridden so the flag can be removed. An issue should be opened to track this. - The runtime image's footprint now depends on whatever
rosdepresolves for--dependency-types=exec; if a package'spackage.xmlunderstates its runtime deps, the resulting image may be missing libraries that the previous hand-curated list happened to include.