ci: Add jobs that run in symlink trees

This commit is contained in:
Kyle Edwards
2023-09-12 11:01:03 -04:00
parent 879d12a29d
commit d9f1431f92
15 changed files with 157 additions and 0 deletions

4
.gitignore vendored
View File

@@ -3,6 +3,10 @@
# Common build directories
/build*/
# CI jobs that run in symlinked trees produce these artifacts.
/real_work/
/work
# MacOS Finder files.
.DS_Store

View File

@@ -199,6 +199,18 @@ t:debian12-makefiles-clang:
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
t:debian12-ninja-multi-symlinked:
extends:
- .debian12_ninja_multi_symlinked
- .cmake_test_linux_release
- .linux_x86_64_tags
- .cmake_junit_artifacts
- .run_dependent
- .needs_centos7_x86_64
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
CMAKE_CI_JOB_NIGHTLY_NINJA: "true"
t:debian12-hip-radeon:
extends:
- .debian12_hip_radeon
@@ -399,6 +411,16 @@ b:fedora38-ninja:
variables:
CMAKE_CI_JOB_CONTINUOUS: "true"
b:fedora38-makefiles-symlinked:
extends:
- .fedora38_makefiles_symlinked
- .cmake_build_linux
- .cmake_build_artifacts
- .linux_x86_64_tags
- .run_manually
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
b:debian12-makefiles-inplace:
extends:
- .debian12_makefiles_inplace
@@ -449,6 +471,20 @@ t:fedora38-ninja:
variables:
CMAKE_CI_JOB_CONTINUOUS: "true"
t:fedora38-makefiles-symlinked:
extends:
- .fedora38_makefiles_symlinked
- .cmake_test_linux
- .linux_x86_64_tags_x11
- .cmake_test_artifacts
- .run_dependent
dependencies:
- b:fedora38-makefiles-symlinked
needs:
- b:fedora38-makefiles-symlinked
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
t:fedora38-ninja-multi:
extends:
- .fedora38_ninja_multi
@@ -871,6 +907,16 @@ b:macos-arm64-ninja:
variables:
CMAKE_CI_JOB_CONTINUOUS: "true"
b:macos-arm64-ninja-symlinked:
extends:
- .macos_arm64_ninja_symlinked
- .cmake_build_macos
- .cmake_build_artifacts
- .macos_arm64_tags
- .run_manually
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
b:macos-arm64-pch:
extends:
- .macos_arm64_pch
@@ -909,6 +955,21 @@ t:macos-arm64-ninja:
CMAKE_CI_JOB_CONTINUOUS: "true"
CMAKE_CI_JOB_NIGHTLY_NINJA: "true"
t:macos-arm64-ninja-symlinked:
extends:
- .macos_arm64_ninja_symlinked
- .cmake_test_macos
- .cmake_test_artifacts
- .macos_arm64_tags
- .run_dependent
dependencies:
- b:macos-arm64-ninja-symlinked
needs:
- b:macos-arm64-ninja-symlinked
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
CMAKE_CI_JOB_NIGHTLY_NINJA: "true"
b:macos-x86_64-makefiles:
extends:
- .macos_x86_64_makefiles
@@ -968,6 +1029,20 @@ t:macos-arm64-xcode:
needs:
- t:macos-arm64-ninja
t:macos-arm64-xcode-symlinked:
extends:
- .macos_arm64_xcode_symlinked
- .cmake_test_macos_external
- .macos_arm64_tags_ext
- .cmake_junit_artifacts
- .run_dependent
dependencies:
- t:macos-arm64-ninja
needs:
- t:macos-arm64-ninja
variables:
CMAKE_CI_JOB_NIGHTLY: "true"
t:macos-x86_64-ninja-ub:
extends:
- .macos_x86_64_ninja_ub

View File

@@ -0,0 +1,3 @@
include("${CMAKE_CURRENT_LIST_DIR}/configure_symlinked_common.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/configure_debian12_ninja_common.cmake")
set(CMake_TEST_UseSWIG "OFF" CACHE BOOL "")

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,7 @@
# Ensure that the symlink tree is set up correctly.
if(NOT CMAKE_SOURCE_DIR STREQUAL "$ENV{CI_PROJECT_DIR}/work/cmake")
message(FATAL_ERROR "Expected value of CMAKE_SOURCE_DIR:\n $ENV{CI_PROJECT_DIR}/work/cmake\nActual value:\n ${CMAKE_SOURCE_DIR}")
endif()
if(NOT CMAKE_BINARY_DIR STREQUAL "$ENV{CI_PROJECT_DIR}/work/build")
message(FATAL_ERROR "Expected value of CMAKE_BINARY_DIR:\n $ENV{CI_PROJECT_DIR}/work/build\nActual value:\n ${CMAKE_BINARY_DIR}")
endif()

View File

@@ -9,6 +9,16 @@ quietly() {
rm -f "$log"
}
if test -n "$CMAKE_CI_IN_SYMLINK_TREE"; then
mkdir -p "$CI_PROJECT_DIR/real_work/work/build"
ln -s real_work/work "$CI_PROJECT_DIR/work"
git worktree prune
git worktree add "$CI_PROJECT_DIR/work/cmake" HEAD
# Assert that the hash matches.
test "$(git -C "$CI_PROJECT_DIR/work/cmake" rev-parse HEAD)" = "$(git -C "$CI_PROJECT_DIR" rev-parse HEAD)"
fi
if test -r ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"; then
source ".gitlab/ci/env_${CMAKE_CONFIGURATION}.sh"
fi

View File

@@ -0,0 +1,5 @@
export MY_RUBY_HOME="/usr/local/rvm/rubies/ruby-3.2.2"
if test -z "$CI_MERGE_REQUEST_ID"; then
source .gitlab/ci/swift-env.sh
fi

View File

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

View File

@@ -0,0 +1 @@
. .gitlab/ci/env_fedora38_makefiles.sh

View File

@@ -0,0 +1 @@
. .gitlab/ci/env_macos_arm64_ninja.sh

View File

@@ -5,8 +5,13 @@ endif ()
# Set up the source and build paths.
set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}")
if("$ENV{CMAKE_CI_IN_SYMLINK_TREE}")
set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}/work/cmake")
endif()
if("$ENV{CMAKE_CI_INPLACE}")
set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}")
elseif("$ENV{CMAKE_CI_IN_SYMLINK_TREE}")
set(CTEST_BINARY_DIRECTORY "$ENV{CI_PROJECT_DIR}/work/build")
else()
set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build")
endif()

View File

@@ -137,6 +137,16 @@
CMAKE_CI_NO_INSTALL: 1
CTEST_NO_WARNINGS_ALLOWED: 1
.debian12_ninja_multi_symlinked:
extends: .debian12
variables:
CMAKE_CONFIGURATION: debian12_ninja_multi_symlinked
CMAKE_GENERATOR: "Ninja Multi-Config"
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
.debian12_extdeps:
extends: .debian12
@@ -185,6 +195,16 @@
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
.fedora38_makefiles_symlinked:
extends: .fedora38
variables:
CMAKE_CONFIGURATION: fedora38_makefiles_symlinked
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
### Clang Compiler
.debian12_makefiles_clang:

View File

@@ -38,6 +38,15 @@
CMAKE_CONFIGURATION: macos_arm64_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
.macos_arm64_ninja_symlinked:
extends: .macos_build
variables:
CMAKE_CONFIGURATION: macos_arm64_ninja_symlinked
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
.macos_arm64_pch:
extends: .macos_arm64_ninja
@@ -86,6 +95,16 @@
CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
.macos_arm64_xcode_symlinked:
extends: .macos
variables:
CMAKE_CONFIGURATION: macos_arm64_xcode_symlinked
CMAKE_GENERATOR: Xcode
CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true"
CMAKE_CI_IN_SYMLINK_TREE: 1
CMAKE_CI_BUILD_DIR: "real_work/work/build"
.macos_arm64_xcode_ub:
extends: .macos