{"record":{"id":"8ce17c18716fca2a","repo":"oraios/serena","slug":"download-failed-could-not-find-ada-language-serve","errorCode":null,"errorMessage":"Download failed? Could not find ada_language_server executable at {als_executable_path}","messagePattern":"Download failed\\? Could not find ada_language_server executable at (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/ada_language_server.py","lineNumber":130,"sourceCode":"\n    class DependencyProvider(LanguageServerDependencyProviderSinglePath):\n        def _get_or_install_core_dependency(self) -> str:\n            \"\"\"Setup runtime dependencies for ALS and return the path to the executable.\"\"\"\n            als_version = self._custom_settings.get(\"als_version\", DEFAULT_ALS_VERSION)\n            deps = AdaLanguageServer._runtime_dependencies(als_version)\n            dependency = deps.get_single_dep_for_current_platform()\n\n            install_dir = os.path.join(self._ls_resources_dir, f\"als-{als_version}\")\n            als_executable_path = deps.binary_path(install_dir)\n            if not os.path.exists(als_executable_path):\n                log.info(\n                    \"Downloading and extracting ada_language_server from %s to %s\",\n                    dependency.url,\n                    install_dir,\n                )\n                deps.install(install_dir)\n            if not os.path.exists(als_executable_path):\n                raise FileNotFoundError(f\"Download failed? Could not find ada_language_server executable at {als_executable_path}\")\n            os.chmod(als_executable_path, 0o755)\n            return als_executable_path\n\n        def _create_launch_command(self, core_path: str) -> list[str]:\n            # ALS speaks LSP over stdio by default; no flags needed.\n            return [core_path]\n\n    def __init__(self, config: LanguageServerConfig, repository_root_path: str, solidlsp_settings: SolidLSPSettings):\n        \"\"\"\n        Creates an AdaLanguageServer instance. This class is not meant to be instantiated directly.\n        Use LanguageServer.create() instead.\n        \"\"\"\n        super().__init__(\n            config,\n            repository_root_path,\n            None,\n            \"ada\",\n            solidlsp_settings,","sourceCodeStart":112,"sourceCodeEnd":148,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/ada_language_server.py#L112-L148","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","solutions":["Delete the cached install directory and retry so the dependency is re-downloaded cleanly.","Verify network access to the release URL and that the downloaded archive matches your platform.","Check whether the upstream release changed the executable name/location and update the expected path or pin a working release version."],"exampleFix":"// before\ncurl -fL <url> -o als.zip   # proxy error page cached as als.zip\n// after\nrm -rf <install_dir>\ncurl -fL --retry 3 <url> -o als.zip && unzip -t als.zip   # validate archive","handlingStrategy":"retry","validationCode":"import os\n\ndef als_binary_ok(install_dir: str, expected_name: str = 'ada_language_server') -> bool:\n    for root, _, files in os.walk(install_dir):\n        if expected_name in files and os.access(os.path.join(root, expected_name), os.X_OK):\n            return True\n    return False","typeGuard":"def executable_exists(path: str) -> bool:\n    return os.path.isfile(path) and os.access(path, os.X_OK)","tryCatchPattern":"try:\n    core = provider.get_or_install_core_dependency()\nexcept FileNotFoundError as e:\n    if 'ada_language_server executable' in str(e):\n        shutil.rmtree(install_dir, ignore_errors=True)  # purge partial download\n        core = provider.get_or_install_core_dependency()  # retry once\n    else:\n        raise","preventionTips":["Purge cached language-server install dirs after network failures or version upgrades.","Verify release archive integrity (size/zip -t) behind proxies that may inject error pages.","Pin a known-good ada_language_server release; watch upstream for layout changes."],"tags":["download","language-server","file-not-found","network"],"backgroundTag":"downloaded-artifact-missing","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}