Arch Linux

Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!
Tasklist

FS#64617 - [glslang] Install SPIRV to /usr/include/SPIRV until the deprecation date

Attached to Project: Arch Linux
Opened by Theodor R. (theor) - Friday, 22 November 2019, 23:12 GMT
Last edited by Sven-Hendrik Haase (Svenstaro) - Tuesday, 26 November 2019, 15:19 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Sven-Hendrik Haase (Svenstaro)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

As this issue (https://github.com/KhronosGroup/glslang/issues/1964) states, old SPIRV installation path will be deprecated on May 1, 2020. Until that date, SPIRV/ will keep getting copied to both CMAKE_INSTALL_PREFIX/SPIRV and CMAKE_INSTALL_PREFIX/glslang/SPIRV. However, the Arch package seems not to follow that, and installs SPIRV only to /usr/include/glslang/SPIRV.

Many projects may still depend on the old path. Even worse, I couldn't get mine to compile without adding /usr/include/glslang to the list of include paths. If I don't do that, I get the following compilation error:

In file included from /usr/include/glslang/SPIRV/GlslangToSpv.h:42,
from src/video/impl/vulkan/shader.cpp:2:
/usr/include/glslang/SPIRV/SpvTools.h:49:10: fatal error: ../glslang/MachineIndependent/localintermediate.h: No such file or directory
49 | #include "../glslang/MachineIndependent/localintermediate.h"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

The SPIRV include files still assume that SPIRV/ resides in a parent directory. Creators of glslang seem to be aware of that, but they didn't come up with a good solution at the moment.



This task depends upon

Closed by  Sven-Hendrik Haase (Svenstaro)
Tuesday, 26 November 2019, 15:19 GMT
Reason for closing:  Fixed
Comment by Levente Polyak (anthraxx) - Saturday, 23 November 2019, 12:00 GMT
I dont quite see the point having that legacy copy for some more months, we could just simply do the right thing and make software that requires the old patch just use the new path, its hardly a crazy change needed to comply with the future prone variant.
Comment by Theodor R. (theor) - Saturday, 23 November 2019, 17:14 GMT
@anthraxx I wouldn't mind that, but the point is, I don't currently see a way to use that new path without dirty workarounds in Makefiles (or whatever build automation tool one uses). Because, like I said, the current include files still assume that SPIRV resides in a parent directory. You can remove the old copy as soon as glslang devs fix this (though I'd still wait for the deprecation date for consistency's sake).
Comment by Sven-Hendrik Haase (Svenstaro) - Sunday, 24 November 2019, 02:36 GMT
Wouldn't a symlink suffice?
Comment by Theodor R. (theor) - Sunday, 24 November 2019, 02:45 GMT
@Svenstaro No, at least it doesn't work for me. When the symlink gets resolved it still acts like SPIRV/ lies in /usr/include/glslang/SPIRV and yields the same compilation error.
Comment by Sven-Hendrik Haase (Svenstaro) - Tuesday, 26 November 2019, 15:19 GMT
Ok, I'm backporting an upstream PR that got merged. After the next releaes it'll be removed as it's in master. After that point, the duplicated headers will be gone when upstream deems it to be time for that.

Loading...