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

From: Guillaume Le Vaillant <[email-masked]>
Date: Thu, 09 Jan 2020 16:13:48 +0100

Guillaume Le Vaillant skribis:

> 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)))

I built some other packages depending on 'qtdeclarative' and/or
'qtxmlpatterns' and I haven't seen any failure, so I pushed the patch as
3e10b2418dc0952c16053ccced4baba405facb6b.