✨ feat: smart Xilinx version scanning — pick newest, log all versions
_version discovery: - _scan_xilinx_root() collects ALL versions under Vitis/*/bin/ and Vivado/*/bin/ - _parse_version_tuple() semantic version comparison (2023.2 > 2018.3) - Defaults to newest version, Vitis preferred over Vivado for same version - _find_executable() search order: PATH → legacy vitis_path → scan xilinx_root → common paths _version reporting: - _get_tool_version(): tries -version flag first, falls back to path parsing - _version_from_path(): extracts version from install path (e.g., .../Vitis/2023.2/bin/xsct → 2023.2) - Step 1 logs each tool with version: ✓ xsct: /path [v2023.2] - If multiple versions found, lists all: xsct versions found: 2023.2 (Vitis), 2018.3 (Vivado) Cross-platform: - Handles Windows path separators via Path() - Expanded common Windows install paths
This commit is contained in:
+15
-1
@@ -767,19 +767,33 @@ class MainWindow(ctk.CTk):
|
||||
|
||||
# Check Vitis/Vivado tools
|
||||
self._log_message(" Checking Vitis/Vivado tools...")
|
||||
if self._config.xilinx_path:
|
||||
self._log_message(f" Xilinx root: {self._config.xilinx_path}")
|
||||
result = check_vitis(self._config)
|
||||
status_dict = get_tool_status_dict(result)
|
||||
|
||||
for tool_name, tool_info in status_dict["tools"].items():
|
||||
if tool_info["found"]:
|
||||
ver_info = f" [v{tool_info['version']}]" if tool_info.get("version") else ""
|
||||
alias_note = f" (via {tool_info['alias']})" if tool_info.get("alias") and tool_info["alias"] != tool_name else ""
|
||||
self._log_message(f" ✓ {tool_name}: {tool_info['path']}{alias_note}")
|
||||
self._log_message(f" ✓ {tool_name}: {tool_info['path']}{ver_info}{alias_note}")
|
||||
else:
|
||||
self._log_message(f" ✗ {tool_name}: {tool_info['error']}")
|
||||
|
||||
if result.is_ready:
|
||||
self._vitis_status.configure(text="Vitis: Ready", text_color=SUCCESS_COLOR)
|
||||
self._log_message(" Vitis/Vivado tools available")
|
||||
# Report all found versions for diagnostics
|
||||
if self._config.xilinx_path:
|
||||
try:
|
||||
from vitis_checker import get_all_found_versions
|
||||
for t in ("xsct", "program_flash", "bootgen"):
|
||||
vers = get_all_found_versions(self._config.xilinx_path, t)
|
||||
if len(vers) > 1:
|
||||
ver_list = ", ".join(f"{v} ({p})" for v, p in vers)
|
||||
self._log_message(f" {t} versions found: {ver_list}")
|
||||
except Exception:
|
||||
pass
|
||||
else:
|
||||
self._vitis_status.configure(text="Vitis: Partial", text_color=WARNING_COLOR)
|
||||
self._log_message(f" Issues: {'; '.join(result.errors)}")
|
||||
|
||||
Reference in New Issue
Block a user