diff options
author | Brad King <brad.king@kitware.com> | 2020-09-16 20:20:13 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2020-09-16 20:20:19 (GMT) |
commit | 10e7aff71666f8d6a08dc8053dddf70e7d9c1bb6 (patch) | |
tree | 4a1a4c3fea61dbb0052034b5371f20416561b6f7 | |
parent | f9fd0a0ea2e18fbe0bacdf7286e7c5a58dab4c24 (diff) | |
parent | ab2276e6b9d618875468c6499fea070aa6f5e052 (diff) | |
download | CMake-10e7aff71666f8d6a08dc8053dddf70e7d9c1bb6.zip CMake-10e7aff71666f8d6a08dc8053dddf70e7d9c1bb6.tar.gz CMake-10e7aff71666f8d6a08dc8053dddf70e7d9c1bb6.tar.bz2 |
Merge topic 'ci-macos-package'
ab2276e6b9 Utilities/Release: remove old macOS release script
9671282bcc gitlab-ci: add a job to upload macOS binaries
5138be9558 ci: use a pre-built Qt for macOS packages
8ff3ce730d gitlab-ci: add a job to make macOS packages
7d4ec05c6f gitlab-ci: add a job to make a doc "bundle"
f0aaf24f08 gitlab-ci: always place the build directory at the top
3a96ea903f ci: remove extra newline
758a8592ed Utilities: also support an already extracted doc tree
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !5227
-rw-r--r-- | .gitlab-ci.yml | 36 | ||||
-rw-r--r-- | .gitlab/artifacts.yml | 8 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora31_common.cmake | 1 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora31_sphinx.cmake | 8 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora31_sphinx_package.cmake | 13 | ||||
-rw-r--r-- | .gitlab/ci/configure_macos_package.cmake | 24 | ||||
-rw-r--r-- | .gitlab/ci/configure_sphinx.cmake | 6 | ||||
-rw-r--r-- | .gitlab/ci/download_qt.cmake | 32 | ||||
-rw-r--r-- | .gitlab/ci/download_qt_hashes.cmake | 2 | ||||
-rw-r--r-- | .gitlab/ci/gitlab_ci.cmake | 2 | ||||
-rw-r--r-- | .gitlab/os-linux.yml | 7 | ||||
-rw-r--r-- | .gitlab/os-macos.yml | 35 | ||||
-rw-r--r-- | .gitlab/rules.yml | 6 | ||||
-rw-r--r-- | .gitlab/upload.yml | 18 | ||||
-rw-r--r-- | Tests/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Utilities/CMakeLists.txt | 5 | ||||
-rw-r--r-- | Utilities/Release/create-cmake-release.cmake | 2 | ||||
-rw-r--r-- | Utilities/Release/osx_release.cmake | 34 |
18 files changed, 185 insertions, 58 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index ec2393b..f8d5292 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -8,10 +8,15 @@ include: - local: .gitlab/os-macos.yml - local: .gitlab/os-windows.yml + # Post-build steps + - local: .gitlab/upload.yml + stages: - build - test + - package - test-ext + - upload ################################################################################ # Job declarations @@ -52,6 +57,14 @@ build:fedora31-sphinx: - .linux_builder_tags_qt - .run_automatically +build:fedora31-sphinx-package: + extends: + - .fedora31_sphinx_package + - .cmake_build_linux + - .linux_builder_tags_qt + - .cmake_doc_artifacts + - .run_only_for_package + # Linux builds build:centos6-release: @@ -167,6 +180,29 @@ test:macos-xcode: needs: - test:macos-ninja +package:macos: + extends: + - .macos_package + - .cmake_build_macos_package + - .cmake_release_artifacts + - .macos_builder_tags_package + - .run_only_for_package + dependencies: + - build:fedora31-sphinx-package + needs: + - build:fedora31-sphinx-package + +upload:macos: + extends: + - .rsync_upload + - .run_only_for_package + dependencies: + - package:macos + needs: + - package:macos + variables: + RSYNC_DESTINATION: dev + # Windows builds build:windows-vs2019-x64-ninja: diff --git a/.gitlab/artifacts.yml b/.gitlab/artifacts.yml index be10e24..2eadcb1 100644 --- a/.gitlab/artifacts.yml +++ b/.gitlab/artifacts.yml @@ -72,6 +72,7 @@ paths: # Any packages made. - build/cmake-*-Linux-x86_64.* + - build/cmake-*-Darwin-x86_64.* .cmake_test_artifacts: artifacts: @@ -79,3 +80,10 @@ paths: # Take the install tree. - build/install/ + +.cmake_doc_artifacts: + artifacts: + expire_in: 1d + paths: + # Take the install tree. + - build/install-doc/ diff --git a/.gitlab/ci/configure_fedora31_common.cmake b/.gitlab/ci/configure_fedora31_common.cmake index 90b9d90..dc068d5 100644 --- a/.gitlab/ci/configure_fedora31_common.cmake +++ b/.gitlab/ci/configure_fedora31_common.cmake @@ -1,5 +1,4 @@ set(BUILD_CursesDialog ON CACHE BOOL "") set(BUILD_QtDialog ON CACHE BOOL "") - include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_fedora31_sphinx.cmake b/.gitlab/ci/configure_fedora31_sphinx.cmake index dfc9b8c..90d159b 100644 --- a/.gitlab/ci/configure_fedora31_sphinx.cmake +++ b/.gitlab/ci/configure_fedora31_sphinx.cmake @@ -1,8 +1,2 @@ -set(SPHINX_INFO ON CACHE BOOL "") -set(SPHINX_MAN ON CACHE BOOL "") -set(SPHINX_HTML ON CACHE BOOL "") -set(SPHINX_SINGLEHTML ON CACHE BOOL "") -set(SPHINX_QTHELP ON CACHE BOOL "") -set(SPHINX_TEXT ON CACHE BOOL "") - +include("${CMAKE_CURRENT_LIST_DIR}/configure_sphinx.cmake") include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_fedora31_sphinx_package.cmake b/.gitlab/ci/configure_fedora31_sphinx_package.cmake new file mode 100644 index 0000000..e839de8 --- /dev/null +++ b/.gitlab/ci/configure_fedora31_sphinx_package.cmake @@ -0,0 +1,13 @@ +# Disable formats not wanted in the package's documentation. +set(SPHINX_INFO OFF CACHE BOOL "") +set(SPHINX_SINGLEHTML OFF CACHE BOOL "") +set(SPHINX_TEXT OFF CACHE BOOL "") + +# Set the destination directory for docs that packages expect. +set(CMAKE_DOC_DIR "doc/cmake" CACHE STRING "") + +# Use a custom prefix to avoid conflicting with other builds. +set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install-doc" CACHE PATH "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_sphinx.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_macos_package.cmake b/.gitlab/ci/configure_macos_package.cmake new file mode 100644 index 0000000..424bc2b --- /dev/null +++ b/.gitlab/ci/configure_macos_package.cmake @@ -0,0 +1,24 @@ +set(CMake_DOC_ARTIFACT_PREFIX "$ENV{CI_PROJECT_DIR}/build/install-doc" CACHE PATH "") + +# Set up install destinations as expected by the packaging scripts. +set(CMAKE_INSTALL_PREFIX "/" CACHE PATH "") +set(CMAKE_DOC_DIR "doc/cmake" CACHE STRING "") + +# Settings for CMake packages for macOS. +set(CPACK_DMG_FORMAT "UDBZ" CACHE STRING "") +set(CMAKE_CXX_FLAGS "-stdlib=libc++" CACHE STRING "") +set(CMAKE_C_STANDARD "11" CACHE STRING "") +set(CMAKE_CXX_STANDARD "14" CACHE STRING "") +set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE STRING "") +set(CMAKE_OSX_DEPLOYMENT_TARGET "10.7" CACHE STRING "") +set(CMAKE_SKIP_BOOTSTRAP_TEST "TRUE" CACHE STRING "") +set(CPACK_SYSTEM_NAME "Darwin-x86_64" CACHE STRING "") +set(BUILD_CursesDialog "ON" CACHE BOOL "") +set(BUILD_QtDialog "TRUE" CACHE BOOL "") +set(CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL "3" CACHE STRING "") +set(CMake_INSTALL_DEPENDENCIES "ON" CACHE BOOL "") +set(CMAKE_SKIP_RPATH "TRUE" CACHE BOOL "") +set(CMake_TEST_NO_FindPackageModeMakefileTest "TRUE" CACHE BOOL "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_macos_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake") diff --git a/.gitlab/ci/configure_sphinx.cmake b/.gitlab/ci/configure_sphinx.cmake new file mode 100644 index 0000000..3750309 --- /dev/null +++ b/.gitlab/ci/configure_sphinx.cmake @@ -0,0 +1,6 @@ +set(SPHINX_INFO ON CACHE BOOL "") +set(SPHINX_MAN ON CACHE BOOL "") +set(SPHINX_HTML ON CACHE BOOL "") +set(SPHINX_SINGLEHTML ON CACHE BOOL "") +set(SPHINX_QTHELP ON CACHE BOOL "") +set(SPHINX_TEXT ON CACHE BOOL "") diff --git a/.gitlab/ci/download_qt.cmake b/.gitlab/ci/download_qt.cmake index c392b1c..31ce6c3 100644 --- a/.gitlab/ci/download_qt.cmake +++ b/.gitlab/ci/download_qt.cmake @@ -6,7 +6,11 @@ set(qt_version_minor "15") set(qt_version_patch "0") # This URL is only visible inside of Kitware's network. Please use your own Qt # Account to obtain these files. -set(qt_url_root "https://paraview.org/files/dependencies/internal/qt") +if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "package") + set(qt_url_root "https://cmake.org/files/dependencies") +else () + set(qt_url_root "https://paraview.org/files/dependencies/internal/qt") +endif () # Determine the ABI to fetch for Qt. if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "vs2015") @@ -51,15 +55,21 @@ if (qt_platform STREQUAL "windows_x86") set(qt_subdir "${qt_version}/msvc${msvc_year}_64") elseif (qt_platform STREQUAL "mac_x64") - set(qt_build_stamp "202005140805") - set(qt_file_name_prefix "${qt_version}-0-${qt_build_stamp}") - - foreach (qt_component IN ITEMS qtbase) + if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "package") list(APPEND qt_files - "${qt_file_name_prefix}${qt_component}-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z") - endforeach () + "qt-5.6.2-macosx10.7-x86_64.tar.xz") + set(qt_subdir "qt-5.6.2-macosx10.7-x86_64") + else () + set(qt_build_stamp "202005140805") + set(qt_file_name_prefix "${qt_version}-0-${qt_build_stamp}") + + foreach (qt_component IN ITEMS qtbase) + list(APPEND qt_files + "${qt_file_name_prefix}${qt_component}-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z") + endforeach () - set(qt_subdir "${qt_version}/clang_64") + set(qt_subdir "${qt_version}/clang_64") + endif () else () message(FATAL_ERROR "Unknown files for ${qt_platform}") @@ -72,7 +82,11 @@ if (NOT qt_subdir) endif () # Build up the path to the file to download. -set(qt_url_path "${qt_platform}/desktop/qt5_${qt_version_nodot}/qt.qt5.${qt_version_nodot}.${qt_abi}") +if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "package") + set(qt_url_path "") +else () + set(qt_url_path "${qt_platform}/desktop/qt5_${qt_version_nodot}/qt.qt5.${qt_version_nodot}.${qt_abi}") +endif () set(qt_url_prefix "${qt_url_root}/${qt_url_path}") # Include the file containing the hashes of the files that matter. diff --git a/.gitlab/ci/download_qt_hashes.cmake b/.gitlab/ci/download_qt_hashes.cmake index 59cb597..28837dc 100644 --- a/.gitlab/ci/download_qt_hashes.cmake +++ b/.gitlab/ci/download_qt_hashes.cmake @@ -9,3 +9,5 @@ set("5.15.0-0-202005150700qtbase-Windows-Windows_10-MSVC2015-Windows-Windows_10- set("5.15.0-0-202005150700qtwinextras-Windows-Windows_10-MSVC2015-Windows-Windows_10-X86_64.7z_hash" 4bca3a8d8c7611e211a82d86b3396f8a622abe7859d5052452414642ec191844) set("5.15.0-0-202005140805qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z_hash" 04d867c81d2431f288c42c9752642759460b9468477de349368dcc8de0c8ddc4) + +set("qt-5.6.2-macosx10.7-x86_64.tar.xz_hash" 2b60373ea60037ce356d4c9f5a8c1df9854127a2c55118252e1a2f5a5f4e0010) diff --git a/.gitlab/ci/gitlab_ci.cmake b/.gitlab/ci/gitlab_ci.cmake index 698d5ea..7bd9300 100644 --- a/.gitlab/ci/gitlab_ci.cmake +++ b/.gitlab/ci/gitlab_ci.cmake @@ -5,10 +5,10 @@ endif () # Set up the source and build paths. set(CTEST_SOURCE_DIRECTORY "$ENV{CI_PROJECT_DIR}") +set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build") if (NOT "$ENV{CTEST_SOURCE_SUBDIRECTORY}" STREQUAL "") string(APPEND CTEST_SOURCE_DIRECTORY "/$ENV{CTEST_SOURCE_SUBDIRECTORY}") endif () -set(CTEST_BINARY_DIRECTORY "${CTEST_SOURCE_DIRECTORY}/build") if ("$ENV{CMAKE_CONFIGURATION}" STREQUAL "") message(FATAL_ERROR diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index dfd94f5..1ec5413 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -54,6 +54,13 @@ CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" CMake_SKIP_INSTALL: 1 +.fedora31_sphinx_package: + extends: .fedora31 + + variables: + CMAKE_CONFIGURATION: fedora31_sphinx_package + CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" + #### Build and test .fedora31_ninja: diff --git a/.gitlab/os-macos.yml b/.gitlab/os-macos.yml index 9d123ec..de1093d 100644 --- a/.gitlab/os-macos.yml +++ b/.gitlab/os-macos.yml @@ -37,6 +37,14 @@ CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Unix Makefiles" +.macos_package: + extends: .macos_build + + variables: + CMAKE_CONFIGURATION: macos_package + CTEST_NO_WARNINGS_ALLOWED: 1 + CMake_SKIP_INSTALL: 1 + ### External testing .macos_xcode: @@ -56,6 +64,15 @@ - xcode-11.5 - nonconcurrent +.macos_builder_tags_package: + tags: + - cmake # Since this is a bare runner, pin to a project. + - macos + - shell + - xcode-11.5 + - nonconcurrent + - finder + .macos_builder_ext_tags: tags: - cmake # Since this is a bare runner, pin to a project. @@ -91,6 +108,24 @@ interruptible: true +.cmake_build_macos_package: + stage: package + + script: + - *before_script_macos + - .gitlab/ci/sccache.sh + # Allow the server to already be running. + - "sccache --start-server || :" + - sccache --show-stats + - ctest -VV -S .gitlab/ci/ctest_configure.cmake + - ctest -VV -S .gitlab/ci/ctest_build.cmake + - sccache --show-stats + - cd build + - cpack -G TGZ + - cpack -G DragNDrop + + interruptible: true + .cmake_test_macos: stage: test diff --git a/.gitlab/rules.yml b/.gitlab/rules.yml index 3bb8ae4..2bc4496 100644 --- a/.gitlab/rules.yml +++ b/.gitlab/rules.yml @@ -16,3 +16,9 @@ - if: '$CI_PROJECT_PATH == "cmake/cmake"' when: on_success - when: never + +.run_only_for_package: + rules: + - if: '$CMAKE_PACKAGE == "true"' + when: on_success + - when: never diff --git a/.gitlab/upload.yml b/.gitlab/upload.yml new file mode 100644 index 0000000..924e7de --- /dev/null +++ b/.gitlab/upload.yml @@ -0,0 +1,18 @@ +# Steps for uploading artifacts + +.rsync_upload: + image: "fedora:32" + stage: upload + tags: + - docker + - linux + - build + environment: + name: rsync-upload + + script: + - ls build/ + - dnf install -y --setopt=install_weak_deps=False rsync openssh-clients + - chmod 400 $RSYNC_BINARY_KEY + - ssh-keygen -y -f $RSYNC_BINARY_KEY > $RSYNC_BINARY_KEY.pub + - rsync -tv --recursive -e "ssh -i $RSYNC_BINARY_KEY -o StrictHostKeyChecking=no" build/ kitware@public.kitware.com:$RSYNC_DESTINATION/ diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index e409ce0..b0cb8d4 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -804,10 +804,6 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH set_tests_properties (${name} PROPERTIES TIMEOUT ${CMAKE_LONG_TEST_TIMEOUT}) endif() endmacro() - if(CMake_BUILD_NIGHTLY_RELEASES) - ADD_NIGHTLY_BUILD_TEST(CMakeNightlyOSX - osx_release.cmake) - endif() # add tests with more complex invocations add_test(Framework ${CMAKE_CTEST_COMMAND} diff --git a/Utilities/CMakeLists.txt b/Utilities/CMakeLists.txt index 22a3d5a..b739ae2 100644 --- a/Utilities/CMakeLists.txt +++ b/Utilities/CMakeLists.txt @@ -21,6 +21,11 @@ if(CMAKE_DOC_TARBALL) add_custom_target(documentation ALL DEPENDS ${dir}.stamp) install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${dir}/ DESTINATION . USE_SOURCE_PERMISSIONS) +elseif (CMake_DOC_ARTIFACT_PREFIX) + # Undocumented option for CI usage to reuse already + # built documentation. + install(DIRECTORY ${CMake_DOC_ARTIFACT_PREFIX}/ + DESTINATION . USE_SOURCE_PERMISSIONS) else() # Normal documentation build. add_subdirectory(Sphinx) diff --git a/Utilities/Release/create-cmake-release.cmake b/Utilities/Release/create-cmake-release.cmake index 88ac826..562df91 100644 --- a/Utilities/Release/create-cmake-release.cmake +++ b/Utilities/Release/create-cmake-release.cmake @@ -45,10 +45,8 @@ echo 'Failed to create \${name}.tar.gz' endfunction() write_docs_shell_script("create-${CMAKE_CREATE_VERSION}-docs.sh") -write_rel_shell_script("create-${CMAKE_CREATE_VERSION}-macos.sh" osx_release ) # macOS x86_64 message("Build docs first and then build for each platform: ./create-${CMAKE_CREATE_VERSION}-docs.sh && - ./create-${CMAKE_CREATE_VERSION}-macos.sh && echo done ") diff --git a/Utilities/Release/osx_release.cmake b/Utilities/Release/osx_release.cmake deleted file mode 100644 index 5ef3003..0000000 --- a/Utilities/Release/osx_release.cmake +++ /dev/null @@ -1,34 +0,0 @@ -set(PROCESSORS 4) -set(CMAKE_RELEASE_DIRECTORY /Users/kitware/CMakeReleaseDirectory) -set(BOOTSTRAP_ARGS "--prefix=/ --docdir=doc/cmake") -set(HOST dragnipur) -set(MAKE_PROGRAM "make") -set(MAKE "${MAKE_PROGRAM} -j5") -set(CPACK_BINARY_GENERATORS "DragNDrop TGZ") -set(CPACK_SOURCE_GENERATORS "") -set(CPACK_DMG_FORMAT "UDBZ") #build using bzip2 for smaller package size -set(CC clang) -set(CXX clang++) -set(CFLAGS "") -set(CXXFLAGS "-stdlib=libc++") -set(INITIAL_CACHE " -CMAKE_BUILD_TYPE:STRING=Release -CMAKE_C_STANDARD:STRING=11 -CMAKE_CXX_STANDARD:STRING=14 -CMAKE_OSX_ARCHITECTURES:STRING=x86_64 -CMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7 -CMAKE_SKIP_BOOTSTRAP_TEST:STRING=TRUE -CPACK_SYSTEM_NAME:STRING=Darwin-x86_64 -BUILD_CursesDialog:BOOL=ON -BUILD_QtDialog:BOOL=TRUE -CMake_GUI_DISTRIBUTE_WITH_Qt_LGPL:STRING=3 -CMake_INSTALL_DEPENDENCIES:BOOL=ON -CMAKE_SKIP_RPATH:BOOL=TRUE -CMake_TEST_NO_FindPackageModeMakefileTest:BOOL=TRUE -") -set(ENV [[ -export CMAKE_PREFIX_PATH='/Users/kitware/SDKs/qt-5.6.2-clang-x64' -]]) -set(SIGN "") -get_filename_component(path "${CMAKE_CURRENT_LIST_FILE}" PATH) -include(${path}/release_cmake.cmake) |