From 28aa7d786e1352f37a5a0d79e3ca49f5a27308ab Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 16 Jul 2026 00:51:03 -0400 Subject: [PATCH 1/4] gitlab-ci: make `needs` explicitly empty where possible In a pipeline with the `prep` stage, all `build` stage jobs without an explicit `needs` list implicitly `needs` all `prep` job artifacts. Make these explicitly empty so that the jobs can start without waiting for and downloading the `prep` artifacts which are then ignored anyways. --- .gitlab-ci.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f61070e3f5..d4dc276ec2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -94,6 +94,7 @@ l:codespell: - .cmake_codespell_linux - .linux_x86_64_tags - .run_automatically + needs: [] l:iwyu-debian12: extends: @@ -102,6 +103,7 @@ l:iwyu-debian12: - .linux_x86_64_tags - .cmake_cdash_artifacts - .run_automatically + needs: [] l:tidy-fedora41: extends: @@ -111,6 +113,7 @@ l:tidy-fedora41: - .linux_x86_64_tags - .cmake_cdash_artifacts - .run_automatically + needs: [] l:sphinx-fedora41: extends: @@ -122,6 +125,7 @@ l:sphinx-fedora41: variables: CMAKE_CI_JOB_CONTINUOUS: "true" CMAKE_CI_JOB_HELP: "true" + needs: [] l:clang-analyzer-fedora41: extends: @@ -131,6 +135,7 @@ l:clang-analyzer-fedora41: - .run_automatically variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] # Linux builds @@ -143,6 +148,7 @@ b:centos7-x86_64: - .run_manually variables: CMAKE_CI_ARTIFACTS_NAME: "artifacts-centos7-x86_64" + needs: [] b:centos7-aarch64: extends: @@ -154,6 +160,7 @@ b:centos7-aarch64: variables: CMAKE_CI_ARTIFACTS_NAME: "artifacts-centos7-aarch64" CMAKE_CI_NO_MR: "true" + needs: [] t:debian12-ninja: extends: @@ -452,6 +459,7 @@ b:fedora41-ninja: - .run_manually variables: CMAKE_CI_JOB_CONTINUOUS: "true" + needs: [] b:fedora41-makefiles-symlinked: extends: @@ -462,6 +470,7 @@ b:fedora41-makefiles-symlinked: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] b:debian12-makefiles-inplace: extends: @@ -471,6 +480,7 @@ b:debian12-makefiles-inplace: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] b:debian12-extdeps: extends: @@ -480,6 +490,7 @@ b:debian12-extdeps: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] b:debian12-aarch64-extdeps: extends: @@ -489,6 +500,7 @@ b:debian12-aarch64-extdeps: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] b:fedora41-extdeps: extends: @@ -498,6 +510,7 @@ b:fedora41-extdeps: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] t:fedora41-ninja: extends: @@ -787,6 +800,7 @@ b:fedora41-asan: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] t:fedora41-asan: extends: @@ -810,6 +824,7 @@ b:macos-x86_64-ninja: - .run_manually variables: CMAKE_CI_NO_MR: "true" + needs: [] b:macos-arm64-ninja: extends: @@ -820,6 +835,7 @@ b:macos-arm64-ninja: - .run_manually variables: CMAKE_CI_JOB_CONTINUOUS: "true" + needs: [] b:macos-arm64-ninja-symlinked: extends: @@ -840,6 +856,7 @@ b:macos-arm64-curl: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] b:macos-arm64-pch: extends: @@ -849,6 +866,7 @@ b:macos-arm64-pch: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] t:macos-x86_64-ninja: extends: @@ -906,6 +924,7 @@ b:macos-x86_64-makefiles: - .cmake_build_artifacts - .macos_x86_64_tags - .run_manually + needs: [] t:macos-x86_64-makefiles: extends: @@ -1035,6 +1054,7 @@ b:windows-vs2022-x64-ninja: - .run_manually variables: CMAKE_CI_JOB_CONTINUOUS: "true" + needs: [] b:windows-vs2022-x64-pch: extends: @@ -1044,6 +1064,7 @@ b:windows-vs2022-x64-pch: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] t:windows-vs2022-x64-ninja: extends: @@ -1302,6 +1323,7 @@ b:windows-arm64-vs2022-ninja: - .run_manually variables: CMAKE_CI_JOB_NIGHTLY: "true" + needs: [] t:windows-arm64-vs2022-ninja: extends: From 2b4abb3c258af8253c8c24b2ef5cef2e885b1c83 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 16 Jul 2026 00:20:37 -0400 Subject: [PATCH 2/4] gitlab-ci: move macOS arm64 jobs to `tart` runners `tart` uses VMs to execute jobs instead of running directly on the host. Leave `macos-x86_64` jobs as `shell` runners so that there is still testing on actual Intel hardware and to avoid linker crashes with Rosetta inside of the Tart VMs. --- .gitlab-ci.yml | 12 +++++----- .gitlab/os-macos.yml | 53 ++++++++++++++------------------------------ 2 files changed, 23 insertions(+), 42 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d4dc276ec2..4a53af5063 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -939,7 +939,7 @@ t:macos-arm64-ninja-multi: extends: - .macos_arm64_ninja_multi - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .run_dependent needs: @@ -963,7 +963,7 @@ t:macos-arm64-xcode: extends: - .macos_arm64_xcode - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .run_dependent needs: @@ -973,7 +973,7 @@ t:macos-arm64-xcode-symlinked: extends: - .macos_arm64_xcode_symlinked - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .run_dependent needs: @@ -997,7 +997,7 @@ t:macos-arm64-xcode-ub: extends: - .macos_arm64_xcode_ub - .cmake_test_macos_external - - .macos_arm64_tags_ext + - .macos_arm64_tags - .cmake_junit_artifacts - .run_dependent needs: @@ -1010,7 +1010,7 @@ b:macos-package: - .macos_package - .cmake_build_macos - .cmake_release_artifacts - - .macos_arm64_tags_package + - .macos_arm64_tags - .run_only_for_package needs: - p:doc-package @@ -1029,7 +1029,7 @@ b:macos10.10-package: - .macos10.10_package - .cmake_build_macos - .cmake_release_artifacts - - .macos_arm64_tags_package + - .macos_arm64_tags - .run_only_for_package needs: - p:doc-package diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml index c0ff828f7a..3285d50da8 100644 --- a/.gitlab/os-macos.yml +++ b/.gitlab/os-macos.yml @@ -6,10 +6,11 @@ variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci ext/$CI_CONCURRENT_ID" -.macos_arm64: - extends: .macos +.macos_tart: + image: "registry.hub.docker.com/kitware/macos-ci-images:macos-26-xcode-26.6-20260710" variables: - DEVELOPER_DIR: "/Applications/Xcode-26.4.app/Contents/Developer" + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake-ci" + TART_EXECUTOR_HOST_DIR: "false" .macos_x86_64: extends: .macos @@ -27,10 +28,9 @@ # could run at the same time, so we drop it. GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" -.macos_arm64_build: +.macos_tart_build: extends: - - .macos_arm64 - - .macos_build + - .macos_tart .macos_x86_64_build: extends: @@ -45,14 +45,14 @@ CTEST_NO_WARNINGS_ALLOWED: 1 .macos_arm64_ninja: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos_arm64_ninja CTEST_NO_WARNINGS_ALLOWED: 1 .macos_arm64_ninja_symlinked: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos_arm64_ninja_symlinked @@ -61,7 +61,7 @@ CMAKE_CI_BUILD_DIR: "real_work/work/build" .macos_arm64_curl: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos_arm64_curl @@ -82,7 +82,7 @@ CMAKE_GENERATOR: "Unix Makefiles" .macos_package: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos_package @@ -90,7 +90,7 @@ CMAKE_CI_NO_INSTALL: 1 .macos10.10_package: - extends: .macos_arm64_build + extends: .macos_tart_build variables: CMAKE_CONFIGURATION: macos10.10_package @@ -108,7 +108,7 @@ CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" .macos_arm64_xcode: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_xcode @@ -116,7 +116,7 @@ CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" .macos_arm64_xcode_symlinked: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked @@ -126,7 +126,7 @@ CMAKE_CI_BUILD_DIR: "real_work/work/build" .macos_arm64_xcode_ub: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_xcode_ub @@ -134,7 +134,7 @@ CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" .macos_arm64_ninja_multi: - extends: .macos_arm64 + extends: .macos_tart variables: CMAKE_CONFIGURATION: macos_arm64_ninja_multi @@ -168,28 +168,9 @@ .macos_arm64_tags: tags: - - cmake # Since this is a bare runner, pin to a project. + - cmake - macos-arm64 - - shell - - xcode-26.4 - - nonconcurrent - -.macos_arm64_tags_ext: - tags: - - cmake # Since this is a bare runner, pin to a project. - - macos-arm64 - - shell - - xcode-26.4 - - concurrent - -.macos_arm64_tags_package: - tags: - - cmake # Since this is a bare runner, pin to a project. - - macos-arm64 - - shell - - xcode-26.4 - - nonconcurrent - - finder + - tart ## macOS-specific scripts From 80538f15afeadb6f461fef31aa49d477d5ac81a6 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 17 Jul 2026 11:08:15 -0400 Subject: [PATCH 3/4] gitlab-ci: extend Xcode CI job timeout to 3 hours With the migration to `tart`, this job is now guaranteed to run on x86_64 hardware. Some of the machines are older, so to allow them to complete the job, extend the timeout. The job is limited to nghtly pipelines, so a longer timeout is fine. --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4a53af5063..1ca0ae591e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -954,6 +954,7 @@ t:macos-x86_64-xcode: - .macos_x86_64_tags_ext - .cmake_junit_artifacts - .run_dependent + timeout: 3 hours needs: - t:macos-x86_64-ninja variables: From bca325109ca6ae0a6a0fee8844a32b535561f926 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 22 Apr 2026 12:24:18 -0400 Subject: [PATCH 4/4] Tests: Update RunCMake.Framework expected output for macOS 26.4 The archiver output in the case of universal binaries has changed slightly. Update our expected output to match. --- Tests/RunCMake/Framework/FrameworkTypeSTATIC-build-stdout.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Tests/RunCMake/Framework/FrameworkTypeSTATIC-build-stdout.txt b/Tests/RunCMake/Framework/FrameworkTypeSTATIC-build-stdout.txt index dd64717e68..3b9d91a598 100644 --- a/Tests/RunCMake/Framework/FrameworkTypeSTATIC-build-stdout.txt +++ b/Tests/RunCMake/Framework/FrameworkTypeSTATIC-build-stdout.txt @@ -1 +1,2 @@ -/Framework( \(for architecture [^\)]+\))?:[ ]+current ar archive random library +/Framework(: Mach-O universal binary with [0-9]+ architectures| \(for architecture [^\)]+\))?:[^ +]+current ar archive random library