Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
32 changes: 30 additions & 2 deletions .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 All @@ -103,7 +109,11 @@ jobs:
- name: Delete specific outdated cache entries
shell: bash -l {0}
run: |
# rm -rf ${{ matrix.folder_cache }}/ros-lyrical-pcl-conversions* 2>/dev/null || true
# nav2-util was cached before its exported angles dependency was
# propagated; force replacement without discarding the full rebuild.
rm -rf ${{ matrix.folder_cache }}/ros-lyrical-nav2-util-* 2>/dev/null || true
rm -rf ${{ matrix.folder_cache }}/ros-lyrical-nav2-route-* 2>/dev/null || true
rm -rf ${{ matrix.folder_cache }}/ros-lyrical-nav2-ros-common-* 2>/dev/null || true
mkdir -p ${{ matrix.folder_cache }}
pixi run rattler-index fs ${{ matrix.folder_cache }}/.. --force

Expand All @@ -115,6 +125,24 @@ jobs:
- name: Build recipes
shell: bash -l {0}
run: |
set -e
# rattler-build orders build and host dependencies, but runtime-only
# dependencies do not create build-graph edges. A mutex migration makes
# old runtime packages unusable, so run tolerant passes to populate the
# new mutex generation before the final strict validation. This is more
# robust than maintaining a platform-dependent manual bootstrap list.
pass_count=2
if [[ "${IGNORE_CACHE_AND_DO_FULL_REBUILD}" == "true" ]]; then
pass_count=4
fi

for pass in $(seq 1 "${pass_count}"); do
echo "Dependency-tolerant build pass ${pass}/${pass_count}"
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 || true
done

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 --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
54 changes: 46 additions & 8 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 @@ -100,13 +97,26 @@ backward_ros:
add_host: ["${{ 'binutils' if linux }}", "${{ 'elfutils' if linux }}", "ros-lyrical-ament-cmake-libraries"]
nav2_smac_planner:
add_build: ["${{ 'llvm-openmp' if osx }}"]
add_host: ["${{ 'llvm-openmp' if osx }}", "ompl", "libode"]
# omplConfig.cmake exports Boost as a dependency.
add_host: ["${{ 'llvm-openmp' if osx }}", "ompl", "libode", "libboost-devel"]
nav2_map_server:
# rosdep does not resolve libuuid on macOS, though conda-forge provides it.
add_host: ["libuuid"]
add_run: ["libuuid"]
nav2_rviz_plugins:
# Qt 6 provides its StateMachine component through the qt6-scxml package.
add_host: ["qt6-scxml"]
add_run: ["qt6-scxml"]
nav2_route:
# Both dependencies are exported by nav2_routeConfig.cmake.
add_run: ["nanoflann", "nlohmann_json"]
nav2_util:
add_host: ["libboost-devel"]
# nav2_util exports angles from its CMake config, so downstream consumers
# need it in the runtime environment as well.
add_run: ["ros-lyrical-angles"]
nav2_constrained_smoother:
add_host: ["${{ 'openblas' if win }}", "ceres-solver * cpu*"]
nav2_mppi_controller:
add_build: ["${{ 'clang <19' if osx }}"]
ompl:
add_host: ["ompl"]
pybind11_json_vendor:
Expand Down Expand Up @@ -166,6 +176,21 @@ 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:
# The posh CMake targets reference the iox-roudi executable shipped by the
# top-level iceoryx package, so the split devel packages alone are incomplete.
add_host: ["iceoryx", "libiceoryx-hoofs-devel", "libiceoryx-posh-devel"]
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 +199,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 +305,16 @@ autoware_behavior_velocity_planner_common:
add_host: ["cpp-expected"]
autoware_behavior_velocity_stop_line_module:
add_host: ["cpp-expected"]
rmf_task_sequence:
# The vendor package's ament config does not load the imported validator
# target. Make the conda-forge CMake package directly available.
add_host: ["json_schema_validator"]
add_run: ["json_schema_validator"]
rmw_implementation:
# These backends are only used by the disabled test suite. Keeping them all
# as host dependencies creates a bootstrap cycle during mutex migrations;
# the default Fast DDS backend is sufficient to configure the package.
remove_host: ["ros-lyrical-rmw-connextdds", "ros-lyrical-rmw-cyclonedds-cpp", "ros-lyrical-rmw-fastrtps-dynamic-cpp", "ros-lyrical-rmw-zenoh-cpp"]
rclpy:
add_host: ["typing_extensions"]
add_run: ["typing_extensions"]
Expand All @@ -298,7 +336,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