summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml112
-rwxr-xr-x.gitlab/ci/cmake.sh30
-rw-r--r--.gitlab/ci/configure_macos_makefiles.cmake1
-rw-r--r--.gitlab/ci/configure_macos_ninja.cmake1
-rwxr-xr-x.gitlab/ci/ninja.sh26
-rwxr-xr-x.gitlab/ci/sccache.sh28
6 files changed, 164 insertions, 34 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6ef553a..421c3f9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -55,6 +55,49 @@
CTEST_NO_WARNINGS_ALLOWED: 1
CMAKE_GENERATOR: "Unix Makefiles"
+.macos: &macos
+ variables:
+ # Note that shell runners only support runners with a single
+ # concurrency level. We can't use `$CI_CONCURRENCY_ID` because this may
+ # change between the build and test stages which CMake doesn't support.
+ # Even if we could, it could change if other runners on the machine
+ # could run at the same time, so we drop it.
+ GIT_CLONE_PATH: "$CI_BUILDS_DIR/gitlab-kitware-cmake ci"
+
+.macos_ninja: &macos_ninja
+ extends: .macos
+
+ variables:
+ CMAKE_CONFIGURATION: macos_ninja
+ CTEST_NO_WARNINGS_ALLOWED: 1
+
+.macos_makefiles: &macos_makefiles
+ extends: .macos
+
+ variables:
+ CMAKE_CONFIGURATION: macos_makefiles
+ CTEST_NO_WARNINGS_ALLOWED: 1
+ CMAKE_GENERATOR: "Unix Makefiles"
+
+.linux_builder_tags: &linux_builder_tags
+ tags:
+ - build
+ - docker
+ - linux
+
+.linux_builder_tags_qt: &linux_builder_tags_qt
+ tags:
+ - build
+ - docker
+ - linux
+ - linux-3.17 # Needed to be able to load Fedora's Qt libraries.
+
+.macos_builder_tags: &macos_builder_tags
+ tags:
+ - cmake # Since this is a bare runner, pin to a project.
+ - macos
+ - shell
+
before_script:
- .gitlab/ci/cmake.sh
- .gitlab/ci/ninja.sh
@@ -65,14 +108,11 @@ before_script:
.cmake_build_unix: &cmake_build_unix
stage: build
only: *only_settings
- tags:
- - build
- - docker
- - linux
script:
- .gitlab/ci/sccache.sh
- - sccache --start-server
+ # Allow the server to already be running.
+ - "sccache --start-server || :"
- sccache --show-stats
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_configure.cmake"
- "$LAUNCHER ctest -VV -S .gitlab/ci/ctest_build.cmake"
@@ -143,10 +183,6 @@ before_script:
.cmake_test_unix: &cmake_test_unix
stage: test
only: *only_settings
- tags:
- - build
- - docker
- - linux
script:
- "$LAUNCHER ctest --output-on-failure -V -S .gitlab/ci/ctest_test.cmake"
@@ -161,38 +197,33 @@ build:debian10-iwyu:
<<:
- *debian10_iwyu
- *cmake_build_unix
+ - *linux_builder_tags
build:fedora31-tidy:
<<:
- *fedora31_tidy
- *cmake_build_unix
+ - *linux_builder_tags
build:fedora31-sphinx:
<<:
- *fedora31_sphinx
- *cmake_build_unix
- tags:
- - build
- - docker
- - linux
- - linux-3.17 # Needed to be able to load Fedora's Qt libraries.
+ - *linux_builder_tags_qt
build:fedora31-ninja:
<<:
- *fedora31_ninja
- *cmake_build_unix
- *cmake_build_artifacts
+ - *linux_builder_tags
when: manual
test:fedora31-ninja:
<<:
- *fedora31_ninja
- *cmake_test_unix
- tags:
- - build
- - docker
- - linux
- - linux-3.17 # Needed to be able to load Fedora's Qt libraries.
+ - *linux_builder_tags_qt
dependencies:
- build:fedora31-ninja
needs:
@@ -203,18 +234,51 @@ build:fedora31-makefiles:
- *fedora31_makefiles
- *cmake_build_unix
- *cmake_build_artifacts
+ - *linux_builder_tags
when: manual
test:fedora31-makefiles:
<<:
- *fedora31_makefiles
- *cmake_test_unix
- tags:
- - build
- - docker
- - linux
- - linux-3.17 # Needed to be able to load Fedora's Qt libraries.
+ - *linux_builder_tags_qt
dependencies:
- build:fedora31-makefiles
needs:
- build:fedora31-makefiles
+
+build:macos-ninja:
+ <<:
+ - *macos_ninja
+ - *cmake_build_unix
+ - *cmake_build_artifacts
+ - *macos_builder_tags
+ when: manual
+
+test:macos-ninja:
+ <<:
+ - *macos_ninja
+ - *cmake_test_unix
+ - *macos_builder_tags
+ dependencies:
+ - build:macos-ninja
+ needs:
+ - build:macos-ninja
+
+build:macos-makefiles:
+ <<:
+ - *macos_makefiles
+ - *cmake_build_unix
+ - *cmake_build_artifacts
+ - *macos_builder_tags
+ when: manual
+
+test:macos-makefiles:
+ <<:
+ - *macos_makefiles
+ - *cmake_test_unix
+ - *macos_builder_tags
+ dependencies:
+ - build:macos-makefiles
+ needs:
+ - build:macos-makefiles
diff --git a/.gitlab/ci/cmake.sh b/.gitlab/ci/cmake.sh
index 4b2f53f..658a62a 100755
--- a/.gitlab/ci/cmake.sh
+++ b/.gitlab/ci/cmake.sh
@@ -3,14 +3,38 @@
set -e
readonly version="3.17.2"
-readonly sha256sum="dc57f3cc448ca67fc8776b4ad4c22b087b9c6a8e459938b9622b8c7f4ef6b21e"
-readonly filename="cmake-$version-Linux-x86_64"
+
+case "$( uname -s )" in
+ Linux)
+ shatool="sha256sum"
+ sha256sum="dc57f3cc448ca67fc8776b4ad4c22b087b9c6a8e459938b9622b8c7f4ef6b21e"
+ platform="Linux"
+ ;;
+ Darwin)
+ shatool="shasum -a 256"
+ sha256sum="139500e20b080444fcafe57f24f57248c691c5187cce6695bee2b9aad6792c7d"
+ platform="Darwin"
+ ;;
+ *)
+ echo "Unrecognized platform $( uname -s )"
+ exit 1
+ ;;
+esac
+readonly shatool
+readonly sha256sum
+readonly platform
+
+readonly filename="cmake-$version-$platform-x86_64"
readonly tarball="$filename.tar.gz"
cd .gitlab
echo "$sha256sum $tarball" > cmake.sha256sum
curl -OL "https://github.com/Kitware/CMake/releases/download/v$version/$tarball"
-sha256sum --check cmake.sha256sum
+$shatool --check cmake.sha256sum
tar xf "$tarball"
mv "$filename" cmake
+
+if [ "$( uname -s )" = "Darwin" ]; then
+ ln -s CMake.app/Contents/bin cmake/bin
+fi
diff --git a/.gitlab/ci/configure_macos_makefiles.cmake b/.gitlab/ci/configure_macos_makefiles.cmake
new file mode 100644
index 0000000..33f0db0
--- /dev/null
+++ b/.gitlab/ci/configure_macos_makefiles.cmake
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake")
diff --git a/.gitlab/ci/configure_macos_ninja.cmake b/.gitlab/ci/configure_macos_ninja.cmake
new file mode 100644
index 0000000..33f0db0
--- /dev/null
+++ b/.gitlab/ci/configure_macos_ninja.cmake
@@ -0,0 +1 @@
+include("${CMAKE_CURRENT_LIST_DIR}/configure_common.cmake")
diff --git a/.gitlab/ci/ninja.sh b/.gitlab/ci/ninja.sh
index 31da12b..93c1ee9 100755
--- a/.gitlab/ci/ninja.sh
+++ b/.gitlab/ci/ninja.sh
@@ -3,13 +3,33 @@
set -e
readonly version="1.10.0"
-readonly sha256sum="6566836ddf3d72ca06685b34814e0c6fa0f0943542d651d0dab3150f10307c82"
-readonly filename="ninja-linux"
+
+case "$( uname -s )" in
+ Linux)
+ shatool="sha256sum"
+ sha256sum="6566836ddf3d72ca06685b34814e0c6fa0f0943542d651d0dab3150f10307c82"
+ platform="linux"
+ ;;
+ Darwin)
+ shatool="shasum -a 256"
+ sha256sum="2ee405c0e205d55666c60cc9c0d8d04c8ede06d3ef2e2c2aabe08fd81c17d22e"
+ platform="mac"
+ ;;
+ *)
+ echo "Unrecognized platform $( uname -s )"
+ exit 1
+ ;;
+esac
+readonly shatool
+readonly sha256sum
+readonly platform
+
+readonly filename="ninja-$platform"
readonly tarball="$filename.zip"
cd .gitlab
echo "$sha256sum $tarball" > ninja.sha256sum
curl -OL "https://github.com/ninja-build/ninja/releases/download/v$version/$tarball"
-sha256sum --check ninja.sha256sum
+$shatool --check ninja.sha256sum
./cmake/bin/cmake -E tar xf "$tarball"
diff --git a/.gitlab/ci/sccache.sh b/.gitlab/ci/sccache.sh
index c88cdcc..f7d51ff 100755
--- a/.gitlab/ci/sccache.sh
+++ b/.gitlab/ci/sccache.sh
@@ -2,15 +2,35 @@
set -e
-readonly version="0.2.12"
-readonly sha256sum="26fd04c1273952cc2a0f359a71c8a1857137f0ee3634058b3f4a63b69fc8eb7f"
-readonly filename="sccache-$version-x86_64-unknown-linux-musl"
+readonly version="0.2.13"
+
+case "$( uname -s )" in
+ Linux)
+ shatool="sha256sum"
+ sha256sum="28a5499e340865b08b632306b435913beb590fbd7b49a3f887a623b459fabdeb"
+ platform="x86_64-unknown-linux-musl"
+ ;;
+ Darwin)
+ shatool="shasum -a 256"
+ sha256sum="f564e948abadfc9e409eb1cd7babf24c6784057d5506c3b0a04cdd37cd830ae9"
+ platform="x86_64-apple-darwin"
+ ;;
+ *)
+ echo "Unrecognized platform $( uname -s )"
+ exit 1
+ ;;
+esac
+readonly shatool
+readonly sha256sum
+readonly platform
+
+readonly filename="sccache-$version-$platform"
readonly tarball="$filename.tar.gz"
cd .gitlab
echo "$sha256sum $tarball" > sccache.sha256sum
curl -OL "https://github.com/mozilla/sccache/releases/download/$version/$tarball"
-sha256sum --check sccache.sha256sum
+$shatool --check sccache.sha256sum
tar xf "$tarball"
mv "$filename/sccache" .