fix: Xilinx 2018.3 tool discovery — add SDK dir, .bat PATH search, older versions
This commit is contained in:
+14
-7
@@ -60,7 +60,8 @@ TOOL_ALIASES: dict[str, list[str]] = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Product subdirectories under xilinx_root to scan (in preference order)
|
# Product subdirectories under xilinx_root to scan (in preference order)
|
||||||
_PRODUCT_DIRS = ("Vitis", "Vivado")
|
# SDK covers pre-2019 installations where xsct lived in SDK/*/bin/
|
||||||
|
_PRODUCT_DIRS = ("Vitis", "Vivado", "SDK")
|
||||||
|
|
||||||
|
|
||||||
# ── Version helpers ──────────────────────────────────────────────────
|
# ── Version helpers ──────────────────────────────────────────────────
|
||||||
@@ -163,9 +164,9 @@ def _find_executable(
|
|||||||
"""Find an executable by name using PATH, Vitis, and Xilinx root.
|
"""Find an executable by name using PATH, Vitis, and Xilinx root.
|
||||||
|
|
||||||
Search order:
|
Search order:
|
||||||
1. System PATH (shutil.which)
|
1. System PATH (shutil.which) — tries bare name, .exe, .bat on Windows
|
||||||
2. vitis_path/bin (legacy config)
|
2. vitis_path/bin (legacy config)
|
||||||
3. xilinx_root/Vitis/*/bin and Vivado/*/bin — pick NEWEST version
|
3. xilinx_root/Vitis/*/bin, Vivado/*/bin, SDK/*/bin — pick NEWEST version
|
||||||
4. Common install paths (cross-platform)
|
4. Common install paths (cross-platform)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -179,14 +180,20 @@ def _find_executable(
|
|||||||
"""
|
"""
|
||||||
exec_suffix = ".exe" if system == "windows" else ""
|
exec_suffix = ".exe" if system == "windows" else ""
|
||||||
|
|
||||||
# 1. System PATH
|
# 1. System PATH — search without explicit extension first
|
||||||
|
# so Windows PATHEXT resolves .bat/.exe/.cmd automatically
|
||||||
|
found = shutil.which(exec_name)
|
||||||
|
if not found and exec_suffix:
|
||||||
found = shutil.which(f"{exec_name}{exec_suffix}")
|
found = shutil.which(f"{exec_name}{exec_suffix}")
|
||||||
|
if not found:
|
||||||
|
found = shutil.which(f"{exec_name}.bat")
|
||||||
if found:
|
if found:
|
||||||
return found
|
return found
|
||||||
|
|
||||||
# 2. Legacy vitis_path/bin
|
# 2. Legacy vitis_path/bin
|
||||||
if vitis_path:
|
if vitis_path:
|
||||||
candidate = Path(vitis_path) / "bin" / f"{exec_name}{exec_suffix}"
|
for sfx in (".bat", ".exe") if system == "windows" else (exec_suffix,):
|
||||||
|
candidate = Path(vitis_path) / "bin" / f"{exec_name}{sfx}"
|
||||||
if candidate.is_file():
|
if candidate.is_file():
|
||||||
return str(candidate)
|
return str(candidate)
|
||||||
|
|
||||||
@@ -203,8 +210,8 @@ def _find_executable(
|
|||||||
if system == "windows":
|
if system == "windows":
|
||||||
common: list[str] = []
|
common: list[str] = []
|
||||||
for sfx in (".bat", ".exe"):
|
for sfx in (".bat", ".exe"):
|
||||||
for ver in ("2023.2", "2022.2"):
|
for ver in ("2023.2", "2022.2", "2018.3"):
|
||||||
for prod in ("Vitis", "Vivado"):
|
for prod in ("Vitis", "Vivado", "SDK"):
|
||||||
common.append(f"C:/Xilinx/{prod}/{ver}/bin/{exec_name}{sfx}")
|
common.append(f"C:/Xilinx/{prod}/{ver}/bin/{exec_name}{sfx}")
|
||||||
else:
|
else:
|
||||||
common = [
|
common = [
|
||||||
|
|||||||
Reference in New Issue
Block a user