mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 19:21:06 +00:00
ci: Update to VS 2022 Build Tools
We need the Windows 11 SDK for Windows Graphics Capture API support, which will be enabled at runtime based on feature availability on Windows, so should work correctly on Windows 8, 8.1, 10, and 11. However, if we enable it in the VS 2019 installer, it will install both Windows 10 SDK (required) and Windows 11 SDK (optional), which will bloat the image by 3GB or more. So just move to VS 2022 for the Windows images, which requires only the Windows 11 SDK. Had to remove the UWP build tools because they were causing the installation to fail, likely due to an installer bug. We don't need UWP anymore anyway. We just need the ARM64 build tools for the cross-arm64 monorepo build. Also stop installing into C:\BuildTools and let Meson pick the install up with --vsenv. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4939>
This commit is contained in:
parent
8d578eeabc
commit
0b26ca0c6e
7 changed files with 73 additions and 86 deletions
|
@ -449,38 +449,36 @@ build fedora clang:
|
||||||
# Renormalize line endings
|
# Renormalize line endings
|
||||||
- git add --renormalize .
|
- git add --renormalize .
|
||||||
- ci/scripts/handle-subprojects-cache.py subprojects/
|
- ci/scripts/handle-subprojects-cache.py subprojects/
|
||||||
# For some reason, options are separated by newline instead of space, so we
|
- echo $env:MESON_ARGS
|
||||||
# have to replace them first.
|
|
||||||
- $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
|
|
||||||
- $env:MESON_CROSS_ARGS = $env:MESON_CROSS_ARGS.replace("`n"," ")
|
|
||||||
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
|
|
||||||
meson build $env:MESON_ARGS $env:MESON_CROSS_ARGS &&
|
|
||||||
meson compile -C build"
|
|
||||||
artifacts:
|
artifacts:
|
||||||
expire_in: "7 days"
|
expire_in: "7 days"
|
||||||
when: "always"
|
when: "always"
|
||||||
paths:
|
paths:
|
||||||
- 'build/meson-logs/'
|
- 'build/meson-logs/'
|
||||||
|
|
||||||
build vs2019 amd64:
|
.build windows native:
|
||||||
extends: '.build windows'
|
extends: '.build windows'
|
||||||
|
script:
|
||||||
|
- !reference [".build windows", "script"]
|
||||||
|
- meson setup --vsenv build $env:MESON_ARGS
|
||||||
|
- meson compile -C build
|
||||||
|
- .\gst-env.py gst-inspect-1.0.exe --version
|
||||||
|
- .\gst-env.py gst-inspect-1.0.exe
|
||||||
|
- mkdir destdir
|
||||||
|
- meson install -C build --destdir installdir
|
||||||
|
- Remove-Item -Recurse -Force build\installdir
|
||||||
|
|
||||||
|
build vs2022 amd64:
|
||||||
|
extends: '.build windows native'
|
||||||
variables:
|
variables:
|
||||||
ARCH: 'amd64'
|
ARCH: 'amd64'
|
||||||
script:
|
|
||||||
- !reference [".build windows", "script",]
|
|
||||||
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
|
|
||||||
.\gst-env.py gst-inspect-1.0.exe --version &&
|
|
||||||
.\gst-env.py gst-inspect-1.0.exe &&
|
|
||||||
mkdir .\destdir &&
|
|
||||||
meson install --destdir=$env:CI_PROJECT_DIR\destdir -C build &&
|
|
||||||
rmdir /s /q $env:CI_PROJECT_DIR\destdir"
|
|
||||||
|
|
||||||
build vs2019 x86:
|
build vs2022 x86:
|
||||||
extends: '.build windows'
|
extends: '.build windows native'
|
||||||
variables:
|
variables:
|
||||||
ARCH: 'x86'
|
ARCH: 'x86'
|
||||||
|
|
||||||
build vs2019 arm64 uwp:
|
build vs2022 arm64:
|
||||||
extends: '.build windows'
|
extends: '.build windows'
|
||||||
variables:
|
variables:
|
||||||
ARCH: 'arm64'
|
ARCH: 'arm64'
|
||||||
|
@ -490,8 +488,23 @@ build vs2019 arm64 uwp:
|
||||||
-Dgst-plugins-base:pango=disabled
|
-Dgst-plugins-base:pango=disabled
|
||||||
-Dgst-plugins-good:cairo=disabled
|
-Dgst-plugins-good:cairo=disabled
|
||||||
-Dgst-devtools:cairo=disabled
|
-Dgst-devtools:cairo=disabled
|
||||||
--cross-file ci/meson/vs2019-arm64-cross-file.txt
|
--cross-file ci/meson/vs2022-paths.ini
|
||||||
--native-file ci/meson/vs2019-x64-native-file.txt
|
--cross-file ci/meson/vs2022-arm64-cross.ini
|
||||||
|
--native-file ci/meson/vs2022-paths.ini
|
||||||
|
--native-file ci/meson/vs2022-x64-native.ini
|
||||||
|
script:
|
||||||
|
- !reference [".build windows", "script"]
|
||||||
|
# For some reason, options are separated by newline instead of space, so we
|
||||||
|
# have to replace them first.
|
||||||
|
- $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
|
||||||
|
- $env:MESON_CROSS_ARGS = $env:MESON_CROSS_ARGS.replace("`n"," ")
|
||||||
|
# Setting up a cross build with MSVC is still non-trivial because
|
||||||
|
# the --vsenv argument cannot be used to set it up
|
||||||
|
- echo $env:MESON_ARGS
|
||||||
|
- echo $env:MESON_CROSS_ARGS
|
||||||
|
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH &&
|
||||||
|
meson setup build $env:MESON_ARGS $env:MESON_CROSS_ARGS &&
|
||||||
|
meson compile -C build "
|
||||||
|
|
||||||
build msys2 :
|
build msys2 :
|
||||||
extends: '.build windows'
|
extends: '.build windows'
|
||||||
|
@ -502,24 +515,12 @@ build msys2 :
|
||||||
allow_failure: true
|
allow_failure: true
|
||||||
when: 'manual'
|
when: 'manual'
|
||||||
script:
|
script:
|
||||||
# Make sure powershell exits on errors
|
- !reference [".build windows", "script"]
|
||||||
# https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-6
|
# Replace backslashes with forward so bash doesn't complain
|
||||||
- $ErrorActionPreference = "Stop"
|
- $env:CI_PROJECT_DIR = $env:CI_PROJECT_DIR.replace('\','/')
|
||||||
|
|
||||||
# Set the code page to UTF-8
|
|
||||||
- chcp 65001
|
|
||||||
|
|
||||||
# Configure MSYS2 to use the UCRT64 environment, start in the same directory
|
# Configure MSYS2 to use the UCRT64 environment, start in the same directory
|
||||||
# and inherit PATH
|
# and inherit PATH
|
||||||
- $env:MSYSTEM = "UCRT64"
|
- C:\msys64\msys2_shell.cmd -ucrt64 -defterm -no-start -use-full-path -lc "meson setup build $env:MESON_ARGS && ninja -C build"
|
||||||
- $env:CHERE_INVOKING = "1"
|
|
||||||
- $env:MSYS2_PATH_TYPE = "inherit"
|
|
||||||
# For some reason, options are separated by newline instead of space, so we
|
|
||||||
# have to replace them first.
|
|
||||||
- $env:MESON_ARGS = $env:MESON_ARGS.replace("`n"," ")
|
|
||||||
# Replace forward slashes with backwards so bash doesn't complain
|
|
||||||
- $env:_PROJECT_DIR = $env:CI_PROJECT_DIR.replace('\','/')
|
|
||||||
- C:\msys64\usr\bin\bash -lc "meson build $env:MESON_ARGS && ninja -C build"
|
|
||||||
|
|
||||||
# ---- Tests ----- #
|
# ---- Tests ----- #
|
||||||
|
|
||||||
|
|
|
@ -8,4 +8,4 @@ variables:
|
||||||
FEDORA_TAG: '2023-06-12.0'
|
FEDORA_TAG: '2023-06-12.0'
|
||||||
INDENT_TAG: '2023-06-14.1'
|
INDENT_TAG: '2023-06-14.1'
|
||||||
LINT_TAG: '2023-02-16.5'
|
LINT_TAG: '2023-02-16.5'
|
||||||
WINDOWS_TAG: '2023-06-12.0'
|
WINDOWS_TAG: '2023-07-07.0'
|
||||||
|
|
|
@ -8,10 +8,30 @@ SHELL ["powershell","-NoLogo", "-NonInteractive", "-Command"]
|
||||||
|
|
||||||
RUN Install-WindowsFeature -Name Server-Media-Foundation
|
RUN Install-WindowsFeature -Name Server-Media-Foundation
|
||||||
|
|
||||||
|
# Visual Studio can't be installed with choco.
|
||||||
|
# It depends on dotnetfx v4.8.0.20190930, which requires a reboot: dotnetfx (exit code 3010)
|
||||||
|
# https://github.com/microsoft/vs-dockerfiles/blob/main/native-desktop/
|
||||||
|
# Set up environment to collect install errors.
|
||||||
|
COPY Install.cmd C:\TEMP\
|
||||||
|
RUN Invoke-WebRequest -Uri https://aka.ms/vscollect.exe -OutFile C:\TEMP\collect.exe
|
||||||
|
# Download channel for fixed install.
|
||||||
|
RUN Invoke-WebRequest -Uri https://aka.ms/vs/17/release/channel -OutFile C:\TEMP\VisualStudio.chman
|
||||||
|
# Download and install Build Tools for Visual Studio 2022 for native desktop workload.
|
||||||
|
RUN Invoke-WebRequest -Uri https://aka.ms/vs/17/release/vs_buildtools.exe -OutFile C:\TEMP\vs_buildtools.exe
|
||||||
|
RUN C:\TEMP\Install.cmd C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
|
||||||
|
--channelUri C:\TEMP\VisualStudio.chman `
|
||||||
|
--installChannelUri C:\TEMP\VisualStudio.chman `
|
||||||
|
--add Microsoft.VisualStudio.Workload.VCTools `
|
||||||
|
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 `
|
||||||
|
--includeRecommended `
|
||||||
|
--installPath C:\BuildTools
|
||||||
|
|
||||||
|
RUN Get-ChildItem 'C:\BuildTools\VC\Tools\MSVC'
|
||||||
|
RUN Get-ChildItem 'C:\Program Files (x86)\Windows Kits\10\lib'
|
||||||
|
|
||||||
# Install Chocolatey
|
# Install Chocolatey
|
||||||
RUN iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
RUN iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
||||||
# Install required packages
|
# Install required packages
|
||||||
RUN choco install -y vcredist140
|
|
||||||
RUN choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System'
|
RUN choco install -y cmake --installargs 'ADD_CMAKE_TO_PATH=System'
|
||||||
RUN choco install -y git --params '/NoAutoCrlf /NoCredentialManager /NoShellHereIntegration /NoGuiHereIntegration /NoShellIntegration'
|
RUN choco install -y git --params '/NoAutoCrlf /NoCredentialManager /NoShellHereIntegration /NoGuiHereIntegration /NoShellIntegration'
|
||||||
RUN choco install -y git-lfs
|
RUN choco install -y git-lfs
|
||||||
|
@ -27,30 +47,6 @@ RUN New-ItemProperty -Path 'HKLM:\\SYSTEM\\CurrentControlSet\\Control\\FileSyste
|
||||||
RUN git config --system core.longpaths true
|
RUN git config --system core.longpaths true
|
||||||
|
|
||||||
RUN c:\msys64\usr\bin\bash -lc 'pacman -S --noconfirm mingw-w64-ucrt-x86_64-toolchain ninja'
|
RUN c:\msys64\usr\bin\bash -lc 'pacman -S --noconfirm mingw-w64-ucrt-x86_64-toolchain ninja'
|
||||||
# Visual Studio can't be installed with choco.
|
|
||||||
# It depends on dotnetfx v4.8.0.20190930, which requires a reboot: dotnetfx (exit code 3010)
|
|
||||||
# https://github.com/microsoft/vs-dockerfiles/blob/main/native-desktop/
|
|
||||||
# Set up environment to collect install errors.
|
|
||||||
COPY Install.cmd C:\TEMP\
|
|
||||||
RUN Invoke-WebRequest -Uri https://aka.ms/vscollect.exe -OutFile C:\TEMP\collect.exe
|
|
||||||
# Download channel for fixed install.
|
|
||||||
RUN Invoke-WebRequest -Uri https://aka.ms/vs/16/release/channel -OutFile C:\TEMP\VisualStudio.chman
|
|
||||||
# Download and install Build Tools for Visual Studio 2017 for native desktop workload.
|
|
||||||
RUN Invoke-WebRequest -Uri https://aka.ms/vs/16/release/vs_buildtools.exe -OutFile C:\TEMP\vs_buildtools.exe
|
|
||||||
RUN C:\TEMP\Install.cmd C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
|
|
||||||
--channelUri C:\TEMP\VisualStudio.chman `
|
|
||||||
--installChannelUri C:\TEMP\VisualStudio.chman `
|
|
||||||
--add Microsoft.VisualStudio.Workload.VCTools `
|
|
||||||
--add Microsoft.VisualStudio.Workload.UniversalBuildTools `
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.Tools.ARM64 `
|
|
||||||
--add Microsoft.VisualStudio.Component.VC.Tools.ARM `
|
|
||||||
--add Microsoft.VisualStudio.Component.UWP.VC.ARM64 `
|
|
||||||
--includeRecommended `
|
|
||||||
--installPath C:\BuildTools
|
|
||||||
|
|
||||||
RUN Get-ChildItem C:\BuildTools
|
|
||||||
RUN Get-ChildItem C:\BuildTools\VC\Tools\MSVC
|
|
||||||
RUN Get-ChildItem 'C:\Program Files (x86)\Windows Kits\10\lib'
|
|
||||||
|
|
||||||
RUN pip3 install meson==1.1.1
|
RUN pip3 install meson==1.1.1
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ cd C:/cerbero
|
||||||
echo 'local_sources="C:/cerbero/cerbero-sources"' > localconf.cbc
|
echo 'local_sources="C:/cerbero/cerbero-sources"' > localconf.cbc
|
||||||
echo 'home_dir="C:/cerbero/cerbero-build"' >> localconf.cbc
|
echo 'home_dir="C:/cerbero/cerbero-build"' >> localconf.cbc
|
||||||
echo 'vs_install_path = "C:/BuildTools"' >> localconf.cbc
|
echo 'vs_install_path = "C:/BuildTools"' >> localconf.cbc
|
||||||
echo 'vs_install_version = "vs16"' >> localconf.cbc
|
echo 'vs_install_version = "vs17"' >> localconf.cbc
|
||||||
|
|
||||||
# Fetch all bootstrap requirements
|
# Fetch all bootstrap requirements
|
||||||
./cerbero-uninstalled -t -v visualstudio -c localconf.cbc -c config/win64.cbc fetch-bootstrap --jobs=4
|
./cerbero-uninstalled -t -v visualstudio -c localconf.cbc -c config/win64.cbc fetch-bootstrap --jobs=4
|
||||||
|
|
|
@ -1,19 +1,9 @@
|
||||||
[constants]
|
|
||||||
vs_path = 'C:\BuildTools'
|
|
||||||
msvc_version = '14.29.30133'
|
|
||||||
msvc_version_dir = vs_path / 'VC\Tools\MSVC' / msvc_version
|
|
||||||
msvc_arm64_bindir = msvc_version_dir / 'bin\Hostx64\arm64'
|
|
||||||
msvc_arm64_libdir = msvc_version_dir / 'lib\arm64'
|
|
||||||
|
|
||||||
[host_machine]
|
[host_machine]
|
||||||
system = 'windows'
|
system = 'windows'
|
||||||
cpu_family = 'aarch64'
|
cpu_family = 'aarch64'
|
||||||
cpu = 'aarch64'
|
cpu = 'aarch64'
|
||||||
endian = 'little'
|
endian = 'little'
|
||||||
|
|
||||||
[properties]
|
|
||||||
needs_exe_wrapper = true
|
|
||||||
|
|
||||||
[binaries]
|
[binaries]
|
||||||
lib = msvc_arm64_bindir / 'lib.exe'
|
lib = msvc_arm64_bindir / 'lib.exe'
|
||||||
c = msvc_arm64_bindir / 'cl.exe'
|
c = msvc_arm64_bindir / 'cl.exe'
|
12
ci/meson/vs2022-paths.ini
Normal file
12
ci/meson/vs2022-paths.ini
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
[constants]
|
||||||
|
vs_path = 'C:\BuildTools'
|
||||||
|
msvc_version = '14.36.32532'
|
||||||
|
msvc_version_dir = vs_path / 'VC\Tools\MSVC' / msvc_version
|
||||||
|
msvc_arm64_bindir = msvc_version_dir / 'bin\Hostx64\arm64'
|
||||||
|
msvc_arm64_libdir = msvc_version_dir / 'lib\arm64'
|
||||||
|
msvc_x64_bindir = msvc_version_dir / 'bin\Hostx64\x64'
|
||||||
|
msvc_x64_libdir = msvc_version_dir / 'lib\x64'
|
||||||
|
wk_path = 'C:\Program Files (x86)\Windows Kits'
|
||||||
|
wk_version = '10.0.22621.0'
|
||||||
|
wk_x64_libdir = wk_path / '10\lib' / wk_version / 'um\x64'
|
||||||
|
wk_x64_crt_libdir = wk_path / '10\lib' / wk_version / 'ucrt\x64'
|
|
@ -1,13 +1,4 @@
|
||||||
[constants]
|
[constants]
|
||||||
vs_path = 'C:\BuildTools'
|
|
||||||
msvc_version = '14.29.30133'
|
|
||||||
msvc_version_dir = vs_path / 'VC\Tools\MSVC' / msvc_version
|
|
||||||
msvc_x64_bindir = msvc_version_dir / 'bin\Hostx64\x64'
|
|
||||||
msvc_x64_libdir = msvc_version_dir / 'lib\x64'
|
|
||||||
wk_path = 'C:\Program Files (x86)\Windows Kits'
|
|
||||||
wk_version = '10.0.19041.0'
|
|
||||||
wk_x64_libdir = wk_path / '10\lib' / wk_version / 'um\x64'
|
|
||||||
wk_x64_crt_libdir = wk_path / '10\lib' / wk_version / 'ucrt\x64'
|
|
||||||
# Forcibly link to x64 libs when using native linker, otherwise the LIB
|
# Forcibly link to x64 libs when using native linker, otherwise the LIB
|
||||||
# variable in the env will cause link.exe to pick up libs from the cross
|
# variable in the env will cause link.exe to pick up libs from the cross
|
||||||
# msvc libdir. A better fix might be to use a wrapper script that calls
|
# msvc libdir. A better fix might be to use a wrapper script that calls
|
||||||
|
@ -20,9 +11,6 @@ cpu_family = 'x86_64'
|
||||||
cpu = 'x86_64'
|
cpu = 'x86_64'
|
||||||
endian = 'little'
|
endian = 'little'
|
||||||
|
|
||||||
[properties]
|
|
||||||
needs_exe_wrapper = true
|
|
||||||
|
|
||||||
[built-in options]
|
[built-in options]
|
||||||
# Ensure that x64 libs are used for linking even when we're inside, say, an
|
# Ensure that x64 libs are used for linking even when we're inside, say, an
|
||||||
# arm64 VS environment
|
# arm64 VS environment
|
Loading…
Reference in a new issue