Subject: bug#38829: XmlListModel QML missing from qtdeclarative 5.12.x

From: Guillaume Le Vaillant <[email-masked]>
Date: Sun, 05 Jan 2020 19:50:08 +0100

Guillaume Le Vaillant skribis:

> In version 5.12.6 of the 'qtdeclarative' package, the
> 'lib/qt5/qml/QtQuick/XmlListModel' directory is missing (qtdeclarative
> 5.11.3 had it).
>
> It causes run time issues; for example the 'monero-gui'
> package builds fine but it fails to run:
>
> --8<---------------cut here---------------start------------->8---
> 2019-12-31 12:50:42.076	W app startd (log: /home/guillaume/.bitmonero/monero-wallet-gui.log)
> 2019-12-31 12:50:42.077	W Qt:5.12.6 GUI:- | screen: 1920x1080 - dpi: 96.1263 - ratio:0.997092
> 2019-12-31 12:50:42.179	W QQmlApplicationEngine failed to load component
> 2019-12-31 12:50:42.179	W qrc:/main.qml:1693 Type WizardLang unavailable
> 2019-12-31 12:50:42.179	W qrc:/wizard/WizardLang.qml:32 module "QtQuick.XmlListModel" is not installed
> 2019-12-31 12:50:42.179	E Error: no root objects
> --8<---------------cut here---------------end--------------->8---

I was able to build the QML for 'XmlListModel' by making 'qtdeclarative'
a dependency of 'qtxmlpatterns' instead of the opposite (and the QML is in
the 'qtxmlpatterns' package).

Rebuilding the required Qt packages and 'monero-gui' and running it
worked fine. However I'm not too familiar with the Qt packages, so does
someone think this approach could cause problems in some of them?

Here's the patch I used:

--8<---------------cut here---------------start------------->8---
From 2f0befe2e183d65a731e616b7b55808d27d8af8e Mon Sep 17 00:00:00 2001
From: Guillaume Le Vaillant <[email-masked]>
Date: Sun, 5 Jan 2020 19:27:17 +0100
Subject: [PATCH] gnu: qtxmlpatterns: Build QML plugin for XmlListModel.

* gnu/packages/qt.scm (qtdeclarative)[native-inputs]: Remove qtxmlpatterns.
  (qtxmlpatterns)[native-inputs]: Add qtdeclarative.
---
 gnu/packages/qt.scm | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm
index 795b5e9d2b..daa35c77cb 100644
--- a/gnu/packages/qt.scm
+++ b/gnu/packages/qt.scm
@@ -723,6 +723,7 @@ from within Qt 5.")))
                "1l44476ibb8rv4rf80vbjdc3712lmrl1xcxswa513ip66k47p5vn"))))
     (arguments
      (substitute-keyword-arguments (package-arguments qtsvg)
+       ((#:tests? _ #f) #f) ; TODO: Enable the tests
        ((#:phases phases)
         `(modify-phases ,phases
            (add-after 'unpack 'disable-network-tests
@@ -730,7 +731,8 @@ from within Qt 5.")))
                          (("qxmlquery") "# qxmlquery")
                          (("xmlpatterns ") "# xmlpatterns"))
                #t))))))
-    (native-inputs `(("perl" ,perl)))
+    (native-inputs `(("perl" ,perl)
+                     ("qtdeclarative" ,qtdeclarative)))
     (inputs `(("qtbase" ,qtbase)))
     (synopsis "Qt XML patterns module")
     (description "The QtXmlPatterns module is a XQuery and XPath engine for
@@ -758,8 +760,7 @@ xmlpatternsvalidator.")))
        ("pkg-config" ,pkg-config)
        ("python" ,python)
        ("python-wrapper" ,python-wrapper)
-       ("qtsvg" ,qtsvg)
-       ("qtxmlpatterns" ,qtxmlpatterns)))
+       ("qtsvg" ,qtsvg)))
     (inputs
      `(("mesa" ,mesa)
        ("qtbase" ,qtbase)))
-- 
2.24.1
--8<---------------cut here---------------end--------------->8---