mirror of
https://github.com/Palakis/obs-websocket.git
synced 2024-08-30 18:12:16 +00:00
104 lines
4.0 KiB
PowerShell
104 lines
4.0 KiB
PowerShell
function Setup-Host {
|
|
if ( ! ( Test-Path function:Log-Output ) ) {
|
|
. $PSScriptRoot/Logger.ps1
|
|
}
|
|
|
|
if ( ! ( Test-Path function:Ensure-Location ) ) {
|
|
. $PSScriptRoot/Ensure-Location.ps1
|
|
}
|
|
|
|
if ( ! ( Test-Path function:Install-BuildDependencies ) ) {
|
|
. $PSScriptRoot/Install-BuildDependencies.ps1
|
|
}
|
|
|
|
if ( ! ( Test-Path function:Expand-ArchiveExt ) ) {
|
|
. $PSScriptRoot/Expand-ArchiveExt.ps1
|
|
}
|
|
|
|
Install-BuildDependencies -WingetFile "${ScriptHome}/.Wingetfile"
|
|
|
|
if ( $script:Target -eq '' ) { $script:Target = $script:HostArchitecture }
|
|
|
|
$script:QtVersion = $BuildSpec.platformConfig."windows-${script:Target}".qtVersion
|
|
$script:VisualStudioVersion = $BuildSpec.platformConfig."windows-${script:Target}".visualStudio
|
|
$script:PlatformSDK = $BuildSpec.platformConfig."windows-${script:Target}".platformSDK
|
|
|
|
if ( ! ( ( $script:SkipAll ) -or ( $script:SkipDeps ) ) ) {
|
|
('prebuilt', "qt${script:QtVersion}") | ForEach-Object {
|
|
$_Dependency = $_
|
|
$_Version = $BuildSpec.dependencies."${_Dependency}".version
|
|
$_BaseUrl = $BuildSpec.dependencies."${_Dependency}".baseUrl
|
|
$_Label = $BuildSpec.dependencies."${_Dependency}".label
|
|
$_Hash = $BuildSpec.dependencies."${_Dependency}".hashes."windows-${script:Target}"
|
|
|
|
if ( $BuildSpec.dependencies."${_Dependency}".PSobject.Properties.Name -contains "pdb-hashes" ) {
|
|
$_PdbHash = $BuildSpec.dependencies."${_Dependency}".'pdb-hashes'."$windows-${script:Target}"
|
|
}
|
|
|
|
if ( $_Version -eq '' ) {
|
|
throw "No ${_Dependency} spec found in ${script:BuildSpecFile}."
|
|
}
|
|
|
|
Log-Information "Setting up ${_Label}..."
|
|
|
|
Push-Location -Stack BuildTemp
|
|
Ensure-Location -Path "$(Resolve-Path -Path "${ProjectRoot}/..")/obs-build-dependencies"
|
|
|
|
switch -wildcard ( $_Dependency ) {
|
|
prebuilt {
|
|
$_Filename = "windows-deps-${_Version}-${script:Target}.zip"
|
|
$_Uri = "${_BaseUrl}/${_Version}/${_Filename}"
|
|
$_Target = "plugin-deps-${_Version}-qt${script:QtVersion}-${script:Target}"
|
|
$script:DepsVersion = ${_Version}
|
|
}
|
|
"qt*" {
|
|
$_Filename = "windows-deps-qt${script:QtVersion}-${_Version}-${script:Target}.zip"
|
|
$_Uri = "${_BaseUrl}/${_Version}/${_Filename}"
|
|
$_Target = "plugin-deps-${_Version}-qt${script:QtVersion}-${script:Target}"
|
|
}
|
|
}
|
|
|
|
if ( ! ( Test-Path -Path $_Filename ) ) {
|
|
$Params = @{
|
|
UserAgent = 'NativeHost'
|
|
Uri = $_Uri
|
|
OutFile = $_Filename
|
|
UseBasicParsing = $true
|
|
ErrorAction = 'Stop'
|
|
}
|
|
|
|
Invoke-WebRequest @Params
|
|
Log-Status "Downloaded ${_Label} for ${script:Target}."
|
|
} else {
|
|
Log-Status "Found downloaded ${_Label}."
|
|
}
|
|
|
|
$_FileHash = Get-FileHash -Path $_Filename -Algorithm SHA256
|
|
|
|
if ( $_FileHash.Hash.ToLower() -ne $_Hash ) {
|
|
throw "Checksum of downloaded ${_Label} does not match specification. Expected '${_Hash}', 'found $(${_FileHash}.Hash.ToLower())'"
|
|
}
|
|
Log-Status "Checksum of downloaded ${_Label} matches."
|
|
|
|
if ( ! ( ( $script:SkipAll ) -or ( $script:SkipUnpack ) ) ) {
|
|
Push-Location -Stack BuildTemp
|
|
Ensure-Location -Path $_Target
|
|
|
|
Expand-ArchiveExt -Path "../${_Filename}" -DestinationPath . -Force
|
|
|
|
Pop-Location -Stack BuildTemp
|
|
}
|
|
Pop-Location -Stack BuildTemp
|
|
}
|
|
}
|
|
}
|
|
|
|
function Get-HostArchitecture {
|
|
$Host64Bit = [System.Environment]::Is64BitOperatingSystem
|
|
$HostArchitecture = ('x86', 'x64')[$Host64Bit]
|
|
|
|
return $HostArchitecture
|
|
}
|
|
|
|
$script:HostArchitecture = Get-HostArchitecture
|