mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-06-07 23:28:23 +02:00
FreeBSD 13.0 has reached EOL and it appears packages are built against a newer baseline now, so we end up with missing symbol errors: ld-elf.so.1: /lib/libc.so.7: version FBSD_1.7 required by /usr/local/lib/libpython3.9.so.1.0 not found It also appears that the fdpass test still fails on 13.1, so update the condition to less than 14.0
484 lines
13 KiB
YAML
484 lines
13 KiB
YAML
# Copyright © 2015-2018 Collabora Ltd.
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person
|
|
# obtaining a copy of this software and associated documentation files
|
|
# (the "Software"), to deal in the Software without restriction,
|
|
# including without limitation the rights to use, copy, modify, merge,
|
|
# publish, distribute, sublicense, and/or sell copies of the Software,
|
|
# and to permit persons to whom the Software is furnished to do so,
|
|
# subject to the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be
|
|
# included in all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
# SOFTWARE.
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: e9a461877f8c7f9fed9fff5491067ec3c3472559
|
|
file:
|
|
- '/templates/debian.yml'
|
|
- '/templates/freebsd.yml'
|
|
- '/templates/opensuse.yml'
|
|
|
|
image: debian:bullseye-slim
|
|
|
|
stages:
|
|
- 'build docker'
|
|
- build
|
|
|
|
variables:
|
|
builddir: "build"
|
|
ci_in_docker: "yes"
|
|
ci_local_packages: "yes"
|
|
ci_parallel: "2"
|
|
ci_sudo: "yes"
|
|
###
|
|
# IMPORTANT
|
|
# These are the version tags for the docker images the CI runs against.
|
|
# If you are hacking on them or need a them to rebuild, its enough
|
|
# to change any part of the string of the image you want.
|
|
###
|
|
WINDOWS_TAG: "2022-02-06.2"
|
|
|
|
UPSTREAM_BRANCH: 'master'
|
|
UPSTREAM_REPO: 'dbus/dbus'
|
|
WINDOWS_AMD64_SUFFIX: 'amd64/windows'
|
|
WINDOWS_IMAGE: "$CI_REGISTRY_IMAGE/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$UPSTREAM_BRANCH"
|
|
WINDOWS_UPSTREAM_IMAGE: "$CI_REGISTRY/$UPSTREAM_REPO/$WINDOWS_AMD64_SUFFIX:$WINDOWS_TAG-$UPSTREAM_BRANCH"
|
|
# variables used by the ci-templates scripts:
|
|
FDO_UPSTREAM_REPO: dbus/dbus
|
|
FDO_DISTRIBUTION_EXEC: './tools/ci-install.sh'
|
|
|
|
.debian-vars:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: 'bullseye-slim'
|
|
FDO_DISTRIBUTION_TAG: '2022-04-17' # Bump this version on every ci-install.sh change
|
|
|
|
.opensuse-vars:
|
|
variables:
|
|
FDO_DISTRIBUTION_VERSION: 'leap'
|
|
FDO_DISTRIBUTION_TAG: '2022-05-14.0' # Bump this version on every ci-install.sh change
|
|
|
|
.freebsd-vars:
|
|
variables:
|
|
BUILD_OS: freebsd
|
|
BUILD_ARCH: "x86_64"
|
|
FDO_DISTRIBUTION_VERSION: '13.1'
|
|
FDO_DISTRIBUTION_TAG: '2022-09-21.0' # Bump this version on every ci-install.sh change
|
|
FDO_REPO_SUFFIX: "$BUILD_OS/$BUILD_ARCH"
|
|
|
|
.cmake-common:
|
|
variables:
|
|
# Default to generating JUnit XML output for all CMake jobs.
|
|
# This works fine even for older versions of CMake since the extra arguments
|
|
# to CTest are ignored and a missing JUnit XML file does not fail the build.
|
|
ci_cmake_junit_output: "$CI_PROJECT_DIR/test-results.xml"
|
|
ci_buildsys: "cmake"
|
|
artifacts:
|
|
name: dbus-$CI_JOB_NAME
|
|
when: always
|
|
paths:
|
|
- $CI_PROJECT_DIR/test-results.xml
|
|
- "build/config.h"
|
|
reports:
|
|
junit: $CI_PROJECT_DIR/test-results.xml
|
|
|
|
.meson-common:
|
|
variables:
|
|
ci_buildsys: "meson"
|
|
artifacts:
|
|
reports:
|
|
junit: "build/meson-logs/testlog.junit.xml"
|
|
name: "dbus-$CI_JOB_NAME"
|
|
when: always
|
|
paths:
|
|
- "build/config.h"
|
|
- "build/meson-logs/*.txt"
|
|
|
|
windows amd64 image:
|
|
stage: "build docker"
|
|
variables:
|
|
# this file needs to be relative to docker/windows/ subdir
|
|
# as it makes life easier in the powershell script
|
|
DOCKERFILE: "tools/docker/windows/Dockerfile"
|
|
timeout: 2h 30m
|
|
tags:
|
|
- windows
|
|
- shell
|
|
- "1809"
|
|
script:
|
|
# We need to pass an array and to resolve the env vars, so we can't use a variable:
|
|
- $DOCKER_BUILD_ARGS = @("--build-arg", "DEFAULT_BRANCH=$UPSTREAM_BRANCH")
|
|
|
|
- "& tools/docker/windows/container.ps1 $CI_REGISTRY $CI_REGISTRY_USER $CI_REGISTRY_PASSWORD $WINDOWS_IMAGE $WINDOWS_UPSTREAM_IMAGE $DOCKERFILE"
|
|
- |
|
|
if (!($?)) {
|
|
echo "Failed to build the image"
|
|
Exit 1
|
|
}
|
|
|
|
.unix-host-build:
|
|
stage: build
|
|
# No need to wait for the Windows Docker image to be built
|
|
needs: []
|
|
cache:
|
|
key: ${CI_JOB_NAME}
|
|
paths:
|
|
- .ccache/
|
|
before_script:
|
|
- ./tools/ci-install.sh
|
|
- mkdir -p .ccache
|
|
- export CCACHE_BASEDIR="$(pwd)"
|
|
- export CCACHE_DIR="$CCACHE_BASEDIR/.ccache"
|
|
# Debian's ccache package creates symlinks here for all supported
|
|
# compilers
|
|
- export PATH="/usr/lib/ccache:$PATH"
|
|
script:
|
|
- chown -R user .
|
|
- runuser -u user ./tools/ci-build.sh
|
|
|
|
debian image:
|
|
extends:
|
|
- .fdo.container-build@debian
|
|
- .debian-vars
|
|
stage: 'build docker'
|
|
|
|
.debian-build:
|
|
needs: ["debian image"]
|
|
extends:
|
|
- .fdo.distribution-image@debian
|
|
- .debian-vars
|
|
- .unix-host-build
|
|
stage: build
|
|
|
|
debian autotools production:
|
|
extends: .debian-build
|
|
variables:
|
|
ci_variant: "production"
|
|
|
|
debian autotools debug:
|
|
extends: .debian-build
|
|
variables:
|
|
ci_variant: "debug"
|
|
|
|
debian autotools reduced:
|
|
extends: .debian-build
|
|
when: manual
|
|
variables:
|
|
ci_variant: "reduced"
|
|
|
|
debian autotools legacy:
|
|
extends: .debian-build
|
|
when: manual
|
|
variables:
|
|
ci_variant: "legacy"
|
|
|
|
debian cmake:
|
|
extends:
|
|
- .cmake-common
|
|
- .debian-build
|
|
when: manual
|
|
variables:
|
|
ci_buildsys: "cmake-dist"
|
|
|
|
debian meson:
|
|
extends:
|
|
- .meson-common
|
|
- .debian-build
|
|
variables:
|
|
ci_buildsys: "meson-dist"
|
|
|
|
debian mingw32 autotools debug:
|
|
extends: .debian-build
|
|
variables:
|
|
ci_host: "i686-w64-mingw32"
|
|
ci_variant: "debug"
|
|
|
|
debian mingw32 cmake:
|
|
extends:
|
|
- .cmake-common
|
|
- .debian-build
|
|
when: manual
|
|
variables:
|
|
ci_host: "i686-w64-mingw32"
|
|
|
|
debian mingw32 meson:
|
|
extends:
|
|
- .meson-common
|
|
- .debian-build
|
|
when: manual
|
|
variables:
|
|
ci_host: "i686-w64-mingw32"
|
|
|
|
debian mingw64 autotools:
|
|
extends: .debian-build
|
|
variables:
|
|
ci_host: "x86_64-w64-mingw32"
|
|
|
|
debian mingw64 cmake debug:
|
|
extends:
|
|
- .cmake-common
|
|
- .debian-build
|
|
when: manual
|
|
variables:
|
|
ci_buildsys: "cmake"
|
|
ci_host: "x86_64-w64-mingw32"
|
|
ci_variant: "debug"
|
|
|
|
debian mingw64 meson debug:
|
|
extends:
|
|
- .meson-common
|
|
- .debian-build
|
|
when: manual
|
|
variables:
|
|
ci_host: "x86_64-w64-mingw32"
|
|
ci_variant: "debug"
|
|
|
|
debian buster autotools:
|
|
extends: .debian-build
|
|
when: manual
|
|
image: "debian:buster-slim"
|
|
|
|
opensuse image:
|
|
extends:
|
|
- .fdo.container-build@opensuse
|
|
- .opensuse-vars
|
|
stage: 'build docker'
|
|
|
|
.suse-build:
|
|
needs: ["opensuse image"]
|
|
extends:
|
|
- .fdo.distribution-image@opensuse
|
|
- .opensuse-vars
|
|
- .unix-host-build
|
|
stage: build
|
|
|
|
opensuse cmake:
|
|
extends:
|
|
- .cmake-common
|
|
- .suse-build
|
|
variables:
|
|
ci_local_packages: "no"
|
|
|
|
opensuse mingw32 cmake:
|
|
extends:
|
|
- .cmake-common
|
|
- .suse-build
|
|
when: manual
|
|
variables:
|
|
ci_host: "i686-w64-mingw32"
|
|
ci_local_packages: "no"
|
|
|
|
opensuse mingw64 cmake debug:
|
|
extends:
|
|
- .cmake-common
|
|
- .suse-build
|
|
variables:
|
|
ci_host: "x86_64-w64-mingw32"
|
|
ci_local_packages: "no"
|
|
ci_variant: "debug"
|
|
|
|
opensuse mingw64 meson debug:
|
|
extends:
|
|
- .meson-common
|
|
- .suse-build
|
|
variables:
|
|
ci_host: "x86_64-w64-mingw32"
|
|
ci_local_packages: "no"
|
|
# TODO: Tests in this configuration fail to find the mingw builds
|
|
# of expat and GLib in /usr/x86_64-w64-mingw32/sys-root/mingw/bin
|
|
ci_test: "no"
|
|
ci_variant: "debug"
|
|
|
|
.ubuntu-build:
|
|
extends: .unix-host-build
|
|
image: "ubuntu:latest"
|
|
variables:
|
|
ci_distro: "ubuntu"
|
|
|
|
ubuntu jammy autotools:
|
|
extends: .ubuntu-build
|
|
when: manual
|
|
image: "ubuntu:jammy"
|
|
variables:
|
|
ci_suite: "jammy"
|
|
|
|
.win-build:
|
|
image: $WINDOWS_IMAGE
|
|
stage: build
|
|
tags:
|
|
- 'docker'
|
|
- 'windows'
|
|
- '1809'
|
|
needs:
|
|
- "windows amd64 image"
|
|
timeout: '2h'
|
|
before_script:
|
|
- $ErrorActionPreference = "Stop"
|
|
- $WarningPreference = "Stop"
|
|
- $env:DBUS_TEST_MALLOC_FAILURES = 0
|
|
- $env:PATH += ";C:\bin"
|
|
|
|
windows msys64 ucrt64 cmake:
|
|
extends: .win-build
|
|
artifacts:
|
|
name: dbus-$CI_JOB_NAME
|
|
when: always
|
|
paths:
|
|
- "build/config.h"
|
|
script:
|
|
- $env:MSYSTEM = "UCRT64"
|
|
- $env:CHERE_INVOKING = "1"
|
|
- $env:MSYS2_PATH_TYPE = "inherit"
|
|
- $env:PATH += ";C:\msys64\usr\bin"
|
|
# FIXME: glib from msys2 has issues, disable it for now
|
|
- C:\msys64\usr\bin\bash -lc 'cmake -G \"MinGW Makefiles\" -S . -B build -DDBUS_WITH_GLIB=OFF && cmake --build build --config Release'
|
|
|
|
windows vs15-64 cmake:
|
|
extends:
|
|
- .cmake-common
|
|
- .win-build
|
|
script:
|
|
- cmake -DCMAKE_PREFIX_PATH=C:/ -G "Visual Studio 15 2017 Win64" -DCMAKE_BUILD_TYPE=Debug -DDBUS_ENABLE_VERBOSE_MODE=OFF -S . -B build
|
|
- cmake --build build --config Debug
|
|
- cmake --install build --config Debug
|
|
# FIXME: a few tests timeout on gitlab runner for unknown reason
|
|
- cd build ; ctest -C Debug -VV --timeout 1200 -E '(dbus-daemon|monitor)' --output-junit $ci_cmake_junit_output
|
|
|
|
windows-meson-mingw-ucrt64:
|
|
extends: .win-build
|
|
script:
|
|
- $env:MSYSTEM = "UCRT64"
|
|
- $env:CHERE_INVOKING = "1"
|
|
- $env:MSYS2_PATH_TYPE = "inherit"
|
|
- $env:PATH += ";C:\msys64\usr\bin"
|
|
# FIXME: -j1: for some reason on CI ninja: fatal: pipe: Too many open files
|
|
- C:\msys64\usr\bin\bash -lc "
|
|
meson build &&
|
|
ninja -j1 -C build &&
|
|
meson test --no-suite=runs-dbus-daemon -C build"
|
|
artifacts:
|
|
reports:
|
|
junit: "build/meson-logs/testlog.junit.xml"
|
|
name: "dbus-$CI_JOB_NAME"
|
|
when: always
|
|
paths:
|
|
- "build/config.h"
|
|
- "build/meson-logs/*.txt"
|
|
|
|
windows-meson-vs15-x86:
|
|
extends: .win-build
|
|
script:
|
|
# FIXME: tests that run dbus-daemon time out on the Gitlab runner
|
|
- cmd.exe /C "C:\BuildTools\Common7\Tools\VsDevCmd.bat -host_arch=amd64 -arch=x86 &&
|
|
meson --force-fallback-for=expat,glib,zlib build &&
|
|
meson compile -C build &&
|
|
meson test --no-suite=runs-dbus-daemon -C build"
|
|
artifacts:
|
|
reports:
|
|
junit: "build/meson-logs/testlog.junit.xml"
|
|
name: "dbus-$CI_JOB_NAME"
|
|
when: always
|
|
paths:
|
|
- "build/config.h"
|
|
- "build/meson-logs/*.txt"
|
|
|
|
freebsd image:
|
|
extends:
|
|
- .fdo.qemu-build@freebsd@x86_64
|
|
- .freebsd-vars
|
|
stage: 'build docker'
|
|
|
|
# Full build and test.
|
|
.do-build-qemu:
|
|
stage: build
|
|
variables:
|
|
ci_parallel: "${FDO_CI_CONCURRENT:-2}"
|
|
ci_distro: "$BUILD_OS"
|
|
ci_suite: "$FDO_DISTRIBUTION_VERSION"
|
|
script:
|
|
# Start the VM and copy our workspace to the VM
|
|
- /app/vmctl start
|
|
# Copy files over to the VM using rsync (not scp) to preserve permissions.
|
|
- rsync -av $PWD "vm:"
|
|
- /app/vmctl exec "cd $CI_PROJECT_NAME && ./tools/ci-install.sh"
|
|
# Variables are not forwarded to the vm automatically so we forward the
|
|
# ones starting with ci_ to ci-build.sh manually. This works because
|
|
# $(env | grep "ci_.*=") is evaluated on the current host not in the VM.
|
|
# We also have to forward builddir since this is required by ci-build.sh.
|
|
- /app/vmctl exec "cd $CI_PROJECT_NAME && env make=gmake builddir=$builddir $(echo $(env | grep "ci_.*=")) bash -x ./tools/ci-build.sh $CI_BUILD_ARGS"
|
|
# Copy build artifacts from the VM for archiving/JUnit XML display
|
|
- mkdir -p "$builddir"
|
|
- rsync -av "vm:$CI_PROJECT_NAME/$builddir/meson-logs" "$builddir/" || true
|
|
- scp -v "vm:$CI_PROJECT_NAME/$builddir/config.h" . || true
|
|
- scp -v "vm:$ci_cmake_junit_output" "$ci_cmake_junit_output" || true
|
|
# Finally, shut down the VM.
|
|
- /app/vmctl stop
|
|
artifacts:
|
|
name: dbus-$CI_JOB_NAME
|
|
when: always
|
|
paths:
|
|
- test-results.xml
|
|
reports:
|
|
junit: test-results.xml
|
|
|
|
.build-env-freebsd:
|
|
extends:
|
|
- .fdo.suffixed-image@freebsd
|
|
- .freebsd-vars
|
|
- .do-build-qemu
|
|
needs:
|
|
- job: "freebsd image"
|
|
artifacts: false
|
|
variables:
|
|
# Don't install with sudo (since we are already building as root and sudo
|
|
# is not currently installed on the CI image).
|
|
ci_sudo: "no"
|
|
|
|
freebsd cmake debug:
|
|
extends:
|
|
- .cmake-common
|
|
- .build-env-freebsd
|
|
variables:
|
|
# Don't build doxygen documentation since installing the required tools
|
|
# massively increases the VM image (and therefore container) size.
|
|
CI_BUILD_ARGS: "-DDBUS_ENABLE_DOXYGEN_DOCS=OFF -DDBUS_ENABLE_XML_DOCS=ON -DCMAKE_BUILD_TYPE=Debug"
|
|
|
|
freebsd cmake release:
|
|
extends:
|
|
- .cmake-common
|
|
- .build-env-freebsd
|
|
variables:
|
|
# Don't build doxygen documentation since installing the required tools
|
|
# massively increases the VM image (and therefore container) size.
|
|
CI_BUILD_ARGS: "-DDBUS_ENABLE_DOXYGEN_DOCS=OFF -DDBUS_ENABLE_XML_DOCS=ON -DCMAKE_BUILD_TYPE=Release"
|
|
|
|
freebsd autotools:
|
|
extends: .build-env-freebsd
|
|
variables:
|
|
ci_buildsys: "autotools"
|
|
# We don't build doxygen documentation, so the make dbus-docs.tar.xz target
|
|
# is not available. Set ci_variant to avoid building that target.
|
|
ci_variant: "production-no-upload-docs"
|
|
CI_BUILD_ARGS: "--enable-xml-docs"
|
|
|
|
freebsd meson:
|
|
extends:
|
|
- .build-env-freebsd
|
|
- .meson-common
|
|
variables:
|
|
# On FreeBSD the `environ` symbol is provided by the c startup code and is
|
|
# only defined in the main executable and not available in libc.so, so
|
|
# building with -Wl,-no-undefined results in errors.
|
|
# See https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=263265.
|
|
CI_BUILD_ARGS: "-Db_lundef=false"
|
|
|
|
# vim:set sw=2 sts=2 et:
|