From 7e5d536748e41284d140d43656a2702f303fdcba Mon Sep 17 00:00:00 2001 From: Aether Date: Mon, 23 Feb 2026 20:53:01 +0000 Subject: [PATCH] Add dependency checker script for Windows builds --- scripts/check-dependencies.ps1 | 166 +++++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 scripts/check-dependencies.ps1 diff --git a/scripts/check-dependencies.ps1 b/scripts/check-dependencies.ps1 new file mode 100644 index 0000000..2ddee32 --- /dev/null +++ b/scripts/check-dependencies.ps1 @@ -0,0 +1,166 @@ +# EU-Utility V3 - Dependency Checker for Windows +# Run this in PowerShell to verify all build prerequisites + +param( + [switch]$InstallMissing +) + +$ErrorActionPreference = "Stop" +$hasErrors = $false + +Write-Host "`n=== EU-Utility V3 Build Dependency Checker ===`n" -ForegroundColor Cyan + +# 1. Check Node.js +Write-Host "Checking Node.js..." -NoNewline +$nodeVersion = & node --version 2>$null +if ($nodeVersion) { + Write-Host " OK ($nodeVersion)" -ForegroundColor Green +} else { + Write-Host " MISSING" -ForegroundColor Red + Write-Host " Install from: https://nodejs.org/" -ForegroundColor Yellow + $hasErrors = $true +} + +# 2. Check npm +Write-Host "Checking npm..." -NoNewline +$npmVersion = & npm --version 2>$null +if ($npmVersion) { + Write-Host " OK ($npmVersion)" -ForegroundColor Green +} else { + Write-Host " MISSING" -ForegroundColor Red + $hasErrors = $true +} + +# 3. Check Rust/Cargo +Write-Host "Checking Rust..." -NoNewline +$cargoVersion = & cargo --version 2>$null +if ($cargoVersion) { + Write-Host " OK ($cargoVersion)" -ForegroundColor Green +} else { + Write-Host " MISSING" -ForegroundColor Red + Write-Host " Install from: https://rustup.rs/" -ForegroundColor Yellow + $hasErrors = $true +} + +# 4. Check Tauri CLI +Write-Host "Checking Tauri CLI..." -NoNewline +$tauriVersion = & npx tauri --version 2>$null +if ($tauriVersion) { + Write-Host " OK ($tauriVersion)" -ForegroundColor Green +} else { + Write-Host " MISSING" -ForegroundColor Red + Write-Host " Install with: npm install -g @tauri-apps/cli@^1.5.0" -ForegroundColor Yellow + $hasErrors = $true +} + +# 5. Check Visual Studio Build Tools +Write-Host "Checking Visual Studio Build Tools..." -NoNewline +$clPath = Get-Command cl.exe -ErrorAction SilentlyContinue +$vcvarsPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat" +$vsPath = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools" + +if ($clPath -or (Test-Path $vcvarsPath) -or (Test-Path $vsPath)) { + Write-Host " OK" -ForegroundColor Green +} else { + Write-Host " MISSING" -ForegroundColor Red + Write-Host " Download from: https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022" -ForegroundColor Yellow + Write-Host " Select: 'Desktop development with C++' workload" -ForegroundColor Yellow + $hasErrors = $true +} + +# 6. Check vcpkg +Write-Host "Checking vcpkg..." -NoNewline +$vcpkgPath = "C:\vcpkg\vcpkg.exe" +$vcpkgExists = Test-Path $vcpkgPath + +if ($vcpkgExists) { + Write-Host " OK" -ForegroundColor Green +} else { + Write-Host " MISSING" -ForegroundColor Red + Write-Host " Install with:" -ForegroundColor Yellow + Write-Host " git clone https://github.com/Microsoft/vcpkg.git C:\vcpkg" -ForegroundColor Cyan + Write-Host " C:\vcpkg\bootstrap-vcpkg.bat" -ForegroundColor Cyan + $hasErrors = $true +} + +# 7. Check vcpkg static libraries +if ($vcpkgExists) { + Write-Host "`nChecking vcpkg static libraries..." -ForegroundColor White + + $requiredLibs = @( + "tesseract:x64-windows-static-md", + "leptonica:x64-windows-static-md", + "libpng:x64-windows-static-md", + "tiff:x64-windows-static-md", + "libjpeg-turbo:x64-windows-static-md", + "openjpeg:x64-windows-static-md" + ) + + $installedLibs = & C:\vcpkg\vcpkg list 2>$null + + foreach ($lib in $requiredLibs) { + $libName = $lib.Split(':')[0] + Write-Host " Checking $libName..." -NoNewline + + if ($installedLibs -match $libName) { + Write-Host " OK" -ForegroundColor Green + } else { + Write-Host " MISSING" -ForegroundColor Red + if ($InstallMissing) { + Write-Host " Installing $lib..." -ForegroundColor Yellow + & C:\vcpkg\vcpkg install $lib + } else { + Write-Host " Install with: C:\vcpkg\vcpkg install $lib" -ForegroundColor Cyan + } + $hasErrors = $true + } + } +} + +# 8. Check environment variables +Write-Host "`nChecking environment variables..." -ForegroundColor White + +$envVars = @( + @{ Name = "VCPKG_ROOT"; Expected = "C:\vcpkg" } +) + +foreach ($var in $envVars) { + $name = $var.Name + $expected = $var.Expected + $value = [Environment]::GetEnvironmentVariable($name, "User") + + Write-Host " Checking $name..." -NoNewline + + if ($value -eq $expected) { + Write-Host " OK" -ForegroundColor Green + } else { + Write-Host " MISSING or INCORRECT" -ForegroundColor Red + Write-Host " Set with: [Environment]::SetEnvironmentVariable('$name', '$expected', 'User')" -ForegroundColor Cyan + $hasErrors = $true + } +} + +# 9. Check npm dependencies +Write-Host "`nChecking npm dependencies..." -NoNewline +Set-Location $PSScriptRoot\.. +$nodeModulesExists = Test-Path "node_modules" +if ($nodeModulesExists) { + Write-Host " OK (node_modules exists)" -ForegroundColor Green +} else { + Write-Host " MISSING" -ForegroundColor Red + Write-Host " Install with: npm install" -ForegroundColor Cyan + $hasErrors = $true +} + +# Summary +Write-Host "`n=== Summary ===" -ForegroundColor Cyan +if ($hasErrors) { + Write-Host "Some dependencies are missing. Fix the issues above and run again." -ForegroundColor Red + Write-Host "`nTo install missing vcpkg libraries automatically, run:" -ForegroundColor Yellow + Write-Host " .\scripts\check-dependencies.ps1 -InstallMissing" -ForegroundColor Cyan + exit 1 +} else { + Write-Host "All dependencies are installed! You can now build with:" -ForegroundColor Green + Write-Host " npm run tauri-build" -ForegroundColor Cyan + exit 0 +}