2022-03-16 15:13:26 -07:00
|
|
|
$CIWorkflow = "${CheckoutDir}/.github/workflows/main.yml"
|
|
|
|
$WorkflowContent = Get-Content ${CIWorkflow}
|
|
|
|
|
|
|
|
$CIDepsVersion = ${WorkflowContent} | Select-String "[ ]+DEPS_VERSION_WIN: '([0-9\-]+)'" | ForEach-Object{$_.Matches.Groups[1].Value}
|
|
|
|
$CIQtVersion = ${WorkflowContent} | Select-String "[ ]+QT_VERSION_WIN: '([0-9\.]+)'" | ForEach-Object{$_.Matches.Groups[1].Value}
|
|
|
|
$CIVlcVersion = ${WorkflowContent} | Select-String "[ ]+VLC_VERSION_WIN: '(.+)'" | ForEach-Object{$_.Matches.Groups[1].Value}
|
|
|
|
$CICefVersion = ${WorkflowContent} | Select-String "[ ]+CEF_BUILD_VERSION_WIN: '([0-9\.]+)'" | ForEach-Object{$_.Matches.Groups[1].Value}
|
|
|
|
$CIGenerator = ${WorkflowContent} | Select-String "[ ]+CMAKE_GENERATOR: '(.+)'" | ForEach-Object{$_.Matches.Groups[1].Value}
|
|
|
|
|
|
|
|
function Write-Status {
|
|
|
|
Param(
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
|
|
[String] $Output
|
|
|
|
)
|
|
|
|
|
|
|
|
if (!($Quiet.isPresent)) {
|
|
|
|
if (Test-Path Env:CI) {
|
|
|
|
Write-Host "[${ProductName}] ${Output}"
|
|
|
|
} else {
|
|
|
|
Write-Host -ForegroundColor blue "[${ProductName}] ${Output}"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function Write-Info {
|
|
|
|
Param(
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
|
|
[String] $Output
|
|
|
|
)
|
|
|
|
|
|
|
|
if (!($Quiet.isPresent)) {
|
|
|
|
if (Test-Path Env:CI) {
|
|
|
|
Write-Host " + ${Output}"
|
|
|
|
} else {
|
|
|
|
Write-Host -ForegroundColor DarkYellow " + ${Output}"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function Write-Step {
|
|
|
|
Param(
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
|
|
[String] $Output
|
|
|
|
)
|
|
|
|
|
|
|
|
if (!($Quiet.isPresent)) {
|
|
|
|
if (Test-Path Env:CI) {
|
|
|
|
Write-Host " + ${Output}"
|
|
|
|
} else {
|
|
|
|
Write-Host -ForegroundColor green " + ${Output}"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function Write-Failure {
|
|
|
|
Param(
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
|
|
[String] $Output
|
|
|
|
)
|
|
|
|
|
|
|
|
if (Test-Path Env:CI) {
|
|
|
|
Write-Host " + ${Output}"
|
|
|
|
} else {
|
|
|
|
Write-Host -ForegroundColor red " + ${Output}"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function Test-CommandExists {
|
|
|
|
Param(
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
|
|
[String] $Command
|
|
|
|
)
|
|
|
|
|
|
|
|
$CommandExists = $false
|
|
|
|
$OldActionPref = $ErrorActionPreference
|
|
|
|
$ErrorActionPreference = "stop"
|
|
|
|
|
|
|
|
try {
|
|
|
|
if (Get-Command $Command) {
|
|
|
|
$CommandExists = $true
|
|
|
|
}
|
|
|
|
} Catch {
|
|
|
|
$CommandExists = $false
|
|
|
|
} Finally {
|
|
|
|
$ErrorActionPreference = $OldActionPref
|
|
|
|
}
|
|
|
|
|
|
|
|
return $CommandExists
|
|
|
|
}
|
|
|
|
|
|
|
|
function Ensure-Directory {
|
|
|
|
Param(
|
|
|
|
[Parameter(Mandatory=$true)]
|
|
|
|
[String] $Directory
|
|
|
|
)
|
|
|
|
|
|
|
|
if (!(Test-Path $Directory)) {
|
|
|
|
$null = New-Item -ItemType Directory -Force -Path $Directory
|
|
|
|
}
|
|
|
|
|
|
|
|
Set-Location -Path $Directory
|
|
|
|
}
|
|
|
|
|
2022-07-30 08:22:39 -07:00
|
|
|
function Invoke-External {
|
|
|
|
<#
|
|
|
|
.SYNOPSIS
|
|
|
|
Invokes a non-PowerShell command.
|
|
|
|
.DESCRIPTION
|
|
|
|
Runs a non-PowerShell command, and captures its return code.
|
|
|
|
Throws an exception if the command returns non-zero.
|
|
|
|
.EXAMPLE
|
|
|
|
Invoke-External 7z x $MyArchive
|
|
|
|
#>
|
|
|
|
|
|
|
|
if ( $args.Count -eq 0 ) {
|
|
|
|
throw 'Invoke-External called without arguments.'
|
|
|
|
}
|
|
|
|
|
|
|
|
$Command = $args[0]
|
|
|
|
$CommandArgs = @()
|
|
|
|
|
|
|
|
if ( $args.Count -gt 1) {
|
|
|
|
$CommandArgs = $args[1..($args.Count - 1)]
|
|
|
|
}
|
|
|
|
|
|
|
|
$_EAP = $ErrorActionPreference
|
|
|
|
$ErrorActionPreference = "Continue"
|
|
|
|
|
|
|
|
Write-Debug "Invoke-External: ${Command} ${CommandArgs}"
|
|
|
|
|
|
|
|
& $command $commandArgs
|
|
|
|
$Result = $LASTEXITCODE
|
|
|
|
|
|
|
|
$ErrorActionPreference = $_EAP
|
|
|
|
|
|
|
|
if ( $Result -ne 0 ) {
|
|
|
|
throw "${Command} ${CommandArgs} exited with non-zero code ${Result}."
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-03-16 15:13:26 -07:00
|
|
|
$BuildDirectory = "$(if (Test-Path Env:BuildDirectory) { $env:BuildDirectory } else { $BuildDirectory })"
|
|
|
|
$BuildConfiguration = "$(if (Test-Path Env:BuildConfiguration) { $env:BuildConfiguration } else { $BuildConfiguration })"
|
|
|
|
$BuildArch = "$(if (Test-Path Env:BuildArch) { $env:BuildArch } else { $BuildArch })"
|
|
|
|
$WindowsDepsVersion = "$(if (Test-Path Env:WindowsDepsVersion ) { $env:WindowsDepsVersion } else { $CIDepsVersion })"
|
|
|
|
$WindowsQtVersion = "$(if (Test-Path Env:WindowsQtVersion ) { $env:WindowsQtVersion } else { $CIQtVersion })"
|
|
|
|
$WindowsVlcVersion = "$(if (Test-Path Env:WindowsVlcVersion ) { $env:WindowsVlcVersion } else { $CIVlcVersion })"
|
|
|
|
$WindowsCefVersion = "$(if (Test-Path Env:WindowsCefVersion ) { $env:WindowsCefVersion } else { $CICefVersion })"
|
|
|
|
$CmakeSystemVersion = "$(if (Test-Path Env:CMAKE_SYSTEM_VERSION) { $Env:CMAKE_SYSTEM_VERSION } else { "10.0.18363.657" })"
|
|
|
|
$CmakeGenerator = "$(if (Test-Path Env:CmakeGenerator) { $Env:CmakeGenerator } else { $CIGenerator })"
|
|
|
|
|
|
|
|
|
|
|
|
function Install-Windows-Dependencies {
|
|
|
|
$WingetFile = "$PSScriptRoot/Wingetfile"
|
|
|
|
|
|
|
|
$Host64Bit = [System.Environment]::Is64BitOperatingSystem
|
|
|
|
|
|
|
|
$Prefix = (${Env:ProgramFiles(x86)}, $Env:ProgramFiles)[$Host64Bit]
|
|
|
|
|
|
|
|
$Paths = $Env:Path -split [System.IO.Path]::PathSeparator
|
|
|
|
|
|
|
|
$WingetOptions = @('install', '--accept-package-agreements', '--accept-source-agreements')
|
|
|
|
|
|
|
|
if ( $script:Quiet ) {
|
|
|
|
$WingetOptions += '--silent'
|
|
|
|
}
|
|
|
|
|
|
|
|
Get-Content $WingetFile | ForEach-Object {
|
|
|
|
$_, $Package, $_, $Path, $_, $Binary = $_ -replace ',','' -replace "'", '' -split ' '
|
|
|
|
|
|
|
|
$FullPath = "${Prefix}\${Path}"
|
|
|
|
if ( ( Test-Path $FullPath ) -and ! ( $Paths -contains $FullPath ) ) {
|
|
|
|
$Paths += $FullPath
|
|
|
|
$Env:Path = $Paths -join [System.IO.Path]::PathSeparator
|
|
|
|
}
|
|
|
|
|
|
|
|
Write-Step "Checking for command ${Binary}"
|
|
|
|
$Found = Get-Command -ErrorAction SilentlyContinue $Binary
|
|
|
|
|
|
|
|
if ( $Found ) {
|
|
|
|
Write-Info "Found dependency ${Binary} as $($Found.Source)"
|
|
|
|
} else {
|
|
|
|
Write-Info "Installing package ${Package}"
|
|
|
|
|
|
|
|
try {
|
|
|
|
$Params = $WingetOptions + $Package
|
|
|
|
|
|
|
|
winget @Params
|
|
|
|
} catch {
|
|
|
|
throw "Error while installing winget package ${Package}: $_"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|