From 4a2281923ab608b5aa120499d8c13bd39c245d46 Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Mon, 6 Oct 2025 10:17:11 +0300 Subject: [PATCH] gnu: qtbase: Always find libvulkan. Fixes: guix/guix#3330 * gnu/packages/qt.scm (qtbase)[source]: Add patch. [arguments]: Adjust a phase to substitute the location for libvulkan.so. * gnu/packages/patches/qtbase-patch-libvulkan.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. Co-authored-by: kestrelwx Change-Id: I39f1be5a30c5c17a4e4ea6c853b475f20ba8272c Signed-off-by: Andreas Enge --- gnu/local.mk | 1 + .../patches/qtbase-patch-libvulkan.patch | 28 +++++++++++++++++++ gnu/packages/qt.scm | 9 +++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/qtbase-patch-libvulkan.patch diff --git a/gnu/local.mk b/gnu/local.mk index 816459723cd9585252c4a106a222bfdb887200a3..2e2f46783c636e67a7600252014b8e5b61348bf9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2212,6 +2212,7 @@ dist_patch_DATA = \ %D%/packages/patches/qtbase-qmake-fix-includedir.patch \ %D%/packages/patches/qtbase-qmlimportscanner-qml-import-path.patch \ %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch \ + %D%/packages/patches/qtbase-patch-libvulkan.patch \ %D%/packages/patches/qtbase-qmake-use-libname.patch \ %D%/packages/patches/qtbase-5-use-TZDIR.patch \ %D%/packages/patches/qtscript-disable-tests.patch \ diff --git a/gnu/packages/patches/qtbase-patch-libvulkan.patch b/gnu/packages/patches/qtbase-patch-libvulkan.patch new file mode 100644 index 0000000000000000000000000000000000000000..b8b3847504ec1431331f6b87b5413d94a0d50fd3 --- /dev/null +++ b/gnu/packages/patches/qtbase-patch-libvulkan.patch @@ -0,0 +1,28 @@ +Add the full name for libvulkan.so.1 so that we can patch it in the 'build phase. +Not sent upstream. + +diff --git a/src/gui/vulkan/qbasicvulkanplatforminstance.cpp b/src/gui/vulkan/qbasicvulkanplatforminstance.cpp +index 47d9a7e9..80c929e5 100644 +--- a/src/gui/vulkan/qbasicvulkanplatforminstance.cpp ++++ b/src/gui/vulkan/qbasicvulkanplatforminstance.cpp +@@ -45,7 +45,7 @@ QBasicPlatformVulkanInstance::~QBasicPlatformVulkanInstance() + + void QBasicPlatformVulkanInstance::loadVulkanLibrary(const QString &defaultLibraryName, int defaultLibraryVersion) + { +- QVarLengthArray, 3> loadList; ++ QVarLengthArray, 4> loadList; + + // First in the list of libraries to try is the manual override, relevant on + // embedded systems without a Vulkan loader and possibly with custom vendor +@@ -63,6 +63,11 @@ void QBasicPlatformVulkanInstance::loadVulkanLibrary(const QString &defaultLibra + if (defaultLibraryVersion >= 0) + loadList.append({ defaultLibraryName, -1 }); + ++#ifdef __linux__ ++ // As a fallback we append to the list the full default name of libvulkan. ++ loadList.append({ QString::fromUtf8("libvulkan.so.1"), -1 }); ++#endif ++ + bool ok = false; + for (const auto &lib : loadList) { + m_vulkanLib.reset(new QLibrary); diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index f6bfd73ce3724dc3bceba81c9166c05fb5d271a9..917b72c6c004583b9920ee32aeb357587a7ae116 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -786,7 +786,8 @@ developers using C++ or QML, a CSS & JavaScript like language.") "qtbase-absolute-runpath.patch" "qtbase-qmake-use-libname.patch" "qtbase-qmlimportscanner-qml-import-path.patch" - "qtbase-qmake-fix-includedir.patch")))) + "qtbase-qmake-fix-includedir.patch" + "qtbase-patch-libvulkan.patch")))) (build-system cmake-build-system) (arguments (substitute-keyword-arguments (package-arguments qtbase-5) @@ -897,6 +898,11 @@ tst_qt_cmake_create.cpp" (("/bin/ls") (search-input-file inputs "bin/ls"))) + ;; Patch the added reference for libvulkan.so + (substitute* "src/gui/vulkan/qbasicvulkanplatforminstance.cpp" + (("libvulkan\\.so\\.1") + (search-input-file inputs "lib/libvulkan.so.1"))) + ;; Use shared-mime-info as the default MIME type database. (substitute* "src/corelib/mimetypes/qmimedatabase.cpp" (("return dirs;" all) @@ -1213,6 +1219,7 @@ tst_qt_cmake_create.cpp" libxcb libxext shared-mime-info + vulkan-loader xcb-util-cursor `(,zstd "lib")))) (native-search-paths