Bug 8591 - Cenbuild and ThinLinc do not build with GCC 15
Summary: Cenbuild and ThinLinc do not build with GCC 15
Status: RESOLVED FIXED
Alias: None
Product: ThinLinc
Classification: Unclassified
Component: Build system (show other bugs)
Version: trunk
Hardware: PC Unknown
: P2 Normal
Target Milestone: 4.20.0
Assignee: Pierre Ossman
URL:
Keywords: prosaic
Depends on: 8165 8589 8608 8609
Blocks: 8361
  Show dependency treegraph
 
Reported: 2025-05-22 09:57 CEST by Pierre Ossman
Modified: 2025-07-15 15:29 CEST (History)
1 user (show)

See Also:
Acceptance Criteria:
MUST: * Everything in cenbuild should build correctly using the latest gcc * Everything in ThinLinc should build correctly using the latest gcc SHOULD: * Broken packages should be upgraded rather than patched to fix issues


Attachments

Description Pierre Ossman cendio 2025-05-22 09:57:32 CEST
GCC (and the C and C++ standard) have been removing support for older or dubious things in the languages over the years. Unfortunately, we have code both in the build environment and in ThinLinc that relies on that support.

We need to upgrade and fix things to make sure we can use the newer compilers.
Comment 1 Pierre Ossman cendio 2025-07-10 13:08:30 CEST
One issue is that our build of PulseAudio has been broken for quite some time:

> modules/alsa/alsa-source.c: In function 'pa_alsa_source_new':
> modules/alsa/alsa-source.c:1864:17: error: implicit declaration of function 'snd_use_case_set' [-Wimplicit-function-declaration]
>  1864 |             if (snd_use_case_set(u->ucm_context->ucm->ucm_mgr, "_enamod", mod_name) < 0)
>       |                 ^~~~~~~~~~~~~~~~

Earlier versions of gcc would let this slide, but not the latest gcc.

This has been fixed in upstream PulseAudio, so an upgrade would resolve it. However, we are far behind upstream. An upgrade would be risky and probably too big in scope for this bug.

Backporting a fix seems more reasonable in this case.
Comment 51 Pierre Ossman cendio 2025-07-14 09:26:38 CEST
Everything now builds nicely with both the old and new gcc.

Most of the fixes were trivial, or for very general packages. There were a few specific functional areas that were affected and regression tested, though:

 * PDF version of the TAG

 * Local drive redirection on Windows

 * Windows installer

 * Translations on Windows and macOS

> MUST:
> 
>  * Everything in cenbuild should build correctly using the latest gcc

Yup

>  * Everything in ThinLinc should build correctly using the latest gcc

Yup, including a --no-repo build.

> SHOULD:
> 
>  * Broken packages should be upgraded rather than patched to fix issues

As much as possible. Some packages didn't have a later version, and in some cases upgrading was a very large amount of work. Primarily PulseAudio and librsvg were held back.
Comment 52 Pierre Ossman cendio 2025-07-15 12:16:31 CEST
The gcc upgrade exposed some pointer bugs we need to fix. See bug 8361, comment 35.
Comment 54 Pierre Ossman cendio 2025-07-15 15:29:08 CEST
PulseAudio now works fine on Win64.

Checked the build logs for the same warning about pointer casts in other components, but could not find anything. Hopefully, it was the only instance.

Note You need to log in before you can comment on or make changes to this bug.