CI: Fix Windows build scripts relying on localized architecture string

Current build scripts rely on comparing a architecture string provided
by the OS which will be localised in certain languages.

This change uses a boolean 64-bit flag to use script-defined identifiers
to avoid this issue.
master
PatTheMav 2022-03-28 16:29:06 +02:00 committed by Ryan Foster
parent c7bf564015
commit ff916e5f2c
5 changed files with 42 additions and 42 deletions

View File

@ -284,7 +284,7 @@ jobs:
if: always()
strategy:
matrix:
arch: [64, 32]
arch: [x64, x86]
env:
CMAKE_GENERATOR: 'Visual Studio 16 2019'
CMAKE_SYSTEM_VERSION: '10.0.18363.657'
@ -325,8 +325,8 @@ jobs:
env:
CACHE_NAME: 'cef-cache'
with:
path: ${{ github.workspace }}/obs-build-dependencies/cef_binary_${{ env.CEF_BUILD_VERSION_WIN }}_windows${{ matrix.arch }}_minimal
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION_WIN }}-${{ env.CACHE_REVISION }}
path: ${{ github.workspace }}/obs-build-dependencies/cef_binary_${{ env.CEF_BUILD_VERSION_WIN }}_windows_${{ matrix.arch }}
key: ${{ runner.os }}-pr-${{ env.CACHE_NAME }}-${{ env.CEF_BUILD_VERSION_WIN }}-${{ matrix.arch }}-${{ env.CACHE_REVISION }}
- name: Setup Environment
id: setup
@ -338,23 +338,23 @@ jobs:
env:
RESTORED_VLC: ${{ steps.vlc-cache.outputs.cache-hit }}
RESTORED_CEF: ${{ steps.cef-cache.outputs.cache-hit }}
run: CI/windows/01_install_dependencies.ps1 -BuildArch ${{ matrix.arch }}-bit
run: CI/windows/01_install_dependencies.ps1 -BuildArch ${{ matrix.arch }}
- name: 'Build OBS'
run: CI/windows/02_build_obs.ps1 -BuildArch ${{ matrix.arch }}-bit
run: CI/windows/02_build_obs.ps1 -BuildArch ${{ matrix.arch }}
- name: 'Create build artifact'
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
run: |
CI/windows/03_package_obs.ps1 -BuildArch ${{ matrix.arch }}-bit -Package
$ArtifactName = Get-ChildItem -filter "OBS-Studio-*-Win${{ matrix.arch }}.zip" -File
CI/windows/03_package_obs.ps1 -BuildArch ${{ matrix.arch }} -Package
$ArtifactName = Get-ChildItem -filter "OBS-Studio-*-Win-${{ matrix.arch }}.zip" -File
Write-Output "FILE_NAME=${ArtifactName}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: 'Upload build artifact'
if: ${{ success() && (github.event_name != 'pull_request' || env.SEEKING_TESTERS == '1') }}
uses: actions/upload-artifact@v3
with:
name: 'obs-win${{ matrix.arch }}-${{ steps.setup.outputs.commitHash }}'
name: 'obs-win-${{ matrix.arch }}-${{ steps.setup.outputs.commitHash }}'
path: '${{ env.FILE_NAME }}'
linux_package:
@ -431,12 +431,12 @@ jobs:
$null = New-Item -ItemType Directory -Force -Path install_temp
}
Expand-Archive -Path "$(Get-ChildItem -filter "OBS-Studio-*-Win32.zip" -File)" -DestinationPath install_temp
Expand-Archive -Path "$(Get-ChildItem -filter "OBS-Studio-*-Win64.zip" -File)" -Force -DestinationPath install_temp
Expand-Archive -Path "$(Get-ChildItem -filter "OBS-Studio-*-Win-x86.zip" -File)" -DestinationPath install_temp
Expand-Archive -Path "$(Get-ChildItem -filter "OBS-Studio-*-Win-x64.zip" -File)" -Force -DestinationPath install_temp
CI/windows/03_package_obs.ps1 -CombinedArchs -Package
$ArtifactName = (Get-ChildItem -filter "OBS-Studio-*-Windows.zip" -File).Name
$ArtifactName = (Get-ChildItem -filter "OBS-Studio-*-Win-x64+x86.zip" -File).Name
Write-Output "FILE_NAME=${ArtifactName}" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: 'Upload build artifact'

View File

@ -7,8 +7,8 @@ Param(
[Switch]$BuildInstaller,
[Switch]$CombinedArchs,
[String]$BuildDirectory = "build",
[ValidateSet("32-bit", "64-bit")]
[String]$BuildArch = (Get-CimInstance CIM_OperatingSystem).OSArchitecture,
[ValidateSet('x86', 'x64')]
[String]$BuildArch = ('x86', 'x64')[[System.Environment]::Is64BitOperatingSystem],
[ValidateSet("Release", "RelWithDebInfo", "MinSizeRel", "Debug")]
[String]$BuildConfiguration = "RelWithDebInfo"
)
@ -30,11 +30,11 @@ Param(
# -BuildDirectory : Directory to use for builds
# Default: build64 on 64-bit systems
# build32 on 32-bit systems
# -BuildArch : Build architecture to use ("32-bit" or "64-bit")
# -BuildArch : Build architecture to use (x86 or x64)
# -BuildConfiguration : Build configuration to use
# Default: RelWithDebInfo
# -CombinedArchs : Create combined packages and installer
# (64-bit and 32-bit) - Default: off
# (x86 and x64) - Default: off
# -Package : Prepare folder structure for installer creation
#
# Environment Variables (optional):
@ -87,16 +87,16 @@ function Build-OBS-Main {
}
if(!($SkipDependencyChecks.isPresent)) {
Install-Dependencies -BuildArch 64-bit
Install-Dependencies -BuildArch x64
}
Build-OBS -BuildArch 64-bit
Build-OBS -BuildArch x64
if(!($SkipDependencyChecks.isPresent)) {
Install-Dependencies -BuildArch 32-bit
Install-Dependencies -BuildArch x86
}
Build-OBS -BuildArch 32-bit
Build-OBS -BuildArch x86
} else {
if(!($SkipDependencyChecks.isPresent)) {
Install-Dependencies
@ -120,7 +120,7 @@ function Print-Usage {
"-Verbose : Enable more verbose build process output"
"-SkipDependencyChecks : Skip dependency checks - Default: off",
"-BuildDirectory : Directory to use for builds - Default: build64 on 64-bit systems, build32 on 32-bit systems",
"-BuildArch : Build architecture to use ('32-bit' or '64-bit') - Default: local architecture",
"-BuildArch : Build architecture to use (x86 or x64) - Default: local architecture",
"-BuildConfiguration : Build configuration to use - Default: RelWithDebInfo",
"-CombinedArchs : Create combined packages and installer (64-bit and 32-bit) - Default: off"
"-Package : Prepare folder structure for installer creation"

View File

@ -2,8 +2,8 @@ Param(
[Switch]$Help = $(if (Test-Path variable:Help) { $Help }),
[Switch]$Quiet = $(if (Test-Path variable:Quiet) { $Quiet }),
[Switch]$Verbose = $(if (Test-Path variable:Verbose) { $Verbose }),
[ValidateSet("32-bit", "64-bit")]
[String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { (Get-CimInstance CIM_OperatingSystem).OSArchitecture })
[ValidateSet('x86', 'x64')]
[String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { ('x86', 'x64')[[System.Environment]::Is64BitOperatingSystem] })
)
##############################################################################
@ -26,7 +26,7 @@ Function Install-obs-deps {
Write-Status "Setup for pre-built Windows OBS dependencies v${Version}"
Ensure-Directory $DepsBuildDir
$ArchSuffix = "$(if ($BuildArch -eq "64-bit") { "x64" } else { "x86" })"
$ArchSuffix = $BuildArch
if (!(Test-Path "${DepsBuildDir}/windows-deps-${Version}-${ArchSuffix}")) {
@ -52,7 +52,7 @@ function Install-qt-deps {
Write-Status "Setup for pre-built dependency Qt v${Version}"
Ensure-Directory $DepsBuildDir
$ArchSuffix = "$(if ($BuildArch -eq "64-bit") { "x64" } else { "x86" })"
$ArchSuffix = $BuildArch
if (!(Test-Path "${DepsBuildDir}/windows-deps-${Version}-${ArchSuffix}/mkspecs")) {
@ -101,7 +101,7 @@ function Install-cef {
Write-Status "Setup for dependency CEF v${Version} - ${BuildArch}"
Ensure-Directory $DepsBuildDir
$ArchSuffix = "$(if ($BuildArch -eq "64-bit") { "x64" } else { "x86" })"
$ArchSuffix = $BuildArch
if (!((Test-Path "${DepsBuildDir}/cef_binary_${Version}_windows_${ArchSuffix}") -and (Test-Path "${DepsBuildDir}/cef_binary_${Version}_windows_${ArchSuffix}/build/libcef_dll_wrapper/Release/libcef_dll_wrapper.lib"))) {
Write-Step "Download..."
@ -160,7 +160,7 @@ function Print-Usage {
"-Quiet : Suppress most build process output",
"-Verbose : Enable more verbose build process output",
"-Choco : Enable automatic dependency installation via Chocolatey - Default: off"
"-BuildArch : Build architecture to use (32-bit or 64-bit) - Default: local architecture"
"-BuildArch : Build architecture to use (x86 or x64) - Default: local architecture"
)
$Lines | Write-Host

View File

@ -3,8 +3,8 @@ Param(
[Switch]$Quiet = $(if (Test-Path variable:Quiet) { $Quiet }),
[Switch]$Verbose = $(if (Test-Path variable:Verbose) { $Verbose }),
[String]$BuildDirectory = $(if (Test-Path variable:BuildDirectory) { "${BuildDirectory}" } else { "build" }),
[ValidateSet("32-bit", "64-bit")]
[String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { (Get-CimInstance CIM_OperatingSystem).OSArchitecture }),
[ValidateSet('x86', 'x64')]
[String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { ('x86', 'x64')[[System.Environment]::Is64BitOperatingSystem] }),
[ValidateSet("Release", "RelWithDebInfo", "MinSizeRel", "Debug")]
[String]$BuildConfiguration = $(if (Test-Path variable:BuildConfiguration) { "${BuildConfiguration}" } else { "RelWithDebInfo" })
)
@ -41,7 +41,7 @@ function Build-OBS {
Ensure-Directory ${CheckoutDir}
Write-Step "Build OBS targets..."
Invoke-Expression "cmake --build $(if($BuildArch -eq "64-bit") { "build64" } else { "build32" }) --config ${BuildConfiguration}"
Invoke-Expression "cmake --build $(if($BuildArch -eq "x64") { "build64" } else { "build32" }) --config ${BuildConfiguration}"
}
function Configure-OBS {
@ -56,10 +56,10 @@ function Configure-OBS {
}
# TODO: Clean up archive and directory naming across dependencies
$CmakePrefixPath = Resolve-Path -Path "${CheckoutDir}/../obs-build-dependencies/windows-deps-${WindowsDepsVersion}-$(if (${BuildArch} -eq "64-bit") { "x64" } else { "x86" })"
$CefDirectory = Resolve-Path -Path "${CheckoutDir}/../obs-build-dependencies/cef_binary_${WindowsCefVersion}_windows_$(if (${BuildArch} -eq "64-bit") { "x64" } else { "x86" })"
$BuildDirectoryActual = "${BuildDirectory}$(if (${BuildArch} -eq "64-bit") { "64" } else { "32" })"
$GeneratorPlatform = "$(if (${BuildArch} -eq "64-bit") { "x64" } else { "Win32" })"
$CmakePrefixPath = Resolve-Path -Path "${CheckoutDir}/../obs-build-dependencies/windows-deps-${WindowsDepsVersion}-${BuildArch}"
$CefDirectory = Resolve-Path -Path "${CheckoutDir}/../obs-build-dependencies/cef_binary_${WindowsCefVersion}_windows_${BuildArch}"
$BuildDirectoryActual = "${BuildDirectory}$(if (${BuildArch} -eq "x64") { "64" } else { "32" })"
$GeneratorPlatform = "$(if (${BuildArch} -eq "x64") { "x64" } else { "Win32" })"
$CmakeCommand = @(
"-S . -B `"${BuildDirectoryActual}`"",
@ -112,7 +112,7 @@ function Print-Usage {
"-Quiet : Suppress most build process output",
"-Verbose : Enable more verbose build process output",
"-BuildDirectory : Directory to use for builds - Default: build64 on 64-bit systems, build32 on 32-bit systems",
"-BuildArch : Build architecture to use (32-bit or 64-bit) - Default: local architecture",
"-BuildArch : Build architecture to use (x86 or x64) - Default: local architecture",
"-BuildConfiguration : Build configuration to use - Default: RelWithDebInfo"
)

View File

@ -5,8 +5,8 @@ Param(
[Switch]$BuildInstaller = $(if ($BuildInstaller.isPresent) { $BuildInstaller }),
[Switch]$CombinedArchs = $(if ($CombinedArchs.isPresent) { $CombinedArchs }),
[String]$BuildDirectory = $(if (Test-Path variable:BuildDirectory) { "${BuildDirectory}" } else { "build" }),
[ValidateSet("32-bit", "64-bit")]
[String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { (Get-CimInstance CIM_OperatingSystem).OSArchitecture }),
[ValidateSet('x86', 'x64')]
[String]$BuildArch = $(if (Test-Path variable:BuildArch) { "${BuildArch}" } else { ('x86', 'x64')[[System.Environment]::Is64BitOperatingSystem] }),
[ValidateSet("Release", "RelWithDebInfo", "MinSizeRel", "Debug")]
[String]$BuildConfiguration = $(if (Test-Path variable:BuildConfiguration) { "${BuildConfiguration}" } else { "RelWithDebInfo" })
)
@ -57,7 +57,7 @@ function Package-OBS {
$CompressVars = @{
Path = "${CheckoutDir}/build/install/*"
CompressionLevel = "Optimal"
DestinationPath = "${FileName}-Windows.zip"
DestinationPath = "${FileName}-Win-x86+x64.zip"
}
Write-Step "Creating zip archive..."
@ -66,14 +66,14 @@ function Package-OBS {
Compress-Archive -Force @CompressVars
$ProgressPreference = 'Continue'
} elseif ($BuildArch -eq "64-bit") {
} elseif ($BuildArch -eq "x64") {
Write-Step "Install 64-bit OBS..."
Invoke-Expression "cmake --build `"${BuildDirectory}64`" --config ${BuildConfiguration} -t install"
$CompressVars = @{
Path = "${CheckoutDir}/build64/install/bin", "${CheckoutDir}/build64/install/data", "${CheckoutDir}/build64/install/obs-plugins"
CompressionLevel = "Optimal"
DestinationPath = "${FileName}-Win64.zip"
DestinationPath = "${FileName}-Win-x64.zip"
}
Write-Step "Creating zip archive..."
@ -82,14 +82,14 @@ function Package-OBS {
Compress-Archive -Force @CompressVars
$ProgressPreference = 'Continue'
} elseif ($BuildArch -eq "32-bit") {
} elseif ($BuildArch -eq "x86") {
Write-Step "Install 32-bit OBS..."
Invoke-Expression "cmake --build `"${BuildDirectory}32`" --config ${BuildConfiguration} -t install"
$CompressVars = @{
Path = "${CheckoutDir}/build32/install/bin", "${CheckoutDir}/build32/install/data", "${CheckoutDir}/build32/install/obs-plugins"
CompressionLevel = "Optimal"
DestinationPath = "${FileName}-Win32.zip"
DestinationPath = "${FileName}-Win-x86.zip"
}
Write-Step "Creating zip archive..."
@ -136,7 +136,7 @@ function Print-Usage {
"-Verbose : Enable more verbose build process output",
"-CombinedArchs : Create combined architecture package",
"-BuildDirectory : Directory to use for builds - Default: build64 on 64-bit systems, build32 on 32-bit systems",
"-BuildArch : Build architecture to use (32-bit or 64-bit) - Default: local architecture",
"-BuildArch : Build architecture to use (x86 or x64) - Default: local architecture",
"-BuildConfiguration : Build configuration to use - Default: RelWithDebInfo"
)