Earlier ci/meson-build.sh and ci/ci-build.sh.
The latter we then renamed to the more descriptive build-configuration-matrix.sh.
Both scripts are doing the same thing but for different build systems.
So lets merge them together.
Signed-off-by: Michael Vetter <jubalh@iodoru.org>
Disable the functional tests in the case of meson as well.
They don't seem to work in the CI or take too long.
This needs further investigation. For now let's run them locally and
before each release.
Signed-off-by: Michael Vetter <jubalh@iodoru.org>
Instead of:
```
CI / Check coding style
CI / Check spelling
CI / debian | Autotools | unit | signal
CI / debian | Meson | unit+func | libomemo
CI / debian | Meson | unit+func | signal
CI / fedora | Autotools | unit | signal
CI / ubuntu | Autotools | unit | signal
Cygwin / cygwin-build
```
We will sort them into "Style", "Linux" and "Cygwin".
Have a better overview, we are interested in which tests are run, which
distro, which build system and which omemo backend.
debian | Autotools | unit+func | signal
debian | Meson | unit+func | signal
debian | Meson | unit+func | libomemo
fedora | Autotools | unit+func | signal
ubuntu | Autotools | unit+func | signal
Update the gh workflow to pin clang-format to version 21.
Mention the version we use in CONTRIBUTING.md.
And hint to the workflow file if we want to change it.
Major changes:
Run 4 build configurations in parallel with Valgrind on Linux
Add test failure detection verification (meta-test)
Port allocation per build to prevent conflicts in parallel runs
Add --coverage-only flag for dedicated coverage builds
Code quality:
Add TEST_GROUPS constant, CMOCKA patterns, helper functions
Organize ci-build.sh into sections
Add a GitHub Actions workflow to build with Cygwin on Windows.
Fixes issues by forcing Cygwin bash for all steps, handling temporary script paths,
stripping CRLF line endings, and enabling igncr.
Split functional tests into 4 parallel groups and add check-functional-parallel target (~3x faster CI runs).
Add branch-aware LCOV coverage reporting with new --enable-coverage option and lcov summary in CI pipeline.
Enable ccache via -C configure flag for faster recompilations.
Install lcov in all Docker images and use --depth 1 git clones + parallel make -j$(nproc) for quicker container builds.
Update CONTRIBUTING.md with instructions for parallel test groups and adding new ones.
All changes are tightly related CI/performance improvements developed in sequence. No external service uploads (e.g. Codecov skipped due to Gitea incompatibility).
Several users have reported segfaults when starting up profanity which
has OMEMO support, but OMEMO is not set up yet.
@StefanKropp has been able to reproduce this and tracked it down to
`_load_identity()` calling `omemo_known_devices_keyfile_save()`.
The latter then calls `save_keyfile()` which calls
`g_key_file_save_to_file()`. This can then fail if one of the first two
strings is NULL and won't set the `error` on return. In its error handling
`save_keyfile()` unconditionally dereferences `error` which leads to the
segfault.
Fix this and also go through the entire codebase and verify that the usage
of `GError` is done correctly.
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
Introduce separate jobs to test C (Doxygen) and Python (Sphinx) API documentation generation. Ensures build failures are caught early, as API changes often produce warnings that developers miss without automated checks.
Will need to fix this soon. Lets temp remove arch to get results for the
other systems.
Build fail on Arch:
```
src/pgp/gpg.c: In function ‘p_gpg_decrypt’:
src/pgp/gpg.c:659:36: error: implicit declaration of function ‘gpgme_key_get_string_attr’ [-Wimplicit-function-declaration]
659 | const char* addr = gpgme_key_get_string_attr(key, GPGME_ATTR_EMAIL, NULL, 0);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
src/pgp/gpg.c:659:67: error: ‘GPGME_ATTR_EMAIL’ undeclared (first use in this function)
659 | const char* addr = gpgme_key_get_string_attr(key, GPGME_ATTR_EMAIL, NULL, 0);
| ^~~~~~~~~~~~~~~~
src/pgp/gpg.c:659:67: note: each undeclared identifier is reported only once for each function it appears in
make[1]: *** [Makefile:2085: src/pgp/gpg.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1314: all] Error 2
```
Current setup of the infratstrcture with DIND
was causing issues with volume binding,
leading to a false-positive error on code formatting check.
This commit addresses the issue by removing dependency on a container,
but at the same time it limits choice of formatting version.
This fix does not address the underlying issue with the architecture.
As an additional change, package versions are updated.
TW curently has problems:
```
Problem: the to be installed sqlite3-devel-3.39.2-1.2.x86_64 requires 'libsqlite3-0 = 3.39.2', but this requirement cannot be provided
not installable providers: libsqlite3-0-3.39.2-1.2.i586[repo-oss]
libsqlite3-0-3.39.2-1.2.x86_64[repo-oss]
```
This reverts commit 5c5c453219.
And removes the old python(2) pull in.
For some reason we get:
`Package python3-embed was not found in the pkg-config search path.`
with python38-devel but not with python310-devel. Let's bump it to that
version.
Until they fixed this:
```
Problem: the to be installed ncurses-devel-6.3.20220604-20.1.x86_64 requires 'libncurses6 = 6.3.20220604-20.1', but this requirement cannot be provided
Problem: the to be installed gtk2-devel-2.24.33-2.8.x86_64 requires 'pkgconfig(cairo)', but this requirement cannot be provided
Problem: the to be installed ncurses-devel-6.3.20220604-20.1.x86_64 requires 'libncurses6 = 6.3.20220604-20.1', but this requirement cannot be provided
not installable providers: libncurses6-6.3.20220604-20.1.i586[repo-oss]
libncurses6-6.3.20220604-20.1.x86_64[repo-oss]
Solution 1: downgrade of libncurses6-6.3.20220604-20.2.x86_64 to libncurses6-6.3.20220604-20.1.x86_64
Solution 2: do not install ncurses-devel-6.3.20220604-20.1.x86_64
Solution 3: break ncurses-devel-6.3.20220604-20.1.x86_64 by ignoring some of its dependencies
```