{"record":{"id":"84aafe87f16744f9","repo":"jdx/mise","slug":"precompiled-erlang-is-not-supported-on-os","errorCode":null,"errorMessage":"precompiled erlang is not supported on {os}","messagePattern":"precompiled erlang is not supported on (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/plugins/core/erlang.rs","lineNumber":746,"sourceCode":"                    Err(err) if compile == Some(false) => Err(err),\n                    Err(_) => self.resolve_source_lock_info(&tv.version).await,\n                }\n            }\n            \"windows\" => {\n                let info = match Self::windows_asset_name(&tv.version, target) {\n                    Ok(asset_name) => {\n                        Self::github_asset_lock_info(\"erlang/otp\", &release_tag, &asset_name).await\n                    }\n                    Err(err) => Err(err),\n                };\n                match info {\n                    Ok(info) => Ok(info),\n                    Err(err) if compile == Some(false) => Err(err),\n                    Err(_) => self.resolve_source_lock_info(&tv.version).await,\n                }\n            }\n            os if compile == Some(false) => {\n                bail!(\"precompiled erlang is not supported on {os}\")\n            }\n            _ => self.resolve_source_lock_info(&tv.version).await,\n        }\n    }\n}\n\nfn source_build_kerl_env(\n    install_env: IndexMap<String, crate::config::env_directive::EnvValue>,\n    kerl_base_dir: &Path,\n) -> IndexMap<String, Option<OsString>> {\n    let mut env = install_env\n        .into_iter()\n        .map(|(key, value)| (key, value.into_string().map(OsString::from)))\n        .collect::<IndexMap<_, _>>();\n    // Source lock metadata resolves a GitHub archive and stages it here. Keep\n    // kerl from selecting another backend or download directory and silently\n    // building a different archive instead.\n    env.insert(","sourceCodeStart":728,"sourceCodeEnd":764,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/plugins/core/erlang.rs#L728-L764","documentation":"resolve_lock_info resolves the artifact lock for an Erlang version. When the platform has no precompiled support and the user explicitly disabled compilation (compile = false), no install path exists, so it fails with this error.","triggerScenarios":"Configuring erlang compile = false (or node_compile-style setting set to false) on an OS not covered by precompiled builds, then installing Erlang.","commonSituations":"Users on unsupported Linux distros or non-x86/arm64 platforms who set compile = false to speed installs, not realizing precompiled builds are unavailable there.","solutions":["Remove compile = false so mise can build Erlang from source","Install on a platform with precompiled support (Ubuntu 20.04/22.04/24.04 x86_64/aarch64, macOS x64/arm64, Windows x64/x86)","Pin a platform that has precompiled artifacts via erlang.precompiled_os"],"exampleFix":"// before (mise.toml)\n[settings.erlang]\ncompile = false\n\n// after\n[settings.erlang]\n# compile = false removed; allow source builds on unsupported platforms","handlingStrategy":"validation","validationCode":"# confirm platform is precompiled-supported before setting compile=false\ncase \"$(uname -s)-$(uname -m)\" in Linux-x86_64|Linux-aarch64|Darwin-*) echo precompiled-ok;; *) echo \"do not set erlang compile=false\";; esac","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only set compile=false on platforms with published precompiled builds","Document that compile=false removes the source fallback","Test tool installs on the actual CI platform image"],"tags":["erlang","precompiled","configuration","platform"],"backgroundTag":"unsupported-platform","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}