diff options
Diffstat (limited to '.gitlab')
122 files changed, 1356 insertions, 607 deletions
diff --git a/.gitlab/.gitignore b/.gitlab/.gitignore index d62e477eab..10d03cacd4 100644 --- a/.gitlab/.gitignore +++ b/.gitlab/.gitignore @@ -5,8 +5,10 @@ /ispc* /jom /llvm* +/mingw /msvc* /ninja* +/openmp /open-watcom* /python* /qt* diff --git a/.gitlab/artifacts.yml b/.gitlab/artifacts.yml index 1b5384f2d8..41f24ede94 100644 --- a/.gitlab/artifacts.yml +++ b/.gitlab/artifacts.yml @@ -63,35 +63,6 @@ - build/DartConfiguation.tcl - build/CTestCustom.cmake -.cmake_build_package_artifacts: - artifacts: - expire_in: 1d - name: "$CMAKE_CI_ARTIFACTS_NAME" - paths: - # Allow CPack to find CMAKE_ROOT. - - build/CMakeFiles/CMakeSourceDir.txt - - # Install rules. - - build/**/cmake_install.cmake - - # We need the main binaries. - - build/bin/ - - # Pass through the documentation. - - build/install-doc/ - - # CPack configuration. - - build/CPackConfig.cmake - - build/CMakeCPackOptions.cmake - - build/Source/QtDialog/QtDialogCPack.cmake - - # CPack/IFW packaging files. - - build/CMake*.qs - - # CPack/WIX packaging files. - - build/Utilities/Release/WiX/custom_action_dll*.wxs - - build/Utilities/Release/WiX/CustomAction/CMakeWiXCustomActions.* - .cmake_release_artifacts: artifacts: expire_in: 5d @@ -109,6 +80,8 @@ # Any source packages made. - build/cmake-*.tar.gz - build/cmake-*.zip + # Any unsigned packages made. + - build/unsigned/cmake-* .cmake_junit_artifacts: artifacts: diff --git a/.gitlab/ci/CMakeCPack.cmake b/.gitlab/ci/CMakeCPack.cmake new file mode 100644 index 0000000000..971fe54dc4 --- /dev/null +++ b/.gitlab/ci/CMakeCPack.cmake @@ -0,0 +1,3 @@ +if(NOT "$ENV{CMAKE_CI_PACKAGE}" MATCHES "^(dev)?$") + configure_file(${CMAKE_CURRENT_LIST_DIR}/package_info.cmake.in ${CMake_BINARY_DIR}/ci_package_info.cmake @ONLY) +endif() diff --git a/.gitlab/ci/cmake.ps1 b/.gitlab/ci/cmake.ps1 index 98aeae35b6..3efb67ab71 100755 --- a/.gitlab/ci/cmake.ps1 +++ b/.gitlab/ci/cmake.ps1 @@ -1,8 +1,18 @@ $erroractionpreference = "stop" $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" $outdir = $pwd.Path diff --git a/.gitlab/ci/codespell.sh b/.gitlab/ci/codespell.sh new file mode 100755 index 0000000000..fd052bd0aa --- /dev/null +++ b/.gitlab/ci/codespell.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +set -e + +result=0 +echo "Running codespell on source code..." +codespell || result=1 + +if [ -n "$CI_MERGE_REQUEST_DIFF_BASE_SHA" ]; then + for COMMIT in $(git rev-list "^$CI_MERGE_REQUEST_DIFF_BASE_SHA" "$CI_COMMIT_SHA"); do + echo "Running codespell on commit message of $COMMIT..." + git show --format=%B -s "$COMMIT" | codespell - || result=1 + done +fi + +exit $result diff --git a/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake b/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake new file mode 100644 index 0000000000..519699b0cc --- /dev/null +++ b/.gitlab/ci/configure_cuda11.8_minimal_nvidia.cmake @@ -0,0 +1,3 @@ +set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_debian10_aarch64_ninja.cmake b/.gitlab/ci/configure_debian10_aarch64_ninja.cmake index 605f6ba4d8..74079592fa 100644 --- a/.gitlab/ci/configure_debian10_aarch64_ninja.cmake +++ b/.gitlab/ci/configure_debian10_aarch64_ninja.cmake @@ -27,6 +27,7 @@ set(CMake_TEST_FindGTest "ON" CACHE BOOL "") set(CMake_TEST_FindGTK2 "ON" CACHE BOOL "") set(CMake_TEST_FindIconv "ON" CACHE BOOL "") set(CMake_TEST_FindICU "ON" CACHE BOOL "") +set(CMake_TEST_FindImageMagick "ON" CACHE BOOL "") set(CMake_TEST_FindIntl "ON" CACHE BOOL "") set(CMake_TEST_FindJNI "ON" CACHE BOOL "") set(CMake_TEST_FindJPEG "ON" CACHE BOOL "") @@ -73,6 +74,7 @@ set(CMake_TEST_IPO_WORKS_CXX "ON" CACHE BOOL "") set(CMake_TEST_IPO_WORKS_Fortran "ON" CACHE BOOL "") set(CMake_TEST_JQ "/usr/bin/jq" CACHE PATH "") set(CMake_TEST_Qt5 "ON" CACHE BOOL "") +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") set(CMake_TEST_UseSWIG "ON" CACHE BOOL "") include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_debian10_iwyu.cmake b/.gitlab/ci/configure_debian10_iwyu.cmake index 1daa581b36..abe750d3de 100644 --- a/.gitlab/ci/configure_debian10_iwyu.cmake +++ b/.gitlab/ci/configure_debian10_iwyu.cmake @@ -1,4 +1,6 @@ set(CMake_RUN_IWYU ON CACHE BOOL "") +# Uncomment to diagnose IWYU problems as needed. +#set(CMake_IWYU_VERBOSE ON CACHE BOOL "") set(IWYU_COMMAND "/usr/bin/include-what-you-use-6.0" CACHE FILEPATH "") include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_debian10_ninja.cmake b/.gitlab/ci/configure_debian10_ninja.cmake index 214828a3e7..e8d6d55cf6 100644 --- a/.gitlab/ci/configure_debian10_ninja.cmake +++ b/.gitlab/ci/configure_debian10_ninja.cmake @@ -31,6 +31,7 @@ set(CMake_TEST_FindGTest "ON" CACHE BOOL "") set(CMake_TEST_FindGTK2 "ON" CACHE BOOL "") set(CMake_TEST_FindIconv "ON" CACHE BOOL "") set(CMake_TEST_FindICU "ON" CACHE BOOL "") +set(CMake_TEST_FindImageMagick "ON" CACHE BOOL "") set(CMake_TEST_FindIntl "ON" CACHE BOOL "") set(CMake_TEST_FindJNI "ON" CACHE BOOL "") set(CMake_TEST_FindJPEG "ON" CACHE BOOL "") @@ -79,6 +80,7 @@ set(CMake_TEST_IPO_WORKS_CXX "ON" CACHE BOOL "") set(CMake_TEST_IPO_WORKS_Fortran "ON" CACHE BOOL "") set(CMake_TEST_JQ "/usr/bin/jq" CACHE PATH "") set(CMake_TEST_Qt5 "ON" CACHE BOOL "") +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") set(CMake_TEST_UseSWIG "ON" CACHE BOOL "") if (NOT "$ENV{SWIFTC}" STREQUAL "") diff --git a/.gitlab/ci/configure_fedora36_clang_analyzer.cmake b/.gitlab/ci/configure_fedora36_clang_analyzer.cmake deleted file mode 100644 index 456936b4fb..0000000000 --- a/.gitlab/ci/configure_fedora36_clang_analyzer.cmake +++ /dev/null @@ -1 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_tidy.cmake b/.gitlab/ci/configure_fedora36_tidy.cmake deleted file mode 100644 index 38414d3b5f..0000000000 --- a/.gitlab/ci/configure_fedora36_tidy.cmake +++ /dev/null @@ -1,3 +0,0 @@ -set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "") - -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_asan.cmake b/.gitlab/ci/configure_fedora37_asan.cmake index 51977d9454..363e953c4b 100644 --- a/.gitlab/ci/configure_fedora36_asan.cmake +++ b/.gitlab/ci/configure_fedora37_asan.cmake @@ -1,4 +1,4 @@ set(CMAKE_C_FLAGS "-fsanitize=address" CACHE STRING "") set(CMAKE_CXX_FLAGS "-fsanitize=address" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora37_clang_analyzer.cmake b/.gitlab/ci/configure_fedora37_clang_analyzer.cmake new file mode 100644 index 0000000000..f4c4cdd206 --- /dev/null +++ b/.gitlab/ci/configure_fedora37_clang_analyzer.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora36_common.cmake b/.gitlab/ci/configure_fedora37_common.cmake index 4484e264ff..4484e264ff 100644 --- a/.gitlab/ci/configure_fedora36_common.cmake +++ b/.gitlab/ci/configure_fedora37_common.cmake diff --git a/.gitlab/ci/configure_fedora37_common_clang.cmake b/.gitlab/ci/configure_fedora37_common_clang.cmake new file mode 100644 index 0000000000..70c9df9dcf --- /dev/null +++ b/.gitlab/ci/configure_fedora37_common_clang.cmake @@ -0,0 +1,6 @@ +set(CMAKE_Fortran_COMPILER "/usr/bin/flang-new" CACHE FILEPATH "") +set(CMAKE_Fortran_COMPILER_ID "LLVMFlang" CACHE STRING "") +set(CMAKE_Fortran_COMPILER_SUPPORTS_F90 "1" CACHE BOOL "") +set(CMAKE_Fortran_FLAGS "-flang-experimental-exec" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_fedora36_extdeps.cmake b/.gitlab/ci/configure_fedora37_extdeps.cmake index 8e545f5622..8e545f5622 100644 --- a/.gitlab/ci/configure_fedora36_extdeps.cmake +++ b/.gitlab/ci/configure_fedora37_extdeps.cmake diff --git a/.gitlab/ci/configure_fedora36_makefiles.cmake b/.gitlab/ci/configure_fedora37_makefiles.cmake index 11d1a0839c..725cc46e52 100644 --- a/.gitlab/ci/configure_fedora36_makefiles.cmake +++ b/.gitlab/ci/configure_fedora37_makefiles.cmake @@ -30,6 +30,7 @@ set(CMake_TEST_FindGTest "ON" CACHE BOOL "") set(CMake_TEST_FindGTK2 "ON" CACHE BOOL "") set(CMake_TEST_FindIconv "ON" CACHE BOOL "") set(CMake_TEST_FindICU "ON" CACHE BOOL "") +set(CMake_TEST_FindImageMagick "ON" CACHE BOOL "") set(CMake_TEST_FindIntl "ON" CACHE BOOL "") set(CMake_TEST_FindJNI "ON" CACHE BOOL "") set(CMake_TEST_FindJPEG "ON" CACHE BOOL "") @@ -79,6 +80,7 @@ if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") endif() set(CMake_TEST_Qt5 "ON" CACHE BOOL "") +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") set(CMake_TEST_UseSWIG "ON" CACHE BOOL "") include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_fedora37_makefiles_clang.cmake b/.gitlab/ci/configure_fedora37_makefiles_clang.cmake new file mode 100644 index 0000000000..7b82a9a039 --- /dev/null +++ b/.gitlab/ci/configure_fedora37_makefiles_clang.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common_clang.cmake") diff --git a/.gitlab/ci/configure_fedora36_ninja.cmake b/.gitlab/ci/configure_fedora37_ninja.cmake index 45d9192a29..5b406771aa 100644 --- a/.gitlab/ci/configure_fedora36_ninja.cmake +++ b/.gitlab/ci/configure_fedora37_ninja.cmake @@ -2,6 +2,7 @@ set(CMake_TEST_GUI "ON" CACHE BOOL "") if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") endif() +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") # "Release" flags without "-DNDEBUG" so we get assertions. set(CMAKE_C_FLAGS_RELEASE "-O3" CACHE STRING "") @@ -10,4 +11,4 @@ set(CMAKE_CXX_FLAGS_RELEASE "-O3" CACHE STRING "") # Cover compilation with C++11 only and not higher standards. set(CMAKE_CXX_STANDARD "11" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora36_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_fedora37_ninja_clang.cmake b/.gitlab/ci/configure_fedora37_ninja_clang.cmake new file mode 100644 index 0000000000..7b82a9a039 --- /dev/null +++ b/.gitlab/ci/configure_fedora37_ninja_clang.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common_clang.cmake") diff --git a/.gitlab/ci/configure_fedora36_ninja_multi.cmake b/.gitlab/ci/configure_fedora37_ninja_multi.cmake index 94af721f23..94af721f23 100644 --- a/.gitlab/ci/configure_fedora36_ninja_multi.cmake +++ b/.gitlab/ci/configure_fedora37_ninja_multi.cmake diff --git a/.gitlab/ci/configure_fedora36_sphinx.cmake b/.gitlab/ci/configure_fedora37_sphinx.cmake index 90d159b739..90d159b739 100644 --- a/.gitlab/ci/configure_fedora36_sphinx.cmake +++ b/.gitlab/ci/configure_fedora37_sphinx.cmake diff --git a/.gitlab/ci/configure_fedora36_sphinx_package.cmake b/.gitlab/ci/configure_fedora37_sphinx_package.cmake index e839de80c2..e839de80c2 100644 --- a/.gitlab/ci/configure_fedora36_sphinx_package.cmake +++ b/.gitlab/ci/configure_fedora37_sphinx_package.cmake diff --git a/.gitlab/ci/configure_fedora37_tidy.cmake b/.gitlab/ci/configure_fedora37_tidy.cmake new file mode 100644 index 0000000000..f8eb9abab3 --- /dev/null +++ b/.gitlab/ci/configure_fedora37_tidy.cmake @@ -0,0 +1,5 @@ +set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "") +set(CMake_USE_CLANG_TIDY_MODULE ON CACHE BOOL "") +set(CMake_CLANG_TIDY_MODULE "$ENV{CI_PROJECT_DIR}/Utilities/ClangTidyModule/build/libcmake-clang-tidy-module.so" CACHE FILEPATH "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora37_common.cmake") diff --git a/.gitlab/ci/configure_linux_clang_cxx_modules_ninja.cmake b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja.cmake new file mode 100644 index 0000000000..43bccdb56d --- /dev/null +++ b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja.cmake @@ -0,0 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,export_bmi,install_bmi,shared" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_clang.cmake" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_linux_clang_cxx_modules_ninja_multi.cmake b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja_multi.cmake new file mode 100644 index 0000000000..43bccdb56d --- /dev/null +++ b/.gitlab/ci/configure_linux_clang_cxx_modules_ninja_multi.cmake @@ -0,0 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,export_bmi,install_bmi,shared" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_clang.cmake" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake index 2b04e89947..110df76458 100644 --- a/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake +++ b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja.cmake @@ -1,4 +1,4 @@ -set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,export_bmi,install_bmi" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION "named,collation,partitions,internal_partitions,export_bmi,install_bmi" CACHE STRING "") set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_gcc.cmake" CACHE STRING "") include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake index 2b04e89947..110df76458 100644 --- a/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake +++ b/.gitlab/ci/configure_linux_gcc_cxx_modules_ninja_multi.cmake @@ -1,4 +1,4 @@ -set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,export_bmi,install_bmi" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION "named,collation,partitions,internal_partitions,export_bmi,install_bmi" CACHE STRING "") set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_gcc.cmake" CACHE STRING "") include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_macos_arm64_ninja.cmake b/.gitlab/ci/configure_macos_arm64_ninja.cmake index f657d98fd0..f59b43c7f2 100644 --- a/.gitlab/ci/configure_macos_arm64_ninja.cmake +++ b/.gitlab/ci/configure_macos_arm64_ninja.cmake @@ -1,3 +1,7 @@ +set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_GUI "ON" CACHE BOOL "") +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_macos_x86_64_makefiles.cmake b/.gitlab/ci/configure_macos_x86_64_makefiles.cmake index d3ef93fdbf..3c5d8fed2d 100644 --- a/.gitlab/ci/configure_macos_x86_64_makefiles.cmake +++ b/.gitlab/ci/configure_macos_x86_64_makefiles.cmake @@ -1,7 +1,11 @@ +set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_GUI "ON" CACHE BOOL "") if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") endif() +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_macos_x86_64_ninja.cmake b/.gitlab/ci/configure_macos_x86_64_ninja.cmake index d3ef93fdbf..3c5d8fed2d 100644 --- a/.gitlab/ci/configure_macos_x86_64_ninja.cmake +++ b/.gitlab/ci/configure_macos_x86_64_ninja.cmake @@ -1,7 +1,11 @@ +set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "") +set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "") set(CMake_TEST_GUI "ON" CACHE BOOL "") if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") endif() +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_mingw_osdn_io_common.cmake b/.gitlab/ci/configure_mingw_osdn_io_common.cmake new file mode 100644 index 0000000000..55dce1d3ed --- /dev/null +++ b/.gitlab/ci/configure_mingw_osdn_io_common.cmake @@ -0,0 +1,5 @@ +set(CMake_TEST_Java OFF CACHE BOOL "") + +set(configure_no_sccache 1) + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_mingw_osdn_io_mingw_makefiles.cmake b/.gitlab/ci/configure_mingw_osdn_io_mingw_makefiles.cmake new file mode 100644 index 0000000000..5ddd410be6 --- /dev/null +++ b/.gitlab/ci/configure_mingw_osdn_io_mingw_makefiles.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_mingw_osdn_io_common.cmake") diff --git a/.gitlab/ci/configure_mingw_osdn_io_msys_makefiles.cmake b/.gitlab/ci/configure_mingw_osdn_io_msys_makefiles.cmake new file mode 100644 index 0000000000..5ddd410be6 --- /dev/null +++ b/.gitlab/ci/configure_mingw_osdn_io_msys_makefiles.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_mingw_osdn_io_common.cmake") diff --git a/.gitlab/ci/configure_nvhpc_ninja.cmake b/.gitlab/ci/configure_nvhpc_ninja.cmake new file mode 100644 index 0000000000..ca8ba932f5 --- /dev/null +++ b/.gitlab/ci/configure_nvhpc_ninja.cmake @@ -0,0 +1,5 @@ +set(CMake_TEST_CUDA "NVIDIA" CACHE STRING "") + +set(configure_no_sccache 1) + +include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake") diff --git a/.gitlab/ci/configure_windows_arm64_vs2022.cmake b/.gitlab/ci/configure_windows_arm64_vs2022.cmake new file mode 100644 index 0000000000..c7d41ea1d4 --- /dev/null +++ b/.gitlab/ci/configure_windows_arm64_vs2022.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common.cmake") diff --git a/.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake b/.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake new file mode 100644 index 0000000000..a12ee6cbb1 --- /dev/null +++ b/.gitlab/ci/configure_windows_arm64_vs2022_ninja.cmake @@ -0,0 +1,8 @@ +# Qt host tools are not yet available natively on windows-arm64. +set(CMake_TEST_GUI "OFF" CACHE BOOL "") +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" CACHE STRING "") +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") diff --git a/.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake b/.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake index 8570196c26..38dd7293d4 100644 --- a/.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake +++ b/.gitlab/ci/configure_windows_msvc_cxx_modules_common.cmake @@ -1,2 +1,2 @@ -set(CMake_TEST_MODULE_COMPILATION "named,partitions,internal_partitions,shared,export_bmi,install_bmi" CACHE STRING "") +set(CMake_TEST_MODULE_COMPILATION "named,collation,partitions,internal_partitions,shared,export_bmi,install_bmi" CACHE STRING "") set(CMake_TEST_MODULE_COMPILATION_RULES "${CMAKE_CURRENT_LIST_DIR}/cxx_modules_rules_msvc.cmake" CACHE STRING "") diff --git a/.gitlab/ci/configure_windows_package_common.cmake b/.gitlab/ci/configure_windows_package_common.cmake index 46c0a3e75a..b3929a472a 100644 --- a/.gitlab/ci/configure_windows_package_common.cmake +++ b/.gitlab/ci/configure_windows_package_common.cmake @@ -19,4 +19,6 @@ set(CMake_TEST_Qt5 OFF CACHE BOOL "") set(CMake_TEST_Qt6 OFF CACHE BOOL "") set(Python_FIND_REGISTRY NEVER CACHE STRING "") +set(CMake_CPACK_CUSTOM_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/CMakeCPack.cmake" CACHE FILEPATH "") + include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_windows_vs2022_x64.cmake b/.gitlab/ci/configure_windows_vs2022_x64.cmake index c7d41ea1d4..1e0f584eef 100644 --- a/.gitlab/ci/configure_windows_vs2022_x64.cmake +++ b/.gitlab/ci/configure_windows_vs2022_x64.cmake @@ -1 +1,4 @@ +set(CMake_TEST_MODULE_COMPILATION "named,partitions" CACHE STRING "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_msvc_cxx_modules_common.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_windows_vs_common.cmake") diff --git a/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake index f5a6d80c6a..5bf0be89e2 100644 --- a/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake +++ b/.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake @@ -1,6 +1,7 @@ if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "") set(CMake_TEST_ISPC "ON" CACHE STRING "") endif() +set(CMake_TEST_TLS_VERIFY_URL "https://gitlab.kitware.com" 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") diff --git a/.gitlab/ci/ctest_build.cmake b/.gitlab/ci/ctest_build.cmake index 4bb292419e..e874a62ca2 100644 --- a/.gitlab/ci/ctest_build.cmake +++ b/.gitlab/ci/ctest_build.cmake @@ -22,9 +22,32 @@ elseif (CTEST_CMAKE_GENERATOR MATCHES "Ninja") set(CTEST_BUILD_FLAGS "-l${nproc}") endif () +set(ctest_build_args) + +# IWYU debugging: +# - set the name of the target (if not one of the main libraries) +# - set the name of the source (without extension, relative to `Source/`) +# - uncomment the debugging support in the relevant `configure_*_iwyu.cmake` file +set(iwyu_source_target) # set for "other" targets not the "main" 3 libraries +set(iwyu_source_name) # e.g., cmTarget +if (iwyu_source_name AND "$ENV{CMAKE_CONFIGURATION}" MATCHES "iwyu") + if (NOT iwyu_source_target) + if (iwyu_source_name MATCHES "^(CTest/|cmCTest$)") + set(iwyu_source_target "CTestLib") + elseif (iwyu_source_name MATCHES "^CPack/") + set(iwyu_source_target "CPackLib") + else () # Assume everything else is in CMakeLib + set(iwyu_source_target "CMakeLib") + endif () + endif () + list(APPEND ctest_build_args + TARGET "Source/CMakeFiles/${iwyu_source_target}.dir/${iwyu_source_name}.cxx.o") +endif () + ctest_build( NUMBER_WARNINGS num_warnings - RETURN_VALUE build_result) + RETURN_VALUE build_result + ${ctest_build_args}) ctest_submit(PARTS Build) if (build_result) @@ -37,6 +60,11 @@ if ("$ENV{CTEST_NO_WARNINGS_ALLOWED}" AND num_warnings GREATER 0) "Found ${num_warnings} warnings (treating as fatal).") endif () +if (ctest_build_args) + message(FATAL_ERROR + "Failing to prevent debugging support from being committed.") +endif () + if (NOT "$ENV{CMAKE_CI_NO_INSTALL}") ctest_build(APPEND TARGET install diff --git a/.gitlab/ci/ctest_exclusions.cmake b/.gitlab/ci/ctest_exclusions.cmake index 89a5ace956..a2789c3af8 100644 --- a/.gitlab/ci/ctest_exclusions.cmake +++ b/.gitlab/ci/ctest_exclusions.cmake @@ -27,6 +27,13 @@ if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "_jom") ) endif() +if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "nvhpc_") + list(APPEND test_exclusions + # FIXME(#24187): This test fails with NVHPC as the CUDA host compiler. + "^CudaOnly.SeparateCompilationPTX$" + ) +endif() + string(REPLACE ";" "|" test_exclusions "${test_exclusions}") if (test_exclusions) set(test_exclusions "(${test_exclusions})") diff --git a/.gitlab/ci/ctest_memcheck_fedora36_asan.lsan.supp b/.gitlab/ci/ctest_memcheck_fedora37_asan.lsan.supp index 8ec1a0358b..8ec1a0358b 100644 --- a/.gitlab/ci/ctest_memcheck_fedora36_asan.lsan.supp +++ b/.gitlab/ci/ctest_memcheck_fedora37_asan.lsan.supp diff --git a/.gitlab/ci/cxx_modules_rules_clang.cmake b/.gitlab/ci/cxx_modules_rules_clang.cmake new file mode 100644 index 0000000000..fcb22817be --- /dev/null +++ b/.gitlab/ci/cxx_modules_rules_clang.cmake @@ -0,0 +1,18 @@ +set(CMake_TEST_CXXModules_UUID "a246741c-d067-4019-a8fb-3d16b0c9d1d3") + +set(CMAKE_EXPERIMENTAL_CXX_MODULE_DYNDEP 1) +string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE + "${CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS}" + " -format=p1689" + " --" + " <CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS>" + " -x c++ <SOURCE> -c -o <OBJECT>" + " -MT <DYNDEP_FILE>" + " -MD -MF <DEP_FILE>" + " > <DYNDEP_FILE>") +set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "clang") +set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>") + +# Default to C++ extensions being off. Clang's modules support have trouble +# with extensions right now. +set(CMAKE_CXX_EXTENSIONS OFF) diff --git a/.gitlab/ci/docker/clang_cxx_modules/Dockerfile b/.gitlab/ci/docker/clang_cxx_modules/Dockerfile new file mode 100644 index 0000000000..4e58125fea --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/Dockerfile @@ -0,0 +1,13 @@ +FROM fedora:37 +MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> + +# Install build dependencies for packages. +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh + +COPY install_llvm.sh /root/install_llvm.sh +RUN sh /root/install_llvm.sh + +# Install build dependencies for CMake's CI. +COPY install_cmake_deps.sh /root/install_cmake_deps.sh +RUN sh /root/install_cmake_deps.sh diff --git a/.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh b/.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh new file mode 100755 index 0000000000..465e12577a --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/install_cmake_deps.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +dnf install -y --setopt=install_weak_deps=False \ + file git-core +dnf clean all diff --git a/.gitlab/ci/docker/clang_cxx_modules/install_deps.sh b/.gitlab/ci/docker/clang_cxx_modules/install_deps.sh new file mode 100755 index 0000000000..c1957c3fc8 --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/install_deps.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -e + +dnf install -y --setopt=install_weak_deps=False \ + gcc-c++ cmake ninja-build +dnf clean all diff --git a/.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh b/.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh new file mode 100755 index 0000000000..35f925e61a --- /dev/null +++ b/.gitlab/ci/docker/clang_cxx_modules/install_llvm.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +set -e + +readonly revision="6d859df46e93e04bd7a4f90d9a9056763998f638" # llvmorg-16.0.0-rc2-31-g6d859df46e93 +readonly tarball="https://github.com/llvm/llvm-project/archive/$revision.tar.gz" + +readonly workdir="$HOME/llvm" +readonly srcdir="$workdir/llvm" +readonly builddir="$workdir/build" + +mkdir -p "$workdir" +cd "$workdir" +curl -L "$tarball" > "llvm-$revision.tar.gz" +tar xf "llvm-$revision.tar.gz" +mv "llvm-project-$revision" "$srcdir" +mkdir -p "$builddir" +cd "$builddir" +cmake -GNinja \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=ON \ + -DLLVM_ENABLE_BINDINGS=OFF \ + -DLLVM_INCLUDE_BENCHMARKS=OFF \ + -DLLVM_INCLUDE_DOCS=OFF \ + -DLLVM_INCLUDE_EXAMPLES=OFF \ + -DLLVM_INCLUDE_RUNTIMES=OFF \ + -DLLVM_INCLUDE_TESTS=OFF \ + -DLLVM_INCLUDE_UTILS=OFF \ + -DLLVM_TARGETS_TO_BUILD=X86 \ + -DLLVM_TOOL_CLANG_BUILD=ON \ + -DLLVM_USE_SYMLINKS=ON \ + "-DLLVM_EXTERNAL_CLANG_SOURCE_DIR=$srcdir/clang" \ + -DLLVM_PARALLEL_LINK_JOBS=1 \ + -DCLANG_BUILD_TOOLS=ON \ + "-DCMAKE_INSTALL_PREFIX=/opt/llvm-p1689" \ + "$srcdir/llvm" +ninja +ninja install/strip +rm -rf "$workdir" diff --git a/.gitlab/ci/docker/cuda10.2/Dockerfile b/.gitlab/ci/docker/cuda10.2/Dockerfile index b6f37b5178..cd30446c43 100644 --- a/.gitlab/ci/docker/cuda10.2/Dockerfile +++ b/.gitlab/ci/docker/cuda10.2/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:10.2-devel-ubuntu18.04 +FROM kitware/nvidia-cuda:10.2-devel-ubuntu18.04 MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> COPY llvm.list /etc/apt/sources.list.d/llvm.list diff --git a/.gitlab/ci/docker/cuda11.6/Dockerfile b/.gitlab/ci/docker/cuda11.6/Dockerfile index 27cdf8b91a..f69b0fdbbb 100644 --- a/.gitlab/ci/docker/cuda11.6/Dockerfile +++ b/.gitlab/ci/docker/cuda11.6/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:11.6.0-devel-ubuntu20.04 +FROM kitware/nvidia-cuda:11.6.0-devel-ubuntu20.04 MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> COPY llvm.list /etc/apt/sources.list.d/llvm.list diff --git a/.gitlab/ci/docker/cuda11.8-minimal/Dockerfile b/.gitlab/ci/docker/cuda11.8-minimal/Dockerfile new file mode 100644 index 0000000000..e185848bbd --- /dev/null +++ b/.gitlab/ci/docker/cuda11.8-minimal/Dockerfile @@ -0,0 +1,5 @@ +FROM kitware/nvidia-cuda:11.8.0-devel-ubuntu20.04 +MAINTAINER Robert Maynard <rmaynard@nvidia.com> + +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/cuda11.8-minimal/install_deps.sh b/.gitlab/ci/docker/cuda11.8-minimal/install_deps.sh new file mode 100755 index 0000000000..55f4ce5211 --- /dev/null +++ b/.gitlab/ci/docker/cuda11.8-minimal/install_deps.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +set -e + +apt-get update + +# Install dependency without interaction. +env DEBIAN_FRONTEND=noninteractive \ + TZ=America/New_York \ + apt-get install -y \ + tzdata + +# Install development tools. +apt-get install -y \ + g++ \ + curl \ + git + +# Reduce to minimal subset of libraries by removing static libraries +mkdir /tmp/cuda_required +mv /usr/local/cuda/lib64/libcuda* /tmp/cuda_required/ +rm -f /usr/local/cuda/lib64/*static.a +mv /tmp/cuda_required/libcuda* /usr/local/cuda/lib64/ +rmdir /tmp/cuda_required + +apt-get clean diff --git a/.gitlab/ci/docker/cuda9.2/Dockerfile b/.gitlab/ci/docker/cuda9.2/Dockerfile index 7eae886b53..d7e483b1c3 100644 --- a/.gitlab/ci/docker/cuda9.2/Dockerfile +++ b/.gitlab/ci/docker/cuda9.2/Dockerfile @@ -1,4 +1,4 @@ -FROM nvidia/cuda:9.2-devel-ubuntu16.04 +FROM kitware/nvidia-cuda:9.2-devel-ubuntu16.04 MAINTAINER Brad King <brad.king@kitware.com> COPY install_deps.sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/debian10-aarch64/Dockerfile b/.gitlab/ci/docker/debian10-aarch64/Dockerfile index 2079795e99..a0687e3e30 100644 --- a/.gitlab/ci/docker/debian10-aarch64/Dockerfile +++ b/.gitlab/ci/docker/debian10-aarch64/Dockerfile @@ -1,5 +1,26 @@ -FROM arm64v8/debian:10 -MAINTAINER Brad King <brad.king@kitware.com> +# syntax=docker/dockerfile:1 -COPY install_deps.sh /root/install_deps.sh -RUN sh /root/install_deps.sh +ARG BASE_IMAGE=arm64v8/debian:10 + +FROM ${BASE_IMAGE} AS apt-cache +# Populate APT cache w/ the fresh metadata and prefetch packages. +# Use an empty `docker-clean` file to "hide" the image-provided +# file to disallow removing packages after `apt-get` operations. +RUN --mount=type=tmpfs,target=/var/log \ + --mount=type=bind,source=docker-clean,target=/etc/apt/apt.conf.d/docker-clean \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + apt-get update \ + && apt-get --download-only -y install $(grep -h '^[^#]\+$' /root/*.lst) + +FROM ${BASE_IMAGE} +LABEL maintainer="Brad King <brad.king@kitware.com>" + +RUN --mount=type=bind,source=install_deps.sh,target=/root/install_deps.sh \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + --mount=type=bind,source=dpkg-exclude,target=/etc/dpkg/dpkg.cfg.d/exclude \ + --mount=type=bind,source=docker-clean,target=/etc/apt/apt.conf.d/docker-clean \ + --mount=type=cache,from=apt-cache,source=/var/lib/apt/lists,target=/var/lib/apt/lists \ + --mount=type=cache,from=apt-cache,source=/var/cache/apt,target=/var/cache/apt,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/debian10-aarch64/deps_packages.lst b/.gitlab/ci/docker/debian10-aarch64/deps_packages.lst new file mode 100644 index 0000000000..5e30e160a2 --- /dev/null +++ b/.gitlab/ci/docker/debian10-aarch64/deps_packages.lst @@ -0,0 +1,90 @@ +# Install build requirements. +libssl-dev + +# Install development tools. +g++ +curl +git + +# Install optional external build dependencies. +libarchive-dev +libbz2-dev +libcurl4-gnutls-dev +libexpat1-dev +libjsoncpp-dev +liblzma-dev +libncurses-dev +librhash-dev +libuv1-dev +libzstd-dev +zlib1g-dev + +# Install iwyu runtime deps. +clang-6.0 +libncurses6 + +# Tools needed for the test suite. +jq + +# Packages needed to test CTest. +bzr bzr-xmloutput +cvs +subversion +mercurial + +# Packages needed to test find modules. +alsa-utils +doxygen graphviz +freeglut3-dev +gnutls-dev +libarchive-dev +libblas-dev +libboost-dev +libboost-filesystem-dev +libboost-program-options-dev +libboost-python-dev +libboost-thread-dev +libbz2-dev +libcups2-dev +libcurl4-gnutls-dev +libdevil-dev +libfontconfig1-dev +libfreetype6-dev +libgdal-dev +libgif-dev +libgl1-mesa-dev +libglew-dev +libgmock-dev +libgrpc++-dev libgrpc-dev +libgsl-dev +libgtest-dev +libgtk2.0-dev +libicu-dev +libinput-dev +libjpeg-dev +libjsoncpp-dev +liblapack-dev +liblzma-dev +libmagick++-dev +libopenal-dev +libopenmpi-dev openmpi-bin +libosp-dev +libpng-dev +libpq-dev postgresql-server-dev-11 +libprotobuf-dev libprotobuf-c-dev libprotoc-dev protobuf-compiler protobuf-compiler-grpc +libsdl-dev +libsqlite3-dev +libtiff-dev +libuv1-dev +libx11-dev +libxalan-c-dev +libxerces-c-dev +libxml2-dev libxml2-utils +libxslt-dev xsltproc +openjdk-11-jdk +python2 python2-dev python-numpy pypy pypy-dev +python3 python3-dev python3-numpy pypy3 pypy3-dev python3-venv +qtbase5-dev qtbase5-dev-tools +ruby ruby-dev +swig +unixodbc-dev diff --git a/.gitlab/ci/docker/debian10-aarch64/docker-clean b/.gitlab/ci/docker/debian10-aarch64/docker-clean new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/.gitlab/ci/docker/debian10-aarch64/docker-clean diff --git a/.gitlab/ci/docker/debian10-aarch64/dpkg-exclude b/.gitlab/ci/docker/debian10-aarch64/dpkg-exclude new file mode 100644 index 0000000000..60b656549c --- /dev/null +++ b/.gitlab/ci/docker/debian10-aarch64/dpkg-exclude @@ -0,0 +1,21 @@ +# Drop all man pages +path-exclude=/usr/share/man/* + +# Drop all info pages +path-exclude=/usr/share/info/* + +# Drop all README files except from the some packages +path-exclude=/usr/**/*README* +path-include=/usr/share/devscripts/templates/README.mk-build-deps +path-include=/usr/share/equivs/template/debian/README.Debian.in + +# Drop all translations +path-exclude=/usr/share/locale/*/LC_MESSAGES/*.mo + +# Drop all documentation ... +path-exclude=/usr/share/doc/* +path-exclude=/usr/share/doc-base/* +path-exclude=/usr/share/gtk-doc/* + +# Per package excludes +path-exclude=/usr/share/gnupg/help.*.txt diff --git a/.gitlab/ci/docker/debian10-aarch64/install_deps.sh b/.gitlab/ci/docker/debian10-aarch64/install_deps.sh index 8b5a00128b..d1c8aed53c 100755 --- a/.gitlab/ci/docker/debian10-aarch64/install_deps.sh +++ b/.gitlab/ci/docker/debian10-aarch64/install_deps.sh @@ -2,103 +2,4 @@ set -e -apt-get update - -# Install build requirements. -apt-get install -y \ - libssl-dev - -# Install development tools. -apt-get install -y \ - g++ \ - curl \ - git - -# Install optional external build dependencies. -apt-get install -y \ - libarchive-dev \ - libbz2-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libjsoncpp-dev \ - liblzma-dev \ - libncurses-dev \ - librhash-dev \ - libuv1-dev \ - libzstd-dev \ - zlib1g-dev - -# Install iwyu runtime deps. -apt-get install -y \ - clang-6.0 \ - libncurses6 - -# Tools needed for the test suite. -apt-get install -y \ - jq - -# Packages needed to test CTest. -apt-get install -y \ - bzr bzr-xmloutput \ - cvs \ - subversion \ - mercurial - -# Packages needed to test find modules. -apt-get install -y \ - alsa-utils \ - doxygen graphviz \ - freeglut3-dev \ - gnutls-dev \ - libarchive-dev \ - libblas-dev \ - libboost-dev \ - libboost-filesystem-dev \ - libboost-program-options-dev \ - libboost-python-dev \ - libboost-thread-dev \ - libbz2-dev \ - libcups2-dev \ - libcurl4-gnutls-dev \ - libdevil-dev \ - libfontconfig1-dev \ - libfreetype6-dev \ - libgdal-dev \ - libgif-dev \ - libgl1-mesa-dev \ - libglew-dev \ - libgmock-dev \ - libgrpc++-dev libgrpc-dev \ - libgsl-dev \ - libgtest-dev \ - libgtk2.0-dev \ - libicu-dev \ - libinput-dev \ - libjpeg-dev \ - libjsoncpp-dev \ - liblapack-dev \ - liblzma-dev \ - libopenal-dev \ - libopenmpi-dev openmpi-bin \ - libosp-dev \ - libpng-dev \ - libpq-dev postgresql-server-dev-11 \ - libprotobuf-dev libprotobuf-c-dev libprotoc-dev protobuf-compiler protobuf-compiler-grpc \ - libsdl-dev \ - libsqlite3-dev \ - libtiff-dev \ - libuv1-dev \ - libx11-dev \ - libxalan-c-dev \ - libxerces-c-dev \ - libxml2-dev libxml2-utils \ - libxslt-dev xsltproc \ - openjdk-11-jdk \ - python2 python2-dev python-numpy pypy pypy-dev \ - python3 python3-dev python3-numpy pypy3 pypy3-dev python3-venv \ - qtbase5-dev qtbase5-dev-tools \ - ruby ruby-dev \ - swig \ - unixodbc-dev - -apt-get clean +apt-get install -y $(grep '^[^#]\+$' /root/deps_packages.lst) diff --git a/.gitlab/ci/docker/debian10/Dockerfile b/.gitlab/ci/docker/debian10/Dockerfile index 34a4bf14fd..d86642876c 100644 --- a/.gitlab/ci/docker/debian10/Dockerfile +++ b/.gitlab/ci/docker/debian10/Dockerfile @@ -1,25 +1,62 @@ -FROM debian:10 as iwyu-build -MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> +# syntax=docker/dockerfile:1 -COPY install_iwyu.sh /root/install_iwyu.sh -RUN sh /root/install_iwyu.sh +ARG BASE_IMAGE=debian:10 -FROM debian:10 as rvm-build -MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> +FROM ${BASE_IMAGE} AS apt-cache +# Populate APT cache w/ the fresh metadata and prefetch packages. +# Use an empty `docker-clean` file to "hide" the image-provided +# file to disallow removing packages after `apt-get` operations. +RUN --mount=type=tmpfs,target=/var/log \ + --mount=type=bind,source=docker-clean,target=/etc/apt/apt.conf.d/docker-clean \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + --mount=type=bind,source=iwyu_packages.lst,target=/root/iwyu_packages.lst \ + --mount=type=bind,source=rvm_packages.lst,target=/root/rvm_packages.lst \ + apt-get update \ + && apt-get --download-only -y install $(grep -h '^[^#]\+$' /root/*.lst) -COPY install_rvm.sh /root/install_rvm.sh -RUN sh /root/install_rvm.sh -FROM debian:10 -MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> +FROM ${BASE_IMAGE} AS iwyu-build +LABEL maintainer="Ben Boeckel <ben.boeckel@kitware.com>" -COPY install_deps.sh /root/install_deps.sh -RUN sh /root/install_deps.sh +RUN --mount=type=bind,source=install_iwyu.sh,target=/root/install_iwyu.sh \ + --mount=type=bind,source=iwyu_packages.lst,target=/root/iwyu_packages.lst \ + --mount=type=bind,source=docker-clean,target=/etc/apt/apt.conf.d/docker-clean \ + --mount=type=cache,from=apt-cache,source=/var/lib/apt/lists,target=/var/lib/apt/lists \ + --mount=type=cache,from=apt-cache,source=/var/cache/apt,target=/var/cache/apt,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_iwyu.sh -COPY --from=iwyu-build /root/iwyu.tar.gz /root/iwyu.tar.gz -RUN tar -C / -xf /root/iwyu.tar.gz -RUN ln -s /usr/lib/llvm-6.0/bin/include-what-you-use /usr/bin/include-what-you-use-6.0 -COPY --from=rvm-build /root/rvm.tar /root/rvm.tar -RUN tar -C /usr/local -xf /root/rvm.tar \ - && rm /root/rvm.tar +FROM ${BASE_IMAGE} AS rvm-build +LABEL maintainer="Ben Boeckel <ben.boeckel@kitware.com>" + +RUN --mount=type=bind,source=install_rvm.sh,target=/root/install_rvm.sh \ + --mount=type=bind,source=rvm_packages.lst,target=/root/rvm_packages.lst \ + --mount=type=bind,source=docker-clean,target=/etc/apt/apt.conf.d/docker-clean \ + --mount=type=cache,from=apt-cache,source=/var/lib/apt/lists,target=/var/lib/apt/lists \ + --mount=type=cache,from=apt-cache,source=/var/cache/apt,target=/var/cache/apt,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_rvm.sh + + +FROM ${BASE_IMAGE} +LABEL maintainer="Ben Boeckel <ben.boeckel@kitware.com>" + +RUN --mount=type=bind,source=install_deps.sh,target=/root/install_deps.sh \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + --mount=type=bind,source=dpkg-exclude,target=/etc/dpkg/dpkg.cfg.d/exclude \ + --mount=type=bind,source=docker-clean,target=/etc/apt/apt.conf.d/docker-clean \ + --mount=type=cache,from=apt-cache,source=/var/lib/apt/lists,target=/var/lib/apt/lists \ + --mount=type=cache,from=apt-cache,source=/var/cache/apt,target=/var/cache/apt,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_deps.sh + +RUN --mount=type=bind,from=iwyu-build,source=/root,target=/root \ + tar -C / -xf /root/iwyu.tar \ + && ln -s /usr/lib/llvm-6.0/bin/include-what-you-use /usr/bin/include-what-you-use-6.0 + +RUN --mount=type=bind,from=rvm-build,source=/root,target=/root \ + tar -C /usr/local -xf /root/rvm.tar diff --git a/.gitlab/ci/docker/debian10/deps_packages.lst b/.gitlab/ci/docker/debian10/deps_packages.lst new file mode 100644 index 0000000000..3df41f5bc5 --- /dev/null +++ b/.gitlab/ci/docker/debian10/deps_packages.lst @@ -0,0 +1,96 @@ +# Install build requirements. +libssl-dev + +# Install development tools. +g++ +curl +git + +# Install optional external build dependencies. +libarchive-dev +libbz2-dev +libcurl4-gnutls-dev +libexpat1-dev +libjsoncpp-dev +liblzma-dev +libncurses-dev +librhash-dev +libuv1-dev +libzstd-dev +zlib1g-dev + +# Install iwyu runtime deps. +clang-6.0 +libncurses6 + +# Tools needed for the test suite. +jq + +# Packages needed to test CTest. +bzr bzr-xmloutput +cvs +subversion +mercurial + +# Install swift runtime deps. +libncurses5 + +# Packages needed to test find modules. +alsa-utils +doxygen graphviz +freeglut3-dev +gnutls-dev +libarchive-dev +libblas-dev +libboost-dev +libboost-filesystem-dev +libboost-program-options-dev +libboost-python-dev +libboost-thread-dev +libbz2-dev +libcups2-dev +libcurl4-gnutls-dev +libdevil-dev +libfontconfig1-dev +libfreetype6-dev +libgdal-dev +libgif-dev +libgl1-mesa-dev +libglew-dev +libgmock-dev +libgrpc++-dev libgrpc-dev +libgsl-dev +libgtest-dev +libgtk2.0-dev +libicu-dev +libinput-dev +libjpeg-dev +libjsoncpp-dev +liblapack-dev +liblzma-dev +libmagick++-dev +libopenal-dev +libopenmpi-dev openmpi-bin +libosp-dev +libpng-dev +libpq-dev postgresql-server-dev-11 +libprotobuf-dev libprotobuf-c-dev libprotoc-dev protobuf-compiler protobuf-compiler-grpc +libsdl-dev +libsqlite3-dev +libtiff-dev +libuv1-dev +libx11-dev +libxalan-c-dev +libxerces-c-dev +libxml2-dev libxml2-utils +libxslt-dev xsltproc +openjdk-11-jdk +python2 python2-dev python-numpy pypy pypy-dev +python3 python3-dev python3-numpy pypy3 pypy3-dev python3-venv +qtbase5-dev qtbase5-dev-tools +ruby ruby-dev +swig +unixodbc-dev + +# CMake_TEST_FindPython_IronPython +libmono-system-windows-forms4.0-cil diff --git a/.gitlab/ci/docker/debian10/docker-clean b/.gitlab/ci/docker/debian10/docker-clean new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/.gitlab/ci/docker/debian10/docker-clean diff --git a/.gitlab/ci/docker/debian10/dpkg-exclude b/.gitlab/ci/docker/debian10/dpkg-exclude new file mode 100644 index 0000000000..60b656549c --- /dev/null +++ b/.gitlab/ci/docker/debian10/dpkg-exclude @@ -0,0 +1,21 @@ +# Drop all man pages +path-exclude=/usr/share/man/* + +# Drop all info pages +path-exclude=/usr/share/info/* + +# Drop all README files except from the some packages +path-exclude=/usr/**/*README* +path-include=/usr/share/devscripts/templates/README.mk-build-deps +path-include=/usr/share/equivs/template/debian/README.Debian.in + +# Drop all translations +path-exclude=/usr/share/locale/*/LC_MESSAGES/*.mo + +# Drop all documentation ... +path-exclude=/usr/share/doc/* +path-exclude=/usr/share/doc-base/* +path-exclude=/usr/share/gtk-doc/* + +# Per package excludes +path-exclude=/usr/share/gnupg/help.*.txt diff --git a/.gitlab/ci/docker/debian10/install_deps.sh b/.gitlab/ci/docker/debian10/install_deps.sh index 486b2f7e3e..a00e322cd8 100755 --- a/.gitlab/ci/docker/debian10/install_deps.sh +++ b/.gitlab/ci/docker/debian10/install_deps.sh @@ -2,112 +2,8 @@ set -e -apt-get update +apt-get install -y $(grep '^[^#]\+$' /root/deps_packages.lst) -# Install build requirements. -apt-get install -y \ - libssl-dev - -# Install development tools. -apt-get install -y \ - g++ \ - curl \ - git - -# Install optional external build dependencies. -apt-get install -y \ - libarchive-dev \ - libbz2-dev \ - libcurl4-gnutls-dev \ - libexpat1-dev \ - libjsoncpp-dev \ - liblzma-dev \ - libncurses-dev \ - librhash-dev \ - libuv1-dev \ - libzstd-dev \ - zlib1g-dev - -# Install iwyu runtime deps. -apt-get install -y \ - clang-6.0 \ - libncurses6 - -# Tools needed for the test suite. -apt-get install -y \ - jq - -# Packages needed to test CTest. -apt-get install -y \ - bzr bzr-xmloutput \ - cvs \ - subversion \ - mercurial - -# Install swift runtime deps. -apt-get install -y \ - libncurses5 - -# Packages needed to test find modules. -apt-get install -y \ - alsa-utils \ - doxygen graphviz \ - freeglut3-dev \ - gnutls-dev \ - libarchive-dev \ - libblas-dev \ - libboost-dev \ - libboost-filesystem-dev \ - libboost-program-options-dev \ - libboost-python-dev \ - libboost-thread-dev \ - libbz2-dev \ - libcups2-dev \ - libcurl4-gnutls-dev \ - libdevil-dev \ - libfontconfig1-dev \ - libfreetype6-dev \ - libgdal-dev \ - libgif-dev \ - libgl1-mesa-dev \ - libglew-dev \ - libgmock-dev \ - libgrpc++-dev libgrpc-dev \ - libgsl-dev \ - libgtest-dev \ - libgtk2.0-dev \ - libicu-dev \ - libinput-dev \ - libjpeg-dev \ - libjsoncpp-dev \ - liblapack-dev \ - liblzma-dev \ - libopenal-dev \ - libopenmpi-dev openmpi-bin \ - libosp-dev \ - libpng-dev \ - libpq-dev postgresql-server-dev-11 \ - libprotobuf-dev libprotobuf-c-dev libprotoc-dev protobuf-compiler protobuf-compiler-grpc \ - libsdl-dev \ - libsqlite3-dev \ - libtiff-dev \ - libuv1-dev \ - libx11-dev \ - libxalan-c-dev \ - libxerces-c-dev \ - libxml2-dev libxml2-utils \ - libxslt-dev xsltproc \ - openjdk-11-jdk \ - python2 python2-dev python-numpy pypy pypy-dev \ - python3 python3-dev python3-numpy pypy3 pypy3-dev python3-venv \ - qtbase5-dev qtbase5-dev-tools \ - ruby ruby-dev \ - swig \ - unixodbc-dev - -# CMake_TEST_FindPython_IronPython -apt-get install -y \ - libmono-system-windows-forms4.0-cil curl -L -O https://github.com/IronLanguages/ironpython2/releases/download/ipy-2.7.10/ironpython_2.7.10.deb echo 'e1aceec1d49ffa66e9059a52168a734999dcccc50164a60e2936649cae698f3e ironpython_2.7.10.deb' > ironpython.sha256sum sha256sum --check ironpython.sha256sum @@ -115,8 +11,5 @@ dpkg -i ironpython_2.7.10.deb rm ironpython_2.7.10.deb ironpython.sha256sum # Perforce -curl -L -O https://www.perforce.com/downloads/perforce/r21.2/bin.linux26x86_64/helix-core-server.tgz -tar -C /usr/local/bin -xvzf helix-core-server.tgz -- p4 p4d -rm helix-core-server.tgz - -apt-get clean +curl -L https://www.perforce.com/downloads/perforce/r21.2/bin.linux26x86_64/helix-core-server.tgz -o - \ + | tar -C /usr/local/bin -xvzf - -- p4 p4d diff --git a/.gitlab/ci/docker/debian10/install_iwyu.sh b/.gitlab/ci/docker/debian10/install_iwyu.sh index 54d26efd4d..4814a7161e 100755 --- a/.gitlab/ci/docker/debian10/install_iwyu.sh +++ b/.gitlab/ci/docker/debian10/install_iwyu.sh @@ -3,16 +3,7 @@ set -e # Install development tools. -apt-get update -apt-get install -y \ - clang-6.0 \ - libclang-6.0-dev \ - llvm-6.0-dev \ - libz-dev \ - g++ \ - cmake \ - ninja-build \ - git +apt-get install -y $(grep '^[^#]\+$' /root/iwyu_packages.lst) cd /root git clone "https://github.com/include-what-you-use/include-what-you-use.git" @@ -29,4 +20,4 @@ cmake -GNinja \ .. ninja DESTDIR=/root/iwyu-destdir ninja install -tar -C /root/iwyu-destdir -cf /root/iwyu.tar.gz . +tar -C /root/iwyu-destdir -cf /root/iwyu.tar . diff --git a/.gitlab/ci/docker/debian10/install_rvm.sh b/.gitlab/ci/docker/debian10/install_rvm.sh index 0ebc74653d..c6fff70d02 100755 --- a/.gitlab/ci/docker/debian10/install_rvm.sh +++ b/.gitlab/ci/docker/debian10/install_rvm.sh @@ -2,11 +2,7 @@ set -e -apt-get update -apt-get install -y \ - curl \ - gnupg2 \ - procps +apt-get install -y $(grep '^[^#]\+$' /root/rvm_packages.lst) gpg2 --keyserver hkps://keyserver.ubuntu.com \ --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \ @@ -17,4 +13,8 @@ curl -sSL https://get.rvm.io | bash -s stable # keep version in sync with `env_debian*_ninja.sh` /usr/local/rvm/bin/rvm install ruby-2.7.0 -tar -C /usr/local -cf /root/rvm.tar rvm +for p in archives examples gem-cache log src; do + touch /usr/local/rvm/${p}/.tar_exclude +done + +tar -C /usr/local --exclude-tag-under=.tar_exclude -cf /root/rvm.tar rvm diff --git a/.gitlab/ci/docker/debian10/iwyu_packages.lst b/.gitlab/ci/docker/debian10/iwyu_packages.lst new file mode 100644 index 0000000000..9e291c9b04 --- /dev/null +++ b/.gitlab/ci/docker/debian10/iwyu_packages.lst @@ -0,0 +1,9 @@ +# Install development tools. +clang-6.0 +libclang-6.0-dev +llvm-6.0-dev +libz-dev +g++ +cmake +ninja-build +git diff --git a/.gitlab/ci/docker/debian10/rvm_packages.lst b/.gitlab/ci/docker/debian10/rvm_packages.lst new file mode 100644 index 0000000000..80f079cbf2 --- /dev/null +++ b/.gitlab/ci/docker/debian10/rvm_packages.lst @@ -0,0 +1,25 @@ +autoconf +automake +bison +bzip2 +curl +g++ +gawk +gcc +gnupg2 +libc6-dev +libffi-dev +libgdbm-dev +libgmp-dev +libncurses5-dev +libreadline-dev +libsqlite3-dev +libssl-dev +libtool +libyaml-dev +make +patch +pkg-config +procps +sqlite3 +zlib1g-dev diff --git a/.gitlab/ci/docker/fedora36/Dockerfile b/.gitlab/ci/docker/fedora36/Dockerfile deleted file mode 100644 index ea42561bcd..0000000000 --- a/.gitlab/ci/docker/fedora36/Dockerfile +++ /dev/null @@ -1,33 +0,0 @@ -FROM fedora:36 as rvm-build -MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> - -COPY install_rvm.sh /root/install_rvm.sh -RUN sh /root/install_rvm.sh - -FROM fedora:36 AS clang-tidy-headers -MAINTAINER Kyle Edwards <kyle.edwards@kitware.com> - -COPY install_clang_tidy_headers.sh /root/install_clang_tidy_headers.sh -RUN sh /root/install_clang_tidy_headers.sh - -FROM fedora:36 AS iwyu -MAINTAINER Kyle Edwards <kyle.edwards@kitware.com> - -COPY install_iwyu.sh /root/install_iwyu.sh -RUN sh /root/install_iwyu.sh - -FROM fedora:36 -MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> - -COPY install_deps.sh /root/install_deps.sh -RUN sh /root/install_deps.sh - -COPY --from=rvm-build /root/rvm.tar /root/rvm.tar -RUN tar -C /usr/local -xf /root/rvm.tar \ - && rm /root/rvm.tar -COPY --from=clang-tidy-headers /root/clang-tidy-headers.tar /root/clang-tidy-headers.tar -RUN tar -C /usr/include -xf /root/clang-tidy-headers.tar \ - && rm /root/clang-tidy-headers.tar -COPY --from=iwyu /root/iwyu.tar /root/iwyu.tar -RUN tar -C / -xf /root/iwyu.tar \ - && rm /root/iwyu.tar diff --git a/.gitlab/ci/docker/fedora36/install_deps.sh b/.gitlab/ci/docker/fedora36/install_deps.sh deleted file mode 100755 index f117888413..0000000000 --- a/.gitlab/ci/docker/fedora36/install_deps.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/sh - -set -e - -# Install build requirements. -dnf install --setopt=install_weak_deps=False -y \ - ncurses-devel \ - openssl-devel \ - qt5-qtbase-devel \ - qt6-qtbase-devel - -# Install development tools. -dnf install --setopt=install_weak_deps=False -y \ - clang-tools-extra \ - compiler-rt \ - gcc-c++ \ - git-core \ - make - -# Install optional external build dependencies. -dnf install --setopt=install_weak_deps=False -y \ - bzip2-devel \ - expat-devel \ - jsoncpp-devel \ - libarchive-devel \ - libcurl-devel \ - libuv-devel \ - libuv-devel \ - libzstd-devel \ - rhash-devel \ - xz-devel \ - zlib-devel - -# Install documentation tools. -dnf install --setopt=install_weak_deps=False -y \ - python3-sphinx \ - texinfo \ - qt5-qttools-devel \ - qt6-qttools-devel - -# Install lint tools. -dnf install --setopt=install_weak_deps=False -y \ - clang-analyzer \ - codespell - -# Tools needed for the test suite. -dnf install --setopt=install_weak_deps=False -y \ - findutils \ - file \ - jq \ - which - -# Packages needed to test CTest. -dnf install --setopt=install_weak_deps=False -y \ - breezy \ - subversion \ - mercurial - -# Packages needed to test CPack. -dnf install --setopt=install_weak_deps=False -y \ - rpm-build - -# Packages needed to test find modules. -dnf install --setopt=install_weak_deps=False -y \ - alsa-lib-devel \ - blas-devel \ - boost-devel boost-python3-devel \ - bzip2-devel \ - cups-devel \ - DevIL-devel \ - doxygen \ - expat-devel \ - fontconfig-devel \ - freeglut-devel \ - freetype-devel \ - gdal-devel \ - gettext \ - giflib-devel \ - glew-devel \ - gmock \ - gnutls-devel \ - grpc-devel grpc-plugins \ - gsl-devel \ - gtest-devel \ - gtk2-devel \ - java-11-openjdk-devel \ - jsoncpp-devel \ - lapack-devel \ - libarchive-devel \ - libcurl-devel \ - libicu-devel \ - libinput-devel systemd-devel \ - libjpeg-turbo-devel \ - libpng-devel \ - opensp-devel \ - postgresql-server-devel \ - libtiff-devel \ - libuv-devel \ - libxml2-devel \ - libxslt-devel \ - mpich-devel \ - openal-soft-devel \ - openmpi-devel \ - patch \ - perl \ - protobuf-devel protobuf-c-devel protobuf-lite-devel \ - pypy2 pypy2-devel \ - pypy3 pypy3-devel \ - python2 python2-devel \ - python3 python3-devel python3-numpy \ - python3-jsmin python3-jsonschema \ - ruby rubygems ruby-devel \ - SDL-devel \ - sqlite-devel \ - swig \ - unixODBC-devel \ - xalan-c-devel \ - xerces-c-devel \ - xz-devel - -dnf clean all - -# Fedora no longer packages python2 numpy. -curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py -python2 get-pip.py -rm get-pip.py -pip2.7 install numpy - -# Perforce -curl -L -O https://www.perforce.com/downloads/perforce/r21.2/bin.linux26x86_64/helix-core-server.tgz -tar -C /usr/local/bin -xvzf helix-core-server.tgz -- p4 p4d -rm helix-core-server.tgz diff --git a/.gitlab/ci/docker/fedora36/install_rvm.sh b/.gitlab/ci/docker/fedora36/install_rvm.sh deleted file mode 100755 index 0011f877f1..0000000000 --- a/.gitlab/ci/docker/fedora36/install_rvm.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh - -set -e - -gpg2 --keyserver hkps://keyserver.ubuntu.com \ - --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \ - 7D2BAF1CF37B13E2069D6956105BD0E739499BDB - -dnf install --setopt=install_weak_deps=False -y \ - findutils \ - procps \ - which - -curl -sSL https://get.rvm.io | bash -s stable - -# keep version in sync with `env_fedora*_makefiles.cmake` -/usr/local/rvm/bin/rvm install ruby-3.0.4 - -tar -C /usr/local -cf /root/rvm.tar rvm diff --git a/.gitlab/ci/docker/fedora37/Dockerfile b/.gitlab/ci/docker/fedora37/Dockerfile new file mode 100644 index 0000000000..b36a17ed24 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/Dockerfile @@ -0,0 +1,73 @@ +# syntax=docker/dockerfile:1 + +ARG BASE_IMAGE=fedora:37 + +FROM ${BASE_IMAGE} AS dnf-cache +# Populate DNF cache w/ the fresh metadata and prefetch packages. +RUN --mount=type=bind,source=clang_tidy_headers_packages.lst,target=/root/clang_tidy_headers_packages.lst \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + --mount=type=bind,source=iwyu_packages.lst,target=/root/iwyu_packages.lst \ + --mount=type=bind,source=rvm_packages.lst,target=/root/rvm_packages.lst \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + --downloadonly \ + -y \ + $(grep -h '^[^#]\+$' /root/*.lst) + + +FROM ${BASE_IMAGE} AS rvm-build +LABEL maintainer="Ben Boeckel <ben.boeckel@kitware.com>" + +RUN --mount=type=bind,source=install_rvm.sh,target=/root/install_rvm.sh \ + --mount=type=bind,source=rvm_packages.lst,target=/root/rvm_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_rvm.sh + + +FROM ${BASE_IMAGE} AS clang-tidy-headers +LABEL maintainer="Kyle Edwards <kyle.edwards@kitware.com>" + +RUN --mount=type=bind,source=install_clang_tidy_headers.sh,target=/root/install_clang_tidy_headers.sh \ + --mount=type=bind,source=clang_tidy_headers_packages.lst,target=/root/clang_tidy_headers_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_clang_tidy_headers.sh + + +FROM ${BASE_IMAGE} AS iwyu-build +LABEL maintainer="Kyle Edwards <kyle.edwards@kitware.com>" + +RUN --mount=type=bind,source=install_iwyu.sh,target=/root/install_iwyu.sh \ + --mount=type=bind,source=iwyu_packages.lst,target=/root/iwyu_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_iwyu.sh + + +FROM ${BASE_IMAGE} +LABEL maintainer="Ben Boeckel <ben.boeckel@kitware.com>" + +RUN --mount=type=bind,source=install_deps.sh,target=/root/install_deps.sh \ + --mount=type=bind,source=deps_packages.lst,target=/root/deps_packages.lst \ + --mount=type=cache,from=dnf-cache,source=/var/cache/dnf,target=/var/cache/dnf,sharing=private \ + --mount=type=cache,target=/var/cache/pip \ + --mount=type=tmpfs,target=/var/log \ + --mount=type=tmpfs,target=/tmp \ + sh /root/install_deps.sh + +RUN --mount=type=bind,from=rvm-build,source=/root,target=/root \ + tar -C /usr/local -xf /root/rvm.tar + +RUN --mount=type=bind,from=clang-tidy-headers,source=/root,target=/root \ + tar -C /usr/include -xf /root/clang-tidy-headers.tar + +RUN --mount=type=bind,from=iwyu-build,source=/root,target=/root \ + tar -C / -xf /root/iwyu.tar diff --git a/.gitlab/ci/docker/fedora37/clang_tidy_headers_packages.lst b/.gitlab/ci/docker/fedora37/clang_tidy_headers_packages.lst new file mode 100644 index 0000000000..fe86105942 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/clang_tidy_headers_packages.lst @@ -0,0 +1,4 @@ +dnf-command(download) +rpm-build +python3-devel +clang-tools-extra diff --git a/.gitlab/ci/docker/fedora37/deps_packages.lst b/.gitlab/ci/docker/fedora37/deps_packages.lst new file mode 100644 index 0000000000..9ce80075ec --- /dev/null +++ b/.gitlab/ci/docker/fedora37/deps_packages.lst @@ -0,0 +1,110 @@ +# Install build requirements. +ncurses-devel +openssl-devel +qt5-qtbase-devel +qt6-qtbase-devel + +# Install development tools. +clang +clang-tools-extra +compiler-rt +flang +flang-devel +gcc-c++ +git-core +make + +# Install optional external build dependencies. +bzip2-devel +expat-devel +jsoncpp-devel +libarchive-devel +libcurl-devel +libuv-devel +libuv-devel +libzstd-devel +rhash-devel +xz-devel +zlib-devel + +# Install documentation tools. +python3-sphinx +texinfo +qt5-qttools-devel +qt6-qttools-devel + +# Install lint tools. +clang-analyzer +codespell + +# Tools needed for the test suite. +findutils +file +jq +which + +# Packages needed to test CTest. +breezy +subversion +mercurial + +# Packages needed to test CPack. +rpm-build + +# Packages needed to test find modules. +alsa-lib-devel +blas-devel +boost-devel boost-python3-devel +bzip2-devel +cups-devel +DevIL-devel +doxygen +expat-devel +fontconfig-devel +freeglut-devel +freetype-devel +gdal-devel +gettext +giflib-devel +glew-devel +gmock +gnutls-devel +grpc-devel grpc-plugins +gsl-devel +gtest-devel +gtk2-devel +ImageMagick-c++-devel +java-11-openjdk-devel +jsoncpp-devel +lapack-devel +libarchive-devel +libcurl-devel +libicu-devel +libinput-devel systemd-devel +libjpeg-turbo-devel +libpng-devel +opensp-devel +postgresql-server-devel +libtiff-devel +libuv-devel +libxml2-devel +libxslt-devel +mpich-devel +openal-soft-devel +openmpi-devel +patch +perl +protobuf-devel protobuf-c-devel protobuf-lite-devel +pypy2 pypy2-devel +pypy3 pypy3-devel +python2 python2-devel +python3 python3-devel python3-numpy +python3-jsmin python3-jsonschema +ruby rubygems ruby-devel +SDL-devel +sqlite-devel +swig +unixODBC-devel +xalan-c-devel +xerces-c-devel +xz-devel diff --git a/.gitlab/ci/docker/fedora36/install_clang_tidy_headers.sh b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh index b9883f4039..200fa1e501 100755 --- a/.gitlab/ci/docker/fedora36/install_clang_tidy_headers.sh +++ b/.gitlab/ci/docker/fedora37/install_clang_tidy_headers.sh @@ -4,11 +4,13 @@ set -e # Packages for building the clang-tidy plugin. # TODO: Upstream this as a proper Fedora package. -dnf install --setopt=install_weak_deps=False -y \ - 'dnf-command(download)' \ - rpm-build \ - python3-devel \ - clang-tools-extra +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/clang_tidy_headers_packages.lst) + clang_source_rpm=$(rpm -q --queryformat '%{SOURCERPM}' clang-tools-extra) clang_version=$(rpm -q --queryformat '%{VERSION}' clang-tools-extra) dnf download --source -y clang diff --git a/.gitlab/ci/docker/fedora37/install_deps.sh b/.gitlab/ci/docker/fedora37/install_deps.sh new file mode 100755 index 0000000000..cd2701ebee --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_deps.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +set -e + +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/deps_packages.lst) + +# Fedora no longer packages python2 numpy. +curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o - | python2 +pip2.7 install --disable-pip-version-check --no-input --no-compile --cache-dir /var/cache/pip numpy + +# Remove demos and Python2 tests +for p in Demo test; do + rm -rf /usr/lib64/python2.7/${p} +done + +# Remove tests for numpy +for v in 2.7 3.11; do + find /usr/lib64/python${v}/site-packages/numpy -type d -a -name tests -exec rm -rf {} + +done + +# Remove some other packages tests +find /usr/lib64/python3.11/site-packages/breezy -type d -a -name tests -exec rm -rf {} + + +# Perforce +curl -L https://www.perforce.com/downloads/perforce/r21.2/bin.linux26x86_64/helix-core-server.tgz -o - \ + | tar -C /usr/local/bin -xvzf - -- p4 p4d diff --git a/.gitlab/ci/docker/fedora36/install_iwyu.sh b/.gitlab/ci/docker/fedora37/install_iwyu.sh index 714bcc05c7..684e355058 100755 --- a/.gitlab/ci/docker/fedora36/install_iwyu.sh +++ b/.gitlab/ci/docker/fedora37/install_iwyu.sh @@ -3,14 +3,12 @@ set -e # Install development tools. -dnf install --setopt=install_weak_deps=False -y \ - clang-devel \ - llvm-devel \ - zlib-devel \ - g++ \ - cmake \ - ninja-build \ - git +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/iwyu_packages.lst) cd /root git clone "https://github.com/include-what-you-use/include-what-you-use.git" diff --git a/.gitlab/ci/docker/fedora37/install_rvm.sh b/.gitlab/ci/docker/fedora37/install_rvm.sh new file mode 100755 index 0000000000..10e7545cf5 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/install_rvm.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +dnf install \ + --setopt=install_weak_deps=False \ + --setopt=fastestmirror=True \ + --setopt=max_parallel_downloads=10 \ + -y \ + $(grep '^[^#]\+$' /root/rvm_packages.lst) + +gpg2 --keyserver hkps://keyserver.ubuntu.com \ + --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 \ + 7D2BAF1CF37B13E2069D6956105BD0E739499BDB + +curl -sSL https://get.rvm.io | bash -s stable + +# keep version in sync with `env_fedora*_makefiles.cmake` +/usr/local/rvm/bin/rvm install ruby-3.0.4 + +for p in archives examples gem-cache log src; do + touch /usr/local/rvm/${p}/.tar_exclude +done + +tar -C /usr/local --exclude-tag-under=.tar_exclude -cf /root/rvm.tar rvm diff --git a/.gitlab/ci/docker/fedora37/iwyu_packages.lst b/.gitlab/ci/docker/fedora37/iwyu_packages.lst new file mode 100644 index 0000000000..e3551bd315 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/iwyu_packages.lst @@ -0,0 +1,7 @@ +clang-devel +llvm-devel +zlib-devel +g++ +cmake +ninja-build +git diff --git a/.gitlab/ci/docker/fedora37/rvm_packages.lst b/.gitlab/ci/docker/fedora37/rvm_packages.lst new file mode 100644 index 0000000000..1dc852e147 --- /dev/null +++ b/.gitlab/ci/docker/fedora37/rvm_packages.lst @@ -0,0 +1,18 @@ +autoconf +automake +bison +bzip2 +findutils +gcc-c++ +glibc-devel +libffi-devel +libtool +libyaml-devel +make +openssl-devel +patch +procps +readline-devel +sqlite-devel +which +zlib-devel diff --git a/.gitlab/ci/docker/nvhpc22.11/Dockerfile b/.gitlab/ci/docker/nvhpc22.11/Dockerfile new file mode 100644 index 0000000000..078ae37611 --- /dev/null +++ b/.gitlab/ci/docker/nvhpc22.11/Dockerfile @@ -0,0 +1,6 @@ +# https://catalog.ngc.nvidia.com/orgs/nvidia/containers/nvhpc/tags +FROM kitware/nvidia-nvhpc:22.11-devel-cuda_multi-ubuntu22.04 +MAINTAINER Brad King <brad.king@kitware.com> + +COPY install_deps.sh /root/install_deps.sh +RUN sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/nvhpc22.11/install_deps.sh b/.gitlab/ci/docker/nvhpc22.11/install_deps.sh new file mode 100755 index 0000000000..51ee410606 --- /dev/null +++ b/.gitlab/ci/docker/nvhpc22.11/install_deps.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +set -e + +apt-get update + +# Install development tools. +apt-get install -y \ + curl + +apt-get clean diff --git a/.gitlab/ci/env_fedora36_asan.sh b/.gitlab/ci/env_fedora37_asan.sh index e9764862eb..e9764862eb 100644 --- a/.gitlab/ci/env_fedora36_asan.sh +++ b/.gitlab/ci/env_fedora37_asan.sh diff --git a/.gitlab/ci/env_fedora36_clang_analyzer.sh b/.gitlab/ci/env_fedora37_clang_analyzer.sh index d732c0ba20..d732c0ba20 100644 --- a/.gitlab/ci/env_fedora36_clang_analyzer.sh +++ b/.gitlab/ci/env_fedora37_clang_analyzer.sh diff --git a/.gitlab/ci/env_fedora37_common_clang.sh b/.gitlab/ci/env_fedora37_common_clang.sh new file mode 100644 index 0000000000..b03b757052 --- /dev/null +++ b/.gitlab/ci/env_fedora37_common_clang.sh @@ -0,0 +1,4 @@ +export CC=/usr/bin/clang-15 +export CXX=/usr/bin/clang++-15 +export FC=/usr/bin/flang-new +export FFLAGS=-flang-experimental-exec diff --git a/.gitlab/ci/env_fedora36_extdeps.sh b/.gitlab/ci/env_fedora37_extdeps.sh index 7076e18f22..7076e18f22 100644 --- a/.gitlab/ci/env_fedora36_extdeps.sh +++ b/.gitlab/ci/env_fedora37_extdeps.sh diff --git a/.gitlab/ci/env_fedora36_makefiles.cmake b/.gitlab/ci/env_fedora37_makefiles.cmake index 2bcb6d04cc..2bcb6d04cc 100644 --- a/.gitlab/ci/env_fedora36_makefiles.cmake +++ b/.gitlab/ci/env_fedora37_makefiles.cmake diff --git a/.gitlab/ci/env_fedora36_makefiles.sh b/.gitlab/ci/env_fedora37_makefiles.sh index 217ff305df..217ff305df 100644 --- a/.gitlab/ci/env_fedora36_makefiles.sh +++ b/.gitlab/ci/env_fedora37_makefiles.sh diff --git a/.gitlab/ci/env_fedora37_makefiles_clang.sh b/.gitlab/ci/env_fedora37_makefiles_clang.sh new file mode 100644 index 0000000000..9ff1d847b3 --- /dev/null +++ b/.gitlab/ci/env_fedora37_makefiles_clang.sh @@ -0,0 +1 @@ +. .gitlab/ci/env_fedora37_common_clang.sh diff --git a/.gitlab/ci/env_fedora36_ninja.sh b/.gitlab/ci/env_fedora37_ninja.sh index 217ff305df..217ff305df 100644 --- a/.gitlab/ci/env_fedora36_ninja.sh +++ b/.gitlab/ci/env_fedora37_ninja.sh diff --git a/.gitlab/ci/env_fedora37_ninja_clang.sh b/.gitlab/ci/env_fedora37_ninja_clang.sh new file mode 100644 index 0000000000..9ff1d847b3 --- /dev/null +++ b/.gitlab/ci/env_fedora37_ninja_clang.sh @@ -0,0 +1 @@ +. .gitlab/ci/env_fedora37_common_clang.sh diff --git a/.gitlab/ci/env_fedora36_ninja_multi.sh b/.gitlab/ci/env_fedora37_ninja_multi.sh index 217ff305df..217ff305df 100644 --- a/.gitlab/ci/env_fedora36_ninja_multi.sh +++ b/.gitlab/ci/env_fedora37_ninja_multi.sh diff --git a/.gitlab/ci/env_macos_arm64_ninja.sh b/.gitlab/ci/env_macos_arm64_ninja.sh new file mode 100644 index 0000000000..f8d459be7c --- /dev/null +++ b/.gitlab/ci/env_macos_arm64_ninja.sh @@ -0,0 +1 @@ +. .gitlab/ci/openmp-env.sh diff --git a/.gitlab/ci/env_macos_x86_64_makefiles.sh b/.gitlab/ci/env_macos_x86_64_makefiles.sh index 217ff305df..7496372b9a 100644 --- a/.gitlab/ci/env_macos_x86_64_makefiles.sh +++ b/.gitlab/ci/env_macos_x86_64_makefiles.sh @@ -1,3 +1,4 @@ +. .gitlab/ci/openmp-env.sh if test "$CMAKE_CI_NIGHTLY" = "true"; then source .gitlab/ci/ispc-env.sh fi diff --git a/.gitlab/ci/env_macos_x86_64_ninja.sh b/.gitlab/ci/env_macos_x86_64_ninja.sh index 217ff305df..7496372b9a 100644 --- a/.gitlab/ci/env_macos_x86_64_ninja.sh +++ b/.gitlab/ci/env_macos_x86_64_ninja.sh @@ -1,3 +1,4 @@ +. .gitlab/ci/openmp-env.sh if test "$CMAKE_CI_NIGHTLY" = "true"; then source .gitlab/ci/ispc-env.sh fi diff --git a/.gitlab/ci/env_mingw_osdn_io_mingw_makefiles.ps1 b/.gitlab/ci/env_mingw_osdn_io_mingw_makefiles.ps1 new file mode 100755 index 0000000000..e2d573eb6f --- /dev/null +++ b/.gitlab/ci/env_mingw_osdn_io_mingw_makefiles.ps1 @@ -0,0 +1,3 @@ +$pwdpath = $pwd.Path +& "$pwsh" -File ".gitlab/ci/mingw.ps1" +Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\mingw\bin;$env:PATH" diff --git a/.gitlab/ci/env_mingw_osdn_io_msys_makefiles.ps1 b/.gitlab/ci/env_mingw_osdn_io_msys_makefiles.ps1 new file mode 100755 index 0000000000..6eccb720a3 --- /dev/null +++ b/.gitlab/ci/env_mingw_osdn_io_msys_makefiles.ps1 @@ -0,0 +1,5 @@ +$pwdpath = $pwd.Path +& "$pwsh" -File ".gitlab/ci/mingw.ps1" +Set-Item -Force -Path "env:PATH" -Value "$pwdpath\.gitlab\mingw\msys\1.0\bin;$pwdpath\.gitlab\mingw\bin;$env:PATH" +$env:MSYSTEM = 'MINGW32' +$env:MAKE_MODE = 'unix' diff --git a/.gitlab/ci/env_nvhpc_ninja.sh b/.gitlab/ci/env_nvhpc_ninja.sh new file mode 100644 index 0000000000..687403d096 --- /dev/null +++ b/.gitlab/ci/env_nvhpc_ninja.sh @@ -0,0 +1,5 @@ +export CC=nvc +export CXX=nvc++ +export FC=nvfortran +export CUDACXX=nvcc +export CUDAHOSTCXX=nvc++ diff --git a/.gitlab/ci/mingw.ps1 b/.gitlab/ci/mingw.ps1 new file mode 100755 index 0000000000..a1b5b110ee --- /dev/null +++ b/.gitlab/ci/mingw.ps1 @@ -0,0 +1,25 @@ +$erroractionpreference = "stop" + +if ("$env:CMAKE_CONFIGURATION".Contains("mingw_osdn_io")) { + $filename = "mingw.osdn.io-2022-10-03" + $sha256sum = "4DCB8C351D8D855F7D3DFC2863A235042BF3DB6E69EA0BAE51FF9378189345CD" +} else { + throw ('unknown CMAKE_CONFIGURATION: ' + "$env:CMAKE_CONFIGURATION") +} +$tarball = "$filename.zip" + +$outdir = $pwd.Path +$outdir = "$outdir\.gitlab" +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest -Uri "https://cmake.org/files/dependencies/$tarball" -OutFile "$outdir\$tarball" +$hash = Get-FileHash "$outdir\$tarball" -Algorithm SHA256 +if ($hash.Hash -ne $sha256sum) { + exit 1 +} + +Add-Type -AssemblyName System.IO.Compression.FileSystem +[System.IO.Compression.ZipFile]::ExtractToDirectory("$outdir\$tarball", "$outdir") +Move-Item -Path "$outdir\$filename" -Destination "$outdir\mingw" +Remove-Item "$outdir\$tarball" + +"$outdir/mingw /mingw" -replace '\\', '/' | Out-File -FilePath "$outdir\mingw\msys\1.0\etc\fstab" -Encoding ASCII diff --git a/.gitlab/ci/openmp-env.sh b/.gitlab/ci/openmp-env.sh new file mode 100644 index 0000000000..82dac5b914 --- /dev/null +++ b/.gitlab/ci/openmp-env.sh @@ -0,0 +1,3 @@ +.gitlab/ci/openmp.sh +export CMAKE_PREFIX_PATH=$PWD/.gitlab/openmp${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH} +export DYLD_LIBRARY_PATH=$PWD/.gitlab/openmp/lib${DYLD_LIBRARY_PATH:+:$DYLD_LIBRARY_PATH} diff --git a/.gitlab/ci/openmp.sh b/.gitlab/ci/openmp.sh new file mode 100755 index 0000000000..f411338cab --- /dev/null +++ b/.gitlab/ci/openmp.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +set -e + +baseurl="https://cmake.org/files/dependencies/openmp" + +case "$(uname -s)-$(uname -m)" in + Darwin-*) + shatool="shasum -a 256" + sha256sum="6eef660db7a085a04f87e4aac79da9f37d26ff0fb17c8781d3a21bd5244997e9" + filename="openmp-12.0.1-darwin20-Release" + # tarball contains usr/local/ + strip_components=--strip-components=2 + ;; + *) + echo "Unrecognized platform $(uname -s)-$(uname -m)" + exit 1 + ;; +esac +readonly shatool +readonly sha256sum + +readonly tarball="$filename.tar.gz" + +cd .gitlab +mkdir -p openmp + +echo "$sha256sum $tarball" > openmp.sha256sum +curl -OL "$baseurl/$tarball" +$shatool --check openmp.sha256sum +tar -C openmp $strip_components -xzf $tarball +rm $tarball openmp.sha256sum diff --git a/.gitlab/ci/package_info.cmake.in b/.gitlab/ci/package_info.cmake.in new file mode 100644 index 0000000000..f9a5bb778b --- /dev/null +++ b/.gitlab/ci/package_info.cmake.in @@ -0,0 +1 @@ +set(CPACK_PACKAGE_FILE_NAME "@CPACK_PACKAGE_FILE_NAME@") diff --git a/.gitlab/ci/package_macos.sh b/.gitlab/ci/package_macos.sh new file mode 100644 index 0000000000..7625c5d48a --- /dev/null +++ b/.gitlab/ci/package_macos.sh @@ -0,0 +1,12 @@ +cd build +cpack -G TGZ +cpack -G DragNDrop + +case "$CMAKE_CI_PACKAGE" in + dev) + ;; + *) + mkdir -p unsigned + mv cmake-*-macos*-universal.* unsigned/ + ;; +esac diff --git a/.gitlab/ci/package_windows.ps1 b/.gitlab/ci/package_windows.ps1 new file mode 100755 index 0000000000..9ec2942eaf --- /dev/null +++ b/.gitlab/ci/package_windows.ps1 @@ -0,0 +1,7 @@ +if (Test-Path -Path "build/ci_package_info.cmake" -PathType Leaf) { + cmake -P .gitlab/ci/package_windows_build.cmake +} else { + cd build + cpack -G ZIP + cpack -G WIX +} diff --git a/.gitlab/ci/package_windows_build.cmake b/.gitlab/ci/package_windows_build.cmake new file mode 100644 index 0000000000..feb379c9be --- /dev/null +++ b/.gitlab/ci/package_windows_build.cmake @@ -0,0 +1,41 @@ +cmake_minimum_required(VERSION 3.24) +include(build/ci_package_info.cmake) + +set(build "${CMAKE_CURRENT_BINARY_DIR}/build") + +file(GLOB paths RELATIVE "${CMAKE_CURRENT_BINARY_DIR}" + # Allow CPack to find CMAKE_ROOT. + "${build}/CMakeFiles/CMakeSourceDir.txt" + + # We need the main binaries. + "${build}/bin" + + # Pass through the documentation. + "${build}/install-doc" + + # CPack configuration. + "${build}/CPackConfig.cmake" + "${build}/CMakeCPackOptions.cmake" + "${build}/Source/QtDialog/QtDialogCPack.cmake" + + # CPack/IFW packaging files. + "${build}/CMake*.qs" + + # CPack/WIX packaging files. + "${build}/Utilities/Release/WiX/custom_action_dll*.wxs" + "${build}/Utilities/Release/WiX/CustomAction/CMakeWiXCustomActions.*" + ) + +file(GLOB_RECURSE paths_recurse RELATIVE "${CMAKE_CURRENT_BINARY_DIR}" + # Install rules. + "${build}/cmake_install.cmake" + "${build}/*/cmake_install.cmake" + ) + +# Create a "package" containing the build-tree files needed to build a package. +file(MAKE_DIRECTORY build/unsigned) +file(ARCHIVE_CREATE + OUTPUT build/unsigned/${CPACK_PACKAGE_FILE_NAME}.build.zip + PATHS ${paths} ${paths_recurse} + FORMAT zip + ) diff --git a/.gitlab/ci/post_build.ps1 b/.gitlab/ci/post_build.ps1 new file mode 100755 index 0000000000..fbd8ae891c --- /dev/null +++ b/.gitlab/ci/post_build.ps1 @@ -0,0 +1,4 @@ +$pwsh = [System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName +if (Test-Path -Path ".gitlab/ci/post_build_$env:CMAKE_CONFIGURATION.ps1" -PathType Leaf) { + . ".gitlab/ci/post_build_$env:CMAKE_CONFIGURATION.ps1" +} diff --git a/.gitlab/ci/post_build.sh b/.gitlab/ci/post_build.sh new file mode 100755 index 0000000000..0edd9f6695 --- /dev/null +++ b/.gitlab/ci/post_build.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +quietly() { + readonly log="/tmp/quietly-$RANDOM.log" + if ! "$@" >"$log" 2>&1; then + ret=$? + cat "$log" + rm -f "$log" + exit $ret + fi + rm -f "$log" +} + +if test -r ".gitlab/ci/post_build_${CMAKE_CONFIGURATION}.sh"; then + source ".gitlab/ci/post_build_${CMAKE_CONFIGURATION}.sh" +fi diff --git a/.gitlab/ci/post_build_macos10.10_package.sh b/.gitlab/ci/post_build_macos10.10_package.sh new file mode 100644 index 0000000000..3b7bc72f38 --- /dev/null +++ b/.gitlab/ci/post_build_macos10.10_package.sh @@ -0,0 +1 @@ +. .gitlab/ci/package_macos.sh diff --git a/.gitlab/ci/post_build_macos_package.sh b/.gitlab/ci/post_build_macos_package.sh new file mode 100644 index 0000000000..3b7bc72f38 --- /dev/null +++ b/.gitlab/ci/post_build_macos_package.sh @@ -0,0 +1 @@ +. .gitlab/ci/package_macos.sh diff --git a/.gitlab/ci/post_build_windows_arm64_package.ps1 b/.gitlab/ci/post_build_windows_arm64_package.ps1 new file mode 100755 index 0000000000..f98d99597d --- /dev/null +++ b/.gitlab/ci/post_build_windows_arm64_package.ps1 @@ -0,0 +1 @@ +. .gitlab/ci/package_windows.ps1 diff --git a/.gitlab/ci/post_build_windows_i386_package.ps1 b/.gitlab/ci/post_build_windows_i386_package.ps1 new file mode 100755 index 0000000000..f98d99597d --- /dev/null +++ b/.gitlab/ci/post_build_windows_i386_package.ps1 @@ -0,0 +1 @@ +. .gitlab/ci/package_windows.ps1 diff --git a/.gitlab/ci/post_build_windows_x86_64_package.ps1 b/.gitlab/ci/post_build_windows_x86_64_package.ps1 new file mode 100755 index 0000000000..f98d99597d --- /dev/null +++ b/.gitlab/ci/post_build_windows_x86_64_package.ps1 @@ -0,0 +1 @@ +. .gitlab/ci/package_windows.ps1 diff --git a/.gitlab/ci/pre_build.ps1 b/.gitlab/ci/pre_build.ps1 new file mode 100755 index 0000000000..3a566877be --- /dev/null +++ b/.gitlab/ci/pre_build.ps1 @@ -0,0 +1,4 @@ +$pwsh = [System.Diagnostics.Process]::GetCurrentProcess().MainModule.FileName +if (Test-Path -Path ".gitlab/ci/pre_build_$env:CMAKE_CONFIGURATION.ps1" -PathType Leaf) { + . ".gitlab/ci/pre_build_$env:CMAKE_CONFIGURATION.ps1" +} diff --git a/.gitlab/ci/pre_build.sh b/.gitlab/ci/pre_build.sh new file mode 100755 index 0000000000..7ff6a69ad3 --- /dev/null +++ b/.gitlab/ci/pre_build.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +quietly() { + readonly log="/tmp/quietly-$RANDOM.log" + if ! "$@" >"$log" 2>&1; then + ret=$? + cat "$log" + rm -f "$log" + exit $ret + fi + rm -f "$log" +} + +if test -r ".gitlab/ci/pre_build_${CMAKE_CONFIGURATION}.sh"; then + source ".gitlab/ci/pre_build_${CMAKE_CONFIGURATION}.sh" +fi diff --git a/.gitlab/ci/pre_build_fedora37_tidy.sh b/.gitlab/ci/pre_build_fedora37_tidy.sh new file mode 100644 index 0000000000..7580ef1506 --- /dev/null +++ b/.gitlab/ci/pre_build_fedora37_tidy.sh @@ -0,0 +1,9 @@ +cmake \ + -G Ninja \ + -S Utilities/ClangTidyModule \ + -B Utilities/ClangTidyModule/build \ + -DCMAKE_BUILD_TYPE=Release \ + -DRUN_TESTS=ON \ + -DCMAKE_CXX_COMPILER_LAUNCHER=sccache +cmake --build Utilities/ClangTidyModule/build +ctest --test-dir Utilities/ClangTidyModule/build --output-on-failure diff --git a/.gitlab/ci/python-env.ps1 b/.gitlab/ci/python-env.ps1 new file mode 100755 index 0000000000..4e897d8dc6 --- /dev/null +++ b/.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 diff --git a/.gitlab/ci/qt-env.ps1 b/.gitlab/ci/qt-env.ps1 new file mode 100755 index 0000000000..7eff55fc44 --- /dev/null +++ b/.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") +} diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index 28be5d38c7..9a5340162b 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -5,7 +5,7 @@ ### Release .linux_prep_source: - image: "fedora:36" + image: "fedora:37" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -45,7 +45,7 @@ ### Debian .debian10: - image: "kitware/cmake:ci-debian10-x86_64-2022-08-30" + image: "kitware/cmake:ci-debian10-x86_64-2023-02-07" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -60,7 +60,7 @@ CMAKE_CI_NO_INSTALL: 1 .debian10_aarch64: - image: "kitware/cmake:ci-debian10-aarch64-2022-08-30" + image: "kitware/cmake:ci-debian10-aarch64-2023-02-07" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -68,8 +68,8 @@ ### Fedora -.fedora36: - image: "kitware/cmake:ci-fedora36-x86_64-2022-10-04" +.fedora37: + image: "kitware/cmake:ci-fedora37-x86_64-2023-02-07" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes" @@ -77,37 +77,37 @@ #### Lint builds -.fedora36_tidy: - extends: .fedora36 +.fedora37_tidy: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_tidy + CMAKE_CONFIGURATION: fedora37_tidy CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora36_clang_analyzer: - extends: .fedora36 +.fedora37_clang_analyzer: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_clang_analyzer + CMAKE_CONFIGURATION: fedora37_clang_analyzer CMAKE_CI_BUILD_TYPE: Debug CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_CI_NO_INSTALL: 1 -.fedora36_sphinx: - extends: .fedora36 +.fedora37_sphinx: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_sphinx + CMAKE_CONFIGURATION: fedora37_sphinx CTEST_NO_WARNINGS_ALLOWED: 1 CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" CMAKE_CI_NO_INSTALL: 1 -.fedora36_sphinx_package: - extends: .fedora36 +.fedora37_sphinx_package: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_sphinx_package + CMAKE_CONFIGURATION: fedora37_sphinx_package CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" #### Build and test @@ -153,35 +153,35 @@ CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_extdeps: - extends: .fedora36 +.fedora37_extdeps: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_extdeps + CMAKE_CONFIGURATION: fedora37_extdeps CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_ninja: - extends: .fedora36 +.fedora37_ninja: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_ninja + CMAKE_CONFIGURATION: fedora37_ninja CMAKE_CI_BUILD_TYPE: Release CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora36_ninja_multi: - extends: .fedora36 +.fedora37_ninja_multi: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_ninja_multi + CMAKE_CONFIGURATION: fedora37_ninja_multi CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Ninja Multi-Config" -.fedora36_makefiles: - extends: .fedora36 +.fedora37_makefiles: + extends: .fedora37 variables: - CMAKE_CONFIGURATION: fedora36_makefiles + CMAKE_CONFIGURATION: fedora37_makefiles CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Unix Makefiles" @@ -200,6 +200,19 @@ variables: CMAKE_CONFIGURATION: debian10_ninja_clang +.fedora37_makefiles_clang: + extends: .fedora37 + + variables: + CMAKE_CONFIGURATION: fedora37_makefiles_clang + CMAKE_GENERATOR: "Unix Makefiles" + +.fedora37_ninja_clang: + extends: .fedora37 + + variables: + CMAKE_CONFIGURATION: fedora37_ninja_clang + ### Sanitizers .fedora_memcheck: @@ -213,13 +226,13 @@ CTEST_MEMORYCHECK_TYPE: AddressSanitizer CTEST_MEMORYCHECK_SANITIZER_OPTIONS: "" -.fedora36_asan: +.fedora37_asan: extends: - - .fedora36 + - .fedora37 - .fedora_asan_addon variables: - CMAKE_CONFIGURATION: fedora36_asan + CMAKE_CONFIGURATION: fedora37_asan ### Intel Compiler @@ -242,70 +255,86 @@ CMAKE_CONFIGURATION: inteloneapi_makefiles CMAKE_GENERATOR: "Unix Makefiles" -### CUDA builds +### NVHPC Compiler -.cuda9.2: - image: "kitware/cmake:ci-cuda9.2-x86_64-2021-10-01" +.nvhpc: + image: "kitware/cmake:ci-nvhpc22.11-x86_64-2022-12-06" + variables: + CMAKE_ARCH: x86_64 +.nvhpc_ninja: + extends: .nvhpc + variables: + CMAKE_CONFIGURATION: nvhpc_ninja + +### CUDA builds + +.cuda: variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" - CMAKE_ARCH: x86_64 CTEST_LABELS: "CUDA" CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1 +.cuda9.2: + extends: .cuda + image: "kitware/cmake:ci-cuda9.2-x86_64-2021-10-01" + variables: + CMAKE_ARCH: x86_64 + .cuda9.2_nvidia: extends: .cuda9.2 - variables: CMAKE_CONFIGURATION: cuda9.2_nvidia CMAKE_GENERATOR: "Ninja Multi-Config" .cuda10.2: + extends: .cuda image: "kitware/cmake:ci-cuda10.2-x86_64-2021-06-16" - variables: - GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" CMAKE_ARCH: x86_64 - CTEST_LABELS: "CUDA" - CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1 .cuda10.2_nvidia: extends: .cuda10.2 - variables: CMAKE_CONFIGURATION: cuda10.2_nvidia CTEST_NO_WARNINGS_ALLOWED: 1 .cuda10.2_clang: extends: .cuda10.2 - variables: CMAKE_CONFIGURATION: cuda10.2_clang CTEST_NO_WARNINGS_ALLOWED: 1 .cuda11.6: + extends: .cuda image: "kitware/cmake:ci-cuda11.6-x86_64-2022-02-28" - variables: - GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" CMAKE_ARCH: x86_64 - CTEST_LABELS: "CUDA" - CMAKE_CUDA_ARCHITECTURES_NATIVE_CLAMP: 1 .cuda11.6_nvidia: extends: .cuda11.6 - variables: CMAKE_CONFIGURATION: cuda11.6_nvidia CTEST_NO_WARNINGS_ALLOWED: 1 .cuda11.6_clang: extends: .cuda11.6 - variables: CMAKE_CONFIGURATION: cuda11.6_clang CTEST_NO_WARNINGS_ALLOWED: 1 +.cuda11.8_minimal: + extends: .cuda + image: "kitware/cmake:ci-cuda11.8-minimal-x86_64-2022-12-06" + variables: + CMAKE_ARCH: x86_64 + +.cuda11.8_minimal_nvidia: + extends: .cuda11.8_minimal + variables: + CMAKE_CONFIGURATION: cuda11.8_minimal_nvidia + CTEST_NO_WARNINGS_ALLOWED: 1 + ### HIP builds .hip4.2: @@ -347,37 +376,66 @@ CMAKE_CONFIGURATION: linux_gcc_cxx_modules_ninja_multi CMAKE_GENERATOR: "Ninja Multi-Config" +.clang_cxx_modules_x86_64: + image: "kitware/cmake:ci-clang_cxx_modules-x86_64-2023-02-15" + + variables: + GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" + CMAKE_ARCH: x86_64 + CC: "/opt/llvm-p1689/bin/clang" + CXX: "/opt/llvm-p1689/bin/clang++" + +.clang_cxx_modules_ninja: + extends: .clang_cxx_modules_x86_64 + + variables: + CMAKE_CONFIGURATION: linux_clang_cxx_modules_ninja + +.clang_cxx_modules_ninja_multi: + extends: .clang_cxx_modules_x86_64 + + variables: + CMAKE_CONFIGURATION: linux_clang_cxx_modules_ninja_multi + CMAKE_GENERATOR: "Ninja Multi-Config" + ## Tags -.linux_builder_tags: +.linux_x86_64_tags: tags: - cmake - build - docker - linux-x86_64 -.linux_builder_tags_x11: +.linux_x86_64_tags_x11: tags: - cmake - docker - linux-x86_64 - x11 -.linux_builder_tags_cuda: +.linux_x86_64_tags_cuda: tags: - cmake - cuda-rt - docker - linux-x86_64 -.linux_builder_tags_radeon: +.linux_x86_64_v3_tags_cuda: + tags: + - cmake + - cuda-rt + - docker + - linux-x86_64-v3 + +.linux_x86_64_tags_radeon: tags: - cmake - radeon - docker - linux-x86_64 -.linux_builder_tags_aarch64: +.linux_aarch64_tags: tags: - cmake - build @@ -420,9 +478,9 @@ .cmake_codespell_linux: stage: build - extends: .fedora36 + extends: .fedora37 script: - - codespell + - .gitlab/ci/codespell.sh interruptible: true .cmake_build_linux: @@ -433,8 +491,10 @@ - .gitlab/ci/sccache.sh - sccache --start-server - sccache --show-stats + - .gitlab/ci/pre_build.sh - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake" - "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake" + - .gitlab/ci/post_build.sh - sccache --show-stats interruptible: true @@ -542,7 +602,7 @@ extends: - .intelclassic_makefiles - .cmake_test_linux_release - - .linux_builder_tags + - .linux_x86_64_tags - .run_manually - .needs_centos6_x86_64 variables: @@ -552,7 +612,7 @@ extends: - .inteloneapi_makefiles - .cmake_test_linux_release - - .linux_builder_tags + - .linux_x86_64_tags - .run_manually - .needs_centos6_x86_64 variables: @@ -563,8 +623,8 @@ .cmake_org_help: stage: build extends: - - .fedora36 - - .linux_builder_tags + - .fedora37 + - .linux_x86_64_tags - .cmake_org_help_artifacts script: - *before_script_linux diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml index a79cc1575f..652a67abb0 100644 --- a/.gitlab/os-macos.yml +++ b/.gitlab/os-macos.yml @@ -90,7 +90,7 @@ ## Tags -.macos_x86_64_builder_tags: +.macos_x86_64_tags: tags: - cmake # Since this is a bare runner, pin to a project. - macos-x86_64 @@ -98,7 +98,7 @@ - xcode-14.2 - nonconcurrent -.macos_x86_64_builder_tags_package: +.macos_x86_64_tags_package: tags: - cmake # Since this is a bare runner, pin to a project. - macos-x86_64 @@ -107,7 +107,7 @@ - nonconcurrent - finder -.macos_x86_64_builder_ext_tags: +.macos_x86_64_tags_ext: tags: - cmake # Since this is a bare runner, pin to a project. - macos-x86_64 @@ -115,7 +115,7 @@ - xcode-14.2 - concurrent -.macos_arm64_builder_tags: +.macos_arm64_tags: tags: - cmake # Since this is a bare runner, pin to a project. - macos-arm64 @@ -123,7 +123,7 @@ - xcode-14.2 - nonconcurrent -.macos_arm64_builder_ext_tags: +.macos_arm64_tags_ext: tags: - cmake # Since this is a bare runner, pin to a project. - macos-arm64 @@ -143,7 +143,7 @@ - ninja --version # Download Qt - cmake -P .gitlab/ci/download_qt.cmake - - export CMAKE_PREFIX_PATH=$PWD/.gitlab/qt + - export CMAKE_PREFIX_PATH=$PWD/.gitlab/qt${CMAKE_PREFIX_PATH:+:$CMAKE_PREFIX_PATH} .cmake_build_macos: stage: build @@ -154,25 +154,14 @@ # Allow the server to already be running. - "sccache --start-server || :" - sccache --show-stats + - .gitlab/ci/pre_build.sh - ctest -VV -S .gitlab/ci/ctest_configure.cmake - ctest -VV -S .gitlab/ci/ctest_build.cmake + - .gitlab/ci/post_build.sh - sccache --show-stats interruptible: true -.cmake_build_macos_package: - stage: build - - script: - - *before_script_macos - - ctest -VV -S .gitlab/ci/ctest_configure.cmake - - ctest -VV -S .gitlab/ci/ctest_build.cmake - - cd build - - cpack -G TGZ - - cpack -G DragNDrop - - interruptible: true - .cmake_test_macos: stage: test diff --git a/.gitlab/os-windows.yml b/.gitlab/os-windows.yml index edd61368bc..ded3e659ff 100644 --- a/.gitlab/os-windows.yml +++ b/.gitlab/os-windows.yml @@ -35,19 +35,25 @@ variables: VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" VCVARSPLATFORM: "x64" - VCVARSVERSION: "14.34.31933" + VCVARSVERSION: "14.35.32215" .windows_vcvarsall_vs2022_x86: variables: VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" VCVARSPLATFORM: "x86" - VCVARSVERSION: "14.34.31933" + VCVARSVERSION: "14.35.32215" .windows_vcvarsall_vs2022_x64_arm64: variables: VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" VCVARSPLATFORM: "x64_arm64" - VCVARSVERSION: "14.34.31933" + VCVARSVERSION: "14.35.32215" + +.windows_arm64_vcvarsall_vs2022: + variables: + VCVARSALL: "${VS170COMNTOOLS}\\..\\..\\VC\\Auxiliary\\Build\\vcvarsall.bat" + VCVARSPLATFORM: "arm64" + VCVARSVERSION: "14.35.32215" .windows_vs2022_x64_ninja: extends: @@ -57,6 +63,14 @@ variables: 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: extends: - .windows_build_ninja @@ -98,7 +112,7 @@ CMAKE_CONFIGURATION: windows_vs2022_x64 CMAKE_GENERATOR: "Visual Studio 17 2022" CMAKE_GENERATOR_PLATFORM: "x64" - CMAKE_GENERATOR_TOOLSET: "v143,version=14.34.31933" + CMAKE_GENERATOR_TOOLSET: "v143,version=14.35.32215" CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" .windows_vs2019_x64: @@ -224,36 +238,69 @@ variables: 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.35.32215" + CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" + +.mingw_osdn_io: + extends: .windows + + variables: + # Place MinGW environment in a path without spaces. + GIT_CLONE_PATH: "$CI_BUILDS_DIR\\cmake-ci-ext\\$CI_CONCURRENT_ID" + CMAKE_CI_BUILD_TYPE: Debug + CMAKE_CI_NIGHTLY_IGNORE_DEPS: "true" + +.mingw_osdn_io_mingw_makefiles: + extends: .mingw_osdn_io + + variables: + CMAKE_CONFIGURATION: mingw_osdn_io_mingw_makefiles + CMAKE_GENERATOR: "MinGW Makefiles" + +.mingw_osdn_io_msys_makefiles: + extends: .mingw_osdn_io + + variables: + CMAKE_CONFIGURATION: mingw_osdn_io_msys_makefiles + CMAKE_GENERATOR: "MSYS Makefiles" + ## Tags -.windows_tags_nonconcurrent_vs2022: +.windows_x86_64_tags_nonconcurrent_vs2022: tags: - cmake # Since this is a bare runner, pin to a project. - windows-x86_64 - shell - vs2022 - - msvc-19.34 + - msvc-19.35 - nonconcurrent -.windows_tags_nonconcurrent_vs2022_arm64: +.windows_x86_64_tags_nonconcurrent_vs2022_arm64: tags: - cmake # Since this is a bare runner, pin to a project. - windows-x86_64 - shell - vs2022 - - msvc-19.34-arm64 + - msvc-19.35-arm64 - nonconcurrent -.windows_tags_concurrent_vs2022: +.windows_x86_64_tags_concurrent_vs2022: tags: - cmake # Since this is a bare runner, pin to a project. - windows-x86_64 - shell - vs2022 - - msvc-19.34 + - msvc-19.35 - concurrent -.windows_tags_concurrent_vs2019: +.windows_x86_64_tags_concurrent_vs2019: tags: - cmake # Since this is a bare runner, pin to a project. - windows-x86_64 @@ -262,13 +309,31 @@ - msvc-19.29-16.11 - concurrent -.windows_tags_concurrent: +.windows_x86_64_tags_concurrent: tags: - cmake # Since this is a bare runner, pin to a project. - windows-x86_64 - shell - concurrent +.windows_arm64_tags_nonconcurrent_vs2022: + tags: + - cmake # Since this is a bare runner, pin to a project. + - windows-arm64 + - shell + - vs2022 + - msvc-19.35 + - nonconcurrent + +.windows_arm64_tags_concurrent_vs2022: + tags: + - cmake # Since this is a bare runner, pin to a project. + - windows-arm64 + - shell + - vs2022 + - msvc-19.35 + - concurrent + ## Windows-specific scripts .before_script_windows: &before_script_windows @@ -281,11 +346,8 @@ - . .gitlab/ci/ninja-env.ps1 - (& "$env:WIX\bin\light.exe" -help) | Select -First 1 - 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: stage: build @@ -296,25 +358,15 @@ - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 - sccache --start-server - sccache --show-stats + - (& "$pwsh" -File ".gitlab/ci/pre_build.ps1") - ctest -VV -S .gitlab/ci/ctest_configure.cmake - ctest -VV -S .gitlab/ci/ctest_build.cmake + - (& "$pwsh" -File ".gitlab/ci/post_build.ps1") - sccache --show-stats - sccache --stop-server interruptible: true -.cmake_package_windows: - stage: package - - script: - - *before_script_windows - - Invoke-Expression -Command .gitlab/ci/vcvarsall.ps1 - - cd build - - cpack -G ZIP - - cpack -G WIX - - interruptible: true - .cmake_test_windows: stage: test diff --git a/.gitlab/rules.yml b/.gitlab/rules.yml index 8fc40a7f02..b85b7280e5 100644 --- a/.gitlab/rules.yml +++ b/.gitlab/rules.yml @@ -66,11 +66,15 @@ rules: - if: '$CMAKE_CI_PACKAGE == "dev"' variables: - RSYNC_DESTINATION: "dev" + RSYNC_DESTINATION: "kitware@cmake.org:dev/" when: on_success - if: '$CMAKE_CI_PACKAGE != null && $CI_JOB_STAGE == "prep"' when: manual - - if: '$CMAKE_CI_PACKAGE != null && $CI_JOB_STAGE != "package" && $CI_JOB_STAGE != "upload"' + - if: '$CMAKE_CI_PACKAGE != null && $CI_JOB_STAGE != "upload"' + when: on_success + - if: '$CMAKE_CI_PACKAGE != null && $CI_JOB_STAGE == "upload" && $CMAKE_CI_PACKAGE_URL != null' + variables: + RSYNC_DESTINATION: "$CMAKE_CI_PACKAGE_URL" when: on_success - when: never @@ -78,19 +82,19 @@ rules: - if: '$CMAKE_CI_PACKAGE =~ /v[0-9]+\.[0-9]+/' variables: - RSYNC_DESTINATION: "$CMAKE_CI_PACKAGE" + RSYNC_DESTINATION: "kitware@cmake.org:$CMAKE_CI_PACKAGE/" CMAKE_CI_SPHINX_QTHELP: "ON" CMAKE_CI_VERSION_NO_GIT: "ON" when: manual - if: '$CMAKE_CI_PROJECT_MAIN_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_MAIN_BRANCH == $CI_COMMIT_BRANCH' variables: - RSYNC_DESTINATION: "git-master" + RSYNC_DESTINATION: "kitware@cmake.org:git-master/" CMAKE_CI_SPHINX_QTHELP: "OFF" CMAKE_CI_VERSION_NO_GIT: "OFF" when: on_success - if: '$CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != null && $CI_COMMIT_BRANCH != null && $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH == $CI_COMMIT_BRANCH' variables: - RSYNC_DESTINATION: "git-stage" + RSYNC_DESTINATION: "kitware@cmake.org:git-stage/" CMAKE_CI_SPHINX_QTHELP: "OFF" CMAKE_CI_VERSION_NO_GIT: "OFF" when: on_success diff --git a/.gitlab/upload.yml b/.gitlab/upload.yml index f4a7c44c79..114808f1f2 100644 --- a/.gitlab/upload.yml +++ b/.gitlab/upload.yml @@ -1,7 +1,7 @@ # Steps for uploading artifacts .rsync_upload_package: - image: "fedora:36" + image: "fedora:37" stage: upload tags: - cmake @@ -17,11 +17,11 @@ - chmod 400 $RSYNC_BINARY_KEY - ssh-keygen -y -f $RSYNC_BINARY_KEY > $RSYNC_BINARY_KEY.pub - test -n "$RSYNC_DESTINATION" - - rsync -tv --recursive -e "ssh -i $RSYNC_BINARY_KEY -o StrictHostKeyChecking=no -o LogLevel=ERROR" build/ kitware@cmake.org:$RSYNC_DESTINATION/ + - rsync -tv --recursive -e "ssh -i $RSYNC_BINARY_KEY -o StrictHostKeyChecking=no -o LogLevel=ERROR" build/ "$RSYNC_DESTINATION" .rsync_upload_help: stage: upload - image: "fedora:36" + image: "fedora:37" tags: - cmake - docker @@ -36,4 +36,4 @@ - chmod 400 $RSYNC_HELP_KEY - ssh-keygen -y -f $RSYNC_HELP_KEY > $RSYNC_HELP_KEY.pub - test -n "$RSYNC_DESTINATION" - - rsync -tv --recursive --delete -e "ssh -i $RSYNC_HELP_KEY -o StrictHostKeyChecking=no -o LogLevel=ERROR" build/html/ kitware@cmake.org:$RSYNC_DESTINATION/ + - rsync -tv --recursive --delete -e "ssh -i $RSYNC_HELP_KEY -o StrictHostKeyChecking=no -o LogLevel=ERROR" build/html/ "$RSYNC_DESTINATION" |