# 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 --prefix=/usr --libdir=lib builddir - ninja -C builddir - DESTDIR=$PWD/_install ninja install -C builddir # Test that the pc files are usable - PKG_CONFIG_PATH=$PWD/_install/usr/lib/pkgconfig pkg-config --cflags --libs webrtc-audio-processing-1 - PKG_CONFIG_PATH=$PWD/_install/usr/lib/pkgconfig pkg-config --cflags --libs webrtc-audio-coding-1 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 --prefix=/usr --libdir=lib builddir - ninja -C builddir - DESTDIR=$PWD/_install ninja install -C builddir # Test that the pc files are usable - PKG_CONFIG_LIBDIR=$PWD/_install/usr/lib/pkgconfig pkg-config --cflags --libs webrtc-audio-processing-1 - PKG_CONFIG_LIBDIR=$PWD/_install/usr/lib/pkgconfig pkg-config --cflags --libs webrtc-audio-coding-1 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 < android-cross-file.txt <