Skip to content

add missing libglvnd direct dependency for PyQt6, to fix problem with finding GL/gl.h header file#25453

Closed
boegel wants to merge 2 commits intoeasybuilders:developfrom
boegel:20260226192346_new_pr_PyQt6691
Closed

add missing libglvnd direct dependency for PyQt6, to fix problem with finding GL/gl.h header file#25453
boegel wants to merge 2 commits intoeasybuilders:developfrom
boegel:20260226192346_new_pr_PyQt6691

Conversation

@boegel
Copy link
Copy Markdown
Member

@boegel boegel commented Feb 26, 2026

(created using eb --new-pr)

fix for build problem when --search-path-cpp-headers=include_paths is used (as we do in EESSI):

In file included from /cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/generic/software/Qt6/6.9.3-GCCcore-14.2.0/include/QtGui/qopenglcontext.h:26,
                 from /tmp/boegel/easybuild/build/PyQt6/6.9.1/GCCcore-14.2.0/pyqt6-6.9.1/sip/QtGui/qopenglcontext.sip:46:
/cvmfs/software.eessi.io/versions/2025.06/software/linux/aarch64/generic/software/Qt6/6.9.3-GCCcore-14.2.0/include/QtGui/qopengl.h:115:13: fatal error: GL/gl.h: No such file or directory
  115 | #   include <GL/gl.h>
      |             ^~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:1895: sipQtGuicmodule.o] Error 1

@github-actions github-actions Bot added 2025a issues & PRs related to 2025a common toolchains 2025b issues & PRs related to 2025b common toolchains change labels Feb 26, 2026
@boegel boegel added bug fix EESSI Related to EESSI project and removed change labels Feb 26, 2026
@boegel boegel added this to the next release (5.2.2?) milestone Feb 26, 2026
@boegel boegel requested a review from ocaisa February 26, 2026 18:25
@github-actions
Copy link
Copy Markdown

Updated software libglvnd-1.7.0-GCCcore-14.3.0.eb

Diff against libglvnd-1.7.0-GCCcore-14.2.0.eb

easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.2.0.eb

diff --git a/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.2.0.eb b/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.3.0.eb
index f0faf3338c..ee82636982 100644
--- a/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.2.0.eb
+++ b/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.3.0.eb
@@ -6,20 +6,20 @@ version = '1.7.0'
 homepage = 'https://gitlab.freedesktop.org/glvnd/libglvnd'
 description = "libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL API calls between multiple vendors."
 
-toolchain = {'name': 'GCCcore', 'version': '14.2.0'}
+toolchain = {'name': 'GCCcore', 'version': '14.3.0'}
 
 source_urls = ['https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v%(version)s/']
 sources = ['libglvnd-v%(version)s.tar.gz']
 checksums = ['2b6e15b06aafb4c0b6e2348124808cbd9b291c647299eaaba2e3202f51ff2f3d']
 
 builddependencies = [
-    ('binutils', '2.42'),
-    ('pkgconf', '2.3.0'),
-    ('Meson', '1.6.1'),
-    ('Ninja', '1.12.1'),
+    ('binutils', '2.44'),
+    ('pkgconf', '2.4.3'),
+    ('Meson', '1.8.2'),
+    ('Ninja', '1.13.0'),
 ]
 
-dependencies = [('X11', '20250521')]
+dependencies = [('X11', '20250608')]
 
 # Let EGL find system-installed vendor files in /etc/glvnd/egl_vendor.d etc.
 modextrapaths = {
Diff against libglvnd-1.7.0-GCCcore-13.3.0.eb

easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-13.3.0.eb

diff --git a/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-13.3.0.eb b/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.3.0.eb
index 39b6c00b4f..ee82636982 100644
--- a/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-13.3.0.eb
+++ b/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.3.0.eb
@@ -6,20 +6,20 @@ version = '1.7.0'
 homepage = 'https://gitlab.freedesktop.org/glvnd/libglvnd'
 description = "libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL API calls between multiple vendors."
 
-toolchain = {'name': 'GCCcore', 'version': '13.3.0'}
+toolchain = {'name': 'GCCcore', 'version': '14.3.0'}
 
 source_urls = ['https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v%(version)s/']
 sources = ['libglvnd-v%(version)s.tar.gz']
 checksums = ['2b6e15b06aafb4c0b6e2348124808cbd9b291c647299eaaba2e3202f51ff2f3d']
 
 builddependencies = [
-    ('binutils', '2.42'),
-    ('pkgconf', '2.2.0'),
-    ('Meson', '1.4.0'),
-    ('Ninja', '1.12.1'),
+    ('binutils', '2.44'),
+    ('pkgconf', '2.4.3'),
+    ('Meson', '1.8.2'),
+    ('Ninja', '1.13.0'),
 ]
 
-dependencies = [('X11', '20240607')]
+dependencies = [('X11', '20250608')]
 
 # Let EGL find system-installed vendor files in /etc/glvnd/egl_vendor.d etc.
 modextrapaths = {
Diff against libglvnd-1.7.0-GCCcore-13.2.0.eb

easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-13.2.0.eb

diff --git a/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-13.2.0.eb b/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.3.0.eb
index 328d7d05e4..ee82636982 100644
--- a/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-13.2.0.eb
+++ b/easybuild/easyconfigs/l/libglvnd/libglvnd-1.7.0-GCCcore-14.3.0.eb
@@ -6,20 +6,20 @@ version = '1.7.0'
 homepage = 'https://gitlab.freedesktop.org/glvnd/libglvnd'
 description = "libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL API calls between multiple vendors."
 
-toolchain = {'name': 'GCCcore', 'version': '13.2.0'}
+toolchain = {'name': 'GCCcore', 'version': '14.3.0'}
 
 source_urls = ['https://gitlab.freedesktop.org/glvnd/libglvnd/-/archive/v%(version)s/']
 sources = ['libglvnd-v%(version)s.tar.gz']
 checksums = ['2b6e15b06aafb4c0b6e2348124808cbd9b291c647299eaaba2e3202f51ff2f3d']
 
 builddependencies = [
-    ('binutils', '2.40'),
-    ('pkgconf', '2.0.3'),
-    ('Meson', '1.2.3'),
-    ('Ninja', '1.11.1'),
+    ('binutils', '2.44'),
+    ('pkgconf', '2.4.3'),
+    ('Meson', '1.8.2'),
+    ('Ninja', '1.13.0'),
 ]
 
-dependencies = [('X11', '20231019')]
+dependencies = [('X11', '20250608')]
 
 # Let EGL find system-installed vendor files in /etc/glvnd/egl_vendor.d etc.
 modextrapaths = {

@boegel
Copy link
Copy Markdown
Member Author

boegel commented Feb 26, 2026

@boegelbot please test @ jsc-zen3
EB_ARGS="--installpath /tmp/$USER/pr25453"

@boegelbot
Copy link
Copy Markdown
Collaborator

@boegel: Request for testing this PR well received on jsczen3l1.int.jsc-zen3.fz-juelich.de

PR test command 'if [[ develop != 'develop' ]]; then EB_BRANCH=develop ./easybuild_develop.sh 2> /dev/null 1>&2; EB_PREFIX=/home/boegelbot/easybuild/develop source init_env_easybuild_develop.sh; fi; EB_PR=25453 EB_ARGS="--installpath /tmp/$USER/pr25453" EB_CONTAINER= EB_REPO=easybuild-easyconfigs EB_BRANCH=develop /opt/software/slurm/bin/sbatch --job-name test_PR_25453 --ntasks=8 ~/boegelbot/eb_from_pr_upload_jsc-zen3.sh' executed!

  • exit code: 0
  • output:
Submitted batch job 9887

Test results coming soon (I hope)...

Details

- notification for comment with ID 3968481709 processed

Message to humans: this is just bookkeeping information for me,
it is of no use to you (unless you think I have a bug, which I don't).

Copy link
Copy Markdown
Member

@ocaisa ocaisa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@boegelbot
Copy link
Copy Markdown
Collaborator

Test report by @boegelbot
SUCCESS
Build succeeded for 3 out of 3 (total: 53 mins 30 secs) (3 easyconfigs in total)
jsczen3c1.int.jsc-zen3.fz-juelich.de - Linux Rocky Linux 9.7, x86_64, AMD EPYC-Milan Processor (zen3), Python 3.9.23
See https://gist.github.com/boegelbot/1587020f97f51db268a1a1c362543b4f for a full test report.

dependencies = [
('Python', '3.13.5'),
('Qt6', '6.9.3'),
('libglvnd', '1.7.0'),
Copy link
Copy Markdown
Collaborator

@Thyre Thyre Feb 26, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

libglvnd is a part of OpenGL, see

We shouldn't introduce this as a separate module.

@Thyre
Copy link
Copy Markdown
Collaborator

Thyre commented Feb 26, 2026

The error is caused by PtQy6 including a header of Qt6, which needs OpenGL / libglvnd (see Qt6/6.9.3-GCCcore-14.2.0/include/QtGui/qopengl.h).
So why are we adding this to PyQt6 and not to Qt6, where it should be?

For 2025b, this shouldn't be an issue, as Qt6 already has a dependency on OpenGL. In 2025a, libglvnd is only a build dependency, but should be a dependency based on the error mentioned in the PR description.

@ocaisa
Copy link
Copy Markdown
Member

ocaisa commented Feb 27, 2026

For 2025b, this shouldn't be an issue, as Qt6 already has a dependency on OpenGL. In 2025a, libglvnd is only a build dependency, but should be a dependency based on the error mentioned in the PR description.

The problem is easybuilders/easybuild-framework#5124 . A decisions was taken to only include the headers of direct dependencies for the build, but this has consequences if a transitive header file is required (like in this case and also in #25365). It was discussed during the last EB telco a bit but no decision yet on what to do.

@Thyre
Copy link
Copy Markdown
Collaborator

Thyre commented Feb 27, 2026

The problem is easybuilders/easybuild-framework#5124 . A decisions was taken to only include the headers of direct dependencies for the build, but this has consequences if a transitive header file is required (like in this case and also in #25365). It was discussed during the last EB telco a bit but no decision yet on what to do.

Understood... in this case, I'd propose to add OpenGL to PyQt6 as a dependency, keep the approach for 2025a in this PR and also fix the libglvnd build dependency vs. dependency in Qt6 in 2025a.

@ocaisa
Copy link
Copy Markdown
Member

ocaisa commented Mar 13, 2026

This is really a framework problem and has been fixed in easybuilders/easybuild-framework#5143

(Specifically for EESSI, we have danced around the problem by making a configuration change to --search-path-cpp-headers=flags)

@ocaisa ocaisa closed this Mar 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2025a issues & PRs related to 2025a common toolchains 2025b issues & PRs related to 2025b common toolchains bug fix change EESSI Related to EESSI project update

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants