-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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
Consider using libglvnd from Conan instead of the system's via opengl/system #23649
Comments
/cc @jwillikers |
@jcar87 You'll need to address the fact that Also, the fact of the matter is, my company builds graphical applications, but what your saying sounds like go somewhere else if that's the case as that's not something CCI can handle. From your points, we shouldn't have a Qt Conan package that offers graphical components because we can't test them in CCI. Fyi, vcpkg, HomeBrew, and Spack all offer Mesa packages. Of course, |
Absolutely! same concerns. But vulkan-loader is vulkan-loader, and OpenGL is OpenGL - the fact that we may have something that is not sufficiently tested or may have issues elsewhere, surely does not justify merging what you propose without due diligence? If anything, if as a result of these proposed changes we are identifying that vulkan also needs looking into, that's a good result: we should look into it.
Not at all what I'm saying in the slightest. When reviewing PRs like with changes like the ones you propose - what I expect is evidence that this approach works, and a justification of what the advatanges are versus what we currently have. Are we solving problems? Are we at risk of introducing new problems? Are we are risk of causing issues to Linux/FreeBSD Conan users that did not exist before? The fact that this was an issue and somehow looks like without addressing that it would've meant breaking OpenGL if the runtime is provided by Conan - to me indicates that more testing is needed. The fact that our CI cannot test this is not a problem - we're very happy to do manual testing, document the process and the results in this issue and link it in the relevant PRs, so that there is traceability of why a change was introduced, and what steps were done to validate it where CI couldn't.
Not at all either. In fact, the team has been releasing tools in the Conan client that would help in these cases.
This issue and the PRs are about |
I'm bringing up Vulkan Loader and Wayland as things that would need to be looked into. I don't think this discussion is just about |
|
I think one obvious omission to the conversation here is reproducibility. Right now, I have developers using For cross-compilation, this has been helpful for providing a means to build something against a cross-compiled
Mesa provides the OpenGL, OpenCL, and Vulkan drivers for the underlying hardware. Historically, it also provided the standard OpenGL libraries used to interface with OpenGL. Nowadays, |
Absolutely - but there's "build time" reproducibility, and then there's the ability to work at runtime - the assumption being that the runtime that is installed at the system level is more likely to work with the underlying hardware, than a runtime provided by Conan that may not work at all (see the hardcoding of distro-specific system paths at compile time). I think maybe in Conan Center we do not current a model where "please use the system-provided libraries at runtime, but use the Conan-provided libraries/headers at build time" - which would probably satisfy both use cases (similar to the "stub" libraries that CUDA provides). I think this is doable with Conan 2.0, but the recipes in Conan Center currently still support Conan 1.x.
Absolutely - but for system-provided libraries this can be handled in a sysroot. I think that's an area of our documentation that may be lacking with a comprehensive example. The sysroot is supposed to help the linker find libraries that are not part of the gcc toolchain, that are expected in the target system. Obviously, if all the libraries you need are Conan packages, Conan removes the need to maintain a separate sysroot - but my experience is that except for the simplest cases, you will need one anyway, for anything that strictly needs a system library. A good example: cross-building CUDA code for the NVIDIA Jetson - you can't mix and match (or at least not until recent version of jetpack) versions of CUDA libraries and the OS side (unlike what you can do on PCs). How to properly build a sysroot is something has some historical caveats - see crosstool-ng. On Apple the system layer is fully provided by the SDK, including a sysroot. The same goes for Android and QNX, but Linux is more is different. My point being that is not a strict requirement for all libraries to be provided by Conan if the system-only libraries are already included in the sysroot (or if you are building on a multilib distro and targetting the same distro version) this is something we need to document better.
Looks like As I said, I think there's reason to be cautious here, and identify the issues that are all other package managers have been avoiding. I think it's a good idea on paper since it's the newer, I just want to make sure that we dont' leave anyone behind. |
Okay I think I understand your primary concerns, so I'm going to try and summarize them here so you can tell if I understand you or not.
Now that I've summarized these points, I'll add why I'm confused on each one.
On this point, I'm confused why this concern all of sudden on this particular package, as I don't doubt the same concerns exist for OpenCL and Vulkan among others, not that I'm against more testing. There's also the question of whether or not anybody should be using the package if CCI isn't confident enough to use it. Should the package even exist in the first place then or should it have a special disclaimer to let consumers know that using it may cause runtime issues?
I think this makes a lot more sense regarding the actual drivers, like those provided by the Mesa project for Linux. These are very hardware-dependent.
This question feels wrong. Should every proposed source-based Conan package require justification that it isn't being added as a My last primary point of confusion is probably due to the fact that I can't recall any other Conan packages where both a system and a non-system Conan one have existed simultaneously. I'm only aware of a couple recent additions, i.e. the |
I fully agree that, if using As a maintainer of this repository, I want to ensure that changes are sufficiently vetted, and that our approval of a pull request gives us confidence that it will work as intended. With regards to OpenGL, I feel like Conan Center follows pretty much the same approach as similar repositories (pypi, homebrew, vcpkg, spack) and I can see signs that they have hesitated or not fully made the transition yet due to technical concerns. Now, given that the approach we currently use is known to work (despite some limitations regarding cross-building and hermetic builds), and that the maintainers of the other repositories have hesitated to make this very exact change, I don't think it is unreasonable for us to be concerned and to clarify and prevent our users experiencing any issues. I want to help you move this forward, because I agree with the benefits that you mention, so here are my concerns from a technical standpoint:
|
Any distribution that follows the Filesystem Hierarchy Standard will install to either
The package manager does this. The GL implementations provide the ICD loader files in this directory, i.e. Mesa or the NVIDIA proprietary driver. There may or may not be drivers installed depending on the user's system. A headless system may not have graphics drivers. A user trying to run a graphical application without having graphics drivers installed is technically possible in this situation. However, being able to build an OpenGL application on a headless system without having to install drivers is also a benefit.
I have confirmed this is the correct data directory path on FreeBSD and updated my comment.
No, it should not be necessary to merge them at the same time. Having a system
It looks like Spack is trying to offer some mechanism to allow drivers on other paths. The system paths should work out-of-the-box in most cases. When drivers from other locations should be used, the standard environment variables used by
This point on compatibility has been addressed above. Flatpak uses its own bundled
They should be compatible, but it would be best to use one fully in the graph for consistency. After transition, it probably makes sense to use
This is exactly the problem with the
Perhaps, but OpenGL is complicated and provides many interfaces such as GLX, EGL, and multiple versions of GLES. I don't think the current
Ideally, it would be possible to accomplish this in this way. However, I don't know if
Yes, older systems would require being built against non-libglvnd libraries, whether that's provided by Mesa or the vendor, as is the case for the legacy proprietary NVIDIA driver. It appears that Debian may have transitioned around Debian 9, as indicated by the this issue with Snap. This issue also seems pertinent.
The point of |
Maybe this can be an option? Like packages have an option which jpeg implementation to use, we can have an option for opengl: system or libglvnd. I'm particularly interested in moving this on, because opengl/system package becomes a problem in cross-build scenarios (please see my PR for qt #18545) |
What is your question?
See discussion:
See:
#23484
#23465
#23464
#23463
#23455
#23452
#23451
#23450
#23449
#23448
#23447
#23446
#23443
#23441
#23439
#23280
#23279
#23222
#22958
The text was updated successfully, but these errors were encountered: