oraios/serena · error · RuntimeError

Unsupported operating system: {system}

Error message

Unsupported operating system: {system}

What it means

Raised during lua-language-server download when the operating system is neither Linux, Darwin (macOS), nor Windows, so no release asset naming rule applies. system() returns values like 'FreeBSD', 'OpenBSD', 'SunOS', or anything outside the three supported families.

Source

Thrown at src/solidlsp/language_servers/lua_ls.py:147

                download_name = f"lua-language-server-{lua_ls_version}-linux-x64.tar.gz"
            elif machine in ["aarch64", "arm64"]:
                download_name = f"lua-language-server-{lua_ls_version}-linux-arm64.tar.gz"
            else:
                raise RuntimeError(f"Unsupported Linux architecture: {machine}")
        elif system == "Darwin":
            if machine in ["x86_64", "amd64"]:
                download_name = f"lua-language-server-{lua_ls_version}-darwin-x64.tar.gz"
            elif machine in ["arm64", "aarch64"]:
                download_name = f"lua-language-server-{lua_ls_version}-darwin-arm64.tar.gz"
            else:
                raise RuntimeError(f"Unsupported macOS architecture: {machine}")
        elif system == "Windows":
            if machine in ["amd64", "x86_64"]:
                download_name = f"lua-language-server-{lua_ls_version}-win32-x64.zip"
            else:
                raise RuntimeError(f"Unsupported Windows architecture: {machine}")
        else:
            raise RuntimeError(f"Unsupported operating system: {system}")

        download_url = f"https://github.com/LuaLS/lua-language-server/releases/download/{lua_ls_version}/{download_name}"

        install_dir = _lua_ls_install_dir(LuaLanguageServer.ls_resources_dir(solidlsp_settings), lua_ls_version)
        install_dir.mkdir(parents=True, exist_ok=True)

        log.info("Downloading lua-language-server from %s", download_url)
        archive_type = "gztar" if download_name.endswith(".tar.gz") else "zip"
        FileUtils.download_and_extract_archive_verified(
            download_url,
            str(install_dir),
            archive_type,
            expected_sha256=_lua_ls_sha(lua_ls_version, download_name),
            allowed_hosts=LUA_LS_ALLOWED_HOSTS,
        )

        # Make executable on Unix systems
        if system != "Windows":

View on GitHub (pinned to 7fcbca7e62)

Solutions

  1. Run the library on Linux, macOS, or Windows (e.g. inside a Docker linux container on the BSD host)
  2. Build lua-language-server from source on the target OS and place the binary at the expected install_dir path so download is skipped
  3. Contribute/patch lua_ls.py to add an asset rule for your OS if a release asset exists
  4. Use a managed CI runner with a supported OS

Example fix

// before
# running multilspy directly on FreeBSD host
// after
docker run -v $(pwd):/work -w /work python:3.11  # linux container on FreeBSD via jail/podman
Defensive patterns

Strategy: validation

Validate before calling

import platform
if platform.system() not in ("Linux", "Darwin", "Windows"):
    raise SystemExit(f"lua-language-server auto-install supports Linux/macOS/Windows only; got {platform.system()}. Use a Linux container.")

Try / catch

try:
    server = create_lua_server()
except RuntimeError as e:
    if "Unsupported operating system" in str(e):
        run_in_linux_container()
    else:
        raise

Prevention

When it happens

Trigger: Running _setup_runtime_dependency (via _download_lua_ls) on BSD variants, Solaris/illumos, or other exotic POSIX systems where platform.system() is not Linux/Darwin/Windows.

Common situations: FreeBSD servers or CI, NixOS-derived containers reporting unusual system strings (rare), Solaris heritage systems, custom OS builds used in embedded appliances.

Related errors


AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29). Data as JSON: /api/errors/7b93d699615e19c8. Report an issue: GitHub.