From 8adfeee4e8efa2051c8d014d677c65b2c9ef820e Mon Sep 17 00:00:00 2001 From: jdx <216188+jdx@users.noreply.github.com> Date: Sun, 1 Mar 2026 23:00:43 +0000 Subject: [PATCH] fix(install): apply precompiled options to all platforms in lockfile Previously, `resolve_lockfile_options` only included precompiled settings (flavor, arch, os) for the current/host platform. This caused `mise lock` to split the host platform into a separate `[[tools.python]]` entry since its options differed from non-host platforms. Apply precompiled options uniformly to all platforms so they share a single lockfile entry. The `compile` option remains host-only since compiling from source is inherently platform-specific. Fixes #8390 Co-Authored-By: Claude Opus 4.6 --- src/plugins/core/node.rs | 5 +++-- src/plugins/core/python.rs | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/plugins/core/node.rs b/src/plugins/core/node.rs index 872c8114a2..4ad02cbe90 100644 --- a/src/plugins/core/node.rs +++ b/src/plugins/core/node.rs @@ -701,8 +701,9 @@ impl Backend for NodePlugin { opts.insert("compile".to_string(), "true".to_string()); } - // Flavor affects which binary variant is downloaded (only if set) - if is_current_platform && let Some(flavor) = settings.node.flavor.clone() { + // Flavor affects which binary variant is downloaded + // Apply to all platforms to avoid splitting lockfile entries (#8390) + if let Some(flavor) = settings.node.flavor.clone() { opts.insert("flavor".to_string(), flavor); } diff --git a/src/plugins/core/python.rs b/src/plugins/core/python.rs index 4e42c7703c..572451ddd0 100644 --- a/src/plugins/core/python.rs +++ b/src/plugins/core/python.rs @@ -629,8 +629,9 @@ impl Backend for PythonPlugin { opts.insert("compile".to_string(), "true".to_string()); } - // Only include precompiled options if not compiling and if set - if !compile && is_current_platform { + // Include precompiled options for all platforms to avoid splitting + // lockfile entries between host and non-host platforms (#8390) + if !compile { if let Some(arch) = settings.python.precompiled_arch.clone() { opts.insert("precompiled_arch".to_string(), arch); }