283 lines
9.4 KiB
YAML
283 lines
9.4 KiB
YAML
# The build has two stages. The 'container' stage is used to build a Docker
|
|
# container and push it to the project's container registry on fd.o GitLab.
|
|
# This step is only run when the tag for the container changes, else it is
|
|
# effectively a no-op. All of this infrastructure is inherited from the
|
|
# wayland/ci-templates repository which is the recommended way to set up CI
|
|
# infrastructure on fd.o GitLab.
|
|
#
|
|
# Once the container stage is done, we move on to the 'build' stage where we
|
|
# run an autotools and meson build in parallel. Currently, tests are also run
|
|
# as part of the build stage as there doesn't seem to be significant value to
|
|
# splitting the stages at the moment.
|
|
|
|
stages:
|
|
- container
|
|
- build
|
|
|
|
variables:
|
|
# Update this tag when you want to trigger a rebuild the container in which
|
|
# CI runs, for example when adding new packages to FDO_DISTRIBUTION_PACKAGES.
|
|
# The tag is an arbitrary string that identifies the exact container
|
|
# contents.
|
|
BASE_TAG: '2023-05-25.0'
|
|
FDO_DISTRIBUTION_VERSION: '22.10'
|
|
FDO_UPSTREAM_REPO: 'pulseaudio/webrtc-audio-processing'
|
|
|
|
include:
|
|
# We pull templates from master to avoid the overhead of periodically
|
|
# scanning for changes upstream. This does means builds might occasionally
|
|
# break due to upstream changing things, so if you see unexpected build
|
|
# failures, this might be one cause.
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: 'master'
|
|
file: '/templates/ubuntu.yml'
|
|
|
|
# Common container build template
|
|
.ubuntu-container-build:
|
|
variables:
|
|
GIT_STRATEGY: none # no need to pull the whole tree for rebuilding the image
|
|
|
|
# Remember to update FDO_DISTRIBUTION_TAG when modifying this package list!
|
|
# Otherwise the changes won't have effect since an old container image will
|
|
# be used.
|
|
FDO_DISTRIBUTION_PACKAGES: >-
|
|
g++
|
|
gcc
|
|
git-core
|
|
cmake
|
|
libabsl-dev
|
|
meson
|
|
ninja-build
|
|
pkg-config
|
|
python3-setuptools
|
|
|
|
# Used to extend both container and build jobs
|
|
.ubuntu-x86_64:
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: "x86_64-$BASE_TAG"
|
|
|
|
# Used to extend both container and build jobs
|
|
.ubuntu-aarch64:
|
|
tags:
|
|
- aarch64
|
|
variables:
|
|
FDO_DISTRIBUTION_TAG: "aarch64-$BASE_TAG"
|
|
|
|
build-container-x86_64:
|
|
extends:
|
|
- .fdo.container-build@ubuntu@x86_64
|
|
- .ubuntu-container-build
|
|
- .ubuntu-x86_64
|
|
stage: container
|
|
|
|
build-container-aarch64:
|
|
extends:
|
|
- .fdo.container-build@ubuntu@aarch64
|
|
- .ubuntu-container-build
|
|
- .ubuntu-aarch64
|
|
stage: container
|
|
|
|
# Common build template
|
|
.build-distro-absl:
|
|
stage: build
|
|
extends:
|
|
- .fdo.distribution-image@ubuntu
|
|
script:
|
|
- meson setup --wrap-mode=nofallback builddir
|
|
- ninja -C builddir
|
|
artifacts:
|
|
expire_in: '5 days'
|
|
when: 'always'
|
|
paths:
|
|
- "builddir/meson-logs/*txt"
|
|
|
|
.build-vendored-absl:
|
|
stage: build
|
|
extends:
|
|
- .fdo.distribution-image@ubuntu
|
|
script:
|
|
- meson setup --force-fallback-for=abseil-cpp builddir
|
|
- ninja -C builddir
|
|
artifacts:
|
|
expire_in: '5 days'
|
|
when: 'always'
|
|
paths:
|
|
- "builddir/meson-logs/*txt"
|
|
|
|
build-distro-absl-x86_64:
|
|
extends:
|
|
- .build-distro-absl
|
|
- .ubuntu-x86_64
|
|
|
|
build-vendored-absl-x86_64:
|
|
extends:
|
|
- .build-vendored-absl
|
|
- .ubuntu-x86_64
|
|
|
|
build-distro-absl-aarch64:
|
|
extends:
|
|
- .build-distro-absl
|
|
- .ubuntu-aarch64
|
|
|
|
build-vendored-absl-aarch64:
|
|
extends:
|
|
- .build-vendored-absl
|
|
- .ubuntu-aarch64
|
|
|
|
# Update from:
|
|
# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/main/.gitlab-ci.yml
|
|
# https://gitlab.freedesktop.org/gstreamer/orc/-/blob/main/.gitlab-ci.yml
|
|
vs2019 amd64:
|
|
# Update from https://gitlab.freedesktop.org/gstreamer/gstreamer/container_registry
|
|
image: 'registry.freedesktop.org/gstreamer/gstreamer/amd64/windows:2023-04-21.0-main'
|
|
stage: 'build'
|
|
tags:
|
|
- 'docker'
|
|
- 'windows'
|
|
- '2022'
|
|
artifacts:
|
|
expire_in: '5 days'
|
|
when: 'always'
|
|
paths:
|
|
- "builddir/meson-logs/*txt"
|
|
variables:
|
|
# Make sure any failure in PowerShell scripts is fatal
|
|
ErrorActionPreference: 'Stop'
|
|
WarningPreference: 'Stop'
|
|
ARCH: 'amd64'
|
|
PLAT: 'Desktop'
|
|
before_script:
|
|
# Make sure meson is up to date, so we don't need to rebuild the image with each release
|
|
- pip3 install -U meson ninja
|
|
script:
|
|
# Gitlab executes PowerShell in docker, but VsDevCmd.bat is a batch script.
|
|
# Environment variables substitutions is done by PowerShell before calling
|
|
# cmd.exe, that's why we use $env:FOO instead of %FOO%
|
|
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=$env:ARCH -app_platform=$env:PLAT &&
|
|
meson setup builddir &&
|
|
meson compile --verbose -C builddir"
|
|
|
|
# Update from:
|
|
# https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/main/.gitlab-ci.yml
|
|
# https://gitlab.freedesktop.org/gstreamer/orc/-/blob/main/.gitlab-ci.yml
|
|
macos x86_64:
|
|
stage: 'build'
|
|
tags:
|
|
- gst-macos-13
|
|
artifacts:
|
|
expire_in: '5 days'
|
|
when: 'always'
|
|
paths:
|
|
- "builddir/meson-logs/*txt"
|
|
before_script:
|
|
- pip3 install --upgrade pip
|
|
# Need to install certificates for python
|
|
- pip3 install --upgrade certifi
|
|
# Anther way to install certificates
|
|
- open /Applications/Python\ 3.8/Install\ Certificates.command
|
|
# Make sure meson and ninja are up to date
|
|
- pip3 install -U meson ninja
|
|
script:
|
|
- CERT_PATH=$(python3 -m certifi) && export SSL_CERT_FILE=${CERT_PATH} && export REQUESTS_CA_BUNDLE=${CERT_PATH}
|
|
- meson setup builddir
|
|
- meson compile --verbose -C builddir
|
|
|
|
# Update from:
|
|
# https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/main/.gitlab-ci.yml
|
|
# https://gitlab.freedesktop.org/gstreamer/orc/-/blob/main/.gitlab-ci.yml
|
|
ios arm64:
|
|
stage: 'build'
|
|
tags:
|
|
- gst-ios-16
|
|
artifacts:
|
|
name: "${CI_JOB_NAME}_${CI_COMMIT_SHA}"
|
|
expire_in: '5 days'
|
|
when: 'always'
|
|
paths:
|
|
- "builddir/meson-logs/*txt"
|
|
before_script:
|
|
- pip3 install --upgrade pip
|
|
# Need to install certificates for python
|
|
- pip3 install --upgrade certifi
|
|
# Anther way to install certificates
|
|
- open /Applications/Python\ 3.8/Install\ Certificates.command
|
|
# Make sure meson and ninja are up to date
|
|
- pip3 install -U meson ninja
|
|
script:
|
|
- CERT_PATH=$(python3 -m certifi) && export SSL_CERT_FILE=${CERT_PATH} && export REQUESTS_CA_BUNDLE=${CERT_PATH}
|
|
- |
|
|
cat > ios-cross-file.txt <<EOF
|
|
[host_machine]
|
|
system = 'darwin'
|
|
cpu_family = 'aarch64'
|
|
cpu = 'aarch64'
|
|
endian = 'little'
|
|
|
|
[properties]
|
|
c_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
objc_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
cpp_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
objcpp_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
c_link_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
objc_link_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
cpp_link_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
objcpp_link_args = ['-arch', 'arm64', '--sysroot=$(xcrun --sdk iphoneos --show-sdk-path)', '-miphoneos-version-min=8.0']
|
|
|
|
[binaries]
|
|
ar = '$(xcrun --find --sdk iphoneos ar)'
|
|
c = '$(xcrun --find --sdk iphoneos clang)'
|
|
objc = '$(xcrun --find --sdk iphoneos clang)'
|
|
cpp = '$(xcrun --find --sdk iphoneos clang++)'
|
|
objcpp = '$(xcrun --find --sdk iphoneos clang++)'
|
|
ranlib = '$(xcrun --find --sdk iphoneos ranlib)'
|
|
strip = '$(xcrun --find --sdk iphoneos strip)'
|
|
pkgconfig = 'false'
|
|
cmake = 'false'
|
|
EOF
|
|
- meson setup --cross-file ios-cross-file.txt builddir
|
|
- meson compile --verbose -C builddir
|
|
|
|
# Update from:
|
|
# https://gitlab.freedesktop.org/gstreamer/cerbero/-/blob/main/.gitlab-ci.yml
|
|
# https://gitlab.freedesktop.org/gstreamer/orc/-/blob/main/.gitlab-ci.yml
|
|
android fedora arm64:
|
|
# Update from https://gitlab.freedesktop.org/gstreamer/cerbero/container_registry
|
|
image: 'registry.freedesktop.org/gstreamer/cerbero/amd64/android-fedora:2021-10-22.0-1.18'
|
|
stage: 'build'
|
|
artifacts:
|
|
expire_in: '5 days'
|
|
when: 'always'
|
|
paths:
|
|
- "builddir/meson-logs/*.txt"
|
|
before_script:
|
|
- dnf install -y python3-pip gcc ninja-build
|
|
- pip3 install --user meson
|
|
script:
|
|
- export PATH="$HOME/.local/bin:$PATH"
|
|
- |
|
|
cat > android-cross-file.txt <<EOF
|
|
[constants]
|
|
ndk_path = '/android/ndk'
|
|
toolchain = ndk_path + '/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android'
|
|
api = '28'
|
|
|
|
[host_machine]
|
|
system = 'android'
|
|
cpu_family = 'aarch64'
|
|
cpu = 'aarch64'
|
|
endian = 'little'
|
|
|
|
[properties]
|
|
sys_root = ndk_path + '/sysroot'
|
|
c_link_args = ['-fuse-ld=gold']
|
|
cpp_link_args = ['-fuse-ld=gold']
|
|
|
|
[binaries]
|
|
c = toolchain + api + '-clang'
|
|
cpp = toolchain + api + '-clang++'
|
|
ar = toolchain + '-ar'
|
|
strip = toolchain + '-strip'
|
|
EOF
|
|
- meson setup --cross-file android-cross-file.txt builddir
|
|
- meson compile --verbose -C builddir
|