Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
e6a9d36
Update ROS packages to release-jazzy-20250820 and Python to 3.12
mvukov Oct 10, 2025
7a41f80
Add rosidl_pycommon
mvukov Oct 10, 2025
fd8ef10
Fix deps
mvukov Oct 11, 2025
564406d
Fix deps for the c-code generator
mvukov Oct 11, 2025
504c06a
Get cpp generator running
mvukov Oct 11, 2025
385f61a
Build rmw_dds_common
mvukov Oct 11, 2025
96d084f
Fix tracetools
mvukov Oct 12, 2025
e0154b0
Fix compilation for rmw_implementation
mvukov Oct 12, 2025
72a7828
Fix build of rcl
mvukov Oct 12, 2025
79058ae
Fix deps
mvukov Oct 14, 2025
bf1d43a
Get type_description_aspect up and running
mvukov Oct 14, 2025
ead4b75
Get type_description_aspect up and running
mvukov Oct 14, 2025
12fa63c
Get rclcpp test working
mvukov Oct 15, 2025
a534d09
Clean up
mvukov Oct 15, 2025
dc637c1
Clean up
mvukov Oct 15, 2025
c62b90a
Fix python codegen
mvukov Oct 18, 2025
89dd003
Update rosidl_patch
mvukov Oct 18, 2025
8aa6849
Update pip requirements
mvukov Oct 18, 2025
67901ae
Consolidate patches for C and C++ codegen
mvukov Oct 18, 2025
f0aad5c
Fix rclpy build
mvukov Oct 18, 2025
da522d9
Run chatter example
mvukov Oct 18, 2025
b049cee
Fix rclpy deps
mvukov Oct 18, 2025
f8c4de8
Fix plugin generation
mvukov Oct 18, 2025
87d61cb
Constrain pytest version
mvukov Oct 18, 2025
6f3960b
Update geometry2
mvukov Oct 18, 2025
b8f6b14
Fix diag msgs deps
mvukov Oct 19, 2025
3ba59ee
Fix launch
mvukov Oct 19, 2025
7eb0894
Work out rosbag2 support with mcap
mvukov Oct 19, 2025
06bb8ac
Apply fixes to build all tests
mvukov Oct 21, 2025
8fcd04c
Update and fix rosbag2 tests
mvukov Oct 21, 2025
2bee0cc
rm goofy codegen test
mvukov Oct 21, 2025
5e99a8c
Fix iceoryx support
mvukov Oct 21, 2025
8da6138
Fix urdfdom
mvukov Oct 21, 2025
88a8514
Fix ros2bag for get_preset_profiles discovery for plugins
mvukov Oct 21, 2025
bc986bb
Fix image_common
mvukov Oct 22, 2025
176be87
Add devcontainer
mvukov Oct 22, 2025
bd40ec2
Clean up image common
mvukov Oct 22, 2025
2515a4f
Add docker example
mvukov Oct 30, 2025
e3866d4
Update docs
mvukov Nov 1, 2025
07352d3
Clean up repo mappings
mvukov Nov 16, 2025
99addde
rm obsolete patches
mvukov Nov 16, 2025
0e65ea8
Clean up Python and ROS 2 version references
mvukov Nov 16, 2025
a2c4ddf
Update ros2_rcl_logging_syslog
mvukov Nov 16, 2025
f31b9da
rm chatter+docker example
mvukov Nov 16, 2025
cb07f28
Merge branch 'main' of github.com:mvukov/rules_ros2 into feature/jazzy
mvukov Nov 16, 2025
71de076
Fix bzlmod
mvukov Nov 16, 2025
c2f3ea6
Update resolver lock file
mvukov Nov 16, 2025
d68073b
Fix examples bzlmod
mvukov Nov 16, 2025
a5c8793
Fix std_srvs deps
mvukov Nov 17, 2025
89e4871
Merge branch 'main' into feature/jazzy
mvukov Dec 21, 2025
cde583b
Rename python toolchain
mvukov Dec 22, 2025
98d94b1
Merge branch 'main' into feature/jazzy
mvukov Feb 14, 2026
dde0f5e
Merge branch 'main' into feature/jazzy
mvukov Feb 21, 2026
4207576
Merge branch 'main' into feature/jazzy
mvukov May 25, 2026
35e4b95
Merge branch 'main' into feature/jazzy
mvukov Jun 2, 2026
ff0e1b3
Fix build file for rosidl dynamic typesupport
mvukov Jun 5, 2026
56ad1df
Merge branch 'main' of github.com:mvukov/rules_ros2 into feature/jazzy
mvukov Jun 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ build --incompatible_default_to_explicit_init_py

# All code will be compiled with C++17 flag.
# Users can naturally override copts for cc_* targets.
# NOTE: ROS 2 Humble needs min C++17.
# NOTE: ROS 2 Jazzy needs min C++17.
# NOTE: googletest >=v1.13.0 requires min C++14.
# This is a mandatory flag.
build --cxxopt=-std=c++17
Expand Down
6 changes: 2 additions & 4 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,11 @@ bazel_dep(name = "googletest", version = "1.17.0.bcr.2", dev_dependency = True)
http_archive = use_repo_rule("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

_PYTHON_VERSIONS = [
"3.10",
"3.11",
"3.12",
"3.13",
]

_DEFAULT_PYTHON = "3.10"
_DEFAULT_PYTHON = "3.12"

python = use_extension("@rules_python//python/extensions:python.bzl", "python")

Expand Down Expand Up @@ -71,7 +69,7 @@ use_repo(pip, "rules_ros2_pip_deps")
dev_pip = use_extension("@rules_python//python/extensions:pip.bzl", "pip", dev_dependency = True)
dev_pip.parse(
hub_name = "rules_ros2_resolver_deps",
python_version = "3.10",
python_version = "3.12",
requirements_lock = "//repositories/private:resolver_requirements_lock.txt",
)
use_repo(dev_pip, "rules_ros2_resolver_deps")
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Besides Bazel, you will need a C++ compiler and a Python 3 interpreter.

And no, you don't have to install any ROS 2 packages via `apt`.

The code is developed and tested on Ubuntu 22.04 with Python 3.10.
The code is developed and tested on Ubuntu 22.04 with Python 3.12.

## What works?

Expand Down Expand Up @@ -39,7 +39,7 @@ Available features:

Please take a look at the [examples](examples) folder to get started.

ROS 2 packages are by default locked to versions from [release-humble-20250721](https://github.com/ros2/ros2/releases/tag/release-humble-20250721).
ROS 2 packages are by default locked to versions from [release-jazzy-20250820](https://github.com/ros2/ros2/releases/tag/release-jazzy-20250820).

## Notes

Expand Down
8 changes: 4 additions & 4 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,15 @@ load("@rules_python//python:repositories.bzl", "py_repositories", "python_regist
py_repositories()

python_register_toolchains(
name = "rules_ros2_python",
python_version = "3.10",
name = "rules_ros2_python_3_12",
python_version = "3.12",
)

load("@rules_python//python:pip.bzl", "pip_parse")

pip_parse(
name = "rules_ros2_pip_deps",
python_interpreter_target = "@rules_ros2_python_host//:python",
python_interpreter_target = "@rules_ros2_python_3_12_host//:python",
requirements_lock = "@com_github_mvukov_rules_ros2//:requirements_lock.txt",
)

Expand Down Expand Up @@ -56,7 +56,7 @@ rust_setup_stage_4()

pip_parse(
name = "rules_ros2_resolver_deps",
python_interpreter_target = "@rules_ros2_python_host//:python",
python_interpreter_target = "@rules_ros2_python_3_12_host//:python",
requirements_lock = "//repositories/private:resolver_requirements_lock.txt",
)

Expand Down
2 changes: 1 addition & 1 deletion examples/MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ python.toolchain(
# Otherwise you will get errors at analysis time like:
# configurable attribute "actual" in @@rules_python~~pip~rules_ros2_pip_deps//numpy:_no_matching_repository doesn't match this configuration: No matching wheel for current configuration's Python version.
# The current build configuration's Python version doesn't match any of the Python wheels available for this distribution.
python_version = "3.10",
python_version = "3.12",
)

register_toolchains(
Expand Down
8 changes: 4 additions & 4 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ Please take a look at the `WORKSPACE` file in this folder to get an idea how to

This approach allows one to customize a Python interpreter and Python deps
in `requirements.txt` file. In particular, the user is responsible to define the interpreter
and requirements lock file in their repo. The official interpreter version for ROS 2 Humble is 3.10
and in `WORKSPACE` file a 3.10 interpreter is setup up. Please pay attention that
resolved dependencies in `requirements_lock.txt` file are resolved for Python 3.10.
and requirements lock file in their repo. The official interpreter version for ROS 2 Jazzy is 3.12
and in `WORKSPACE` file a 3.12 interpreter is setup up. Please pay attention that
resolved dependencies in `requirements_lock.txt` file are resolved for Python 3.12.

If you want to use this approach, make sure you have the following lines in your `.bazelrc` file:

Expand All @@ -32,7 +32,7 @@ common --noenable_bzlmod --enable_workspace

This is the new external dependency subsystem. Please take a look at the `MODULE.bazel` file in this folder to get an idea how to set up yourself.

With this approach, `rules_ros2` defines a Python 3.10 interpreter and defines the hub with resolved Python deps. If you want a different intepreter and/or you want to extend the Python requirements files with extra deps you might want to use in your monorepo, you'll need to patch `requirements_lock.txt` file and this repo.
With this approach, `rules_ros2` defines a Python 3.12 interpreter and defines the hub with resolved Python deps. If you want a different intepreter and/or you want to extend the Python requirements files with extra deps you might want to use in your monorepo, you'll need to patch `requirements_lock.txt` file and this repo.

This is the default way for handling external deps since Bazel 7.

Expand Down
6 changes: 3 additions & 3 deletions examples/WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -31,19 +31,19 @@ load("@rules_python//python:repositories.bzl", "py_repositories", "python_regist
py_repositories()

python_register_toolchains(
name = "rules_ros2_python",
name = "rules_ros2_python_3_12",
# You must pin the Python version to the one used for rules_ros2_pip_deps_numpy_headers and current_py_cc_headers in rules_ros2.
# Otherwise you will get errors at runtime (not build time!) like:
# ModuleNotFoundError: No module named 'numpy.core._multiarray_umath'
# Importing the numpy C-extensions failed.
python_version = "3.10",
python_version = "3.12",
)

load("@rules_python//python:pip.bzl", "pip_parse")

pip_parse(
name = "rules_ros2_pip_deps",
python_interpreter_target = "@rules_ros2_python_host//:python",
python_interpreter_target = "@rules_ros2_python_3_12_host//:python",
requirements_lock = "@com_github_mvukov_rules_ros2//:requirements_lock.txt",
)

Expand Down
1 change: 1 addition & 0 deletions examples/chatter/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ ros2_launch(
":listener",
":talker",
],
visibility = ["//visibility:public"],
)

ros2_test(
Expand Down
3 changes: 1 addition & 2 deletions examples/foxglove_bridge/launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,7 @@ def generate_launch_description():

return launch.LaunchDescription([
# ROS_DISTRO is necessary for correct operation of the Foxglove Studio.
launch.actions.SetEnvironmentVariable(name='ROS_DISTRO',
value='humble'),
launch.actions.SetEnvironmentVariable(name='ROS_DISTRO', value='jazzy'),
launch_ros.actions.Node(
executable=data_paths.ROBOT_STATE_PUBLISHER_NODE_PATH,
output='screen',
Expand Down
4 changes: 4 additions & 0 deletions repositories/common_interfaces.BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ ros2_interface_library(
name = "std_srvs",
srcs = glob(["std_srvs/srv/*.srv"]),
visibility = ["//visibility:public"],
deps = ["@ros2_rcl_interfaces//:service_msgs"],
)

c_ros2_interface_library(
Expand Down Expand Up @@ -98,6 +99,7 @@ ros2_interface_library(
deps = [
":geometry_msgs",
":std_msgs",
"@ros2_rcl_interfaces//:service_msgs",
],
)

Expand All @@ -123,6 +125,7 @@ ros2_interface_library(
deps = [
":geometry_msgs",
":std_msgs",
"@ros2_rcl_interfaces//:service_msgs",
],
)

Expand Down Expand Up @@ -273,6 +276,7 @@ ros2_interface_library(
visibility = ["//visibility:public"],
deps = [
":std_msgs",
"@ros2_rcl_interfaces//:service_msgs",
],
)

Expand Down
13 changes: 13 additions & 0 deletions repositories/geometry2.BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -74,18 +74,31 @@ ros2_cpp_library(
],
hdrs = [
"tf2_ros/include/tf2_ros/async_buffer_interface.h",
"tf2_ros/include/tf2_ros/async_buffer_interface.hpp",
"tf2_ros/include/tf2_ros/buffer.h",
"tf2_ros/include/tf2_ros/buffer.hpp",
"tf2_ros/include/tf2_ros/buffer_client.h",
"tf2_ros/include/tf2_ros/buffer_client.hpp",
"tf2_ros/include/tf2_ros/buffer_interface.h",
"tf2_ros/include/tf2_ros/buffer_interface.hpp",
"tf2_ros/include/tf2_ros/buffer_server.h",
"tf2_ros/include/tf2_ros/buffer_server.hpp",
"tf2_ros/include/tf2_ros/create_timer_interface.h",
"tf2_ros/include/tf2_ros/create_timer_interface.hpp",
"tf2_ros/include/tf2_ros/create_timer_ros.h",
"tf2_ros/include/tf2_ros/create_timer_ros.hpp",
"tf2_ros/include/tf2_ros/message_filter.h",
"tf2_ros/include/tf2_ros/message_filter.hpp",
"tf2_ros/include/tf2_ros/qos.hpp",
"tf2_ros/include/tf2_ros/static_transform_broadcaster.h",
"tf2_ros/include/tf2_ros/static_transform_broadcaster.hpp",
"tf2_ros/include/tf2_ros/static_transform_broadcaster_visibility_control.hpp",
"tf2_ros/include/tf2_ros/transform_broadcaster.h",
"tf2_ros/include/tf2_ros/transform_broadcaster.hpp",
"tf2_ros/include/tf2_ros/transform_listener.h",
"tf2_ros/include/tf2_ros/transform_listener.hpp",
"tf2_ros/include/tf2_ros/visibility_control.h",
"tf2_ros/include/tf2_ros/visibility_control.hpp",
],
includes = ["tf2_ros/include"],
visibility = ["//visibility:public"],
Expand Down
2 changes: 1 addition & 1 deletion repositories/iceoryx.BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ cmake(
),
out_binaries = ["iox-roudi"],
out_data_dirs = ["lib/cmake"],
out_include_dir = "include/iceoryx/v2.0.5/",
out_include_dir = "include/iceoryx/v2.0.6/",
out_static_libs = [
# The order of the libs is important for linking to work out.
"libiceoryx_binding_c.a",
Expand Down
16 changes: 1 addition & 15 deletions repositories/image_common.BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ ros2_cpp_library(
"camera_calibration_parsers/src/parse_yml.cpp",
]),
hdrs = glob([
"camera_calibration_parsers/include/**/*.h",
"camera_calibration_parsers/include/**/*.hpp",
]),
includes = ["camera_calibration_parsers/include"],
Expand All @@ -41,20 +40,14 @@ ros2_cpp_library(
"image_transport/src/single_subscriber_publisher.cpp",
],
hdrs = [
"image_transport/include/image_transport/camera_common.h",
"image_transport/include/image_transport/camera_common.hpp",
"image_transport/include/image_transport/exception.h",
"image_transport/include/image_transport/exception.hpp",
"image_transport/include/image_transport/loader_fwds.h",
"image_transport/include/image_transport/loader_fwds.hpp",
"image_transport/include/image_transport/publisher.h",
"image_transport/include/image_transport/publisher.hpp",
"image_transport/include/image_transport/publisher_plugin.h",
"image_transport/include/image_transport/publisher_plugin.hpp",
"image_transport/include/image_transport/simple_publisher_plugin.hpp",
"image_transport/include/image_transport/simple_subscriber_plugin.hpp",
"image_transport/include/image_transport/single_subscriber_publisher.hpp",
"image_transport/include/image_transport/subscriber_plugin.h",
"image_transport/include/image_transport/subscriber_plugin.hpp",
"image_transport/include/image_transport/visibility_control.hpp",
],
Expand All @@ -76,17 +69,11 @@ ros2_cpp_library(
"image_transport/src/subscriber.cpp",
],
hdrs = [
"image_transport/include/image_transport/camera_publisher.h",
"image_transport/include/image_transport/camera_publisher.hpp",
"image_transport/include/image_transport/camera_subscriber.h",
"image_transport/include/image_transport/camera_subscriber.hpp",
"image_transport/include/image_transport/image_transport.h",
"image_transport/include/image_transport/image_transport.hpp",
"image_transport/include/image_transport/subscriber.h",
"image_transport/include/image_transport/subscriber.hpp",
"image_transport/include/image_transport/subscriber_filter.h",
"image_transport/include/image_transport/subscriber_filter.hpp",
"image_transport/include/image_transport/transport_hints.h",
"image_transport/include/image_transport/transport_hints.hpp",
],
data = [
Expand All @@ -105,9 +92,7 @@ ros2_cpp_library(
ros2_plugin(
name = "image_transport_plugins",
srcs = [
"image_transport/include/image_transport/raw_publisher.h",
"image_transport/include/image_transport/raw_publisher.hpp",
"image_transport/include/image_transport/raw_subscriber.h",
"image_transport/include/image_transport/raw_subscriber.hpp",
"image_transport/src/manifest.cpp",
],
Expand Down Expand Up @@ -147,6 +132,7 @@ ros2_cpp_library(
"@ros2_ament_index//:ament_index_cpp",
"@ros2_common_interfaces//:cpp_sensor_msgs",
"@ros2_rclcpp//:rclcpp",
"@ros2_rclcpp//:rclcpp_lifecycle",
"@ros2_rcpputils//:rcpputils",
],
)
Loading