unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#28719] [PATCH 0/6] Qt: Use a more standard directory layout.
@ 2017-10-06 11:59 Hartmut Goebel
  2017-10-06 12:02 ` [bug#28719] [PATCH 1/6] gnu: qtbase: " Hartmut Goebel
  0 siblings, 1 reply; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-06 11:59 UTC (permalink / raw)
  To: 28719

This patch series makes Qt install libs, plugins, etc into a standard
directory layout. See
http://lists.gnu.org/archive/html/guix-devel/2017-09/msg00092.html and the
related thread for details.

The three patches by Sou Bunnbu (宋文武) are unchanged from what he posted
earlier on guix-devel.

Hartmut Goebel (3):
  gnu: qtwebkit: Fix rpath for the qmlwebkit plugins.
  gnu: qscintilla: Adjust installation directory layout.
  gnu: kde-framworks: Fix installation directories.

Sou Bunnbu (宋文武) (3):
  gnu: qtbase: Use a more standard directory layout.
  gnu: qt: Fix install paths in submodules.
  gnu: qwt: Adjust installation directory layout.

 gnu/packages/kde-frameworks.scm |  16 +++-
 gnu/packages/qt.scm             | 164 +++++++++++++++++++++++++++++-----------
 2 files changed, 134 insertions(+), 46 deletions(-)

-- 
2.13.5

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 1/6] gnu: qtbase: Use a more standard directory layout.
  2017-10-06 11:59 [bug#28719] [PATCH 0/6] Qt: Use a more standard directory layout Hartmut Goebel
@ 2017-10-06 12:02 ` Hartmut Goebel
  2017-10-06 12:02   ` [bug#28719] [PATCH 2/6] gnu: qt: Fix install paths in submodules Hartmut Goebel
                     ` (4 more replies)
  0 siblings, 5 replies; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-06 12:02 UTC (permalink / raw)
  To: 28719

From: 宋文武 <iyzsong@member.fsf.org>

* gnu/packages/qt.scm (qtbase)[arguments]: Pass docdir, headerdir,
archdatadir, datadir and examplesdir to 'configure'.  Ajdust the
patch-qt_config.prf phase accordingly.
[native-search-paths]: Adjust accordingly.
(qtwayland)[arguments]: New field.

Co-authored-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
---
 gnu/packages/qt.scm | 43 +++++++++++++++++++++++++++----------------
 1 file changed, 27 insertions(+), 16 deletions(-)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index bc275ebb0..e276eb05b 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -460,6 +460,12 @@ developers using C++ or QML, a CSS & JavaScript like language.")
                        "./configure"
                        "-verbose"
                        "-prefix" out
+                       "-docdir" (string-append out "/share/doc/qt5")
+                       "-headerdir" (string-append out "/include/qt5")
+                       "-archdatadir" (string-append out "/lib/qt5")
+                       "-datadir" (string-append out "/share/qt5")
+                       "-examplesdir" (string-append
+                                       out "/share/doc/qt5/examples")
                        "-opensource"
                        "-confirm-license"
                        ;; Do not build examples; if desired, these could go
@@ -489,38 +495,31 @@ developers using C++ or QML, a CSS & JavaScript like language.")
          (add-after 'install 'patch-qt_config.prf
            (lambda* (#:key outputs #:allow-other-keys)
              (let* ((out (assoc-ref outputs "out"))
+                    (mkspecs (string-append out "/lib/qt5/mkspecs"))
                     (qt_config.prf (string-append
-                                    out "/mkspecs/features/qt_config.prf")))
+                                    mkspecs "/features/qt_config.prf")))
                ;; For each Qt module, let `qmake' uses search paths in the
                ;; module directory instead of all in QT_INSTALL_PREFIX.
                (substitute* qt_config.prf
                  (("\\$\\$\\[QT_INSTALL_HEADERS\\]")
-                  "$$replace(dir, mkspecs/modules, include)")
+                  "$$clean_path($$replace(dir, mkspecs/modules, ../../include/qt5))")
                  (("\\$\\$\\[QT_INSTALL_LIBS\\]")
-                  "$$replace(dir, mkspecs/modules, lib)")
+                  "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
                  (("\\$\\$\\[QT_HOST_LIBS\\]")
-                  "$$replace(dir, mkspecs/modules, lib)")
-                 (("\\$\\$\\[QT_INSTALL_PLUGINS\\]")
-                  "$$replace(dir, mkspecs/modules, plugins)")
-                 (("\\$\\$\\[QT_INSTALL_LIBEXECS\\]")
-                  "$$replace(dir, mkspecs/modules, libexec)")
+                  "$$clean_path($$replace(dir, mkspecs/modules, ../../lib))")
                  (("\\$\\$\\[QT_INSTALL_BINS\\]")
-                  "$$replace(dir, mkspecs/modules, bin)")
-                 (("\\$\\$\\[QT_INSTALL_IMPORTS\\]")
-                  "$$replace(dir, mkspecs/modules, imports)")
-                 (("\\$\\$\\[QT_INSTALL_QML\\]")
-                  "$$replace(dir, mkspecs/modules, qml)"))
+                  "$$clean_path($$replace(dir, mkspecs/modules, ../../bin))"))
                #t))))))
     (native-search-paths
      (list (search-path-specification
             (variable "QMAKEPATH")
-            (files '("")))
+            (files '("lib/qt5")))
            (search-path-specification
             (variable "QML2_IMPORT_PATH")
-            (files '("qml")))
+            (files '("lib/qt5/qml")))
            (search-path-specification
             (variable "QT_PLUGIN_PATH")
-            (files '("plugins")))
+            (files '("lib/qt5/plugins")))
            (search-path-specification
             (variable "XDG_DATA_DIRS")
             (files '("share")))
@@ -817,6 +816,18 @@ developers using C++ or QML, a CSS & JavaScript like language.")
              (snippet
                ;; The examples try to build and cause the build to fail
               '(delete-file-recursively "examples"))))
+    (arguments
+     (substitute-keyword-arguments (package-arguments qtsvg)
+       ((#:phases phases)
+        `(modify-phases ,phases
+           (add-before 'check 'set-ld-library-path
+             ;; <https://lists.gnu.org/archive/html/guix-devel/2017-09/msg00019.html>
+             ;;
+             ;; Make the uninstalled libQt5WaylandClient.so.5 available to the
+             ;; wayland platform plugin.
+             (lambda _
+               (setenv "LD_LIBRARY_PATH" (string-append (getcwd) "/lib"))
+               #t))))))
     (native-inputs
      `(("glib" ,glib)
        ("perl" ,perl)
-- 
2.13.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 2/6] gnu: qt: Fix install paths in submodules.
  2017-10-06 12:02 ` [bug#28719] [PATCH 1/6] gnu: qtbase: " Hartmut Goebel
@ 2017-10-06 12:02   ` Hartmut Goebel
  2017-10-10 11:01     ` 宋文武
  2017-10-06 12:02   ` [bug#28719] [PATCH 3/6] gnu: qwt: Adjust installation directory layout Hartmut Goebel
                     ` (3 subsequent siblings)
  4 siblings, 1 reply; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-06 12:02 UTC (permalink / raw)
  To: 28719

From: 宋文武 <iyzsong@member.fsf.org>

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 e276eb05b..88e0011b1 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -376,7 +376,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)
@@ -427,8 +428,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
@@ -492,10 +492,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
@@ -509,6 +510,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
@@ -554,26 +569,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.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 3/6] gnu: qwt: Adjust installation directory layout.
  2017-10-06 12:02 ` [bug#28719] [PATCH 1/6] gnu: qtbase: " Hartmut Goebel
  2017-10-06 12:02   ` [bug#28719] [PATCH 2/6] gnu: qt: Fix install paths in submodules Hartmut Goebel
@ 2017-10-06 12:02   ` Hartmut Goebel
  2017-10-06 12:02   ` [bug#28719] [PATCH 4/6] gnu: qtwebkit: Fix rpath for the qmlwebkit plugins Hartmut Goebel
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-06 12:02 UTC (permalink / raw)
  To: 28719

From: 宋文武 <iyzsong@member.fsf.org>

* 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 88e0011b1..f9f1278c7 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1600,11 +1600,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.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 4/6] gnu: qtwebkit: Fix rpath for the qmlwebkit plugins.
  2017-10-06 12:02 ` [bug#28719] [PATCH 1/6] gnu: qtbase: " Hartmut Goebel
  2017-10-06 12:02   ` [bug#28719] [PATCH 2/6] gnu: qt: Fix install paths in submodules Hartmut Goebel
  2017-10-06 12:02   ` [bug#28719] [PATCH 3/6] gnu: qwt: Adjust installation directory layout Hartmut Goebel
@ 2017-10-06 12:02   ` Hartmut Goebel
  2017-10-06 12:02   ` [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout Hartmut Goebel
  2017-10-06 12:02   ` [bug#28719] [PATCH 6/6] gnu: kde-framworks: Fix installation directories Hartmut Goebel
  4 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-06 12:02 UTC (permalink / raw)
  To: 28719

After the qtbase installation directories have been changed,
the relative RPATH in the libs no longer matched the sructure.

* gnu/packages/qt.scm(qtwebkit)[arguments]: New phase
  fix-qmlwebkit-plugins-rpath.
---
 gnu/packages/qt.scm | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index f9f1278c7..1b5058ba1 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1684,6 +1684,15 @@ different kinds of sliders, and much more.")
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'fix-qmlwebkit-plugins-rpath
+           (lambda _
+             (substitute* "Source/WebKit/qt/declarative/experimental/experimental.pri"
+               (("RPATHDIR_RELATIVE_TO_DESTDIR = \\.\\./\\.\\./lib")
+                "RPATHDIR_RELATIVE_TO_DESTDIR = ../../../../../lib"))
+             (substitute* "Source/WebKit/qt/declarative/public.pri"
+               (("RPATHDIR_RELATIVE_TO_DESTDIR = \\.\\./\\.\\./lib")
+                "RPATHDIR_RELATIVE_TO_DESTDIR = ../../../../lib"))
+             #t))
          (replace 'configure
                   (lambda* (#:key outputs #:allow-other-keys)
                     (let ((out (assoc-ref outputs "out")))
-- 
2.13.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout.
  2017-10-06 12:02 ` [bug#28719] [PATCH 1/6] gnu: qtbase: " Hartmut Goebel
                     ` (2 preceding siblings ...)
  2017-10-06 12:02   ` [bug#28719] [PATCH 4/6] gnu: qtwebkit: Fix rpath for the qmlwebkit plugins Hartmut Goebel
@ 2017-10-06 12:02   ` Hartmut Goebel
  2017-10-10 11:05     ` 宋文武
  2017-10-06 12:02   ` [bug#28719] [PATCH 6/6] gnu: kde-framworks: Fix installation directories Hartmut Goebel
  4 siblings, 1 reply; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-06 12:02 UTC (permalink / raw)
  To: 28719

* gnu/packages/qt.scm (qscintilla)[#:phase configure]: Set QT_INSTALL_DATA and
  QT_HOST_DATA to $OUT/lib/qt5.
---
 gnu/packages/qt.scm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 1b5058ba1..775982757 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -1467,8 +1467,10 @@ contain over 620 classes.")
                   (string-append out "/include"))
                  (("\\$\\$\\[QT_INSTALL_TRANSLATIONS\\]")
                   (string-append out "/translations"))
-                 (("\\$\\$\\[QT_INSTALL_DATA\\]") out)
-                 (("\\$\\$\\[QT_HOST_DATA\\]") out))
+                 (("\\$\\$\\[QT_INSTALL_DATA\\]")
+                  (string-append out "/lib/qt$${QT_MAJOR_VERSION}"))
+                 (("\\$\\$\\[QT_HOST_DATA\\]")
+                 (string-append out "/lib/qt$${QT_MAJOR_VERSION}")))
                (zero? (system* "qmake"))))))))
     (native-inputs `(("qtbase" ,qtbase)))
     (home-page "http://www.riverbankcomputing.co.uk/software/qscintilla/intro")
-- 
2.13.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 6/6] gnu: kde-framworks: Fix installation directories.
  2017-10-06 12:02 ` [bug#28719] [PATCH 1/6] gnu: qtbase: " Hartmut Goebel
                     ` (3 preceding siblings ...)
  2017-10-06 12:02   ` [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout Hartmut Goebel
@ 2017-10-06 12:02   ` Hartmut Goebel
  4 siblings, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-06 12:02 UTC (permalink / raw)
  To: 28719

After the qtbase installation directories have been changed, kf5's plugins
etc. need to be install into lib/qt5/…, too. We change the global definitions
in "KDEInstallDirs.cmake", so this changes will apply to all packages without
these to need to define the paths. THis is okay, since "KDEInstallDirs.cmake"
defines the directory-layout guix is using.

* gnu/packages/kde-frameworks.scm (extra-cmake-modules)[#:phase fix-lib-path]:
  In modules/KDEInstallDirs.cmake also patch QTPLUGINDIR, QTQUICKIMPORTSDIR,
  QMLDIR.
  (kwindowsystem)[#:phase check]: Adjust QT_PLUGIN_PATH.
  (kfilemetadata)[#:phase check-setup]: dito.
---
 gnu/packages/kde-frameworks.scm | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm
index 58bc74236..a503226d6 100644
--- a/gnu/packages/kde-frameworks.scm
+++ b/gnu/packages/kde-frameworks.scm
@@ -92,7 +92,17 @@
            (lambda _
              ;; Always install into /lib and not into /lib64.
              (substitute* "kde-modules/KDEInstallDirs.cmake"
-               (("\"lib64\"") "\"lib\""))))
+               (("\"lib64\"") "\"lib\"")
+               ;; TODO: Base the following on values taken from Qt
+               ;; Install plugins into lib/qt5/plugins
+               (("_define_relative\\(QTPLUGINDIR LIBDIR \"plugins\"")
+                "_define_relative(QTPLUGINDIR LIBDIR \"qt5/plugins\"")
+               ;; Install imports into lib/qt5/imports
+               (("_define_relative\\(QTQUICKIMPORTSDIR QTPLUGINDIR \"imports\"")
+                "_define_relative(QTQUICKIMPORTSDIR LIBDIR \"qt5/imports\"")
+               ;; Install qml-files into lib/qt5/qml
+               (("_define_relative\\(QMLDIR LIBDIR \"qml\"")
+                "_define_relative(QMLDIR LIBDIR \"qt5/qml\""))))
          ;; install and check phase are swapped to prevent install from failing
          ;; after testsuire has run
          (add-after 'install 'check-post-install
@@ -1042,7 +1052,7 @@ configuration pages, message boxes, and password requests.")
                  (begin
                    (let ((out (assoc-ref outputs "out")))
                      (setenv "QT_PLUGIN_PATH"
-                             (string-append out "/lib/plugins:"
+                             (string-append out "/lib/qt5/plugins:"
                                             (getenv "QT_PLUGIN_PATH"))))
                    ;; The test suite requires a running X server, setting
                    ;; QT_QPA_PLATFORM=offscreen does not suffice and even make
@@ -1485,7 +1495,7 @@ from DocBook files.")
            (lambda* (#:key outputs #:allow-other-keys)
              (let ((out (assoc-ref outputs "out")))
                (setenv "QT_PLUGIN_PATH"
-                       (string-append out "/lib/plugins:"
+                       (string-append out "/lib/qt5/plugins:"
                                     (getenv "QT_PLUGIN_PATH"))))
              #t)))))
     (native-inputs
-- 
2.13.5

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 2/6] gnu: qt: Fix install paths in submodules.
  2017-10-06 12:02   ` [bug#28719] [PATCH 2/6] gnu: qt: Fix install paths in submodules Hartmut Goebel
@ 2017-10-10 11:01     ` 宋文武
  0 siblings, 0 replies; 14+ messages in thread
From: 宋文武 @ 2017-10-10 11:01 UTC (permalink / raw)
  To: Hartmut Goebel; +Cc: 28719

Hartmut Goebel <h.goebel@crazy-compilers.com> writes:

> From: 宋文武 <iyzsong@member.fsf.org>
>
> 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.

Typo..  Should be:
  Rename 'patch-qt_config.prf' phase to 'patch-mkspecs' ...

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout.
  2017-10-06 12:02   ` [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout Hartmut Goebel
@ 2017-10-10 11:05     ` 宋文武
  2017-10-10 14:43       ` Hartmut Goebel
  2017-10-10 15:39       ` Hartmut Goebel
  0 siblings, 2 replies; 14+ messages in thread
From: 宋文武 @ 2017-10-10 11:05 UTC (permalink / raw)
  To: Hartmut Goebel; +Cc: 28719

Hartmut Goebel <h.goebel@crazy-compilers.com> writes:

> * gnu/packages/qt.scm (qscintilla)[#:phase configure]: Set QT_INSTALL_DATA and
>   QT_HOST_DATA to $OUT/lib/qt5.
> ---
>  gnu/packages/qt.scm | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
> index 1b5058ba1..775982757 100644
> --- a/gnu/packages/qt.scm
> +++ b/gnu/packages/qt.scm
> @@ -1467,8 +1467,10 @@ contain over 620 classes.")
>                    (string-append out "/include"))
>                   (("\$\$\[QT_INSTALL_TRANSLATIONS\]")
>                    (string-append out "/translations"))
> -                 (("\$\$\[QT_INSTALL_DATA\]") out)
> -                 (("\$\$\[QT_HOST_DATA\]") out))
> +                 (("\$\$\[QT_INSTALL_DATA\]")
> +                  (string-append out "/lib/qt$${QT_MAJOR_VERSION}"))
> +                 (("\$\$\[QT_HOST_DATA\]")
> +                 (string-append out "/lib/qt$${QT_MAJOR_VERSION}")))
>                 (zero? (system* "qmake"))))))))
>      (native-inputs `(("qtbase" ,qtbase)))
>      (home-page "http://www.riverbankcomputing.co.uk/software/qscintilla/intro")

Idelly, With the previous "Fix install paths" patch, this substitute for
qscintilla.pro could be removed.  Can you check it?  Thanks!

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout.
  2017-10-10 11:05     ` 宋文武
@ 2017-10-10 14:43       ` Hartmut Goebel
  2017-10-10 15:39       ` Hartmut Goebel
  1 sibling, 0 replies; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-10 14:43 UTC (permalink / raw)
  To: 宋文武; +Cc: 28719

Am 10.10.2017 um 13:05 schrieb 宋文武:
> Idelly, With the previous "Fix install paths" patch, this substitute for
> qscintilla.pro could be removed.  Can you check it?

Yes, I'll check it in the next days.

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout.
  2017-10-10 11:05     ` 宋文武
  2017-10-10 14:43       ` Hartmut Goebel
@ 2017-10-10 15:39       ` Hartmut Goebel
  2017-10-12 11:27         ` 宋文武
  1 sibling, 1 reply; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-10 15:39 UTC (permalink / raw)
  To: 宋文武; +Cc: 28719

Am 10.10.2017 um 13:05 schrieb 宋文武:
> Idelly, With the previous "Fix install paths" patch, this substitute for
> qscintilla.pro could be removed.  Can you check it?  Thanks!

Found time to test it earlier :-)

I tested it and this substitute is still needed. The reason AFAICT is
that QScintilla - is referring to variables defined in qmake, while the
other packages are using some definition-file in qtbase. The variables
are set as follows:

$ /gnu/store/…-qtbase-5.9.1/bin/qmake -query
QT_SYSROOT:
QT_INSTALL_PREFIX:/gnu/store/…-qtbase-5.9.1
QT_INSTALL_ARCHDATA:/gnu/store/…-qtbase-5.9.1/lib/qt5
…

I tried

    qmake -set QT_INSTALL_PREFIX /gnu/store/…-qtbase-5.9.1

without success. This

- only set QT_INSTALL_PREFIX but not the other variables.

- stores this setting tin the users home and thus effects all projects
(not much of a problem in guix build, though).

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout.
  2017-10-10 15:39       ` Hartmut Goebel
@ 2017-10-12 11:27         ` 宋文武
  2017-10-13 13:37           ` bug#28719: " Hartmut Goebel
  0 siblings, 1 reply; 14+ messages in thread
From: 宋文武 @ 2017-10-12 11:27 UTC (permalink / raw)
  To: Hartmut Goebel; +Cc: 28719

Hartmut Goebel <h.goebel@crazy-compilers.com> writes:

> Am 10.10.2017 um 13:05 schrieb 宋文武:
>> Idelly, With the previous "Fix install paths" patch, this substitute for
>> qscintilla.pro could be removed.  Can you check it?  Thanks!
>
> Found time to test it earlier :-)
>
> I tested it and this substitute is still needed. The reason AFAICT is
> that QScintilla - is referring to variables defined in qmake, while the
> other packages are using some definition-file in qtbase. The variables
> are set as follows:
>
> $ /gnu/store/…-qtbase-5.9.1/bin/qmake -query
> QT_SYSROOT:
> QT_INSTALL_PREFIX:/gnu/store/…-qtbase-5.9.1
> QT_INSTALL_ARCHDATA:/gnu/store/…-qtbase-5.9.1/lib/qt5
> …
>

Oh, my bad.  I forget that those variables will only be correct when
qmake is using the customized qt.conf (like qtsvg), you can make
qscintilla inherit from qtsvg to use its 'configure-qmake' phase.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* bug#28719: [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout.
  2017-10-12 11:27         ` 宋文武
@ 2017-10-13 13:37           ` Hartmut Goebel
  2017-10-14  6:30             ` [bug#28719] " 宋文武
  0 siblings, 1 reply; 14+ messages in thread
From: Hartmut Goebel @ 2017-10-13 13:37 UTC (permalink / raw)
  To: 宋文武; +Cc: 28719-close

I pushed the changes as 5430732b22dcee5ae162826ee1dfefb9510eaeca,
including the fixed commit-message for "qt: Fix install paths in
submodules".

Thanks for the review.

Am 12.10.2017 um 13:27 schrieb 宋文武:
> Oh, my bad. I forget that those variables will only be correct when
> qmake is using the customized qt.conf (like qtsvg), you can make
> qscintilla inherit from qtsvg to use its 'configure-qmake' phase.


I did not implement this for two reasons:

- qtsvg is unrelated to QScintilla, so I would find it confusing to
inherit it.

- Creating a qt.conf file is much more code than just chaining some
variable in an existing file.

- I want to get it finished :-) So I somebody wants to implement a
'configure-qmake' phase I will not object.

-- 
Regards
Hartmut Goebel

| Hartmut Goebel          | h.goebel@crazy-compilers.com               |
| www.crazy-compilers.com | compilers which you thought are impossible |

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout.
  2017-10-13 13:37           ` bug#28719: " Hartmut Goebel
@ 2017-10-14  6:30             ` 宋文武
  0 siblings, 0 replies; 14+ messages in thread
From: 宋文武 @ 2017-10-14  6:30 UTC (permalink / raw)
  To: Hartmut Goebel; +Cc: 28719-close

Hartmut Goebel <h.goebel@crazy-compilers.com> writes:

> I pushed the changes as 5430732b22dcee5ae162826ee1dfefb9510eaeca,
> including the fixed commit-message for "qt: Fix install paths in
> submodules".
>
> Thanks for the review.
>

Cool, thanks for the work!

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2017-10-14  6:31 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-06 11:59 [bug#28719] [PATCH 0/6] Qt: Use a more standard directory layout Hartmut Goebel
2017-10-06 12:02 ` [bug#28719] [PATCH 1/6] gnu: qtbase: " Hartmut Goebel
2017-10-06 12:02   ` [bug#28719] [PATCH 2/6] gnu: qt: Fix install paths in submodules Hartmut Goebel
2017-10-10 11:01     ` 宋文武
2017-10-06 12:02   ` [bug#28719] [PATCH 3/6] gnu: qwt: Adjust installation directory layout Hartmut Goebel
2017-10-06 12:02   ` [bug#28719] [PATCH 4/6] gnu: qtwebkit: Fix rpath for the qmlwebkit plugins Hartmut Goebel
2017-10-06 12:02   ` [bug#28719] [PATCH 5/6] gnu: qscintilla: Adjust installation directory layout Hartmut Goebel
2017-10-10 11:05     ` 宋文武
2017-10-10 14:43       ` Hartmut Goebel
2017-10-10 15:39       ` Hartmut Goebel
2017-10-12 11:27         ` 宋文武
2017-10-13 13:37           ` bug#28719: " Hartmut Goebel
2017-10-14  6:30             ` [bug#28719] " 宋文武
2017-10-06 12:02   ` [bug#28719] [PATCH 6/6] gnu: kde-framworks: Fix installation directories Hartmut Goebel

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).