-
-
Notifications
You must be signed in to change notification settings - Fork 5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add libglvnd recipe #27107
Add libglvnd recipe #27107
Conversation
Hi! This is the friendly automated conda-forge-linting service. I wanted to let you know that I linted all conda-recipes in your PR ( Here's what I've got... For recipes/libglvnd/meta.yaml:
For recipes/libglvnd/meta.yaml:
Documentation on acceptable licenses can be found here. |
@conda-forge-admin, please rerender |
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
@conda-forge-admin, please rerender |
@conda-forge/staged-recipes, ready for review! |
To help direct your pull request to the best reviewers, please mention a topic-specifc team if your recipe matches any of the following: conda-forge/help-c-cpp, conda-forge/help-cdts, conda-forge/help-go, conda-forge/help-java, conda-forge/help-julia, conda-forge/help-nodejs, conda-forge/help-perl, conda-forge/help-python, conda-forge/help-python-c, conda-forge/help-r, conda-forge/help-ruby,or conda-forge/help-rust. Thanks! |
I have had no visible issues with EGL or GLES for CentOS 7 and Ubuntu 22.04. |
Can we have a test table at the top that adds the following lines:
How do I check which GPU is being used? I feel like we should have this table and our test established before asking Isuru for their input. |
@hmaarrfk I have added a test table and test methodology that @traversaro established. @isuruf Please review this PR together with @hmaarrfk and @h-vetinari. |
Either |
recipes/libglvnd/libglvnd_look_for_egl_icd_in_system_location.patch
Outdated
Show resolved
Hide resolved
recipes/libglvnd/meta.yaml
Outdated
- test -f $PREFIX/lib/libEGL.so.1 | ||
- test -f $PREFIX/lib/libGL.so.1 | ||
- test -f $PREFIX/lib/libGLESv1_CM.so.1 | ||
- test -f $PREFIX/lib/libGLESv2.so.2 | ||
- test -f $PREFIX/lib/libGLX.so.0 | ||
- test -f $PREFIX/lib/libOpenGL.so.0 | ||
- test -f $PREFIX/lib/libGLdispatch.so.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer these to be in libglvnd
and the rest to be in libgl-devel
. I can make that change if you prefer
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please go ahead with that. I gave you write access to the repository.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the headers, xorg-glproto
(mandatory headers in conjunction) should also be a runtime dependency (as meson states), if I'm not wrong.
@isuruf I would prefer this to be merged quickly as soon as possible because I have my own build pipeline waiting for this. |
This isn’t how conda-forge, a volunteer maintained project, works. You have many options to move forward with your projects that do not rely on Isuru’s immediate contributions to this. You may choose to either upload this package to your own channel or continue to use CDTs as we have done before across conda-forge. Finally the fastest thing for you to do would be to attempt to write the code to address Isuru’s requests. |
@hmaarrfk What would be the safest way to split the package into files that end with |
@traversaro It appears that you created the Vulkan headers and loaders feedstock. Could you possibly provide directions here? |
The situation is a bit different there as the two packages are separate at the repo level (see https://github.com/KhronosGroup/Vulkan-Headers and https://github.com/KhronosGroup/Vulkan-Loader), so nothing specific was required to package them separately. |
There is some docs in https://conda-forge.org/docs/maintainer/knowledge_base/#multi-output-recipes, not sure if they are enough for what you are looking for. |
Yeah, the multi-output-recipes section ought to do it. I'll just barge in with it and ask for review later on. |
Hi! This is the friendly automated conda-forge-linting service. I wanted to let you know that I linted all conda-recipes in your PR ( Here's what I've got... For recipes/libglvnd/meta.yaml:
|
Thanks |
I will add the recipes for arm64 and ppc64 immediately. |
Huge milestone! Congrats everybody and thank you @ehfd for your perseverance through this! |
@hmaarrfk Yeah, this will be my last feedstock for a long while... Thanks for helping along the way. |
Famous last words!!!! |
Test workflow:
Use
glxgears
,eglgears
(eglgears_x11
- Pure EGL /xeglgears
- EGL/X11 interop),es2gears
(es2gears_x11
- Dependent to EGL) from https://gitlab.freedesktop.org/mesa/demos and verify the correct library is loaded, for instance usingcat /proc/<pid>/maps | grep libGL.so
/cat /proc/<pid>/maps | grep libGLX.so
/cat /proc/<pid>/maps | grep libEGL.so
/cat /proc/<pid>/maps | grep libGLESv2.so
The option
-info
specifies which driver was used for the gears examples in command-line output. Mesa withglxgears
should find/usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0
(libGLX_nvidia.so.0
for NVIDIA), andeglgears
should find the correct system50_mesa.json
ICD JSON file in/usr/share/glvnd/egl_vendor.d
or/etc/glvnd/egl_vendor.d
(and10_nvidia.json
for NVIDIA).For x86_64, Intel and AMD GPUs use Mesa for 3D OpenGL/Vulkan applications, and NVIDIA GPUs use their own
libglvnd
GL librarylibGLX_nvidia.so.0
orlibEGL_nvidia.so.0
bundled with theirnvidia-gl
drivers.glxgears -info
/xeglgears -info
:eglgears_x11 -info
/es2gears_x11 -info
:Expected result for
cat /proc/<pid>/maps | grep libGL.so
after prepending the conda environmentlib
directory toLD_LIBRARY_PATH
for instance:Mesa (which includes all sorts of device support including embedded) and NVIDIA should be the ones to test.
https://wiki.archlinux.org/title/OpenGL
Since libglvnd is merely a glue that connects OpenGL applications to Mesa or NVIDIA GL, if one device interface works correctly on Mesa, the rest should also most likely work and if they don't, it's Mesa's problem.
This means that if Mesa llvmpipe works but Mesa AMD gallium doesn't work, it's not
libglvnd
's problem.So while it would be more assuring to try on AMD and Intel GPUs, I don't think it's a necessity if nobody has the hardware. The reason this package needs to exist is to eliminate the CDTs during builds, so there is enough breathing space to listen to issues.
Tests:
This is the build I've isolated using conda-pack (feel free to use this to test):
libglvnd-conda.tar.gz
Note that you need a valid X.Org server running and would also be an ideal idea to prepend
LD_LIBRARY_PATH
.Ubuntu 24.04 + NVIDIA: All three (GLX, EGL, GLES) work
Ubuntu 24.04 + Mesa llvmpipe (software, use
env __GLX_VENDOR_LIBRARY_NAME=mesa __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/50_mesa.json my_command
): All three workUbuntu 22.04 + NVIDIA: All three work
Ubuntu 22.04 + Mesa llvmpipe (software): All three work
CentOS 7 + NVIDIA: All three work when substituting command to
eglinfo
andes2_info
(feel free to useglxinfo
in addition toglxgears -info
as well)CentOS 7 + Mesa llvmpipe (software) from latest Mesa and glvnd (install
yum install mesa-libGLU*.i686 mesa-libGLU*.x86_64
): All three work when substituting command toeglinfo
andes2_info
(feel free to useglxinfo
in addition toglxgears -info
as well)So all glibc >= 2.17 work well.
When using
glxinfo
,eglinfo
ores2_info
, use<program> & cat /proc/${!}/maps
.Checklist
url
) rather than a repo (e.g.git_url
) is used in your recipe (see here for more details).Built upon #25919 by @traversaro, accommodates conda-forge/cdt-builds#66 (comment) and removes the need for OpenGL CDT packages.
@h-vetinari @hmaarrfk Review requested.