2020-12-22 07:05:02 +01:00
#!/usr/bin/env powershell
param (
[ Parameter ( Position = 0 ) ]
[ string ] $BuildRoot ,
[ Parameter ( Position = 1 ) ]
[ string ] $SourceRoot
)
$InstallerDir = Join-Path $SourceRoot " packages\win_installer " | Resolve-Path
$DepsDir = Join-Path $BuildRoot " installer-deps "
if ( ! ( Test-Path $DepsDir ) ) {
New-Item -ItemType Directory -Path $DepsDir
}
$Env:BUILD_ROOT = $BuildRoot
$Env:SOURCE_ROOT = $SourceRoot
Set-Location $DepsDir
2023-01-12 13:36:39 +01:00
$GitHeaders = @ { }
if ( Test-Path 'Env:GITHUB_TOKEN' ) {
$GitHeaders = @ { 'Authorization' = 'Bearer ' + $Env:GITHUB_TOKEN }
}
2020-12-22 07:05:02 +01:00
# DepCtrl
if ( ! ( Test-Path DependencyControl ) ) {
git clone https : / / github . com / TypesettingTools / DependencyControl . git
2021-01-17 15:53:19 +01:00
Set-Location DependencyControl
git checkout v0 . 6 . 3 -alpha
2021-01-30 15:11:34 +01:00
Set-Location $DepsDir
2020-12-22 07:05:02 +01:00
}
# YUtils
if ( ! ( Test-Path YUtils ) ) {
git clone https : / / github . com / TypesettingTools / YUtils . git
}
# luajson
if ( ! ( Test-Path luajson ) ) {
git clone https : / / github . com / harningt / luajson . git
}
# Avisynth
if ( ! ( Test-Path AviSynthPlus64 ) ) {
2023-01-12 13:36:39 +01:00
$avsReleases = Invoke-WebRequest " https://api.github.com/repos/AviSynth/AviSynthPlus/releases/latest " -Headers $GitHeaders -UseBasicParsing | ConvertFrom-Json
2020-12-22 07:05:02 +01:00
$avsUrl = $avsReleases . assets [ 0 ] . browser_download_url
Invoke-WebRequest $avsUrl -OutFile AviSynthPlus . 7z -UseBasicParsing
7z x AviSynthPlus . 7z
Rename-Item ( Get-ChildItem -Filter " AviSynthPlus_* " -Directory ) AviSynthPlus64
Remove-Item AviSynthPlus . 7z
}
# VSFilter
if ( ! ( Test-Path VSFilter ) ) {
$vsFilterDir = New-Item -ItemType Directory VSFilter
Set-Location $vsFilterDir
2023-01-12 13:36:39 +01:00
$vsFilterReleases = Invoke-WebRequest " https://api.github.com/repos/pinterf/xy-VSFilter/releases/latest " -Headers $GitHeaders -UseBasicParsing | ConvertFrom-Json
2020-12-22 07:05:02 +01:00
$vsFilterUrl = $vsFilterReleases . assets [ 0 ] . browser_download_url
Invoke-WebRequest $vsFilterUrl -OutFile VSFilter . 7z -UseBasicParsing
7z x VSFilter . 7z
Remove-Item VSFilter . 7z
Set-Location $DepsDir
}
# ffi-experiments
if ( ! ( Test-Path ffi-experiments ) ) {
Get-Command " moonc " # check to ensure Moonscript is present
git clone https : / / github . com / TypesettingTools / ffi-experiments . git
Set-Location ffi-experiments
meson build -Ddefault_library = static
2023-03-23 16:32:43 +01:00
if ( ! $ ? ) { Exit $LASTEXITCODE }
2020-12-22 07:05:02 +01:00
meson compile -C build
2023-03-23 16:32:43 +01:00
if ( ! $ ? ) { Exit $LASTEXITCODE }
2020-12-22 07:05:02 +01:00
Set-Location $DepsDir
}
# VC++ redistributable
if ( ! ( Test-Path VC_redist ) ) {
$redistDir = New-Item -ItemType Directory VC_redist
2022-08-26 15:25:09 +02:00
Invoke-WebRequest https : / / aka . ms / vs / 17 / release / VC_redist . x64 . exe -OutFile " $redistDir \VC_redist.x64.exe " -UseBasicParsing
2020-12-22 07:05:02 +01:00
}
2023-03-23 15:42:16 +01:00
# dictionaries
if ( ! ( Test-Path dictionaries ) ) {
New-Item -ItemType Directory dictionaries
[ Net.ServicePointManager ] :: SecurityProtocol = " Tls12 " # Needed since otherwise downloading fails in some places like on the GitHub CI: https://stackoverflow.com/a/66614041/4730656
Invoke-WebRequest https : / / downloads . sourceforge . net / project / openofficeorg . mirror / contrib / dictionaries / en_US . zip -UserAgent " Wget " -OutFile en_US . zip -UseBasicParsing
Expand-Archive -LiteralPath en_US . zip -DestinationPath dictionaries
Remove-Item en_US . zip
}
2020-12-22 07:05:02 +01:00
2021-05-23 08:06:10 +02:00
# localization
Set-Location $BuildRoot
meson compile aegisub-gmo
2023-03-23 16:32:43 +01:00
if ( ! $ ? ) { Exit $LASTEXITCODE }
2020-12-22 07:05:02 +01:00
# Invoke InnoSetup
$IssUrl = Join-Path $InstallerDir " aegisub_depctrl.iss "
iscc $IssUrl
2023-03-23 16:32:43 +01:00
if ( ! $ ? ) { Exit $LASTEXITCODE }