From 37a3e44ec77fb26889df8d1c855ba6df921d94af Mon Sep 17 00:00:00 2001 From: Ruben Arts Date: Mon, 26 Oct 2026 10:34:42 +0100 Subject: [PATCH] Tell macOS users to declare macOS 14 in pixi The current RoboStack builds need macOS 14 or newer. Pixi doesn't look at the macOS version of the machine and solves for macOS 13 unless the workspace declares one, so following Getting Started on a Mac quietly installs an older generation of the packages. Getting Started now declares macOS 14 right after `pixi init` and in the multi-distro pixi.toml, the homepage quick start points there, and a FAQ entry explains how to spot and fix it in an existing workspace. --- src/components/home/QuickStart.astro | 9 +++++++ src/content/docs/FAQ.md | 26 +++++++++++++++++++++ src/content/docs/GettingStarted.mdx | 35 +++++++++++++++++++++++++++- 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/components/home/QuickStart.astro b/src/components/home/QuickStart.astro index 9137d5f7..5dafd328 100644 --- a/src/components/home/QuickStart.astro +++ b/src/components/home/QuickStart.astro @@ -47,6 +47,11 @@ const commands = [ ))} +

+ On macOS,{" "} + declare macOS 14 after + pixi init to get the current builds. +

@@ -112,6 +117,10 @@ const commands = [ background: rgba(112, 192, 56, 0.18); color: #9fe06a; } + .note { + margin: 12px 0 0; + font-size: 13px; + } .term-body { padding: 16px; font-size: 13px; diff --git a/src/content/docs/FAQ.md b/src/content/docs/FAQ.md index 766b49cb..632161e8 100644 --- a/src/content/docs/FAQ.md +++ b/src/content/docs/FAQ.md @@ -110,6 +110,32 @@ linux = "5.15" Note: Set the glibc version to match the oldest machine or robot that needs to run your project, not necessarily your personal machine. You can check a machine's version by running `ldd --version`. +## Why does pixi install older ROS packages on macOS? + +The current RoboStack builds need macOS 14 or newer. +Pixi doesn't look at the macOS version of your machine: unless the workspace declares one, it solves for macOS 13. +The solver then skips the newest builds and picks an older generation, without any error. + +You can spot this with `pixi list distro-mutex`. +If the version is lower than the "Built against" mutex on the distro's package page, for example [Lyrical](/lyrical.html), you're on older builds. + +Declare macOS 14 for the workspace: + +```shell +pixi workspace platform add osx-latest=osx-arm64 --osx 14 +pixi workspace platform rm osx-arm64 +``` + +On an Intel Mac, replace `osx-arm64` with `osx-64` in both commands. +Pixi updates the lockfile and the environment right away. + +You can also write it in the `pixi.toml` yourself and run `pixi install`: + +```toml +[workspace] +platforms = [{ name = "osx-latest", platform = "osx-arm64", macos = "14" }] +``` + ## Why ROS and Conda? We tightly couple ROS with Conda, a cross-platform, language-agnostic package manager. diff --git a/src/content/docs/GettingStarted.mdx b/src/content/docs/GettingStarted.mdx index da41323a..20150b83 100644 --- a/src/content/docs/GettingStarted.mdx +++ b/src/content/docs/GettingStarted.mdx @@ -50,6 +50,32 @@ pixi init ros_ws --channel https://prefix.dev/robostack-lyrical cd ros_ws ``` +On macOS, also tell pixi to use macOS 14: + +```shell +pixi workspace platform add osx-latest=osx-arm64 --osx 14 +pixi workspace platform rm osx-arm64 +``` + +On an Intel Mac, replace `osx-arm64` with `osx-64` in both commands. +Run them in this order: pixi won't remove the only platform of a workspace. + +
+Why is this needed on macOS? + +The current RoboStack builds need macOS 14 or newer. +Pixi doesn't look at the macOS version of your machine, it assumes macOS 13 unless the workspace says otherwise. +Without this step it quietly installs an older generation of the ROS packages. + +The first command adds your platform again with macOS 14 declared, the second removes the default one. +Your `pixi.toml` then has: + +```toml +platforms = [{ name = "osx-latest", platform = "osx-arm64", macos = "14" }] +``` + +
+
What did just happen? @@ -163,7 +189,14 @@ You can replace the previous `pixi.toml` or use `pixi init` to create a new work name = "ros_ws" description = "Development environment for RoboStack ROS packages" channels = ["https://prefix.dev/conda-forge"] -platforms = ["linux-64", "win-64", "osx-64", "osx-arm64", "linux-aarch64"] +# RoboStack's macOS builds need macOS 14, pixi assumes 13 unless told otherwise +platforms = [ + "linux-64", + "linux-aarch64", + "win-64", + { name = "osx-64-latest", platform = "osx-64", macos = "14" }, + { name = "osx-arm64-latest", platform = "osx-arm64", macos = "14" }, +] # This will automatically activate the ros workspace on activation [target.win.activation]