From 76742c4cbe7194edfbaba2950008530e4253b885 Mon Sep 17 00:00:00 2001
From: Hi Key <test@yfqm.date>
Date: Wed, 25 Nov 2020 23:20:49 +0800
Subject: [PATCH] gitlab-ci: add jobs to make Linux release packages for
 aarch64 on 3.19 branch

---
 .gitlab-ci.yml        | 23 +++++++++++++++++++++++
 .gitlab/artifacts.yml |  1 +
 .gitlab/ci/sccache.sh | 21 ++++++++++++++-------
 .gitlab/os-linux.yml  | 15 +++++++++++++++
 4 files changed, 53 insertions(+), 7 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5550c2fc87..270ff11e0b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -186,6 +186,29 @@ build:linux-x86_64-package:
     variables:
         RSYNC_DESTINATION: dev
 
+build:linux-aarch64-package:
+    extends:
+        - .linux_package_aarch64
+        - .cmake_build_linux_package
+        - .cmake_release_artifacts
+        - .linux_builder_tags_aarch64
+        - .run_only_for_package
+    dependencies:
+        - prep:doc-package
+    needs:
+        - prep:doc-package
+
+.upload:linux-aarch64-package:
+    extends:
+        - .rsync_upload
+        - .run_only_for_package
+    dependencies:
+        - build:linux-aarch64-package
+    needs:
+        - build:linux-aarch64-package
+    variables:
+        RSYNC_DESTINATION: dev
+
 # macOS builds
 
 build:macos-ninja:
diff --git a/.gitlab/artifacts.yml b/.gitlab/artifacts.yml
index 589b16cee8..76ffd27713 100644
--- a/.gitlab/artifacts.yml
+++ b/.gitlab/artifacts.yml
@@ -74,6 +74,7 @@
         paths:
             # Any packages made.
             - build/cmake-*-Linux-x86_64.*
+            - build/cmake-*-Linux-aarch64.*
             - build/cmake-*-macos-universal.*
             # Any source packages made.
             - build/cmake-*.tar.gz
diff --git a/.gitlab/ci/sccache.sh b/.gitlab/ci/sccache.sh
index af24710406..77bedaa2ed 100755
--- a/.gitlab/ci/sccache.sh
+++ b/.gitlab/ci/sccache.sh
@@ -2,21 +2,30 @@
 
 set -e
 
-case "$( uname -s )" in
-    Linux)
+readonly kernel="$(uname -s)-$(uname -m)"
+case $kernel in
+    Linux-x86_64)
         version="0.2.13"
         shatool="sha256sum"
         sha256sum="28a5499e340865b08b632306b435913beb590fbd7b49a3f887a623b459fabdeb"
         platform="x86_64-unknown-linux-musl"
         ;;
-    Darwin)
+    Linux-aarch64)
+        version="g6628e1f"
+        shatool="sha256sum"
+        sha256sum="bb88adbb5a29c166ecaa78d0593493b609a7f84d91d1228502a908f319b513f0"
+        platform="aarch64-unknown-linux-musl"
+        url="https://github.com/hwinit/sccache/releases/download/$version"
+        ;;
+    Darwin-x86_64)
         version="gfe63078"
         shatool="shasum -a 256"
         sha256sum="60a0302b1d7227f7ef56abd82266353f570d27c6e850c56c6448bf62def38888"
         platform="x86_64-apple-darwin"
+        url="https://paraview.org/files/dependencies"
         ;;
     *)
-        echo "Unrecognized platform $( uname -s )"
+        echo "Unrecognized platform $kernel"
         exit 1
         ;;
 esac
@@ -28,9 +37,7 @@ readonly platform
 readonly filename="sccache-$version-$platform"
 readonly tarball="$filename.tar.gz"
 
-if [ "$( uname -s )" = "Darwin" ]; then
-    url="https://paraview.org/files/dependencies"
-else
+if [ -z "$url" ]; then
     url="https://github.com/mozilla/sccache/releases/download/$version"
 fi
 readonly url
diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml
index 57e4ae19b7..bfd164bcb1 100644
--- a/.gitlab/os-linux.yml
+++ b/.gitlab/os-linux.yml
@@ -25,6 +25,14 @@
         LAUNCHER: "scl enable devtoolset-6 rh-python36 --"
         CMAKE_ARCH: x86_64
 
+.linux_package_aarch64:
+    image: "kitware/cmake:build-linux-aarch64-deps-2020-12-21@sha256:0bd7dfe4e45593b04e39cd21e44011034610cfd376900558c5ef959bb1af15af"
+
+    variables:
+        GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci"
+        LAUNCHER: "scl enable devtoolset-7 --"
+        CMAKE_ARCH: aarch64
+
 ### Debian
 
 .debian10:
@@ -155,6 +163,13 @@
         - docker
         - linux
 
+.linux_builder_tags_aarch64:
+    tags:
+        - cmake
+        - build
+        - docker
+        - linux-aarch64
+
 ## Linux-specific scripts
 
 .before_script_linux: &before_script_linux
-- 
GitLab