Browse Source

gitlab-ci: add a job to make macOS packages

Ben Boeckel 5 years ago
parent
commit
8ff3ce730d
4 changed files with 73 additions and 0 deletions
  1. 13 0
      .gitlab-ci.yml
  2. 1 0
      .gitlab/artifacts.yml
  3. 24 0
      .gitlab/ci/configure_macos_package.cmake
  4. 35 0
      .gitlab/os-macos.yml

+ 13 - 0
.gitlab-ci.yml

@@ -11,6 +11,7 @@ include:
 stages:
     - build
     - test
+    - package
     - test-ext
 
 ################################################################################
@@ -175,6 +176,18 @@ 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
+
 # Windows builds
 
 build:windows-vs2019-x64-ninja:

+ 1 - 0
.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:

+ 24 - 0
.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")

+ 35 - 0
.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