Commit c498a8ad authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'ci-aarch64'

430224b6 gitlab-ci: add test:debian10-aarch64-ninja job
300a91d4 gitlab-ci: add build:centos7-aarch64 job
d997637f gitlab-ci: add rules infrastructure to allow non-MR jobs
a54e4367 gitlab-ci: rename build:centos6-{release => x86_64}
616bf0d2 gitlab-ci: consolidate release and package job infrastructure
227ca689 ci: download cmake on aarch64
a601ed8e ci: download ninja on aarch64
54c2c5f8

 ci: generalize ninja download script to support non-upstream builds
...
Acked-by: Kitware Robot's avatarKitware Robot <kwrobot@kitware.com>
Merge-request: !5745
parents f2c4ea68 430224b6
......@@ -91,46 +91,69 @@ build:fedora33-sphinx:
# Linux builds
build:centos6-release:
build:centos6-x86_64:
extends:
- .release_linux
- .cmake_build_release_linux
- .linux_release_x86_64
- .cmake_build_linux_release
- .cmake_release_artifacts
- .linux_builder_tags
- .run_manually
build:centos7-aarch64:
extends:
- .linux_release_aarch64
- .cmake_build_linux_release
- .cmake_release_artifacts
- .linux_builder_tags_aarch64
- .run_manually
variables:
CMAKE_CI_NO_MR: "true"
test:debian10-ninja:
extends:
- .debian10_ninja
- .cmake_test_linux_package
- .cmake_test_linux_release
- .linux_builder_tags_qt
- .run_dependent
dependencies:
- build:centos6-release
- build:centos6-x86_64
needs:
- build:centos6-release
- build:centos6-x86_64
test:debian10-aarch64-ninja:
extends:
- .debian10_aarch64_ninja
- .cmake_test_linux_release
- .linux_builder_tags_aarch64_qt
- .run_dependent
dependencies:
- build:centos7-aarch64
needs:
- build:centos7-aarch64
variables:
CMAKE_CI_NO_MR: "true"
test:fedora33-makefiles:
extends:
- .fedora33_makefiles
- .cmake_test_linux_package
- .cmake_test_linux_release
- .linux_builder_tags_qt
- .run_dependent
dependencies:
- build:centos6-release
- build:centos6-x86_64
needs:
- build:centos6-release
- build:centos6-x86_64
test:cuda10.2-nvidia:
extends:
- .cuda10.2_nvidia
- .cmake_test_linux_package
- .cmake_test_linux_release
- .linux_builder_tags_cuda
- .run_dependent
dependencies:
- build:centos6-release
- build:centos6-x86_64
needs:
- build:centos6-release
- build:centos6-x86_64
build:fedora33-ninja:
extends:
......@@ -165,8 +188,9 @@ test:fedora33-ninja-multi:
build:linux-x86_64-package:
extends:
- .linux_package_x86_64
- .cmake_build_linux_package
- .linux_package
- .linux_release_x86_64
- .cmake_build_linux_release
- .cmake_release_artifacts
- .linux_builder_tags
- .run_only_for_package
......@@ -188,8 +212,9 @@ upload:linux-x86_64-package:
build:linux-aarch64-package:
extends:
- .linux_package_aarch64
- .cmake_build_linux_package
- .linux_package
- .linux_release_aarch64
- .cmake_build_linux_release
- .cmake_release_artifacts
- .linux_builder_tags_aarch64
- .run_only_for_package
......
$erroractionpreference = "stop"
$version = "3.19.0"
$sha256sum = "67BBDA67C98C5F0789199FE1DB650F12274A6AD40FD8CAE88D208029AC618905"
$version = "3.19.3"
$sha256sum = "3838E11A0DB08F97D687F061882A1E52807010A313F3AC716015B3587CA3F20E"
$filename = "cmake-$version-win64-x64"
$tarball = "$filename.zip"
......
......@@ -2,21 +2,26 @@
set -e
readonly version="3.19.0"
readonly version="3.19.3"
case "$( uname -s )" in
Linux)
case "$(uname -s)-$(uname -m)" in
Linux-x86_64)
shatool="sha256sum"
sha256sum="5446cdee900e906e46162a5a7be9b4542bb5e886041cf8cffeda62aae2696ccf"
platform="Linux"
sha256sum="c18b65697e9679e5c88dccede08c323cd3d3730648e59048047bba82097e0ffc"
platform="Linux-x86_64"
;;
Darwin)
Linux-aarch64)
shatool="sha256sum"
sha256sum="66e507c97ffb586d7ca6567890808b792c8eb004b645706df6fbf27826a395a2"
platform="Linux-aarch64"
;;
Darwin-*)
shatool="shasum -a 256"
sha256sum="315eb5500753f797075b6ea43189420e97b0b9f32c8fc87ec94ba1d80b72eb7f"
platform="Darwin"
sha256sum="a6b79ad05f89241a05797510e650354d74ff72cc988981cdd1eb2b3b2bda66ac"
platform="macos-universal"
;;
*)
echo "Unrecognized platform $( uname -s )"
echo "Unrecognized platform $(uname -s)-$(uname -m)"
exit 1
;;
esac
......@@ -24,7 +29,7 @@ readonly shatool
readonly sha256sum
readonly platform
readonly filename="cmake-$version-$platform-x86_64"
readonly filename="cmake-$version-$platform"
readonly tarball="$filename.tar.gz"
cd .gitlab
......
set(CMake_TEST_FindALSA "ON" CACHE BOOL "")
set(CMake_TEST_FindBLAS "ON" CACHE BOOL "")
set(CMake_TEST_FindBoost "ON" CACHE BOOL "")
set(CMake_TEST_FindBoost_Python "ON" CACHE BOOL "")
set(CMake_TEST_FindBZip2 "ON" CACHE BOOL "")
set(CMake_TEST_FindCups "ON" CACHE BOOL "")
set(CMake_TEST_FindCURL "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen_Dot "ON" CACHE BOOL "")
set(CMake_TEST_FindDoxygen "ON" CACHE BOOL "")
set(CMake_TEST_FindEXPAT "ON" CACHE BOOL "")
set(CMake_TEST_FindFontconfig "ON" CACHE BOOL "")
set(CMake_TEST_FindFreetype "ON" CACHE BOOL "")
set(CMake_TEST_FindGDAL "ON" CACHE BOOL "")
set(CMake_TEST_FindGIF "ON" CACHE BOOL "")
set(CMake_TEST_FindGit "ON" CACHE BOOL "")
set(CMake_TEST_FindGLEW "ON" CACHE BOOL "")
set(CMake_TEST_FindGnuTLS "ON" CACHE BOOL "")
set(CMake_TEST_FindGSL "ON" CACHE BOOL "")
set(CMake_TEST_FindGTest "ON" CACHE BOOL "")
set(CMake_TEST_FindGTK2 "ON" CACHE BOOL "")
set(CMake_TEST_FindIconv "ON" CACHE BOOL "")
set(CMake_TEST_FindIntl "ON" CACHE BOOL "")
set(CMake_TEST_FindJPEG "ON" CACHE BOOL "")
set(CMake_TEST_FindJsonCpp "ON" CACHE BOOL "")
set(CMake_TEST_FindLAPACK "ON" CACHE BOOL "")
set(CMake_TEST_FindLibArchive "ON" CACHE BOOL "")
set(CMake_TEST_FindLibinput "ON" CACHE BOOL "")
set(CMake_TEST_FindLibLZMA "ON" CACHE BOOL "")
set(CMake_TEST_FindLibUV "ON" CACHE BOOL "")
set(CMake_TEST_FindLibXml2 "ON" CACHE BOOL "")
set(CMake_TEST_FindLibXslt "ON" CACHE BOOL "")
set(CMake_TEST_FindMPI_C "ON" CACHE BOOL "")
set(CMake_TEST_FindMPI_CXX "ON" CACHE BOOL "")
set(CMake_TEST_FindMPI_Fortran "ON" CACHE BOOL "")
set(CMake_TEST_FindMPI "ON" CACHE BOOL "")
set(CMake_TEST_FindODBC "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenACC "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenGL "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenMP_C "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenMP_CXX "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenMP_Fortran "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenMP "ON" CACHE BOOL "")
set(CMake_TEST_FindOpenSSL "ON" CACHE BOOL "")
set(CMake_TEST_FindPatch "ON" CACHE BOOL "")
set(CMake_TEST_FindPNG "ON" CACHE BOOL "")
set(CMake_TEST_FindPostgreSQL "ON" CACHE BOOL "")
set(CMake_TEST_FindProtobuf "ON" CACHE BOOL "")
set(CMake_TEST_FindPython "ON" CACHE BOOL "")
set(CMake_TEST_FindPython_NumPy "ON" CACHE BOOL "")
set(CMake_TEST_FindPython_PyPy "ON" CACHE BOOL "")
set(CMake_TEST_FindRuby "ON" CACHE BOOL "")
set(CMake_TEST_FindSDL "ON" CACHE BOOL "")
set(CMake_TEST_FindSQLite3 "ON" CACHE BOOL "")
set(CMake_TEST_FindTIFF "ON" CACHE BOOL "")
set(CMake_TEST_FindX11 "ON" CACHE BOOL "")
set(CMake_TEST_FindXalanC "ON" CACHE BOOL "")
set(CMake_TEST_FindXercesC "ON" CACHE BOOL "")
set(CMake_TEST_Fortran_SUBMODULES "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_C "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_CXX "ON" CACHE BOOL "")
set(CMake_TEST_IPO_WORKS_Fortran "ON" CACHE BOOL "")
set(CMake_TEST_Qt5 "ON" CACHE BOOL "")
set(CMake_TEST_UseSWIG "ON" CACHE BOOL "")
include("${CMAKE_CURRENT_LIST_DIR}/configure_external_test.cmake")
FROM arm64v8/debian:10
MAINTAINER Brad King <brad.king@kitware.com>
COPY install_deps.sh /root/install_deps.sh
RUN sh /root/install_deps.sh
#!/bin/sh
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 iwyu runtime deps.
apt-get install -y \
clang-6.0 \
libncurses6
# Packages needed to test find modules.
apt-get install -y \
alsa-utils \
doxygen graphviz \
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 \
libfontconfig1-dev \
libfreetype6-dev \
libgdal-dev \
libgif-dev \
libgl1-mesa-dev \
libglew-dev \
libgsl-dev \
libgtest-dev \
libgtk2.0-dev \
libinput-dev \
libjpeg-dev \
libjsoncpp-dev \
liblapack-dev \
liblzma-dev \
libopenmpi-dev openmpi-bin \
libpng-dev \
libpq-dev postgresql-server-dev-11 \
libprotobuf-dev libprotobuf-c-dev libprotoc-dev protobuf-compiler \
libsdl-dev \
libsqlite3-dev \
libtiff-dev \
libuv1-dev \
libx11-dev \
libxalan-c-dev \
libxerces-c-dev \
libxml2-dev libxml2-utils \
libxslt-dev xsltproc \
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
#!/usr/bin/env bash
set -e
set -x
cleanup() {
docker container rm -fv "$build_container" >/dev/null 2>&1 || true
docker image rm -f "$build_image" >/dev/null 2>&1 || true
}
readonly suffix="-$(date -u +%Y-%m-%d)-${RANDOM}"
readonly build_container="ninja-build-linux-aarch64$suffix"
readonly build_image="ninja:build-linux-aarch64$suffix"
readonly git_tag="${1-v1.10.2}"
trap "cleanup" EXIT INT TERM
docker image build --build-arg GIT_TAG="$git_tag" --tag="$build_image" "${BASH_SOURCE%/*}/centos7-aarch64"
docker container create --name "$build_container" "$build_image"
docker cp "$build_container:/ninja/ninja" "ninja"
FROM kitware/cmake:build-linux-aarch64-base-2020-12-21
MAINTAINER Brad King <brad.king@kitware.com>
ARG GIT_TAG=v1.10.2
COPY build_ninja.sh /root/build_ninja.sh
RUN scl enable devtoolset-7 -- sh /root/build_ninja.sh $GIT_TAG
#!/bin/sh
set -e
git clone https://github.com/ninja-build/ninja.git
cd ninja
git checkout "${1-v1.10.2}"
./configure.py --bootstrap
./ninja all
./ninja_test
strip ninja
......@@ -3,33 +3,39 @@
set -e
readonly version="1.10.2"
baseurl="https://github.com/ninja-build/ninja/releases/download/v$version"
case "$( uname -s )" in
Linux)
case "$(uname -s)-$(uname -m)" in
Linux-x86_64)
shatool="sha256sum"
sha256sum="763464859c7ef2ea3a0a10f4df40d2025d3bb9438fcb1228404640410c0ec22d"
platform="linux"
filename="ninja-linux"
;;
Darwin)
Linux-aarch64)
shatool="sha256sum"
sha256sum="c0c29925fd7f0f24981b3b9d18353c7111c9af59eb6e6b0ffc0c4914cdc7999c"
# Use binary built by adjacent 'docker/ninja/centos7-aarch64.bash' script.
baseurl="https://cmake.org/files/dependencies"
filename="ninja-$version-1-linux-aarch64"
;;
Darwin-*)
shatool="shasum -a 256"
sha256sum="6fa359f491fac7e5185273c6421a000eea6a2f0febf0ac03ac900bd4d80ed2a5"
platform="mac"
filename="ninja-mac"
;;
*)
echo "Unrecognized platform $( uname -s )"
echo "Unrecognized platform $(uname -s)-$(uname -m)"
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"
curl -OL "$baseurl/$tarball"
$shatool --check ninja.sha256sum
./cmake/bin/cmake -E tar xf "$tarball"
......@@ -4,20 +4,13 @@
### Release
.release_linux:
image: "kitware/cmake:build-linux-x86_64-deps-2020-04-02@sha256:77e9ab183f34680990db9da5945473e288f0d6556bce79ecc1589670d656e157"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
LAUNCHER: "scl enable devtoolset-6 rh-python36 --"
.linux_prep_source:
image: "fedora:33"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
.linux_package_x86_64:
.linux_release_x86_64:
image: "kitware/cmake:build-linux-x86_64-deps-2020-04-02@sha256:77e9ab183f34680990db9da5945473e288f0d6556bce79ecc1589670d656e157"
variables:
......@@ -25,7 +18,7 @@
LAUNCHER: "scl enable devtoolset-6 rh-python36 --"
CMAKE_ARCH: x86_64
.linux_package_aarch64:
.linux_release_aarch64:
image: "kitware/cmake:build-linux-aarch64-deps-2020-12-21@sha256:0bd7dfe4e45593b04e39cd21e44011034610cfd376900558c5ef959bb1af15af"
variables:
......@@ -33,6 +26,10 @@
LAUNCHER: "scl enable devtoolset-7 --"
CMAKE_ARCH: aarch64
.linux_package:
variables:
BOOTSTRAP_ARGS: '-- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"'
### Debian
.debian10:
......@@ -40,6 +37,7 @@
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: x86_64
.debian10_iwyu:
extends: .debian10
......@@ -49,6 +47,13 @@
CTEST_NO_WARNINGS_ALLOWED: 1
CMake_SKIP_INSTALL: 1
.debian10_aarch64:
image: "kitware/cmake:ci-debian10-aarch64-2021-01-26"
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: aarch64
### Fedora
.fedora33:
......@@ -56,6 +61,7 @@
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes"
CMAKE_ARCH: x86_64
#### Lint builds
......@@ -92,6 +98,13 @@
CMAKE_CONFIGURATION: debian10_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
.debian10_aarch64_ninja:
extends: .debian10_aarch64
variables:
CMAKE_CONFIGURATION: debian10_aarch64_ninja
CTEST_NO_WARNINGS_ALLOWED: 1
.fedora33_ninja:
extends: .fedora33
......@@ -122,6 +135,7 @@
variables:
GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
CMAKE_ARCH: x86_64
CTEST_LABELS: "CUDA"
.cuda10.2_nvidia:
......@@ -170,6 +184,14 @@
- docker
- linux-aarch64
.linux_builder_tags_aarch64_qt:
tags:
- cmake
- build
- docker
- linux-aarch64
- linux-3.17 # Needed to be able to load Fedora's Qt libraries.
## Linux-specific scripts
.before_script_linux: &before_script_linux
......@@ -225,11 +247,12 @@
interruptible: true
.cmake_build_linux_package:
.cmake_build_linux_release:
stage: build
script:
# Bootstrap.
- mkdir -p build/
- cp -v Utilities/Release/linux/$CMAKE_ARCH/cache.txt build/CMakeCache.txt
# Make sccache available.
- .gitlab/ci/sccache.sh
......@@ -248,44 +271,7 @@
- git reset --hard
# Bootstrap
- cd build/
- '$LAUNCHER ../bootstrap --parallel=$(nproc) --docdir=doc/cmake -- "-DCMake_DOC_ARTIFACT_PREFIX=$CI_PROJECT_DIR/build/install-doc"'
# FIXME: When CTest can drive an external CMake for the build as well,
# use the scripts here.
- "$LAUNCHER make -j$(nproc)"
# NOTE: This regex matches that used in the release build.
- "$LAUNCHER bin/ctest --output-on-failure -j$(nproc) -R '^(CMake\\.|CMakeLib\\.|CMakeServerLib\\.|RunCMake\\.ctest_memcheck)'"
# Make a package.
- bin/cpack -G TGZ
- bin/cpack -G STGZ
- sccache --show-stats
interruptible: true
.cmake_build_release_linux:
stage: build
script:
# Bootstrap.
- mkdir build/
- cp -v Utilities/Release/linux/x86_64/cache.txt build/CMakeCache.txt
# Make sccache available.
- .gitlab/ci/sccache.sh
- export PATH=$PWD/.gitlab:$PATH
# Append sccache settings to the cache.
- echo "CMAKE_C_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
- echo "CMAKE_CXX_COMPILER_LAUNCHER:STRING=sccache" >> build/CMakeCache.txt
# CI settings.
- echo "CMake_TEST_INSTALL:BOOL=OFF" >> build/CMakeCache.txt
- echo "CMAKE_INSTALL_PREFIX:PATH=$PWD/build/install" >> build/CMakeCache.txt
- echo "CMAKE_SKIP_INSTALL_ALL_DEPENDENCY:BOOL=ON" >> build/CMakeCache.txt
# Appease Git. The Git in this container is old (1.7) and doesn't
# understand some things. But, it doesn't need to, so make it blind.
- mkdir -p .git/info
- echo "* -crlf" >> .git/info/attributes
- git reset --hard
# Bootstrap
- cd build/
- "$LAUNCHER ../bootstrap --parallel=$(nproc) --docdir=doc/cmake"
- '$LAUNCHER ../bootstrap --parallel=$(nproc) --docdir=doc/cmake $BOOTSTRAP_ARGS'
# FIXME: When CTest can drive an external CMake for the build as well,
# use the scripts here.
- "$LAUNCHER make -j$(nproc)"
......@@ -298,14 +284,14 @@
interruptible: true
.cmake_test_linux_package:
.cmake_test_linux_release:
stage: test-ext
script:
- *before_script_linux
# Make the CMake package available.
- mkdir -p build/install
- tar -C build/install --strip-components=1 -xzf build/cmake-*-linux-x86_64.tar.gz
- tar -C build/install --strip-components=1 -xzf build/cmake-*-linux-$CMAKE_ARCH.tar.gz
- .gitlab/ci/sccache.sh
- sccache --start-server
- sccache --show-stats
......
......@@ -9,6 +9,8 @@
- if: '($CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != "" && $CI_COMMIT_BRANCH == $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true")'
when: delayed
start_in: 5 minutes
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
when: never
- if: '$CI_MERGE_REQUEST_ID'
when: manual
- if: '$CI_PROJECT_PATH == "cmake/cmake"'
......@@ -24,6 +26,8 @@
when: on_success
- if: '($CMAKE_CI_PROJECT_CONTINUOUS_BRANCH != "" && $CI_COMMIT_BRANCH == $CMAKE_CI_PROJECT_CONTINUOUS_BRANCH && $CMAKE_CI_JOB_CONTINUOUS == "true")'
when: on_success
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
when: never
- if: '$CI_MERGE_REQUEST_ID'
when: on_success
- if: '$CI_PROJECT_PATH == "cmake/cmake"'
......@@ -36,6 +40,8 @@
when: never
- if: '$CMAKE_CI_NIGHTLY == "true"'
when: on_success
- if: '($CMAKE_CI_NO_MR == "true" && $CI_MERGE_REQUEST_ID)'
when: never
- if: '$CI_MERGE_REQUEST_ID'
when: on_success
- if: '$CI_PROJECT_PATH == "cmake/cmake"'
......
......@@ -5,7 +5,7 @@
# Build using the CMake source directory as the build context.
# The resulting image will have an '/out' directory containing the package.
# Keep this in sync with the `.gitlab-ci.yml` `release_linux` image.
# Keep this in sync with the `.gitlab/os-linux.yml` `.linux_release_aarch64` image.
ARG FROM_IMAGE_NAME=kitware/cmake:build-linux-aarch64-deps-2020-12-21
ARG FROM_IMAGE_DIGEST=@sha256:0bd7dfe4e45593b04e39cd21e44011034610cfd376900558c5ef959bb1af15af
ARG FROM_IMAGE=$FROM_IMAGE_NAME$FROM_IMAGE_DIGEST
......
......@@ -5,7 +5,7 @@
# Build using the CMake source directory as the build context.
# The resulting image will have an '/out' directory containing the package.
# Keep this in sync with the `.gitlab-ci.yml` `release_linux` image.
# Keep this in sync with the `.gitlab/os-linux.yml` `.linux_release_x86_64` image.
ARG FROM_IMAGE_NAME=kitware/cmake:build-linux-x86_64-deps-2020-04-02
ARG FROM_IMAGE_DIGEST=@sha256:77e9ab183f34680990db9da5945473e288f0d6556bce79ecc1589670d656e157