Skip to content
Open
Show file tree
Hide file tree
Changes from 17 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
c823d32
Update Lyrical rosdistro snapshot
wolfv Aug 1, 2026
23c08d7
Refresh patches for updated Lyrical packages
wolfv Aug 1, 2026
ae0d777
Fix slam-toolbox after snapshot update
wolfv Aug 2, 2026
4533e2a
Turn snapshot refresh into full rebuild
wolfv Aug 2, 2026
84b8e0a
Fix initial full rebuild dependency ordering
wolfv Aug 2, 2026
6e8c70e
Build full rebuilds in dependency-tolerant passes
wolfv Aug 2, 2026
6297d94
Use immutable source archives for full rebuilds
wolfv Aug 2, 2026
7480aea
Run source conversion through the pixi environment
wolfv Aug 2, 2026
9b075e6
Run every dependency-tolerant rebuild pass
wolfv Aug 2, 2026
bd68338
Fix remaining full rebuild blockers
wolfv Aug 3, 2026
748bd1d
Fix remaining ARM full rebuild blockers
wolfv Aug 3, 2026
4b2aef7
Reuse full rebuild cache for final validation
wolfv Aug 3, 2026
d3be379
Bootstrap runtime cycles and fix iceoryx on Windows
wolfv Aug 3, 2026
349bc03
Unvendor iceoryx and complete mutex bootstrap
wolfv Aug 4, 2026
d5836c9
Merge remote-tracking branch 'origin/main' into update-lyrical-snapshot
wolfv Aug 4, 2026
dc29dce
Refresh RMF patches and bootstrap core runtime packages
wolfv Aug 4, 2026
388174e
Break RCL bootstrap cycle and seed middleware stack
wolfv Aug 4, 2026
bb28685
Refresh snapshot for Navigation2 release
wolfv Aug 8, 2026
918613e
Remove patches included in updated releases
wolfv Aug 8, 2026
4499c0b
Remove obsolete Navigation2 platform patches
wolfv Aug 8, 2026
1d26d95
Install complete iceoryx host package for CycloneDDS
wolfv Aug 8, 2026
bf03edb
Fix RMF validator target and mutex bootstrap
wolfv Aug 8, 2026
169cc74
Bootstrap ament lint and RMW test fixture stacks
wolfv Aug 8, 2026
e7eda8e
Fail fast when a bootstrap package fails
wolfv Aug 8, 2026
260f721
Complete foundational mutex bootstrap ordering
wolfv Aug 8, 2026
e1a10b1
Bootstrap service messages and RCL components
wolfv Aug 8, 2026
aa57c54
Replace manual bootstrap with dependency-tolerant passes
wolfv Aug 8, 2026
6ce51ee
Propagate angles runtime dependency from nav2-util
wolfv Aug 8, 2026
d51f8a8
Invalidate nav2-util cache after dependency fix
wolfv Aug 8, 2026
ead9fec
Fix exported Nav2 dependencies and macOS macro clash
wolfv Aug 8, 2026
54b58a8
Fix remaining cached rebuild failures
wolfv Aug 8, 2026
77a4731
Fix RMF validator target and libc++ atomic support
wolfv Aug 8, 2026
bcfe0b9
Complete portable atomic and RMF target fixes
wolfv Aug 8, 2026
e12290c
Remove obsolete Nav2 MPPI clang constraint
wolfv Aug 8, 2026
d1f1d03
Continue rebuild from refreshed platform caches
wolfv Aug 9, 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
46 changes: 45 additions & 1 deletion .github/workflows/testpr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -77,11 +77,17 @@ jobs:
run: |
mkdir -p recipes
pixi run -v vinca --platform ${{ matrix.platform }} -m -n
# Avoid concurrent Git clone cache corruption when many ROS packages
# share the same release repository.
pixi run python use_github_source_archives.py

- name: Check patches
shell: bash -l {0}
run: |
pixi run check-patches
# Recipes were already generated for the matrix platform and their Git
# sources converted to archives. Do not use the Pixi task here because
# its generate-recipes dependency would overwrite both changes.
pixi run python check_patches_clean_apply.py

- name: Restore build cache
id: cache-restore
Expand Down Expand Up @@ -115,6 +121,44 @@ jobs:
- name: Build recipes
shell: bash -l {0}
run: |
if [[ "${IGNORE_CACHE_AND_DO_FULL_REBUILD}" == "true" ]]; then
# Runtime-only dependencies are not part of rattler-build's build
# ordering. Build in tolerant passes so those packages are present
# under the new mutex before the final strict pass. Resetting only
# the Git source cache also works around intermittent incomplete tag
# objects when many packages share one ROS release repository.
for pass in 1 2 3 4; do
echo "Full rebuild pass ${pass}"
rm -rf ${{ matrix.folder_cache }}/../src_cache/git
pixi run rattler-build build --recipe-dir recipes --target-platform ${{ matrix.platform }} -m ./conda_build_config.yaml -c https://prefix.dev/conda-forge -c https://prefix.dev/robostack-lyrical --continue-on-failure --skip-existing
done
rm -rf ${{ matrix.folder_cache }}/../src_cache/git
fi

# Bootstrap packages that are hidden behind runtime-only dependency
# cycles before asking rattler-build to solve the complete recipe set.
for recipe in \
ros2-distro-mutex \
ros-lyrical-rosidl-default-generators \
ros-lyrical-type-description-interfaces \
ros-lyrical-test-msgs \
ros-lyrical-tracetools \
ros-lyrical-rcl \
ros-lyrical-rmw-fastrtps-cpp \
ros-lyrical-rmw-fastrtps-dynamic-cpp \
ros-lyrical-rmw-zenoh-cpp \
ros-lyrical-rmw-implementation \
ros-lyrical-rcl-action \
ros-lyrical-rcl-lifecycle \
ros-lyrical-rclcpp \
ros-lyrical-rclcpp-lifecycle \
ros-lyrical-rclpy \
ros-lyrical-sensor-msgs \
ros-lyrical-image-transport \
ros-lyrical-zstd-image-transport; do
pixi run rattler-build build --recipe "recipes/${recipe}/recipe.yaml" --target-platform ${{ matrix.platform }} -m ./conda_build_config.yaml -c https://prefix.dev/conda-forge -c https://prefix.dev/robostack-lyrical --skip-existing
done

pixi run rattler-build build --recipe-dir recipes --target-platform ${{ matrix.platform }} -m ./conda_build_config.yaml -c https://prefix.dev/conda-forge -c https://prefix.dev/robostack-lyrical --skip-existing

- name: See packages that will be saved in cache
Expand Down
6 changes: 6 additions & 0 deletions check_patches_clean_apply.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,12 @@ def run_rattler_build_individually(recipes: List[Path]) -> None:
print("\n Running:", " ".join(cmd), "\n", flush=True)
try:
proc = subprocess.run(cmd, text=True, capture_output=True, errors="replace", encoding="utf-8")
# rattler-build's shared Git source cache can occasionally retain
# tag refs whose objects were not fetched. Retry from a clean Git
# cache rather than reporting a spurious patch failure.
if proc.returncode != 0 and "Git error: Git fetch failed" in proc.stderr:
shutil.rmtree(ROOT_DIR / "output" / "src_cache" / "git", ignore_errors=True)
proc = subprocess.run(cmd, text=True, capture_output=True, errors="replace", encoding="utf-8")
success = proc.returncode == 0
results.append(
{
Expand Down
12 changes: 6 additions & 6 deletions conda_build_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ graphviz:
# Mitigation for
# https://github.com/RoboStack/ros-jazzy/pull/126#issuecomment-3515455380
libcap:
- 2.77
- 2.78
fmt:
- 12.1
lua:
- 5.4
tbb:
- '2022'
- '2023'
tbb_devel:
- '2022'
- '2023'

# Workaround for https://github.com/RoboStack/ros-jazzy/pull/40#issuecomment-2782226697
cmake:
Expand All @@ -60,7 +60,7 @@ c_compiler:
- vs2022 # [win]
c_compiler_version: # [unix]
- 14 # [linux]
- 18 # [osx]
- 19 # [osx]
c_stdlib:
- sysroot # [linux]
- macosx_deployment_target # [osx]
Expand All @@ -75,12 +75,12 @@ cxx_compiler:
- vs2022 # [win]
cxx_compiler_version: # [unix]
- 14 # [linux]
- 18 # [osx]
- 19 # [osx]

libzenohc:
- 1.9.0
libzenohcxx:
- 1.9.0

libhwloc:
- 2.12.2
- 2.13.0
28 changes: 23 additions & 5 deletions patch/dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,6 @@ rmf_visualization_schedule:
rmf_fleet_adapter:
add_host: ["eigen-abi-devel"]
remove_host: ["eigen"]
rmf_websocket:
add_host: ["asio", "websocketpp"]
add_run: ["asio", "websocketpp"]
behaviortree_cpp:
add_host: ["libboost-devel", "cppzmq", "zeromq", "sqlite"]
add_run: ["libboost"]
Expand Down Expand Up @@ -166,6 +163,19 @@ force_torque_sensor_broadcaster:
add_host: ["typeguard", "jinja2"]
ros_gz_sim:
add_host: ["${{ 'libgl-devel' if linux }}", "${{ 'libopengl-devel' if linux }}", "ros-lyrical-gz-sensors-vendor"]
ament_cmake_ros:
# Break the test-only runtime cycle so a new mutex migration can bootstrap.
remove_run: ["ros-lyrical-rmw-test-fixture-implementation"]
cyclonedds:
add_host: ["libiceoryx-hoofs-devel", "libiceoryx-posh-devel"]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am trying to unvendor iceoryx as well in RoboStack/ros-rolling#31, but I am failing to build in my macos locally:

│ │ -- Building with OpenSSL support
 │ │ CMake Error at $PREFIX/lib/cmake/iceoryx_posh/iceoryx_poshTargets.cmake:114 (message):
 │ │   The imported target "iceoryx_posh::iox-roudi" references the file
 │ │      "$PREFIX/bin/iox-roudi"
 │ │   but this file does not exist.  Possible reasons include:
 │ │ -- Configuring incomplete, errors occurred!
 │ │   * The file was deleted, renamed, or moved to another location.
 │ │   * An install or uninstall procedure did not complete successfully.
 │ │   * The installation package was faulty and contained
 │ │      "$PREFIX/lib/cmake/iceoryx_posh/iceoryx_poshTargets.cmake"
 │ │   but not all the files it references.
 │ │ Call Stack (most recent call first):
 │ │   $PREFIX/lib/cmake/iceoryx_posh/iceoryx_poshConfig.cmake:49 (include)
 │ │   src/CMakeLists.txt:138 (find_package)
 │ │ × error Script failed with status 1
 │ │ × error
 │ │ × error Script execution failed.
 │ │ × error

Adding iceoryx to add_host solve the build error

add_run: ["libiceoryx-hoofs", "libiceoryx-posh"]
remove_host: ["ros-lyrical-iceoryx-hoofs", "ros-lyrical-iceoryx-posh"]
remove_run: ["ros-lyrical-iceoryx-hoofs", "ros-lyrical-iceoryx-posh"]
rmw_cyclonedds_cpp:
add_host: ["libiceoryx-binding-c-devel"]
add_run: ["libiceoryx-binding-c"]
remove_host: ["ros-lyrical-iceoryx-binding-c"]
remove_run: ["ros-lyrical-iceoryx-binding-c"]
geometric_shapes:
add_host: ["libboost-devel", "octomap"]
ros_image_to_qimage:
Expand All @@ -174,7 +184,10 @@ rqt_image_overlay:
add_host: ["${{ 'libgl-devel' if linux }}", "${{ 'libopengl-devel' if linux }}"]
slam_toolbox:
add_build: ["${{ 'qt6-main' if (build_platform != target_platform) }}"]
add_host: ["${{ 'libgl-devel' if linux }}", "${{ 'libopengl-devel' if linux }}", "blas-devel", "ceres-solver * cpu*"]
add_host: ["${{ 'libgl-devel' if linux }}", "${{ 'libopengl-devel' if linux }}", "blas-devel", "ceres-solver * cpu*", "qt6-main"]
add_run: ["qt6-main"]
remove_host: ["qt-main"]
remove_run: ["qt-main"]
vision_msgs_rviz_plugins:
add_build: ["${{ 'qt6-main' if (build_platform != target_platform) }}"]
add_host: ["${{ 'libgl-devel' if linux }}", "${{ 'libopengl-devel' if linux }}"]
Expand Down Expand Up @@ -277,6 +290,11 @@ autoware_behavior_velocity_planner_common:
add_host: ["cpp-expected"]
autoware_behavior_velocity_stop_line_module:
add_host: ["cpp-expected"]
rcl:
# rmw_implementation is a test-only host dependency here, but it depends on
# concrete RMW backends. Removing it breaks the mutex-migration bootstrap
# cycle while retaining the runtime dependency.
remove_host: ["ros-lyrical-rmw-implementation"]
rclpy:
add_host: ["typing_extensions"]
add_run: ["typing_extensions"]
Expand All @@ -298,7 +316,7 @@ grid_map_octomap:
add_host: ["octomap"]
add_run: ["octomap"]
py_trees:
add_host: ["poetry-core"]
add_host: ["hatchling"]
py_trees_js:
add_host: ["poetry-core"]
py_trees_ros:
Expand Down
177 changes: 0 additions & 177 deletions patch/ros-lyrical-foxglove-bridge.osx.patch

This file was deleted.

Loading
Loading