From: iyzsong@member.fsf.org (宋文武)
To: Hartmut Goebel <h.goebel@crazy-compilers.com>
Cc: guix-devel@gnu.org, Thomas Danckaert <post@thomasdanckaert.be>
Subject: Re: QT install and search paths
Date: Thu, 07 Sep 2017 21:38:15 +0800 [thread overview]
Message-ID: <87r2vi39yw.fsf@member.fsf.org> (raw)
In-Reply-To: <88a5454c-4ef2-7c27-7c29-b2ab244d0042@crazy-compilers.com> (Hartmut Goebel's message of "Mon, 4 Sep 2017 11:16:53 +0200")
[-- Attachment #1: Type: text/plain, Size: 470 bytes --]
Hartmut Goebel <h.goebel@crazy-compilers.com> writes:
> Am 04.09.2017 um 09:44 schrieb Thomas Danckaert:
>> Just to make sure, the idea is to:
>>
>> 1. apply 宋文武's qtbase patch adjusting the paths of various qt components
>>
>> 2. apply your 2 patches for qtscintilla and qtwebkit
>>
>> 3. adjust kde.scm so packages in there build correctly?
>
> ACK from my side.
Yes, and here are my updates on the paths issue of pkg-config files and
qwt:
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0002-gnu-qt-Fix-install-paths-in-submodules.patch --]
[-- Type: text/x-patch, Size: 6470 bytes --]
From e8a252f5037b77f44a1516c715bbd437a6e23cb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@member.fsf.org>
Date: Sun, 3 Sep 2017 17:38:57 +0800
Subject: [PATCH 2/3] gnu: qt: Fix install paths in submodules.
Before this, the paths in pkg-config (.pc) and libtool (.la) files of
submodules are all pointing to qtbase.
* gnu/packages/qt.scm (qtbase)[native-inputs]: Move 'which' to
'propagated-inputs'.
[arguments]: Rename 'patch-mkspecs' phase to 'patch-mkspecs' and patch
more qmake spec files there.
(qtsvg)[arguments]: Add 'configure-qmake' phase.
---
gnu/packages/qt.scm | 86 +++++++++++++++++++++++++++++++++++++++--------------
1 file changed, 63 insertions(+), 23 deletions(-)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 80508f058..a41aa4fbb 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -375,7 +375,8 @@ developers using C++ or QML, a CSS & JavaScript like language.")
#t))))
(build-system gnu-build-system)
(propagated-inputs
- `(("mesa" ,mesa)))
+ `(("mesa" ,mesa)
+ ("which" ,(@ (gnu packages base) which))))
(inputs
`(("alsa-lib" ,alsa-lib)
("cups" ,cups)
@@ -426,8 +427,7 @@ developers using C++ or QML, a CSS & JavaScript like language.")
("perl" ,perl)
("pkg-config" ,pkg-config)
("python" ,python-2)
- ("ruby" ,ruby)
- ("which" ,(@ (gnu packages base) which))))
+ ("ruby" ,ruby)))
(arguments
`(#:phases
(modify-phases %standard-phases
@@ -491,10 +491,11 @@ developers using C++ or QML, a CSS & JavaScript like language.")
'("-no-sse2"))
"-no-mips_dsp"
"-no-mips_dspr2")))))
- (add-after 'install 'patch-qt_config.prf
+ (add-after 'install 'patch-mkspecs
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
- (mkspecs (string-append out "/lib/qt5/mkspecs"))
+ (archdata (string-append out "/lib/qt5"))
+ (mkspecs (string-append archdata "/mkspecs"))
(qt_config.prf (string-append
mkspecs "/features/qt_config.prf")))
;; For each Qt module, let `qmake' uses search paths in the
@@ -508,6 +509,20 @@ developers using C++ or QML, a CSS & JavaScript like language.")
"$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
(("\\$\\$\\[QT_INSTALL_BINS\\]")
"$$clean_path($$replace(dir, mkspecs/modules, ../../bin))"))
+
+ ;; Searches Qt tools in the current PATH instead of QT_HOST_BINS.
+ (substitute* (string-append mkspecs "/features/qt_functions.prf")
+ (("cmd = \\$\\$\\[QT_HOST_BINS\\]/\\$\\$2")
+ "cmd = $$system(which $${2}.pl 2>/dev/null || which $${2})"))
+
+ ;; Resolve qmake spec files within qtbase by absolute paths.
+ (substitute*
+ (map (lambda (file)
+ (string-append mkspecs "/features/" file))
+ '("device_config.prf" "moc.prf" "qt_build_config.prf"
+ "qt_config.prf" "winrt/package_manifest.prf"))
+ (("\\$\\$\\[QT_HOST_DATA/get\\]") archdata)
+ (("\\$\\$\\[QT_HOST_DATA/src\\]") archdata))
#t))))))
(native-search-paths
(list (search-path-specification
@@ -553,26 +568,51 @@ developers using C++ or QML, a CSS & JavaScript like language.")
(arguments
`(#:phases
(modify-phases %standard-phases
- (replace 'configure
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- ;; Valid QT_BUILD_PARTS variables are:
- ;; libs tools tests examples demos docs translations
- (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests"
- (string-append "PREFIX=" out))))))
- (add-before 'install 'fix-Makefiles
+ (add-before 'configure 'configure-qmake
(lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (qtbase (assoc-ref inputs "qtbase")))
- (substitute* (find-files "." "Makefile")
- (((string-append "INSTALL_ROOT)" qtbase))
- (string-append "INSTALL_ROOT)" out)))
+ (let* ((out (assoc-ref outputs "out"))
+ (qtbase (assoc-ref inputs "qtbase"))
+ (tmpdir (string-append (getenv "TMPDIR")))
+ (qmake (string-append tmpdir "/qmake"))
+ (qt.conf (string-append tmpdir "/qt.conf")))
+ ;; Use qmake with a customized qt.conf to override install
+ ;; paths to $out.
+ (symlink (which "qmake") qmake)
+ (setenv "PATH" (string-append tmpdir ":" (getenv "PATH")))
+ (with-output-to-file qt.conf
+ (lambda ()
+ (format #t "[Paths]
+Prefix=~a
+ArchData=lib/qt5
+Data=share/qt5
+Documentation=share/doc/qt5
+Headers=include/qt5
+Libraries=lib
+LibraryExecutables=lib/qt5/libexec
+Binaries=bin
+Tests=tests
+Plugins=lib/qt5/plugins
+Imports=lib/qt5/imports
+Qml2Imports=lib/qt5/qml
+Translations=share/qt5/translations
+Settings=etc/xdg
+Examples=share/doc/qt5/examples
+HostPrefix=~a
+HostData=lib/qt5
+HostBinaries=bin
+HostLibraries=lib
+" out out)))
#t)))
- (add-before 'check 'set-display
- (lambda _
- ;; make Qt render "offscreen", required for tests
- (setenv "QT_QPA_PLATFORM" "offscreen")
- #t)))))))
+ (replace 'configure
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ ;; Valid QT_BUILD_PARTS variables are:
+ ;; libs tools tests examples demos docs translations
+ (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests"))))
+ (add-before 'check 'set-display
+ (lambda _
+ ;; make Qt render "offscreen", required for tests
+ (setenv "QT_QPA_PLATFORM" "offscreen")
+ #t)))))))
(define-public qtimageformats
(package (inherit qtsvg)
--
2.13.3
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0003-gnu-qwt-Adjust-installation-directory-layout.patch --]
[-- Type: text/x-patch, Size: 2492 bytes --]
From b290321dc6e4c2db731cae31f78988958700c018 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=AE=8B=E6=96=87=E6=AD=A6?= <iyzsong@member.fsf.org>
Date: Thu, 7 Sep 2017 21:19:54 +0800
Subject: [PATCH 3/3] gnu: qwt: Adjust installation directory layout.
* gnu/packages/qt.scm (qwt)[arguments]<#:phases>: Modify 'qwtconfig.pri' to
use a directory layout that matching qtbase. Modify 'doc/doc.pro' to remove
the misplaced installation of man pages. Rename phase 'install-documentation'
to 'install-man-pages'.
---
gnu/packages/qt.scm | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index a41aa4fbb..8070e279f 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1588,11 +1588,27 @@ securely. It will not store any data unencrypted unless explicitly requested.")
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
+ (let* ((out (assoc-ref outputs "out"))
+ (docdir (string-append out "/share/doc/qwt"))
+ (incdir (string-append out "/include/qwt"))
+ (pluginsdir (string-append out "/lib/qt5/plugins/designer"))
+ (featuresdir (string-append out "/lib/qt5/mkspecs/features")))
(substitute* '("qwtconfig.pri")
- (("/usr/local/qwt-\\$\\$QWT\\_VERSION") out))
+ (("^(\\s*QWT_INSTALL_PREFIX)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x out))
+ (("^(QWT_INSTALL_DOCS)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x docdir))
+ (("^(QWT_INSTALL_HEADERS)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x incdir))
+ (("^(QWT_INSTALL_PLUGINS)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x pluginsdir))
+ (("^(QWT_INSTALL_FEATURES)\\s*=.*" _ x)
+ (format #f "~a = ~a\n" x featuresdir)))
+ (substitute* '("doc/doc.pro")
+ ;; We'll install them in the 'install-man-pages' phase.
+ (("^unix:doc\\.files.*") ""))
(zero? (system* "qmake")))))
- (add-after 'install 'install-documentation
+ (add-after 'install 'install-man-pages
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(man (string-append out "/share/man")))
--
2.13.3
[-- Attachment #4: Type: text/plain, Size: 78 bytes --]
The 0001-gnu-qtbase-Use-a-more-standard-directory-layout.patch is
unchanged.
next prev parent reply other threads:[~2017-09-07 13:38 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-23 18:25 QT install and search paths Hartmut Goebel
2017-08-24 11:37 ` Thomas Danckaert
2017-08-25 7:32 ` Hartmut Goebel
2017-08-24 11:59 ` 宋文武
2017-08-25 7:06 ` Hartmut Goebel
2017-08-25 12:40 ` 宋文武
2017-08-25 16:04 ` 宋文武
2017-08-26 8:31 ` Hartmut Goebel
2017-08-27 16:49 ` Hartmut Goebel
2017-09-02 16:40 ` Hartmut Goebel
2017-09-03 4:58 ` 宋文武
2017-09-03 11:46 ` 宋文武
2017-09-03 12:39 ` Hartmut Goebel
2017-09-03 14:04 ` Hartmut Goebel
2017-09-03 14:46 ` 宋文武
2017-09-04 7:44 ` Thomas Danckaert
2017-09-04 9:16 ` Hartmut Goebel
2017-09-07 13:38 ` 宋文武 [this message]
2017-09-19 16:30 ` Hartmut Goebel
2017-09-22 12:59 ` Hartmut Goebel
2017-10-06 12:22 ` Hartmut Goebel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r2vi39yw.fsf@member.fsf.org \
--to=iyzsong@member.fsf.org \
--cc=guix-devel@gnu.org \
--cc=h.goebel@crazy-compilers.com \
--cc=post@thomasdanckaert.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.