ref: 558a3c2a3f16fd21c16e5821bd8b71898af69bb8
parent: 20c032d27c59d65b19b8ffbb2608e5282fe817eb
author: Tim-Philipp Müller <tim@centricular.com>
date: Mon Apr 24 13:58:59 EDT 2023
ci: add arm64 CI
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -7,6 +7,18 @@
# Image from https://hub.docker.com/_/gcc/ based on Debian
image: gcc:9
+# https://docs.gitlab.com/ee/ci/yaml/yaml_optimization.html#reference-tags
+.snippets:
+ git_prep:
+ # Make sure we have a recent annotated tag, otherwise meson/get-version.py
+ # might fail later (e.g. shallow clone without enough history) or return
+ # a bogus version based on a much older tag. This can happen in merge request
+ # pipelines from a personal fork, as the fork might not have the latest
+ # upstream tags if it has been forked a long time ago. Also affects the
+ # git version picked up by autotools and cmake, not just meson.
+ - git fetch https://gitlab.xiph.org/xiph/opus.git refs/tags/v1.4:refs/tags/v1.4
+ - git describe
+
whitespace:
stage: test
script:
@@ -16,7 +28,8 @@
stage: build
before_script:
- apt-get update &&
- apt-get install -y zip doxygen
+ apt-get install -y zip doxygen git
+ - !reference [.snippets, git_prep]
script:
- ./autogen.sh
- ./configure
@@ -36,6 +49,7 @@
before_script:
- apt-get update &&
apt-get install -y cmake ninja-build
+ - !reference [.snippets, git_prep]
script:
- mkdir build
- cmake -S . -B build -G "Ninja" -DCMAKE_BUILD_TYPE=Release -DOPUS_BUILD_TESTING=ON -DOPUS_BUILD_PROGRAMS=ON
@@ -42,20 +56,29 @@
- cmake --build build
- cd build && ctest --output-on-failure
-meson:
+.meson:
+ image: 'debian:bookworm-slim'
stage: build
before_script:
- apt-get update &&
- apt-get install -y python3-pip ninja-build doxygen
- - export XDG_CACHE_HOME=$PWD/pip-cache
- - pip3 install --user meson
+ apt-get install -y ninja-build doxygen meson git
+ - !reference [.snippets, git_prep]
script:
- - export PATH=$PATH:$HOME/.local/bin
- mkdir builddir
- - meson setup --werror -Dtests=enabled -Ddocs=enabled -Dbuildtype=release builddir
+ - meson setup -Dtests=enabled -Ddocs=enabled -Dbuildtype=release builddir ${MESON_EXTRA_ARGS}
- meson compile -C builddir
- meson test -C builddir
#- meson dist --no-tests -C builddir
- cache:
- paths:
- - 'pip-cache/*'
+
+meson x86_64:
+ extends: '.meson'
+ variables:
+ MESON_EXTRA_ARGS: '--werror'
+
+meson arm64:
+ extends: '.meson'
+ tags:
+ - 'gstreamer-arm64-linux-docker'
+ variables:
+ # arm64 build has a compiler warning still, so let's not use --werror for now
+ MESON_EXTRA_ARGS: '-Dwerror=false'