Skip to content

Add rmf_dev - #114

Draft
Tobias-Fischer wants to merge 46 commits into
mainfrom
ports/rmf-humble
Draft

Tobias-Fischer wants to merge 46 commits into
mainfrom
ports/rmf-humble

Conversation

@Tobias-Fischer

@Tobias-Fischer Tobias-Fischer commented Oct 18, 2026 •

Copy link
Copy Markdown
Collaborator

Ports RoboStack/ros-humble#298 by @Ac31415: adds rmf_dev to the shared selection (next to rmf_demos, which jazzy, lyrical and rolling already build). Building it on top of the syncs turned up fixes for humble (which hasn't built RMF yet), for jazzy (rmf_dev pulls in more of RMF than rmf_demos, and jazzy hadn't been built on GCC 15 / macOS with it), and one for every distribution.

All distributions (shared patch)

  • rmf_fleet_adapter_python: rmf_adapter is built as a Python MODULE instead of SHARED. With SHARED, pybind11 links pybind11::embed (libpython), and on macOS import rmf_adapter aborts (PyInterpreterState_Get: … the GIL is released): the module initialises a second, never-started interpreter. The published osx-arm64 builds have this today (checked rolling 2.12.0, and humble's local build). Upstream main still uses SHARED. A new recipe test (shared/tests/ros2-rmf-fleet-adapter-python.yaml) imports rmf_adapter and builds a Graph; it passes on humble and jazzy (osx-arm64). Applies to humble 2.1.8, jazzy 2.7.2, lyrical 2.13.0 and rolling 2.12.0; lyrical and rolling get a build_number bump for it (31, 33), as the package is published there.
  • nlohmann_json_schema_validator_vendor 0.2.5 (humble, jazzy): CMAKE_POLICY_VERSION_MINIMUM=3.5 for its external project (CMake 4), moved from humble's patch to shared/.
  • pybind11_json_vendor: host and run dependency on conda-forge's pybind11_json, for every distribution (moved from humble's and lyrical's dependencies.yaml).

humble

  • rmf_traffic 3.0.3: Fix build with Apple Clang open-rmf/rmf_traffic#98 (Apple Clang final/ParticipantId errors, as diagnosed by @traversaro in that PR), <cassert> in its bundled fcl, Eigen3::Eigen (Eigen 5 no longer sets EIGEN3_INCLUDE_DIRS).
  • rmf_task 2.1.8: <cstdint> (its headers use uint32_t without it; GCC 15 doesn't include it for them). From rolling's patch.
  • rmf_utils 1.4.1: #include <string> in Modular.hpp; WINDOWS_EXPORT_ALL_SYMBOLS on Windows (from rolling's patch).
  • rmf_websocket: Boost.System is header-only (no boost_system library since Boost 1.89).
  • rmf_traffic_ros2: lyrical's patch (macOS uuid from the SDK, Eigen3::Eigen).
  • rmf_fleet_adapter: malloc.h/malloc_trim only on Linux; RxCpp's copy assignment of a const member removed (newer clang and GCC 15 reject it); std::max<int64_t> and std::size_t lane vectors (uint64_t is unsigned long long on macOS).
  • rmf_robot_sim_common: EIGEN3_INCLUDE_DIRS from Eigen3::Eigen; sdformat parameters read as uint64_t.
  • rmf_robot_sim_gz_plugins: links the Gazebo gui library (GuiSystem); a declared but never defined slot removed.
  • rmf_building_sim_gz_classic_plugins: OpenCV 5's geometry.hpp, ${GAZEBO_LIBRARIES}; it and rmf_robot_sim_gz_classic_plugins (Gazebo Classic, EOL) are excluded off Linux, after more link errors on macOS.
  • rmf_building_map_tools 1.6.3: the old humble patch is obsolete (upstream removed np.asscalar); rolling's numpy 2 fix for the 2-D np.cross instead.
  • robostack.yaml: maps the ignition-fortress rosdep key to the Fortress libraries.

jazzy

  • rmf_traffic 3.3.3: <cstdint> in ParticipantDescription.hpp (GCC 15), and from humble's patch for the same code the macOS fixes (ParticipantId overrides, <cassert> in fcl and blockade/geometry.cpp, std::chrono instead of libstdc++'s std::chrono::_V2 in a test).
  • rmf_task 2.5.1: <cstdint> (GCC 15), from rolling's patch.
  • rmf_fleet_adapter 2.7.2: humble's RxCpp fix (GCC 15) and macOS fixes, plus a size_t cast for a route_id comparison in ExecutePlan.cpp.
  • rmf_websocket 2.7.2: no Boost.System, and asio::io_service (removed in Boost 1.90) → io_context with boost::asio::post/dispatch. conda-forge's websocketpp is already on io_context, so no standalone Asio.
  • rmf_visualization_schedule 2.3.2: links OpenSSL::SSL/OpenSSL::Crypto; ament_target_dependencies(OpenSSL) linked nothing (it looks for OpenSSL_LIBRARIES), which only macOS rejects.
  • rmf_visualization_floorplans 2.3.2 and rmf_robot_sim_common 2.3.3: Eigen3::Eigen (Eigen 5); rmf_robot_sim_common takes humble's patch.
  • rmf_robot_sim_gz_plugins 2.3.3: as humble, for the gz names (gz-sim::gui).
  • rmf_traffic_ros2 2.7.2 and rmf_building_map_tools 1.9.2: rolling's patches (macOS LibUUID; numpy 2 np.cross).

Not taken over from rolling: its rmf_visualization_schedule (standalone Asio, needs an extra dependency; neither distribution's source uses Asio directly and humble built without it), rmf_visualization_floorplans OpenCV change (not needed: humble and jazzy's uint8[] fields are std::vector<uint8_t>), and rmf_utils for jazzy (the jazzy sync already has it as ros2-rmf-utils.win.patch).

Windows (humble, jazzy): rmf_dev builds on win-64 too. lyrical's and rolling's Windows patches were the starting point; humble had none.

  • Exports: rmf_fleet_adapter and rmf_traffic_ros2 (shared patch) get dllexport annotations (detail/export.hpp, also on nested classes such as RobotUpdateHandle::Unstable::Stubbornness); rmf_fleet_adapter can't use export-all (more than 65535 objects for the import library). rmf_traffic, rmf_task, rmf_task_sequence, rmf_task_ros2, rmf_battery, rmf_websocket, rmf_visualization_schedule, rmf_utils, rmf_building_sim_common, rmf_robot_sim_common and the JSON schema validator export all symbols.
  • DLL locations: rmf_utils, rmf_websocket, rmf_traffic_ros2, rmf_task_ros2 and rmf_fleet_adapter installed their DLLs to lib/<pkg> (with the executables) or lib, which aren't on PATH, so import rmf_adapter failed; they now go to bin (rmf_traffic_ros2, shared by two releases, installs a second copy there). rmf_utils is already published, so its build_number is bumped in humble and jazzy.
  • lyrical and rolling (checked in their published win-64 packages) have the same DLL locations: the same install fix there, with build_number bumps (lyrical 31, rolling 33) for rmf_utils, rmf_websocket, rmf_traffic_ros2, rmf_task_ros2, rmf_fleet_adapter and rmf_fleet_adapter_python. rolling's rmf_utils.win.patch repeated its generic patch; rmf_websocket.win.patch is refreshed on top of the generic one.
  • MSVC: _USE_MATH_DEFINES for M_PI in several packages (rmf_task, rmf_battery, rmf_traffic_examples, …) and NOMINMAX in rmf_building_sim_common (Menge includes windows.h); rmf_traffic_editor without GCC warning flags and with NOGDI; rmf_visualization_rviz2_plugins force-includes <iso646.h> (or); rmf_fleet_adapter links yaml-cpp::yaml-cpp and imported targets (task_aggregator, LNK1170); rmf_api_msgs runs its generator without the shell eval and with python.exe; menge_vendor doesn't link dl; nlohmann_json_schema_validator_vendor's external project gets a build command MSBuild understands and a shorter path (MAX_PATH); rmf_traffic_editor_test_maps generates its worlds without downloading models.
  • Not built on Windows: rmf_fleet_adapter's full_control example executable (MSVC 14.44 crashes compiling it, C1001, also unoptimized); rmf_visualization_schedule's tests (LNK1170). humble excludes the Gazebo Classic plugins (rmf_*_sim_gz_classic_plugins, no OgreBites.lib on win-64) and, on win-64, the Ignition Fortress ones (rmf_*_sim_gz_plugins, Fortress isn't installable there); jazzy's gz plugins build.

Patch layout: where the distributions had the same patch, it's in shared/patch/ (rmf_traffic_ros2, rmf_building_map_tools, rmf_robot_sim_common, and rmf_traffic for humble and jazzy, with lyrical and rolling keeping theirs); the rest stay per distribution because their sources differ (rmf_fleet_adapter, rmf_websocket, rmf_robot_sim_gz_plugins, rmf_task, …).

Built locally (on top of the syncs, see below)

  • jazzy, osx-arm64: rmf_dev and its whole closure (321 packages) with recipe tests. In a fresh environment from these packages, import rmf_adapter (with easy_full_control, graph) works and Graph() runs, after the MODULE fix; the new recipe test passes there.
  • jazzy, linux-64: all 42 RMF recipes of the closure, with recipe tests.
  • humble, osx-arm64: rmf_dev and its closure (about 350 packages) with recipe tests; rmf_fleet_adapter_python rebuilt with the MODULE fix: it no longer links libpython, and the new recipe test passes (the build before the fix had the same crash).
  • lyrical, rolling: there's no rmf_dev release for them (rmf_demos only), so the selection only adds it for humble and jazzy. What changes for them are the shared patches: rmf_fleet_adapter_python (MODULE fix) and lyrical's rmf_building_map_tools (now the shared wording of the same numpy 2 fix); rmf_traffic_ros2 is unchanged in content. Not rebuilt locally.

CI: Windows green for humble and jazzy (lyrical and rolling have no rmf_dev release; they rebuild the bumped packages); full build on all platforms running. The syncs it was prepared on are merged.

🤖 Generated with Claude Code

Tobias-Fischer and others added 21 commits October 19, 2026 09:18
Ports RoboStack/ros-humble#298. humble's rmf_traffic 3.0.3 gets the Apple
Clang fix from open-rmf/rmf_traffic#98, <cassert> in its bundled fcl and
Eigen3::Eigen (Eigen 5 no longer sets EIGEN3_INCLUDE_DIRS); rmf_utils
includes <string>; nlohmann_json_schema_validator_vendor passes
CMAKE_POLICY_VERSION_MINIMUM to its external project (CMake 4).

Co-authored-by: Wen-Chung (Andy) Cheng <21079375+Ac31415@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Found building rmf_dev's closure for humble on osx-arm64 (humble never
built RMF before):
- rmf_traffic: also the test part of open-rmf/rmf_traffic#98
- rmf_websocket: Boost.System is header-only (no boost_system since 1.89)
- rmf_traffic_ros2: lyrical's patch (macOS uuid comes from the SDK, Eigen3::Eigen)
- rmf_fleet_adapter: malloc.h/malloc_trim only on Linux, RxCpp's const
  copy-assignment removed (newer clang rejects it), std::max<int64_t> and
  std::size_t lane vectors (uint64_t is unsigned long long on macOS)
- rmf_robot_sim_common: EIGEN3_INCLUDE_DIRS from Eigen3::Eigen (Eigen 5),
  sdformat parameters read as uint64_t
- rmf_robot_sim_gz_plugins: link the gazebo gui library, drop a declared
  but never defined slot
- rmf_building_sim_gz_classic_plugins: OpenCV 5 geometry header, link
  libgazebo; excluded off Linux (Gazebo Classic, more link errors on macOS)
- rmf_building_map_tools: its patch is upstream in 1.6.3 (np.asscalar)
- robostack.yaml: map ignition-fortress to the Fortress libraries

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…and jazzy [skip ci]

jazzy's 0.4.1 (needed by rmf_dev there) fails the same way as humble's
0.2.5: its external project declares cmake_minimum_required < 3.5. The same
one-line patch applies to both, so share it; lyrical and rolling keep their
own patch for 0.6.1/0.5.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ion [skip ci]

The shared pkg_additional_info.yaml builds pybind11_json_vendor with
AMENT_VENDOR_POLICY=NEVER_VENDOR, but only humble and lyrical added
pybind11_json as a dependency, so jazzy (pulled in by rmf_dev) failed:
"SATISFIED argument is not TRUE, but AMENT_VENDOR_POLICY is set to
NEVER_VENDOR". Move the dependency to the shared dependencies.yaml.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rmf_dev also brings rmf_traffic 3.3.3 to jazzy, which fails with GCC 15:
ParticipantDescription.hpp uses uint16_t/uint64_t without <cstdint>. Add
that include, plus lyrical's rmf_traffic changes (Eigen3::Eigen for Eigen 5,
<cassert>), which apply unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rmf_task (<cstdint>, needed by GCC 15 on linux-64), rmf_building_map_tools
(numpy 2 cross product), rmf_visualization_floorplans (OpenCV imread flag),
rmf_visualization_schedule (standalone asio, Boost 1.90), and for jazzy
rmf_utils (WINDOWS_EXPORT_ALL_SYMBOLS) and rmf_traffic_ros2 (macOS LibUUID).
humble's rmf_utils patch gains the Windows export hunk. All apply cleanly
to the sync snapshot tags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…en 5 [skip ci]

Eigen 5's CMake config only provides the Eigen3::Eigen target, not the
Eigen3_INCLUDE_DIRS that ament_target_dependencies and these CMakeLists use:
floorplans now links Eigen3::Eigen, and robot_sim_common takes humble's
patch (which also reads the sdformat size_t parameters as uint64_t on macOS).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ls patch [skip ci]

Boost 1.90 has no boost_system library (Boost.System is header-only), so
rmf_websocket's find_package(Boost COMPONENTS system) fails: link
Boost::headers instead.

The rmf_utils Windows export taken from rolling duplicates the jazzy sync's
own ros2-rmf-utils.win.patch, so remove it again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hedule patch [skip ci]

Boost 1.90 removed asio::io_service with its post()/dispatch() members.
conda-forge's websocketpp 0.8.2 is already patched to io_context
(get_io_context()), so jazzy's rmf_websocket only needs its own uses
switched: io_context, boost::asio::post/dispatch. No standalone Asio.

rolling's rmf_visualization_schedule patch (ASIO_STANDALONE) isn't needed
here: neither distribution's source uses Asio directly, humble's built
with Boost 1.90 without it, and it would need asio as an extra
dependency.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The OpenCV hunk taken from rolling isn't needed for humble or jazzy: their
uint8[] message fields are std::vector<uint8_t>, which cv::Mat accepts,
and humble built without it. jazzy keeps the Eigen3::Eigen link.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The bundled RxCpp 4.1.0 assigns to a const exception_ptr in
on_error_notification's operator=, which GCC 15 now rejects; humble's
patch removes it. The macOS fixes carry over from humble's patch as well
(malloc_trim is Linux-only; int64_t and uint64_t aren't long and size_t
there), plus a cast for the route_id comparison in ExecutePlan that
jazzy's source has and humble's doesn't.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From humble's patch, for the same code: Database and Mirror declare
their participant overrides with std::size_t where the base class uses
ParticipantId (uint64_t), which isn't std::size_t on macOS, so clang
rejects them as hiding the virtual functions; and the bundled fcl and
blockade/geometry.cpp use assert without <cassert>, which libc++ doesn't
include for them. The test-only hunk isn't needed: the tests aren't built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The tests are built after all (the earlier failure stopped before them):
test_Spacetime.cpp names libstdc++'s internal std::chrono::_V2 namespace,
which libc++ doesn't have. As in humble's patch, use std::chrono.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The LightTuning GUI plugin derives from gz::sim::GuiSystem, which lives
in gz-sim's gui library, but only links gz-sim::core; Linux allows the
symbols to stay undefined, macOS doesn't. Request the gui component and
link gz-sim::gui. It also declares OnLightTypeSelect() without ever
defining or using it, which leaves an undefined vtable-free reference
from the moc code on macOS: drop the declaration. Same fixes as humble's
patch, for the gz (not Ignition) names.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ament_target_dependencies(... OpenSSL ...) looks for OpenSSL_LIBRARIES,
which FindOpenSSL doesn't set (it sets OPENSSL_LIBRARIES), so the library
never linked libssl/libcrypto. Linux lets the symbols stay undefined,
macOS doesn't (_BIO_free_all, ...). Link OpenSSL::SSL and OpenSSL::Crypto,
as humble's version of the package does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…skip ci]

pybind11_add_module(rmf_adapter SHARED ...) makes pybind11 link
pybind11::embed, i.e. libpython. On macOS, where python itself has the
interpreter built in, `import rmf_adapter` then aborts ("PyInterpreterState_Get:
the function must be called with the GIL held"): the module initialises
the second, never-started interpreter in libpython. This affects the
published osx-arm64 builds of every distribution (checked rolling 2.12.0
and humble 2.1.8). Nothing links against rmf_adapter, so build it as the
default MODULE, which links pybind11::module (no libpython).

Shared: applies to humble 2.1.8, jazzy 2.7.2, lyrical 2.13.0 and rolling
2.12.0. Tested on jazzy osx-arm64: the module no longer links libpython,
and `import rmf_adapter` plus a Graph() call work. Upstream
(open-rmf/rmf_ros2 main) still uses SHARED.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rks [skip ci]

Regression test for the SHARED -> MODULE fix: import rmf_adapter (and
easy_full_control) and build an empty Graph. With the SHARED build the
import aborts on macOS. Passes on jazzy osx-arm64.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
humble's rmf_adapter 2.1.8 has no easy_full_control, and isn't a package
there (import rmf_adapter.graph fails), so use the submodules as
attributes. Passes on humble 2.1.8 and jazzy 2.7.2 (osx-arm64).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…p ci]

- rmf_traffic_ros2: the same patch in all four distributions -> shared.
- rmf_building_map_tools: the same numpy 2 fix in all four (lyrical's
  worded differently) -> shared; lyrical's package changes accordingly.
- rmf_robot_sim_common: humble's and jazzy's were the same -> shared (it
  applies to lyrical's and rolling's too, which don't build it: no rmf_dev
  release there).
- rmf_traffic: jazzy's patch is humble's plus the <cstdint>/<cassert>
  includes jazzy needs, and applies to humble -> shared for both; lyrical
  and rolling keep their own. Built humble's rmf_traffic with it on
  osx-arm64, with its tests.

Every distribution's effective patch was checked against its sync source.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the Fortress ones there

conda-forge has gazebo 11 for win-64 (and humble already builds gazebo_ros there),
so only macOS keeps excluding rmf_*_sim_gz_classic_plugins. rmf_building_sim_gz_plugins
and rmf_robot_sim_gz_plugins need Ignition Fortress (libignition-gazebo6), which isn't
installable on win-64, as for gz_ros2_control.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer Tobias-Fischer added build:humble PR build: build only humble (with other build:<distro> labels: only those) build:jazzy PR build: build only jazzy (with other build:<distro> labels: only those) build:lyrical PR build: build only lyrical (with other build:<distro> labels: only those) labels Oct 24, 2026
Tobias-Fischer and others added 2 commits October 25, 2026 07:53
…ffect for lyrical and rolling

vinca takes a package's patches from one layer only: a distribution's patch for a
package (any platform) replaces all of shared/'s for it. So lyrical's and rolling's
rmf_traffic_ros2 and rmf_fleet_adapter_python Windows patches hid the shared
rmf_traffic_ros2 patch and the shared MODULE fix on every platform:
- rmf_fleet_adapter_python: the (identical) lyrical/rolling Windows patch moves to
  shared/, so every distribution gets the MODULE fix and the Windows fix;
- rmf_traffic_ros2: lyrical and rolling get their own copy of the generic patch back.

Windows for humble and jazzy (CI failed in menge_vendor):
- menge_vendor: build with MENGECORE_EXPORTS (dllexport), no libdl;
- lyrical's Windows patches ported to humble's and jazzy's RMF sources (api_msgs,
  battery, fleet_adapter, task, task_ros2, task_sequence, visualization_floorplans,
  visualization_schedule, websocket per distribution; rmf_traffic and
  rmf_traffic_ros2 in shared/, as their generic patches), with the hunks for code
  they don't have dropped (rmf_reservation_msgs, LiftDestination, ...);
- rmf_building_sim_common, rmf_robot_sim_common: CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ot_sim_common

_USE_MATH_DEFINES (M_PI); rmf_traffic_editor links the PROJ and yaml-cpp imported
targets and doesn't include the (unused) unistd.h / pwd.h.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 24, 2026 •

Copy link
Copy Markdown

ABI check (linux-64)

About this check

Each package this pull request built, compared with its newest released build (tools/abi_check.py, libabigail):

  • compatible / additions: the package can be bumped on its own;
  • soname / incompatible: the packages that depend on it need a rebuild (build number bump) in the same pull request.

Exported symbols are compared (the released packages are stripped, so struct layouts aren't); unchanged installed headers rule out layout and inline changes, changed ones are listed for review. Dependents to rebuild are the released ones linking to a changed library. A changed pin is part of the comparison.

Tobias-Fischer and others added 3 commits October 25, 2026 08:44
From lyrical's patch: a short ExternalProject name and prefix (the hash-named
layout exceeded MAX_PATH: "'$GIT_DIR' too big"), BUILD_COMMAND as tokens, and
CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS for the validator library.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dator's tests

The older validator in humble/jazzy names its options BUILD_TESTS/BUILD_EXAMPLES;
its test links draft7_schema_builtin, a data symbol export-all doesn't export.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mble)

NOMINMAX (Menge's and Gazebo's windows.h min/max macros broke rclcpp's headers,
C2589) and _USE_MATH_DEFINES.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tobias-Fischer and others added 3 commits October 25, 2026 10:06
…e, jazzy)

Its CMakeLists.txt adds -Wall -Wshadow -Wextra unconditionally; MSVC stops on
-Wshadow (D8021: invalid numeric argument '/Wshadow'). lyrical's 1.14.1 builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
windows.h, pulled in by its dependencies, declares GDI's Polygon(), which
clashes with the editor's Polygon class (level.h: C2923 'Polygon' is not a
valid template type argument).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer Tobias-Fischer added the build:rolling PR build: build only rolling (with other build:<distro> labels: only those) label Oct 25, 2026
Tobias-Fischer and others added 8 commits October 25, 2026 12:21
SchedulePanel.cpp uses the alternative operator tokens (`or`); MSVC knows
them only with <iso646.h> (C2065: 'or': undeclared identifier).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e); no rmf_visualization_schedule tests

- humble's rmf_fleet_adapter linked the bare name yaml-cpp (LNK1181: cannot open
  input file 'yaml-cpp.lib'); jazzy and later already link the target.
- rmf_visualization_schedule's test_submit_trajectory link command exceeds the
  linker's line limit (LNK1170); its tests are off on Windows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dule tests behind BUILD_TESTING (jazzy)

- humble's rmf_fleet_adapter: MSVC 14.44 crashes compiling full_control's
  main.cpp (C1001 in type_traits); try it unoptimized (/Od).
- jazzy's rmf_visualization_schedule adds its test directory unconditionally,
  so BUILD_TESTING=OFF didn't help against LNK1170: guard it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ask_aggregator's link line

- MSVC 14.44 crashes compiling full_control/main.cpp (C1001 in its lambda
  handling; /Od didn't help), so that executable isn't built or installed on
  Windows; lyrical's and rolling's newer releases build it.
- jazzy's task_aggregator overflowed link.exe's response-file line limit
  (LNK1170) like full_control: link the imported targets on Windows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… class

rmf_fleet_adapter_python links RobotUpdateHandle::Unstable::Stubbornness::release
(LNK2001); nested classes don't inherit dllexport. jazzy's patch already has it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the DLLs to bin

Both installed RUNTIME (on Windows also the DLL) into lib/<pkg>, which isn't on
PATH, so rmf_fleet_adapter_python's rmf_adapter.pyd failed to load. The
fleet adapter's executables stay in lib/rmf_fleet_adapter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…in too

Like rmf_fleet_adapter: their DLLs went to lib/<pkg> with the executables,
so rmf_adapter.pyd still couldn't load. rmf_traffic_ros2's patch is shared
by two releases with different install blocks, so it installs a second copy
of the DLL to bin.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
rmf_traffic_ros2 links rmf_utils.dll, which was installed to lib (not on
PATH), so rmf_adapter.pyd still failed to load. rmf_utils is already
published, hence the build_number bump. ci.yaml: evictions reset (the
packages have been rebuilt).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer Tobias-Fischer removed the build:win PR build: only the win platforms (remove for a full build before merging) label Oct 25, 2026
… packages

The published lyrical and rolling win-64 packages have rmf_utils,
rmf_websocket, rmf_traffic_ros2, rmf_task_ros2 and rmf_fleet_adapter DLLs
in lib/ or lib/<pkg>, so rmf_adapter.pyd can't load them. Same fix as for
humble and jazzy. All are published, so their build numbers are bumped,
also rmf_fleet_adapter_python's: CI skipped it, so the shared MODULE fix
hadn't reached lyrical and rolling. rolling's rmf_utils.win.patch repeated
its generic patch's WINDOWS_EXPORT_ALL_SYMBOLS; rolling's
rmf_websocket.win.patch is refreshed on top of its generic patch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer Tobias-Fischer added build:win PR build: only the win platforms (remove for a full build before merging) and removed build:humble PR build: build only humble (with other build:<distro> labels: only those) build:jazzy PR build: build only jazzy (with other build:<distro> labels: only those) build:rolling PR build: build only rolling (with other build:<distro> labels: only those) labels Oct 25, 2026
Tobias-Fischer and others added 3 commits October 25, 2026 17:16
lyrical's rmf_adapter fails with 'A dynamic link library (DLL)
initialization routine failed'; load its dependencies one by one to see
which. To be removed again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… (temporary)

rmf_task_sequence.dll is the one that fails to initialise: it constructs
json_validator objects during static initialisation. Build the same one in
a small program to see the exception. To be removed again.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It showed conda-forge's json_schema_validator 2.4.1 (lyrical) is a Debug
build on win-64 (MSVCP140D.dll): rmf_task_sequence's static json_validator
crashes in it (conda-forge/json_schema_validator-feedstock#19).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer Tobias-Fischer added build:none PR build: build no packages, only run the checks (tooling, CI or docs changes) and removed build:lyrical PR build: build only lyrical (with other build:<distro> labels: only those) build:win PR build: only the win platforms (remove for a full build before merging) labels Oct 25, 2026
pkg_additional_info.yaml: both sides' build_number entries (#116, #118).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Tobias-Fischer

Copy link
Copy Markdown
Collaborator Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build:none PR build: build no packages, only run the checks (tooling, CI or docs changes)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant