Commit Graph

25 Commits

Author SHA1 Message Date
Marek Pikuła
90f9cf1726
ci: Disable coverage for arm-v5 and mipsel targets
Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-10-21 16:49:50 +02:00
Marek Pikuła
bc2ec45d3b
ci: Add auto_cancel policy
Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-10-21 16:49:41 +02:00
Marek Pikuła
de59d1a9fb
ci: Don't execute failing jobs
Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-10-21 16:49:40 +02:00
Marek Pikuła
15336dc7cd
ci: Pin gcovr version to 7.x
Temporary version pin of gcovr due to errors in coverage report
generation when running with newly released version 8.x.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-10-21 13:17:47 +02:00
Marek Pikuła
0476eda33a
ci: Remove MESON_TESTTHREADS workaround
https://github.com/mesonbuild/meson/pull/13604 got merged and released
with Meson 1.6.0, which we already use in the Docker images, so the
workaround can be dropped.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-10-21 13:17:25 +02:00
Marek Pikuła
11e51bc72f
ci: Disable OpenMP for Win32 target
OpenMP introduces random stack overflow errors for 32-bit Windows
target.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-10-14 16:12:44 +02:00
Marek Pikuła
277f485a9c
ci: Add missing ":failing" suffix for linux-ppc job
Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-27 00:22:55 +02:00
Marek Pikuła
126b083142
ci: Add option to use different version of LLVM
Some targets require different version of LLVM, so now it's possible to
set it in the target's environment. Mind that the highest available
version depends on the base Debian image.

The change bumps LLVM version for all Linux targets:
- by default from 14 to 16,
- from 16 to 18 for riscv64 (based on Sid; for now, LLVM 19 doesn't have
  libomp packaged),
- mipsel stays at 14 as there seem to be some missing packages for
  higher versions.

Windows targets stay the same, as they use a different source of LLVM
(MinGW-compatible, which is currently version 18).

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-27 00:22:54 +02:00
Marek Pikuła
a3d297fa46
ci: riscv64: Verify if tests run on target without RVV
To ensure that the runtime discovery works correctly, and RVV code is
disabled for target without RVV extension.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-26 23:33:52 +02:00
Marek Pikuła
9176847f1d
ci: riscv64: Don't force enable RVV globally
RVV compilation will be enabled for RVV implementation alone, similar to
other platforms. This prevents introducing autovectorized code in the
main library, thus making pixman compatible with RISC-V targets without
RVV.
2024-09-26 23:33:52 +02:00
Marek Pikuła
76b133f293
ci: Fix active target rule for Docker stage
If rule condition for selectively running Docker image builds was ill
formed. It resulted in build of all images even when not all targets
were selected with ACTIVE_TARGET_PATTERN variable.
2024-09-26 21:54:21 +02:00
Marek Pikuła
b7ac7cd122
ci: Fix Docker image source for MRs
If the MR doesn't modify the Docker context, the pipeline should use the
image from upstream.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-25 20:20:08 +02:00
Marek Pikuła
ffa5645a2d
ci: Add support for Windows on ARM
It uses LLVM MinGW pre-built toolchain, and wine-arm64 base Docker image
from Linaro.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-03 18:21:02 +02:00
Marek Pikuła
51dcfb8027
ci: Add support for LLVM for Windows targets
It uses LLVM MinGW project to get the precompiled LLVM toolchain for
cross-compilation.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-03 18:21:01 +02:00
Marek Pikuła
c0ee08aab0
ci: Add LLVM support to the CI workflow
Add support for LLVM for all targets. Mind that in the current state,
some targets fail either build or test stage. For the time being, these
jobs are marked with `:failing` job name suffix.

Relevant issues:
- https://gitlab.freedesktop.org/pixman/pixman/-/issues/105
- https://gitlab.freedesktop.org/pixman/pixman/-/issues/106
- https://gitlab.freedesktop.org/pixman/pixman/-/issues/107
- https://gitlab.freedesktop.org/pixman/pixman/-/issues/108
- https://gitlab.freedesktop.org/pixman/pixman/-/issues/109
2024-09-03 18:21:00 +02:00
Marek Pikuła
44927bf1e1
ci: Unify build and test stage as job templates
This commit unifies codecov and pltcov build and test stages as single
parametrizable GitLab job templates. This cleans up the pipeline flow in
preparation for LLVM support in the pipeline.

Each target has now a Meson cross file, even when using a native
compiler, so that the job template can be better generalized. This also
allows to move architecture-specific build configuration to the cross
file instead of using the additional Meson flags in the job declaration.
2024-09-03 18:20:59 +02:00
Marek Pikuła
19b1a98e8d
ci: Unify Docker image as multi-stage build
This commit merges codecov and pltcov Dockerfiles into a single,
multi-stage Dockerfile. This results in more streamlined Docker image
builds with some common layers which can be reused by multiple images.

Also, by making a common Dockerfile, all common dependencies have the
same exact description, which decreases disparity between different
images for all the supported architectures. Mind that package version
disparity cannot be prevented 100%, as different base images may be used
for different architectures (e.g., Debian Sid for riscv64 instead of
Bookworm).

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-03 18:20:58 +02:00
Marek Pikuła
028213b588
ci: Unify target enable flag
It replaces CODE- and PLT- specific target enable variables. It is a
ground work for unification of codecov and pltcov flows.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-03 18:20:57 +02:00
Marek Pikuła
05b5ecd934
ci: Use env files instead of awk script
It makes per-targe environment declaration more extensible, as it's
possible now to set custom env variables only for the selected target
for the entire pipeline workflow in a centralized way.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-09-03 18:20:56 +02:00
Marek Pikuła
0cb4fbe324
ci: Fix Docker change detection
There was a missing wildcard for Docker directory
change detection, so basically this rule was not
checked correctly.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-08-21 18:46:07 +02:00
Marek Pikuła
4047a553d9
ci: Add platform coverage targets
Platform coverage checks if the code builds and executes properly for
architectures that are not officially supported by Debian. They don't
contribute to general code coverage report but provide a valuable
insight if all supported platforms are working correctly.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-08-20 18:05:44 +02:00
Marek Pikuła
cbf9d7e0d3
ci: Add architecture coverage Docker images
Add images providing an environment for architecture coverage tests.
There is a separate build for Linux and Windows, as the Windows image is
really large compared to Linux one. It decreases the execution time of
both targets, as the images needed to be pulled by runners are smaller.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-08-16 20:15:30 +02:00
Marek Pikuła
c35e47bd88
ci: Increase granularity of Docker build selection
Now, it's possible to selectively disable Docker image builds. Before,
it was only possible to disable build/test jobs for a given
architecture.
2024-08-16 20:10:21 +02:00
Marek Pikuła
e7ef051a6d
ci: Build and test on the supported platforms
This commit introduces a build and test CI workflow, which tests the
correctness of execution for nearly all configurations supported by
pixman. The notable exception is ARM iWMMXt, which is omitted as it's
soon to be deprecated as mentioned in #98.

The build and test stage is separated, as a single build can be used to
test multiple configurations for a given platform (e.g., MMX, SSE2,
SSSE3 for x86).

Execution is performed using multi-arch Docker images built in the
`docker` stage. The important thing to note is that the runner needs to
have a relatively recent version of Docker and QEMU, and needs to have
the qemu-user-static+binfmt execution enabled.

Once all tests are complete, coverage reports are merged together in the
`summary` stage. Then the result can be used in a GitLab-native coverage
report summary.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-08-16 20:04:49 +02:00
Marek Pikuła
a7263190c2
ci: Add multiarch Docker image build
The image is used in CI pipeline to build and test on different
architectures.

This commit introduces more extensible GitLab CI scheme borrowed from
qemu project.

Signed-off-by: Marek Pikuła <m.pikula@partner.samsung.com>
2024-08-16 20:03:19 +02:00