mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-09 07:28:42 +02:00
libkms was a very early attempt at a KMS management library, that only got as far as handling requests to create buffers. It has since been superseded by GBM in doing this, which everyone uses, unlike libkms which no-one uses. Remove it from the tree to avoid any confusion. Signed-off-by: Daniel Stone <daniels@collabora.com>
279 lines
7.2 KiB
YAML
279 lines
7.2 KiB
YAML
# This is the tag of the docker image used for the build jobs. If the
|
|
# image doesn't exist yet, the containers stage generates it.
|
|
#
|
|
# In order to generate a new image, one should generally change the tag.
|
|
# While removing the image from the registry would also work, that's not
|
|
# recommended except for ephemeral images during development: Replacing
|
|
# an image after a significant amount of time might pull in newer
|
|
# versions of gcc/clang or other packages, which might break the build
|
|
# with older commits using the same tag.
|
|
#
|
|
# After merging a change resulting in generating a new image to the
|
|
# main repository, it's recommended to remove the image from the source
|
|
# repository's container registry, so that the image from the main
|
|
# repository's registry will be used there as well.
|
|
.templates_sha: &template_sha 567700e483aabed992d0a4fea84994a0472deff6 # see https://docs.gitlab.com/ee/ci/yaml/#includefile
|
|
|
|
include:
|
|
- project: 'freedesktop/ci-templates'
|
|
ref: *template_sha
|
|
file:
|
|
- '/templates/debian.yml'
|
|
- '/templates/freebsd.yml'
|
|
- '/templates/ci-fairy.yml'
|
|
|
|
variables:
|
|
FDO_UPSTREAM_REPO: mesa/drm
|
|
FDO_REPO_SUFFIX: "$BUILD_OS/$BUILD_ARCH"
|
|
|
|
stages:
|
|
- "Base container"
|
|
- "Build"
|
|
|
|
.ci-rules:
|
|
rules:
|
|
- when: on_success
|
|
|
|
# CONTAINERS
|
|
|
|
.os-debian:
|
|
variables:
|
|
BUILD_OS: debian
|
|
FDO_DISTRIBUTION_VERSION: buster
|
|
FDO_DISTRIBUTION_PACKAGES: 'build-essential docbook-xsl libatomic-ops-dev libcairo2-dev libcunit1-dev libpciaccess-dev meson ninja-build pkg-config python3 python3-pip python3-wheel python3-setuptools python3-docutils valgrind'
|
|
FDO_DISTRIBUTION_EXEC: 'pip3 install meson==0.53.0'
|
|
# bump this tag every time you change something which requires rebuilding the
|
|
# base image
|
|
FDO_DISTRIBUTION_TAG: "2022-01-19.0"
|
|
|
|
.debian-x86_64:
|
|
extends:
|
|
- .os-debian
|
|
variables:
|
|
BUILD_ARCH: "x86-64"
|
|
|
|
.debian-aarch64:
|
|
extends:
|
|
- .os-debian
|
|
variables:
|
|
BUILD_ARCH: "aarch64"
|
|
|
|
.debian-armv7:
|
|
extends:
|
|
- .os-debian
|
|
variables:
|
|
BUILD_ARCH: "armv7"
|
|
|
|
.os-freebsd:
|
|
variables:
|
|
BUILD_OS: freebsd
|
|
FDO_DISTRIBUTION_VERSION: "13.0"
|
|
FDO_DISTRIBUTION_PACKAGES: 'meson ninja pkgconf libpciaccess libpthread-stubs py38-docutils cairo'
|
|
# bump this tag every time you change something which requires rebuilding the
|
|
# base image
|
|
FDO_DISTRIBUTION_TAG: "2021-11-10.1"
|
|
|
|
.freebsd-x86_64:
|
|
extends:
|
|
- .os-freebsd
|
|
variables:
|
|
BUILD_ARCH: "x86_64"
|
|
|
|
# Build our base container image, which contains the core distribution, the
|
|
# toolchain, and all our build dependencies. This will be reused in the build
|
|
# stage.
|
|
x86_64-debian-container_prep:
|
|
extends:
|
|
- .ci-rules
|
|
- .debian-x86_64
|
|
- .fdo.container-build@debian
|
|
stage: "Base container"
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
|
|
aarch64-debian-container_prep:
|
|
extends:
|
|
- .ci-rules
|
|
- .debian-aarch64
|
|
- .fdo.container-build@debian
|
|
tags:
|
|
- aarch64
|
|
stage: "Base container"
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
|
|
armv7-debian-container_prep:
|
|
extends:
|
|
- .ci-rules
|
|
- .debian-armv7
|
|
- .fdo.container-build@debian
|
|
tags:
|
|
- aarch64
|
|
stage: "Base container"
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
FDO_BASE_IMAGE: "arm32v7/debian:$FDO_DISTRIBUTION_VERSION"
|
|
|
|
x86_64-freebsd-container_prep:
|
|
extends:
|
|
- .ci-rules
|
|
- .freebsd-x86_64
|
|
- .fdo.qemu-build@freebsd@x86_64
|
|
stage: "Base container"
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
|
|
# Core build environment.
|
|
.build-env:
|
|
variables:
|
|
MESON_BUILD_TYPE: "-Dbuildtype=debug -Doptimization=0 -Db_sanitize=address,undefined"
|
|
|
|
# OS/architecture-specific variants
|
|
.build-env-debian-x86_64:
|
|
extends:
|
|
- .fdo.suffixed-image@debian
|
|
- .debian-x86_64
|
|
- .build-env
|
|
needs:
|
|
- job: x86_64-debian-container_prep
|
|
artifacts: false
|
|
|
|
.build-env-debian-aarch64:
|
|
extends:
|
|
- .fdo.suffixed-image@debian
|
|
- .debian-aarch64
|
|
- .build-env
|
|
variables:
|
|
# At least with the versions we have, the LSan runtime makes fork unusably
|
|
# slow on AArch64, which is bad news since the test suite decides to fork
|
|
# for every single subtest. For now, in order to get AArch64 builds and
|
|
# tests into CI, just assume that we're not going to leak any more on
|
|
# AArch64 than we would on ARMv7 or x86-64.
|
|
ASAN_OPTIONS: "detect_leaks=0"
|
|
tags:
|
|
- aarch64
|
|
needs:
|
|
- job: aarch64-debian-container_prep
|
|
artifacts: false
|
|
|
|
.build-env-debian-armv7:
|
|
extends:
|
|
- .fdo.suffixed-image@debian
|
|
- .debian-armv7
|
|
- .build-env
|
|
tags:
|
|
- aarch64
|
|
needs:
|
|
- job: armv7-debian-container_prep
|
|
artifacts: false
|
|
|
|
.build-env-freebsd-x86_64:
|
|
variables:
|
|
# Compiling with ASan+UBSan appears to trigger an infinite loop in the
|
|
# compiler shipped with FreeBSD 13.0, so we only use UBSan here.
|
|
# Additionally, sanitizers can't be used with b_lundef on FreeBSD.
|
|
MESON_BUILD_TYPE: "-Dbuildtype=debug -Db_sanitize=undefined -Db_lundef=false"
|
|
extends:
|
|
- .fdo.suffixed-image@freebsd
|
|
- .freebsd-x86_64
|
|
- .build-env
|
|
needs:
|
|
- job: x86_64-freebsd-container_prep
|
|
artifacts: false
|
|
|
|
# BUILD
|
|
|
|
.do-build:
|
|
extends:
|
|
- .ci-rules
|
|
stage: "Build"
|
|
variables:
|
|
GIT_DEPTH: 10
|
|
script:
|
|
- meson build
|
|
-D amdgpu=true
|
|
-D cairo-tests=true
|
|
-D etnaviv=true
|
|
-D exynos=true
|
|
-D freedreno=true
|
|
-D freedreno-kgsl=true
|
|
-D intel=true
|
|
-D man-pages=true
|
|
-D nouveau=true
|
|
-D omap=true
|
|
-D radeon=true
|
|
-D tegra=true
|
|
-D udev=true
|
|
-D valgrind=auto
|
|
-D vc4=true
|
|
-D vmwgfx=true
|
|
- ninja -C build
|
|
- ninja -C build test
|
|
- DESTDIR=$PWD/install ninja -C build install
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- build/meson-logs/*
|
|
|
|
.do-build-qemu:
|
|
extends:
|
|
- .ci-rules
|
|
stage: "Build"
|
|
script:
|
|
# Start the VM and copy our workspace to the VM
|
|
- /app/vmctl start
|
|
- scp -r $PWD "vm:"
|
|
# The `set +e is needed to ensure that we always copy the meson logs back to
|
|
# the workspace to see details about the failed tests.
|
|
- |
|
|
set +e
|
|
/app/vmctl exec "pkg info; cd $CI_PROJECT_NAME ; meson build -D amdgpu=true -D cairo-tests=true -D intel=true -D man-pages=true -D nouveau=false -D radeon=true -D valgrind=auto && ninja -C build"
|
|
set -ex
|
|
scp -r vm:$CI_PROJECT_NAME/build/meson-logs .
|
|
/app/vmctl exec "ninja -C $CI_PROJECT_NAME/build install"
|
|
mkdir -p $PREFIX && scp -r vm:$PREFIX/ $PREFIX/
|
|
# Finally, shut down the VM.
|
|
- /app/vmctl stop
|
|
artifacts:
|
|
when: on_failure
|
|
paths:
|
|
- build/meson-logs/*
|
|
|
|
# Full build and test.
|
|
x86_64-debian-build:
|
|
extends:
|
|
- .build-env-debian-x86_64
|
|
- .do-build
|
|
|
|
aarch64-debian-build:
|
|
extends:
|
|
- .build-env-debian-aarch64
|
|
- .do-build
|
|
|
|
armv7-debian-build:
|
|
extends:
|
|
- .build-env-debian-armv7
|
|
- .do-build
|
|
|
|
# Daily build
|
|
meson-arch-daily:
|
|
rules:
|
|
- if: '$SCHEDULE == "arch-daily"'
|
|
when: on_success
|
|
- when: never
|
|
image: archlinux/archlinux:base-devel
|
|
before_script:
|
|
- pacman -Syu --noconfirm --needed
|
|
cairo
|
|
cunit
|
|
libatomic_ops
|
|
libpciaccess
|
|
meson
|
|
valgrind
|
|
python-docutils
|
|
extends: .do-build
|
|
|
|
x86_64-freebsd-build:
|
|
extends:
|
|
- .build-env-freebsd-x86_64
|
|
- .do-build-qemu
|