浏览代码

Merge topic 'ci-windows-arm64'

09c1b1db07 gitlab-ci: Add windows-arm64 native jobs for Ninja and VS
61ebd7d083 ci: Download cmake on windows-arm64
93a5d89b42 ci: Teach cmake download script on Windows to branch on host architecture
1ccffcf0ea ci: Factor out helper to load python into environment on Windows
781303c0e2 ci: Factor out helper to load qt into environment on Windows
b0d16c7f74 Tests: Fix CTest.UpdateGIT under repo-local defaultBranch config

Acked-by: Kitware Robot <[email protected]>
Acked-by: Ben Boeckel <[email protected]>
Merge-request: !7905
Brad King 3 年之前
父节点
当前提交
4bf832086a

+ 43 - 1
.gitlab-ci.yml

@@ -880,7 +880,7 @@ u:macos10.10-package:
     needs:
     needs:
         - b:macos10.10-package
         - b:macos10.10-package
 
 
-# Windows builds
+# Windows x86_64 jobs
 
 
 b:windows-vs2022-x64-ninja:
 b:windows-vs2022-x64-ninja:
     extends:
     extends:
@@ -1116,6 +1116,48 @@ t:windows-openwatcom1.9:
     variables:
     variables:
         CMAKE_CI_JOB_NIGHTLY: "true"
         CMAKE_CI_JOB_NIGHTLY: "true"
 
 
+# Windows arm64 jobs
+
+b:windows-arm64-vs2022-ninja:
+    extends:
+        - .windows_arm64_vs2022_ninja
+        - .cmake_build_windows
+        - .cmake_build_artifacts
+        - .windows_arm64_tags_nonconcurrent_vs2022
+        - .run_manually
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
+t:windows-arm64-vs2022-ninja:
+    extends:
+        - .windows_arm64_vs2022_ninja
+        - .cmake_test_windows
+        - .windows_arm64_tags_nonconcurrent_vs2022
+        - .cmake_test_artifacts
+        - .run_dependent
+    dependencies:
+        - b:windows-arm64-vs2022-ninja
+    needs:
+        - b:windows-arm64-vs2022-ninja
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
+t:windows-arm64-vs2022:
+    extends:
+        - .windows_arm64_vs2022
+        - .cmake_test_windows_external
+        - .windows_arm64_tags_concurrent_vs2022
+        - .cmake_junit_artifacts
+        - .run_dependent
+    dependencies:
+        - t:windows-arm64-vs2022-ninja
+    needs:
+        - t:windows-arm64-vs2022-ninja
+    variables:
+        CMAKE_CI_JOB_NIGHTLY: "true"
+
+# Windows package jobs
+
 b:windows-x86_64-package:
 b:windows-x86_64-package:
     extends:
     extends:
         - .windows_x86_64_package
         - .windows_x86_64_package

+ 12 - 2
.gitlab/ci/cmake.ps1

@@ -1,8 +1,18 @@
 $erroractionpreference = "stop"
 $erroractionpreference = "stop"
 
 
 $version = "3.24.1"
 $version = "3.24.1"
-$sha256sum = "C1B17431A16337D517F7BA78C7067B6F143A12686CB8087F3DD32F3FA45F5AAE"
-$filename = "cmake-$version-windows-x86_64"
+
+if ("$env:PROCESSOR_ARCHITECTURE" -eq "AMD64") {
+    $sha256sum = "C1B17431A16337D517F7BA78C7067B6F143A12686CB8087F3DD32F3FA45F5AAE"
+    $platform = "windows-x86_64"
+} elseif ("$env:PROCESSOR_ARCHITECTURE" -eq "ARM64") {
+    $sha256sum = "D94683F3B0E63F6EF194C621194F6E26F3735EDA70750395E0F2BBEE4023FB95"
+    $platform = "windows-arm64"
+} else {
+    throw ('unknown PROCESSOR_ARCHITECTURE: ' + "$env:PROCESSOR_ARCHITECTURE")
+}
+
+$filename = "cmake-$version-$platform"
 $tarball = "$filename.zip"
 $tarball = "$filename.zip"
 
 
 $outdir = $pwd.Path
 $outdir = $pwd.Path

+ 1 - 0
.gitlab/ci/configure_windows_arm64_vs2022.cmake

@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common.cmake")

+ 7 - 0
.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake

@@ -0,0 +1,7 @@
+# Qt host tools are not yet available natively on windows-arm64.
+set(CMake_TEST_GUI "OFF" CACHE BOOL "")
+set(BUILD_QtDialog "OFF" CACHE BOOL "")
+set(CMAKE_PREFIX_PATH "" CACHE STRING "")
+
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common_ninja.cmake")

+ 4 - 0
.gitlab/ci/python-env.ps1

@@ -0,0 +1,4 @@
+$pwdpath = $pwd.Path
+cmake -P .gitlab/ci/download_python3.cmake
+Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\python3;$env:PATH"
+python --version

+ 10 - 0
.gitlab/ci/qt-env.ps1

@@ -0,0 +1,10 @@
+if ("$env:PROCESSOR_ARCHITECTURE" -eq "AMD64") {
+    $pwdpath = $pwd.Path
+    cmake -P .gitlab/ci/download_qt.cmake
+    Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\qt\bin;$env:PATH"
+    qmake -v
+} elseif ("$env:PROCESSOR_ARCHITECTURE" -eq "ARM64") {
+    # Qt host tools are not yet available natively on windows-arm64.
+} else {
+    throw ('unknown PROCESSOR_ARCHITECTURE: ' + "$env:PROCESSOR_ARCHITECTURE")
+}

+ 44 - 5
.gitlab/os-windows.yml

@@ -49,6 +49,12 @@
         VCVARSPLATFORM: "x64_arm64"
         VCVARSPLATFORM: "x64_arm64"
         VCVARSVERSION: "14.34.31933"
         VCVARSVERSION: "14.34.31933"
 
 
+.windows_arm64_vcvarsall_vs2022:
+    variables:
+        VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat"
+        VCVARSPLATFORM: "arm64"
+        VCVARSVERSION: "14.34.31933"
+
 .windows_vs2022_x64_ninja:
 .windows_vs2022_x64_ninja:
     extends:
     extends:
         - .windows_build_ninja
         - .windows_build_ninja
@@ -57,6 +63,14 @@
     variables:
     variables:
         CMAKE_CONFIGURATION: windows_vs2022_x64_ninja
         CMAKE_CONFIGURATION: windows_vs2022_x64_ninja
 
 
+.windows_arm64_vs2022_ninja:
+    extends:
+        - .windows_build_ninja
+        - .windows_arm64_vcvarsall_vs2022
+
+    variables:
+        CMAKE_CONFIGURATION: windows_arm64_vs2022_ninja
+
 .windows_package:
 .windows_package:
     extends:
     extends:
         - .windows_build_ninja
         - .windows_build_ninja
@@ -224,6 +238,16 @@
     variables:
     variables:
         CMAKE_CONFIGURATION: windows_openwatcom1.9
         CMAKE_CONFIGURATION: windows_openwatcom1.9
 
 
+.windows_arm64_vs2022:
+    extends: .windows
+
+    variables:
+        CMAKE_CONFIGURATION: windows_arm64_vs2022
+        CMAKE_GENERATOR: "Visual Studio 17 2022"
+        CMAKE_GENERATOR_PLATFORM: "ARM64"
+        CMAKE_GENERATOR_TOOLSET: "v143,version=14.34.31933"
+        CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
+
 .mingw_osdn_io:
 .mingw_osdn_io:
     extends: .windows
     extends: .windows
 
 
@@ -292,6 +316,24 @@
         - shell
         - shell
         - concurrent
         - concurrent
 
 
+.windows_arm64_tags_nonconcurrent_vs2022:
+    tags:
+        - cmake # Since this is a bare runner, pin to a project.
+        - windows-arm64
+        - shell
+        - vs2022
+        - msvc-19.34
+        - nonconcurrent
+
+.windows_arm64_tags_concurrent_vs2022:
+    tags:
+        - cmake # Since this is a bare runner, pin to a project.
+        - windows-arm64
+        - shell
+        - vs2022
+        - msvc-19.34
+        - concurrent
+
 ## Windows-specific scripts
 ## Windows-specific scripts
 
 
 .before_script_windows: &before_script_windows
 .before_script_windows: &before_script_windows
@@ -304,11 +346,8 @@
     - . .gitlab/ci/ninja-env.ps1
     - . .gitlab/ci/ninja-env.ps1
     - (& "$env:WIX\bin\light.exe" -help) | Select -First 1
     - (& "$env:WIX\bin\light.exe" -help) | Select -First 1
     - cmake --version
     - cmake --version
-    - cmake -P .gitlab/ci/download_qt.cmake
-    - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\qt\bin;$env:PATH"
-    - cmake -P .gitlab/ci/download_python3.cmake
-    - Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\python3;$env:PATH"
-    - python --version
+    - . .gitlab/ci/qt-env.ps1
+    - . .gitlab/ci/python-env.ps1
 
 
 .cmake_build_windows:
 .cmake_build_windows:
     stage: build
     stage: build

+ 1 - 1
Tests/CTestUpdateGIT.cmake.in

@@ -34,7 +34,7 @@ endif()
 
 
 # Adapt to the system default branch name.
 # Adapt to the system default branch name.
 execute_process(
 execute_process(
-  COMMAND ${GIT} config --get init.defaultBranch
+  COMMAND ${GIT} --git-dir= config --get init.defaultBranch
   RESULT_VARIABLE defaultBranchFailed
   RESULT_VARIABLE defaultBranchFailed
   OUTPUT_VARIABLE defaultBranch
   OUTPUT_VARIABLE defaultBranch
   ERROR_VARIABLE defaultBranchError
   ERROR_VARIABLE defaultBranchError