MythTV/mythtv

MythTV 33 and 34 will no longer build on updated Fedora 39 due to glslang

mymatenige opened this issue · 4 comments

Is your feature request related to a problem? Please describe.
Fedora have recently updated version 39 to include glslang 14, rather than glslang 11.9. As a result MythTV will no longer build. I've tried both version 33 and 34.

ERROR: libglslang not found

If you think configure made a mistake, make sure that you are using the latest
version of MythTV from git.  If the latest version fails, report the problem to the
mythtv-dev@mythtv.org mailing list or IRC #mythtv on irc.libera.chat
Include the log file "config.ep" produced by configure as this will help
solve the problem.

Describe the solution you'd like
If possible, please look at making MythTV compatible with glslang 14.

Describe alternatives you've considered
This can be resolved in the short term by downgrading glslang.

The problem also occurs on today's master.
The error can be reproduced as follows:

klaas@kasus:~/mythtv-master/mythtv/mythtv$ ./configure  --enable-libglslang --enable-vulkan 
ERROR: libglslang (or dependent) library not found

On master it is fixed by installing the library:
sudo dnf install glslang-devel
This does however not solve it for fixes/34.

It is solved for fixes/34 after copying the code fragment that checks the presence of libglslang from configure in master to configure in fixes/34 .

klaas@kasus:~/m34-fixes/mythtv/mythtv$ git diff
diff --git a/mythtv/configure b/mythtv/configure
index 70fa981e3a..e49658c7c2 100755
--- a/mythtv/configure
+++ b/mythtv/configure
@@ -6134,7 +6134,18 @@ case $ID in
        esac
 esac
 
-enabled vulkan && enabled libglslang && require_cpp libglslang glslang/SPIRV/GlslangToSpv.h "glslang::TIntermediate*" -lglslang ${EXTRA_GLSLANG_LIBS:-} -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread
+# KdW try check from v35
+# enabled vulkan && enabled libglslang && require_cpp libglslang glslang/SPIRV/GlslangToSpv.h "glslang::TIntermediate*" -lglslang ${EXTRA_GLSLANG_LIBS:-} -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread
+if enabled vulkan && enabled libglslang ; then
+    # Debian sid no longer ships the OSDependent and HLSL libraries,
+    # but vulkan support on that platform compiles fine without them.
+    # Test to see if these libraries are present, and if not, test
+    # again to see if the compile works without them.
+    GLSLANG_LIBS="${EXTRA_GLSLANG_LIBS:-} -lOSDependent -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread"
+    check_lib_cpp glslang/SPIRV/GlslangToSpv.h "glslang::TIntermediate*" -lglslang ${GLSLANG_LIBS} -lHLSL -lOGLCompiler \
+    || check_lib_cpp glslang/SPIRV/GlslangToSpv.h "glslang::TIntermediate*" -lglslang ${GLSLANG_LIBS}  \
+    || die "ERROR: libglslang (or dependent) library not found"
+fi
 
 # Qt private headers are required for wayland extras and some DRM functionality on linux
 if enabled qtprivateheaders ; then

With this fix applied it is possible to do the configure and the make without errors.

This has worked for me on fixes/33 and fixes/34. Many thanks.