From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35221) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ei3Rt-0001HM-OM for guix-patches@gnu.org; Sat, 03 Feb 2018 14:26:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ei3Rq-0001cg-GR for guix-patches@gnu.org; Sat, 03 Feb 2018 14:26:05 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:48041) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ei3Rq-0001cc-Bo for guix-patches@gnu.org; Sat, 03 Feb 2018 14:26:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ei3Rq-0001Vo-5r for guix-patches@gnu.org; Sat, 03 Feb 2018 14:26:02 -0500 Subject: [bug#30340] [PATCH 1/6] gnu: qtbase: Use the store paths for other packages and dynamically loaded libs. References: <20180203192212.29173-1-h.goebel@crazy-compilers.com> In-Reply-To: <20180203192212.29173-1-h.goebel@crazy-compilers.com> Resent-Message-ID: From: Hartmut Goebel Date: Sat, 3 Feb 2018 20:25:00 +0100 Message-Id: <20180203192505.29516-1-h.goebel@crazy-compilers.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 30340@debbugs.gnu.org Adobt the NixOS patches as of 2018-01-19: - .cmake.in and .prf files are not patches. - src/corelib/tools/qtimezoneprivate_tz.cpp: NixOS uses $TZDIR, we use hardcoded path to tzdata. - src/corelib/kernel/qcoreapplication.cpp: NixOS adds plugin paths derived from PATH. We do not need this, since we have native-search-path QT_PLUGIN_PATH. - src/network/kernel/qdnslookup_unix.cpp, src/network/kernel/qhostinfo_unix.cpp: Use hardcoded path to libresolv. - src/network/ssl/qsslcontext_openssl.cpp: NixOS changes a conditional compilation for Qt 5.9 (but leaves it unchanged for Qt 5.10) to fix compilation with libressl. But Qt does not support libressl anway, see config.tests/openssl/openssl.cpp in qtbase 5.9.4. - src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp: Use hardcoded path to libx11. - src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp: Use hardcoded path to mess's libGL, no need for a fall-back. - src/plugins/platforms/xcb/qxcbcursor.cpp: Use hardcoded path to Xcursor. - src/plugins/platformthemes/gtk3/main.cpp: NixOS changes $XDG_DATA_DIRS and $GIO_EXTRA_MODULES in the code. We use search-path-specification for this. - src/testlib/qtestassert.h: Unchanged for guix. * gnu/packages/qt.scm (qtbase) Add comment. [inputs]: Add tzdata. [aguments]: Add 'patch-paths'. --- gnu/packages/qt.scm | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 8bd51ae66..606c5035a 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -35,6 +35,7 @@ #:use-module (guix packages) #:use-module (guix utils) #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages compression) #:use-module (gnu packages cups) @@ -430,6 +431,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") ("postgresql" ,postgresql) ("pulseaudio" ,pulseaudio) ("sqlite" ,sqlite) + ("tzdata" ,tzdata) ("unixodbc" ,unixodbc) ("xcb-util" ,xcb-util) ("xcb-util-image" ,xcb-util-image) @@ -540,7 +542,42 @@ developers using C++ or QML, a CSS & JavaScript like language.") "qt_config.prf" "winrt/package_manifest.prf")) (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata) (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata)) - #t)))))) + #t))) + (add-after 'unpack 'patch-paths + ;; Use the absolute paths for dynamically loaded libs, otherwise + ;; the lib will be searched in the actual executable's RUNPATH, + ;; which may not include the requested lib. + (lambda* (#:key inputs #:allow-other-keys) + ;; tzdata + (substitute* "src/corelib/tools/qtimezoneprivate_tz.cpp" + (("\"/usr(/(share|lib)/zoneinfo/)" _ path _) + (string-append "\"" (assoc-ref inputs "tzdata") path))) + ;; libresolve. TODO: Check is this is really required + (let ((glibc (assoc-ref inputs ,(if (%current-target-system) + "cross-libc" "libc")))) + (substitute* '("src/network/kernel/qdnslookup_unix.cpp" + "src/network/kernel/qhostinfo_unix.cpp") + (("^\\s*(lib.setFileName\\(QLatin1String\\(\")(resolv\"\\)\\);)" _ a b) + (string-append a glibc "/lib/lib" b)))) + ;; X11/locale (compose path) + (substitute* "src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp" + ;; Don't search in /usr/…/X11/locale, … + (("^\\s*m_possibleLocations.append\\(QStringLiteral\\(\"/usr/.*/X11/locale\"\\)\\);" line) + (string-append "// " line)) + ;; … but use libx11's path + (("^\\s*(m_possibleLocations.append\\(QStringLiteral\\()X11_PREFIX \"(/.*/X11/locale\"\\)\\);)" _ a b) + (string-append a "\"" (assoc-ref inputs "libx11") b))) + ;; libGL + (substitute* "src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp" + (("^\\s*(QLibrary lib\\(QLatin1String\\(\")(GL\"\\)\\);)" _ a b) + (string-append a (assoc-ref inputs "mesa") "/lib/lib" b))) + ;; libXcusor + (substitute* "src/plugins/platforms/xcb/qxcbcursor.cpp" + (("^\\s*(QLibrary xcursorLib\\(QLatin1String\\(\")(Xcursor\"\\), 1\\);)" _ a b) + (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b)) + (("^\\s*(xcursorLib.setFileName\\(QLatin1String\\(\")(Xcursor\"\\)\\);)" _ a b) + (string-append a (assoc-ref inputs "libxcursor") "/lib/lib" b))) + #t))))) (native-search-paths (list (search-path-specification (variable "QMAKEPATH") -- 2.13.6