Details
Description
Qt builds of GNU Guix fail since libxshmfence was added to Qt's build environment.
(It was added as a side-effect because it's a run-time dependency of Mesa as per Mesa's gl.pc pkg-config file, so it's now added to all environments to which the Mesa package is added.)
The build error is that some files (for instance "qtwebengine/src/core/gl_surface_qt.cpp") indirectly (but unconditionally) include both <GL/glext.h> and "qtwebengine/src/3rdparty/chromium/gpu/command_buffer/common/gles2_cmd_format.h" which leads to conflicting typedefs because the former defines GLsizeiptr and GLintptr as ptrdiff_t, whereas the latter defines them as "Khronos platform" types as is done for GLES. In short, said files erroneously include both GL and GLES-specific headers.
The tail of the build log is attached.
I don't know how this relates to libxshmfence being in the build environment, but it's certainly what triggers the bug, since I cannot reproduce it if I change absolutely nothing except for taking libxshmfence out of the build environment.
How to reproduce on Guix:
Since Guix is a purely functional package manager, you should be able to reproduce the same environment by building from the commit 45191970b3 and running "./pre-inst-env guix build -K --system=i686-linux qt" from the build directory (or without the "./pre-inst-env" part if you install it). Please see Guix's manual on how to authorize binary packages from hydra.gnu.org; otherwise everything starting from the compiler will be built locally on your machine.