Skip to content
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

glslang min_request_version does not accept 15.0.0 #1326

Open
psi29a opened this issue Nov 10, 2024 · 8 comments
Open

glslang min_request_version does not accept 15.0.0 #1326

psi29a opened this issue Nov 10, 2024 · 8 comments

Comments

@psi29a
Copy link
Contributor

psi29a commented Nov 10, 2024

Describe the bug
Looks like cmake is not parsing 15.0.0 correctly and claims that it does not meet the min requirement of 14.

To Reproduce
Steps to reproduce the behavior:

Debian Sid

https://packages.debian.org/source/sid/glslang

cmake .

CMake Warning at CMakeLists.txt:47 (find_package):
  Could not find a configuration file for package "glslang" that is
  compatible with requested version "14".

  The following configuration files were considered but not accepted:

    /usr/lib/x86_64-linux-gnu/cmake/glslang/glslang-config.cmake, version: 15.0.0
    /lib/x86_64-linux-gnu/cmake/glslang/glslang-config.cmake, version: 15.0.0



CMake Warning at CMakeLists.txt:52 (message):
  glslang not found.  ShaderCompile support disabled.

Expected behavior
Should configure and find glslang

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: Debian Sid
  • Version 1.1.7

Additional context
I'm packaging VSG upstream to Debian

@psi29a
Copy link
Contributor Author

psi29a commented Nov 10, 2024

Change the value to "14.0.0" does not resolve the issue either.

CMake Warning at CMakeLists.txt:47 (find_package):
  Could not find a configuration file for package "glslang" that is
  compatible with requested version "14.0.0".

  The following configuration files were considered but not accepted:

    /usr/lib/x86_64-linux-gnu/cmake/glslang/glslang-config.cmake, version: 15.0.0
    /lib/x86_64-linux-gnu/cmake/glslang/glslang-config.cmake, version: 15.0.0

@robertosfield
Copy link
Collaborator

Could the glslang-config be buggy and not accepting support for older versions? Or is 15 not officially compatible with 14?

I wonder if removing the version check in the find_package line and then checking the version if it's found might work.

@AnyOldName3
Copy link
Contributor

As we discussed last time this came up, glslang's generated CMake config (specifically glslang-config-version.cmake) is set up to deny backwards compatibility if there's a major version change. There are options that let us specify a maximum version, too, but they're ignored if the major version differs for the minimum and maximum we set, so they won't save us here.

I don't think they set things up like that intentionally, it's just how CMake defaults to doing things, and they seem to expect that most projects using glslang use a Windows-style workflow where you clone and build the specific version of all dependencies that you want, instead of the Linux-style workflow, letting the system package manager provide your dependencies and having to deal with whichever versions it decides to give you. If we report it to them, it'll probably sit around unsolved like most of their CMake problems, but they'd probably accept a well-reasoned PR. I think I looked into it and decided it wasn't trivial, so would require at least a little bit of thought, so put it off for another day.

In the meantime, just set GLSLANG_MIN_VERSION to 15 by setting -DGLSLANG_MIN_VERSION=15 on the command line during configure, and everything should be fine.

@psi29a
Copy link
Contributor Author

psi29a commented Nov 11, 2024

Alrighty, we resolved it and package is here: https://mentors.debian.net/package/vulkanscenegraph/
Awaiting lawyer review from FTPMasters and uploading.

Once there, I'll package up the rest: vsgXchange and examples.

Feel free to close this.

@robertosfield
Copy link
Collaborator

What was the solution? To use Chris' suggestion?

It'd be good to have a general solution of the box so won't close it for now.

@psi29a
Copy link
Contributor Author

psi29a commented Nov 11, 2024

For the Debian package we just patched the GLSLANG_MIN_VERSION to 15 from 14. It's less work for us to carry this patch and drop when no longer necessary. We want to keep our d/rules clean, so no need to set a define.

https://salsa.debian.org/games-team/vulkanscenegraph/-/blob/master/debian/patches/001-glslang-min-version.patch?ref_type=heads

@timoore
Copy link
Contributor

timoore commented Nov 21, 2024

I just ran into this using VSG from vcpkg. There the workaround is to create an overlay that passes -DGLSLANG_MIN_VERSION=15 to vcpkg_cmake_configure. The proper thing to do is to submit a PR to vcpkg that includes this change. Does anyone claim ownership over the vsg port in vcpkg? I see that @gwaldron submittted that last PR there; Glenn, do you want to make this change, or should I go ahead and do it?

@gwaldron
Copy link

gwaldron commented Nov 21, 2024

@timoore I will look into this today - thanks.

[update]
@timoore I grabbed the latest vcpkg and rebuilt vsg, vsgXchange, and vsgQt via Rocky. glslang version = 15.0.0.
It built OK, but I got this runtime error:

[vsg critical] VulkanSceneGraph not compiled with GLSLang, unable to compile shaders.

Adding -DGLSLANG_MIN_VERSION=15 to the portfile fixes the problem, confirmed.

So I will submit that PR to vcpkg to support 1.1.7, and @robertosfield can make the call whether to burn this into VSG proper for the next tagged release.
microsoft/vcpkg#42294

Hope that works :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants