{"record":{"id":"60019f3c0b5d8929","repo":"oraios/serena","slug":"verible-verilog-ls-not-found-at-executable-path","errorCode":null,"errorMessage":"verible-verilog-ls not found at {executable_path}","messagePattern":"verible-verilog-ls not found at (.+?)","errorType":"exception","errorClass":"FileNotFoundError","httpStatus":null,"severity":"error","filePath":"src/solidlsp/language_servers/systemverilog_server.py","lineNumber":143,"sourceCode":"            if dep is None:\n                raise FileNotFoundError(\n                    \"verible-verilog-ls is not installed on your system.\\n\"\n                    + \"Please install verible using one of the following methods:\\n\"\n                    + \"  conda:      conda install -c conda-forge verible\\n\"\n                    + \"  Homebrew:   brew install verible\\n\"\n                    + \"  GitHub:     Download from https://github.com/chipsalliance/verible/releases\\n\"\n                    + \"See https://github.com/chipsalliance/verible for more details.\"\n                )\n\n            verible_ls_dir = os.path.join(self._ls_resources_dir, \"verible-ls\")\n            executable_path = deps.binary_path(verible_ls_dir)\n\n            if not os.path.exists(executable_path):\n                log.info(f\"verible-verilog-ls not found. Downloading from {dep.url}\")\n                _ = deps.install(verible_ls_dir)\n\n            if not os.path.exists(executable_path):\n                raise FileNotFoundError(f\"verible-verilog-ls not found at {executable_path}\")\n\n            os.chmod(executable_path, 0o755)\n            return executable_path\n\n        def _create_launch_command(self, core_path: str) -> list[str]:\n            return [core_path]\n\n    def _create_base_initialize_params(self) -> dict:\n        initialize_params = {\n            \"locale\": \"en\",\n            \"capabilities\": {\n                \"textDocument\": {\n                    \"synchronization\": {\"didSave\": True, \"dynamicRegistration\": True},\n                    \"completion\": {\n                        \"dynamicRegistration\": True,\n                        \"completionItem\": {\"snippetSupport\": True},\n                    },\n                    \"definition\": {\"dynamicRegistration\": True},","sourceCodeStart":125,"sourceCodeEnd":161,"githubUrl":"https://github.com/oraios/serena/blob/7fcbca7e62555ec2287ddb2f083caee805848ea6/src/solidlsp/language_servers/systemverilog_server.py#L125-L161","documentation":"After locating (or auto-downloading) the verible dependency, the SystemVerilog LS checks that the expected binary exists at `deps.binary_path(verible_ls_dir)`. If it was still missing the library downloads/extracts `deps.install(verible_ls_dir)`; if the binary is STILL absent after that, this FileNotFoundError is raised. It indicates the download/extract produced a layout that does not contain the binary at the expected path (e.g. binary_name path mismatch inside the archive) or the install silently failed.","triggerScenarios":"Starting the SystemVerilog LS when: the download from dep.url fails or is interrupted, archive extraction does not create `<verible-ls>/verible-<version>/bin/verible-verilog-ls`, binary_name in the RuntimeDependency does not match the archive layout, or a previous partial install left a corrupt verible-ls directory so the pre-check passed but files are missing.","commonSituations":"Network/proxy blocking download from github.com/chipsalliance releases or allowed_hosts; GitHub redirecting to a host not in VERIBLE_ALLOWED_HOSTS; checksum/layout change in a newer verible release tarball breaking the binary_name assumption; disk-full or permission error during extraction; stale partially-extracted verible-ls dir.","solutions":["Delete the `<ls_resources_dir>/verible-ls` directory to force a clean re-download and re-extract, then retry.","Check logs for the download URL (dep.url) and verify it is reachable — proxy/VPN/firewall often blocks GitHub release downloads; also confirm allowed_hosts covers the redirect target.","Verify the archive layout matches binary_name (`verible-<version>/bin/verible-verilog-ls`); if the verible release layout changed, pin a version whose layout matches.","Run the extraction manually (tar -xzf / unzip) to inspect where the binary actually lands and compare with the expected binary_path.","Check disk space and write permissions on the resources directory."],"exampleFix":"// before: stale/partial install\nrm -rf  # (do nothing, error repeats)\n// after\ncd ~/.solidlsp/resources && rm -rf verible-ls\n# restart session -> fresh download + extraction","handlingStrategy":"retry","validationCode":"import os\nexpected = os.path.join(resources_dir, \"verible-ls\", \"verible-%s\" % verible_version, \"bin\",\n                        \"verible-verilog-ls\" + (\".exe\" if os.name == \"nt\" else \"\"))\nif not os.path.exists(expected):\n    shutil.rmtree(os.path.join(resources_dir, \"verible-ls\"), ignore_errors=True)  # force clean re-download","typeGuard":null,"tryCatchPattern":"try:\n    server = SolidLSP(systemverilog_config)\nexcept FileNotFoundError as e:\n    if \"not found at\" in str(e) and \"verible-verilog-ls\" in str(e):\n        shutil.rmtree(verible_ls_dir, ignore_errors=True)\n        server = retry_start()  # clean re-download + extract\n    else:\n        raise","preventionTips":["Pre-download/extract the verible tarball once and confirm the binary lands at verible-<version>/bin/verible-verilog-ls","Ensure network access (incl. proxies and allowed_hosts) to github.com/chipsalliance release downloads","Clear a partial/corrupt <resources>/verible-ls dir after any interrupted download","Check disk space and write permissions in the resources directory","Pin a verible version whose release archive layout matches the expected binary_name"],"tags":["systemverilog","verible","download","archive-extraction","file-not-found"],"backgroundTag":"downloaded-binary-path-mismatch","analyzedSha":"7fcbca7e62555ec2287ddb2f083caee805848ea6","analyzedAt":"2026-08-29T00:04:09.619Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}