From ac0e8f750999e9da6a52dc9e8ad7734fe3e11b26 Mon Sep 17 00:00:00 2001 From: Petr Hodina Date: Sun, 30 Oct 2022 14:32:41 +0100 Subject: [PATCH 5/8] gnu: qtbase-5: Apply qtbase-qtpluginpath.patch. * gnu/packages/qt.scm (qtbase-5)[source]: Apply qtbase-qtpluginpath.patch. * gnu/local.mk: Add patch. * gnu/packages/patches/qtbase-qtpluginpath.patch: New file. diff --git a/gnu/local.mk b/gnu/local.mk index 9ddf179143..115afa6ba5 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1752,6 +1752,8 @@ dist_patch_DATA = \ %D%/packages/patches/qtbase-absolute-runpath.patch \ %D%/packages/patches/qtbase-assert.patch \ %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch \ + %D%/packages/patches/qtbase-qtpluginpath.patch \ + %D%/packages/patches/qtbase-replace-libdir.patch \ %D%/packages/patches/qtbase-tbd-frameworks.patch \ %D%/packages/patches/qtbase-use-TZDIR.patch \ %D%/packages/patches/qtbase-xcursor.patch \ diff --git a/gnu/packages/patches/qtbase-qtpluginpath.patch b/gnu/packages/patches/qtbase-qtpluginpath.patch new file mode 100644 index 0000000000..8d5f472999 --- /dev/null +++ b/gnu/packages/patches/qtbase-qtpluginpath.patch @@ -0,0 +1,34 @@ +From 9fc6efaf774a8716932c98c0b0ea6408ed2614c2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Milan=20P=C3=A4ssler?= +Date: Sun, 10 May 2020 12:47:28 +0200 +Subject: [PATCH 09/11] qtbase-qtpluginpath + +--- + src/corelib/kernel/qcoreapplication.cpp | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp +index 5fdcc9b914..1a126ef359 100644 +--- a/src/corelib/kernel/qcoreapplication.cpp ++++ b/src/corelib/kernel/qcoreapplication.cpp +@@ -2691,6 +2691,16 @@ QStringList QCoreApplication::libraryPathsLocked() + QStringList *app_libpaths = new QStringList; + coreappdata()->app_libpaths.reset(app_libpaths); + ++ // Add library paths derived from PATH ++ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(':'); ++ const QString plugindir = QStringLiteral("../" NIXPKGS_QT_PLUGIN_PREFIX); ++ for (const QString &path: paths) { ++ if (!path.isEmpty()) { ++ app_libpaths->append(QDir::cleanPath(path + QDir::separator() + plugindir)); ++ } ++ } ++ ++ + auto setPathsFromEnv = [&](QString libPathEnv) { + if (!libPathEnv.isEmpty()) { + QStringList paths = libPathEnv.split(QDir::listSeparator(), Qt::SkipEmptyParts); +-- +2.25.4 + + diff --git a/gnu/packages/patches/qtbase-replace-libdir.patch b/gnu/packages/patches/qtbase-replace-libdir.patch new file mode 100644 index 0000000000..1d07d7d2d6 --- /dev/null +++ b/gnu/packages/patches/qtbase-replace-libdir.patch @@ -0,0 +1,69 @@ +From 30d3906ff5e8671e9c97c5336c6c549656c0e293 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Milan=20P=C3=A4ssler?= +Date: Sat, 4 Apr 2020 00:27:41 +0200 +Subject: [PATCH 04/11] qtbase-replace-libdir + +--- + mkspecs/features/qt_common.prf | 20 ++------------------ + mkspecs/features/qt_module.prf | 5 +---- + 2 files changed, 3 insertions(+), 22 deletions(-) + +diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf +index 8df94aa4ee..414029f31c 100644 +--- a/mkspecs/features/qt_common.prf ++++ b/mkspecs/features/qt_common.prf +@@ -31,32 +31,16 @@ contains(TEMPLATE, .*lib)|contains(TEMPLATE, aux) { + rplbase = $$dirname(_QMAKE_SUPER_CACHE_)/[^/][^/]* + else: \ + rplbase = $$MODULE_BASE_OUTDIR +- host_build { +- qqt_libdir = \$\$\$\$[QT_HOST_LIBS] +- qt_libdir = $$[QT_HOST_LIBS] +- } else { +- qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS] +- qt_libdir = $$[QT_INSTALL_LIBS] +- } ++ qt_libdir = $$NIX_OUTPUT_OUT/lib + contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) { +- lib_replace0.match = $$rplbase/lib/ +- lib_replace0.replace = $$qqt_libdir/ +- lib_replace0.CONFIG = path +- QMAKE_PRL_INSTALL_REPLACE += lib_replace0 + lib_replace.match = "[^ ']*$$rplbase/lib" + lib_replace.replace = + } else { + lib_replace.match = $$rplbase/lib +- lib_replace.replace = $$qqt_libdir ++ lib_replace.replace = $$qt_libdir + } + lib_replace.CONFIG = path + QMAKE_PRL_INSTALL_REPLACE += lib_replace +- !equals(qt_libdir, $$rplbase/lib) { +- qtlibdir_replace.match = $$qt_libdir +- qtlibdir_replace.replace = $$qqt_libdir +- qtlibdir_replace.CONFIG = path +- QMAKE_PRL_INSTALL_REPLACE += qtlibdir_replace +- } + } + contains(TEMPLATE, .*lib)|darwin { + if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols +diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf +index 828a9621b9..b9e5d35026 100644 +--- a/mkspecs/features/qt_module.prf ++++ b/mkspecs/features/qt_module.prf +@@ -305,10 +305,7 @@ load(qt_targets) + } + !lib_bundle:unix { + CONFIG += create_libtool +- host_build: \ +- QMAKE_LIBTOOL_LIBDIR = $$[QT_HOST_LIBS] +- else: \ +- QMAKE_LIBTOOL_LIBDIR = "=$$[QT_INSTALL_LIBS/raw]" ++ QMAKE_LIBTOOL_LIBDIR = $$NIX_OUTPUT_OUT/lib + !isEmpty(lib_replace0.match) { + ltlib_replace0.match = $$lib_replace0.match + ltlib_replace0.replace = $$QMAKE_LIBTOOL_LIBDIR/ +-- +2.25.4 + + diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 957500aeb2..9f2ca2254e 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -299,6 +299,8 @@ (define-public qtbase-5 ;; Use TZDIR to avoid depending on package "tzdata". (patches (search-patches "qtbase-use-TZDIR.patch" "qtbase-assert.patch" + "qtbase-qtpluginpath.patch" + "qtbase-replace-libdir.patch" "qtbase-tbd-frameworks.patch" "qtbase-xcursor.patch" "qtbase-moc-ignore-gcc-macro.patch" @@ -428,7 +430,15 @@ (define-public qtbase-5 (lambda _ ;; qtbase-xcursor.patch (substitute* "src/plugins/platforms/xcb/qxcbcursor.cpp" - (("NIXPKGS_LIBXCURSOR") (string-append "\"" #$libxcursor "/lib\""))))) + (("NIXPKGS_LIBXCURSOR") (string-append "\"" #$libxcursor "/lib\""))) + + ;; qtbase-replace-libdir.patch + (substitute* '("mkspecs/features/qt_common.prf" + "mkspecs/features/qt_module.prf") (("..NIX_OUTPUT_OUT") #$output)) + + ;; qtbase-qtpluginpath.patch + (substitute* "src/corelib/kernel/qcoreapplication.cpp" + (("NIXPKGS_QT_PLUGIN_PREFIX") (string-append "\"" #$output "/lib/qt5/qml\""))))) (add-after 'configure 'patch-bin-sh (lambda _ (substitute* '("config.status" -- 2.37.2