From 775949db8e0a0894733748e3804c994172b5b38c Mon Sep 17 00:00:00 2001 From: Ruixiang Du Date: Sun, 6 Sep 2026 16:12:33 +0800 Subject: [PATCH 1/2] ci: assemble the non-driver component set on macOS (arm64) The umbrella's only lane assembles base + driver on Ubuntu. This adds an arm64 macOS assembly of everything that is portable, which is the cross-component integration no single component's CI can catch. xmDriver is excluded on purpose, and permanently: it binds SocketCAN (, ) and libevdev over /dev/input/event*. Those are kernel interfaces with no macOS equivalent, so supporting them means a driver port, not a build fix. Nothing else depends on xmDriver -- the only references to it in other components' CMake are comments -- so turning it off costs the hardware layer and nothing more. xmTelemetry is omitted for the same reason as the Linux lane: it is private and not checked out in CI. XMSIM_MUJOCO_DIR is passed explicitly because its default resolves against CMAKE_SOURCE_DIR, which under add_subdirectory is the umbrella root rather than the simulator's own -- a pre-existing wrinkle, not a macOS one. The submodule pointers are deliberately NOT bumped here: this lane only goes green once each component's build/macos-support branch is merged. Verified locally on macOS 15 (arm64): the assembly builds clean. --- .github/workflows/ci.yml | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f13b9fb..109ba8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,3 +56,48 @@ jobs: - name: Build run: cmake --build build -j + + # macOS assembly (arm64). xmDriver is excluded: it binds SocketCAN + # () and libevdev over /dev/input/event*, which have no macOS + # equivalents, so it is not portable rather than merely unported. Everything + # else assembles. xmTelemetry is omitted for the same reason as the Linux + # lane -- it is private and not checked out here. + assemble-macos: + name: Assemble (macOS arm64, no driver) + runs-on: macos-14 + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Init component submodules (built set) + run: | + git submodule sync --recursive + git submodule update --init --recursive \ + components/base components/navigation components/viewer \ + components/messaging components/simulator + + - name: Install dependencies (union of component deps) + # eigen@3 and opencv@4 are keg-only: Homebrew defaults to Eigen 5 and + # OpenCV 5, and the components target the 3.x/4.x APIs. + run: > + brew install eigen@3 opencv@4 pcl boost abseil re2 glm glfw cairo + fontconfig ncurses yaml-cpp tbb gsl googletest + + - name: Fetch MuJoCo (xmSimulator) + run: components/simulator/scripts/setup/fetch_mujoco.sh + + - name: Configure assembly (no driver) + # XMSIM_MUJOCO_DIR is explicit because its default resolves against + # CMAKE_SOURCE_DIR, which under add_subdirectory is this umbrella + # rather than the simulator's own root. + run: > + cmake -S . -B build -DCMAKE_BUILD_TYPE=$BUILD_TYPE + -DXMOTION_WITH_DRIVER=OFF -DXMOTION_WITH_TELEMETRY=OFF + -DXMOTION_WITH_NAVIGATION=ON -DXMOTION_WITH_VIEWER=ON + -DXMOTION_WITH_MESSAGING=ON -DXMOTION_WITH_SIMULATOR=ON + -DXMSIM_MUJOCO_DIR="$GITHUB_WORKSPACE/components/simulator/third_party/mujoco" + -DCMAKE_PREFIX_PATH="$(brew --prefix eigen@3);$(brew --prefix opencv@4)" + + - name: Build + run: cmake --build build -j"$(sysctl -n hw.ncpu)" + From 2dbccca8b8e7f97d829e2f177375a1464407576a Mon Sep 17 00:00:00 2001 From: Ruixiang Du Date: Tue, 8 Sep 2026 17:15:42 +0800 Subject: [PATCH 2/2] build: re-pin all components to their merged macOS-support tips Every component's macOS branch has landed, so bring the umbrella's pointers up to the merged heads. This is what the assemble-macos lane was waiting on: it failed in fetch_mujoco.sh because the recorded simulator commit predated the arm64/dmg support, so the script rejected the host before anything was configured. base 3f389a06 -> 74c00080 (main) telemetry 1e0f3082 -> afa0a216 (main) navigation 282f290a -> 460d5cca (devel) viewer edeb589d -> 236d7c47 (main) messaging 93a61185 -> 03482337 (main) simulator 65b6d838 -> bbf936fd (main) navigation tracks devel rather than main, per .gitmodules. Verified on macOS 15 (arm64), both configurations building clean: - the CI set (driver and telemetry off), which is what the lane runs - the full set with telemetry on, which CI cannot cover since that repository is private and is not checked out there --- components/base | 2 +- components/messaging | 2 +- components/navigation | 2 +- components/simulator | 2 +- components/telemetry | 2 +- components/viewer | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/components/base b/components/base index 3f389a0..74c0008 160000 --- a/components/base +++ b/components/base @@ -1 +1 @@ -Subproject commit 3f389a064f5e1179edf85358883711cc93c6be54 +Subproject commit 74c000808a9a94048e72a488b666e5567fe4fa6e diff --git a/components/messaging b/components/messaging index 93a6118..0348233 160000 --- a/components/messaging +++ b/components/messaging @@ -1 +1 @@ -Subproject commit 93a611854ec3f77d02514ac66a166e90344deb8e +Subproject commit 034823379bda9fb8f61373887e77b1cf2a34fefd diff --git a/components/navigation b/components/navigation index 282f290..460d5cc 160000 --- a/components/navigation +++ b/components/navigation @@ -1 +1 @@ -Subproject commit 282f290a3b467dda67ab8f0dcb7c9d089a16d98e +Subproject commit 460d5cca7886109c3ea0ec64ccb0c3d3f7b1756d diff --git a/components/simulator b/components/simulator index 65b6d83..bbf936f 160000 --- a/components/simulator +++ b/components/simulator @@ -1 +1 @@ -Subproject commit 65b6d83883fc66cde40d82b678b708b2f31feb6f +Subproject commit bbf936fd4fcb88f6d639ee8cc804aebaffe3beaf diff --git a/components/telemetry b/components/telemetry index 1e0f308..afa0a21 160000 --- a/components/telemetry +++ b/components/telemetry @@ -1 +1 @@ -Subproject commit 1e0f3082c13f9f41115abf99bd8f96e753f47bd7 +Subproject commit afa0a216a7d6971df524f3b03d5d8cc57ca137e4 diff --git a/components/viewer b/components/viewer index edeb589..236d7c4 160000 --- a/components/viewer +++ b/components/viewer @@ -1 +1 @@ -Subproject commit edeb589d06916b67331c7283e43f7cc6c4ea1d61 +Subproject commit 236d7c4751e68967bb21faa05f51e5ad8a9a9bfe