oraios/serena · error · FileNotFoundError
verible-verilog-ls not found at {executable_path}
Error message
verible-verilog-ls not found at {executable_path} What it means
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.
Source
Thrown at src/solidlsp/language_servers/systemverilog_server.py:143
if dep is None:
raise FileNotFoundError(
"verible-verilog-ls is not installed on your system.\n"
+ "Please install verible using one of the following methods:\n"
+ " conda: conda install -c conda-forge verible\n"
+ " Homebrew: brew install verible\n"
+ " GitHub: Download from https://github.com/chipsalliance/verible/releases\n"
+ "See https://github.com/chipsalliance/verible for more details."
)
verible_ls_dir = os.path.join(self._ls_resources_dir, "verible-ls")
executable_path = deps.binary_path(verible_ls_dir)
if not os.path.exists(executable_path):
log.info(f"verible-verilog-ls not found. Downloading from {dep.url}")
_ = deps.install(verible_ls_dir)
if not os.path.exists(executable_path):
raise FileNotFoundError(f"verible-verilog-ls not found at {executable_path}")
os.chmod(executable_path, 0o755)
return executable_path
def _create_launch_command(self, core_path: str) -> list[str]:
return [core_path]
def _create_base_initialize_params(self) -> dict:
initialize_params = {
"locale": "en",
"capabilities": {
"textDocument": {
"synchronization": {"didSave": True, "dynamicRegistration": True},
"completion": {
"dynamicRegistration": True,
"completionItem": {"snippetSupport": True},
},
"definition": {"dynamicRegistration": True},View on GitHub (pinned to 7fcbca7e62)
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.
Example fix
// before: stale/partial install rm -rf # (do nothing, error repeats) // after cd ~/.solidlsp/resources && rm -rf verible-ls # restart session -> fresh download + extraction
Defensive patterns
Strategy: retry
Validate before calling
import os
expected = os.path.join(resources_dir, "verible-ls", "verible-%s" % verible_version, "bin",
"verible-verilog-ls" + (".exe" if os.name == "nt" else ""))
if not os.path.exists(expected):
shutil.rmtree(os.path.join(resources_dir, "verible-ls"), ignore_errors=True) # force clean re-download Try / catch
try:
server = SolidLSP(systemverilog_config)
except FileNotFoundError as e:
if "not found at" in str(e) and "verible-verilog-ls" in str(e):
shutil.rmtree(verible_ls_dir, ignore_errors=True)
server = retry_start() # clean re-download + extract
else:
raise Prevention
- 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
When it happens
Trigger: 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.
Common situations: 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.
Related errors
- verible-verilog-ls is not installed on your system. Please i
- Download failed? Could not find ada_language_server executab
- Failed to find Start-EditorServices.ps1 after extraction at
- Internal mode '{from_internal}' not found in {SERENAS_OWN_MO
- Internal context '{from_internal}' not found in {SERENAS_OWN
AI-assisted analysis of oraios/serena@7fcbca7e62 (2026-08-29).
Data as JSON: /api/errors/60019f3c0b5d8929.
Report an issue: GitHub.