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]