oraios/serena · error

Download failed? Could not find ada_language_server executab

Error message

Download failed? Could not find ada_language_server executable at {als_executable_path}

What it means

The Ada language server provider downloads and extracts the ada_language_server release artifact into an install directory, then checks that the platform-expected executable exists. FileNotFoundError means the download/extract step completed (or was skipped) but the binary is not where it should be — usually a failed/incomplete download, an unexpected archive layout, or a platform mismatch.

Source

Thrown at src/solidlsp/language_servers/ada_language_server.py:130

    class DependencyProvider(LanguageServerDependencyProviderSinglePath):
        def _get_or_install_core_dependency(self) -> str:
            """Setup runtime dependencies for ALS and return the path to the executable."""
            als_version = self._custom_settings.get("als_version", DEFAULT_ALS_VERSION)
            deps = AdaLanguageServer._runtime_dependencies(als_version)
            dependency = deps.get_single_dep_for_current_platform()

            install_dir = os.path.join(self._ls_resources_dir, f"als-{als_version}")
            als_executable_path = deps.binary_path(install_dir)
            if not os.path.exists(als_executable_path):
                log.info(
                    "Downloading and extracting ada_language_server from %s to %s",
                    dependency.url,
                    install_dir,
                )
                deps.install(install_dir)
            if not os.path.exists(als_executable_path):
                raise FileNotFoundError(f"Download failed? Could not find ada_language_server executable at {als_executable_path}")
            os.chmod(als_executable_path, 0o755)
            return als_executable_path

        def _create_launch_command(self, core_path: str) -> list[str]:
            # ALS speaks LSP over stdio by default; no flags needed.
            return [core_path]

    def __init__(self, config: LanguageServerConfig, repository_root_path: str, solidlsp_settings: SolidLSPSettings):
        """
        Creates an AdaLanguageServer instance. This class is not meant to be instantiated directly.
        Use LanguageServer.create() instead.
        """
        super().__init__(
            config,
            repository_root_path,
            None,
            "ada",
            solidlsp_settings,

View on GitHub (pinned to 7fcbca7e62)

Solutions

  1. Delete the cached install directory and retry so the dependency is re-downloaded cleanly.
  2. Verify network access to the release URL and that the downloaded archive matches your platform.
  3. Check whether the upstream release changed the executable name/location and update the expected path or pin a working release version.

Example fix

// before
curl -fL <url> -o als.zip   # proxy error page cached as als.zip
// after
rm -rf <install_dir>
curl -fL --retry 3 <url> -o als.zip && unzip -t als.zip   # validate archive
Defensive patterns

Strategy: retry

Validate before calling

import os

def als_binary_ok(install_dir: str, expected_name: str = 'ada_language_server') -> bool:
    for root, _, files in os.walk(install_dir):
        if expected_name in files and os.access(os.path.join(root, expected_name), os.X_OK):
            return True
    return False

Type guard

def executable_exists(path: str) -> bool:
    return os.path.isfile(path) and os.access(path, os.X_OK)

Try / catch

try:
    core = provider.get_or_install_core_dependency()
except FileNotFoundError as e:
    if 'ada_language_server executable' in str(e):
        shutil.rmtree(install_dir, ignore_errors=True)  # purge partial download
        core = provider.get_or_install_core_dependency()  # retry once
    else:
        raise

Prevention

When it happens

Trigger: Calling _get_or_install_core_dependency for the Ada language server when deps.install() produced no executable at als_executable_path — network truncation, wrong platform artifact, or a release that renamed/moved the binary.

Common situations: Flaky corporate proxies returning HTML error pages saved as the archive; unsupported platform (e.g. musl/Alpine) picking the wrong asset; upstream release layout change.

Related errors


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