announce: canonical CI pipelines for drivers + FreeBSD builds

Enrico Weigelt, metux IT consult info at metux.net
Mon Jun 10 10:17:28 UTC 2024


hello folks,


I've reworked the driver CI pipelines for the xf86-* driver repos and
added a canonical CI script set which works the same for all drivers
and running builds various targets for different xserver versions
at once.

Right now we have a wild mix of inconsistent ways to build the drivers:
different distros, some building against older xservers, some only
against master, different xserver build configs, different base images,
different compilers, etc, etc.
And we've also been lacking an easy and consistent way to run the build
locally (outside gitlab)

In order to clean that up and having a consistent platform, I've went
this way:

* a generic include and few scripts handling all the magic:
* each driver just needs a .gitlab-ci.yaml for few settings and
   including the main machinery
* the heavy lifting of the actual build process (including image setup)
   is done by few scripts, that can also be called directly (eg. in a
   local VM)
* matrix of several xserver versions and compilers (gcc & clang)
* unsupported targets (debian or freebsd) can be disabled by a variable

caveats:

a) xserver 1.18 and 1.19 currently don't build on Debian, so I had to
    skip them, until we've fixed those old maintenance branches :(
b) right now each driver repo needs to have it's own copy of the
    generic pipeline/scripts - we'll yet have to find a suitable place
    to host it (and when doing so, need some extra git clone, so the
    scripts are actually available - gitlab templates directive only
    fetches the individual yaml files, not the whole repo)
c) wsfb is excluded, since we don't have NetBSD on f.d.o yet.


In this example (applying to vast majority of drivers), you'll see how
damn small the individual pipeline yaml now has become:


https://gitlab.freedesktop.org/metux/xf86-video-r128/-/blob/wip/ci/.gitlab-ci.yml

This one is a driver that won't work on Linux (thus currently just
FreeBSD):


https://gitlab.freedesktop.org/metux/xf86-input-mouse/-/blob/wip/ci/.gitlab-ci.yml

And here's the only more specific case: geode driver really isn't going
to compile on 64bit - these SoCs are exclusively 32bit, so it takes a
little bit black magic to skip the debian/i386 build:
(been too lazy for adding extra knobs for this one case only)


https://gitlab.freedesktop.org/metux/xf86-video-geode/-/blob/wip/ci/.gitlab-ci.yml

Current target platforms are: Debian Bullseye (i386 and amd64) and
FreeBSD 14 (amd64). Adding more should be quite straightforward,
if desired.

I'm now in process of preparing MRs. Some drivers yet need some little
fixes to be merged yet (trying not to do duplicate submissions)


have fun,

--mtx

--
---
Hinweis: unverschlüsselte E-Mails können leicht abgehört und manipuliert
werden ! Für eine vertrauliche Kommunikation senden Sie bitte ihren
GPG/PGP-Schlüssel zu.
---
Enrico Weigelt, metux IT consult
Free software and Linux embedded engineering
info at metux.net -- +49-151-27565287


More information about the xorg-devel mailing list