AeThex-OS/build-iso.ps1
2026-01-03 23:56:43 -07:00

80 lines
3.2 KiB
PowerShell

#!/usr/bin/env pwsh
# AeThex OS - ISO Build Wrapper for Windows/WSL
# Automatically handles line ending conversion
param(
[string]$BuildDir = "/home/mrpiglr/aethex-build",
[switch]$Clean,
[switch]$Background
)
Write-Host "═══════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host " AeThex OS - ISO Builder (Windows to WSL)" -ForegroundColor Cyan
Write-Host "═══════════════════════════════════════════════════════════════" -ForegroundColor Cyan
Write-Host ""
# Convert line endings and copy to temp location
Write-Host "[*] Converting line endings (CRLF to LF)..." -ForegroundColor Yellow
$scriptPath = "script/build-linux-iso-full.sh"
$timestamp = Get-Date -Format 'yyyyMMddHHmmss'
$tempScript = "/tmp/aethex-build-$timestamp.sh"
if (!(Test-Path $scriptPath)) {
Write-Host "Error: $scriptPath not found" -ForegroundColor Red
exit 1
}
# Read, convert, and pipe to WSL
$content = Get-Content $scriptPath -Raw
$unixContent = $content -replace "`r`n", "`n"
$unixContent | wsl bash -c "cat > $tempScript && chmod +x $tempScript"
Write-Host "[OK] Script prepared: $tempScript" -ForegroundColor Green
Write-Host ""
# Clean previous build if requested
if ($Clean) {
Write-Host "[*] Cleaning previous build..." -ForegroundColor Yellow
wsl bash -c "sudo rm -rf $BuildDir/aethex-linux-build; mkdir -p $BuildDir"
Write-Host "[OK] Cleaned" -ForegroundColor Green
Write-Host ""
}
# Run the build
$logFile = "$BuildDir/build-$timestamp.log"
if ($Background) {
Write-Host "[*] Starting build in background..." -ForegroundColor Yellow
Write-Host " Log: $logFile" -ForegroundColor Gray
Write-Host ""
wsl bash -c "nohup sudo bash $tempScript $BuildDir > $logFile 2>&1 &"
Start-Sleep -Seconds 3
Write-Host "[*] Monitoring initial output:" -ForegroundColor Yellow
wsl bash -c "tail -30 $logFile 2>/dev/null || echo 'Waiting for log...'"
Write-Host ""
Write-Host "[i] Build running in background. Monitor with:" -ForegroundColor Cyan
Write-Host " wsl bash -c `"tail -f $logFile`"" -ForegroundColor Gray
Write-Host " or" -ForegroundColor Gray
Write-Host " wsl bash -c `"ps aux | grep build-linux-iso`"" -ForegroundColor Gray
} else {
Write-Host "[*] Starting build (30-60 min)..." -ForegroundColor Yellow
Write-Host " Log: $logFile" -ForegroundColor Gray
Write-Host ""
wsl bash -c "sudo bash $tempScript $BuildDir 2>&1 | tee $logFile"
if ($LASTEXITCODE -eq 0) {
Write-Host ""
Write-Host "[OK] Build completed!" -ForegroundColor Green
Write-Host ""
Write-Host "[*] Checking for ISO..." -ForegroundColor Yellow
wsl bash -c "find $BuildDir -name '*.iso' -exec ls -lh {} \;"
} else {
Write-Host ""
Write-Host "Build failed. Check log:" -ForegroundColor Red
Write-Host " wsl bash -c `"tail -100 $logFile`"" -ForegroundColor Gray
exit 1
}
}