unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#43151: Calibre ebook-viewer requires QtWebEngine
@ 2020-09-01  9:48 Andreas Enge
  2020-09-01 10:03 ` Andreas Enge
  2020-09-03  3:33 ` Brendan Tildesley
  0 siblings, 2 replies; 6+ messages in thread
From: Andreas Enge @ 2020-09-01  9:48 UTC (permalink / raw)
  To: 43151

Hello,

when trying to view an epub using ebook-viewer from the calibre package
(or by directly clicking on an epub in calibre), the program fails with
the message:
   Could not find QtWebEngineProcess

I see that commit d79ec4fd343bc2a72652aa3a4b4ae14bd8df88ac has added
python2-pyqtwebengine and qtwebengine to the calibre inputs, but this
is apparently not enough.

I did not git bisect to see where the problem first appeared, but could
do so if this would help debugging.

Andreas





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

* bug#43151: Calibre ebook-viewer requires QtWebEngine
  2020-09-01  9:48 bug#43151: Calibre ebook-viewer requires QtWebEngine Andreas Enge
@ 2020-09-01 10:03 ` Andreas Enge
  2020-09-01 10:37   ` Andreas Enge
  2020-09-03  3:33 ` Brendan Tildesley
  1 sibling, 1 reply; 6+ messages in thread
From: Andreas Enge @ 2020-09-01 10:03 UTC (permalink / raw)
  To: 43151

I did an strace and found the following:
4989  access("/gnu/store/kwx5xihpxmjjf8f8446vn883ank1qcg1-qtbase-5.14.2/lib", F_OK) = 0
4989  access("/gnu/store/kwx5xihpxmjjf8f8446vn883ank1qcg1-qtbase-5.14.2/lib/qt5/libexec/QtWebEngineProcess", F_OK) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
4989  access("/gnu/store/sd278fsdfx5hjrcgncflnp9qq4l42p1c-python2-2.7.17/bin/QtWebEngineProcess", F_OK) = -1 ENOENT (Datei oder Verzeichnis nicht gefunden)
4989  write(2, "Could not find QtWebEngineProces"..., 34) = 34

This is a problem with a non-monolithic qt package: The file it is
looking for resides in qtwebengine, not qtbase.

The following works:
QTWEBENGINEPROCESS_PATH=`guix build qtwebengine`/lib/qt5/libexec/QtWebEngineProcess ebook-viewer

Do we need to set a search path in qtwebengine?

Andreas





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

* bug#43151: Calibre ebook-viewer requires QtWebEngine
  2020-09-01 10:03 ` Andreas Enge
@ 2020-09-01 10:37   ` Andreas Enge
  0 siblings, 0 replies; 6+ messages in thread
From: Andreas Enge @ 2020-09-01 10:37 UTC (permalink / raw)
  To: 43151

On Tue, Sep 01, 2020 at 12:03:47PM +0200, Andreas Enge wrote:
> The following works:
> QTWEBENGINEPROCESS_PATH=`guix build qtwebengine`/lib/qt5/libexec/QtWebEngineProcess ebook-viewer
> 
> Do we need to set a search path in qtwebengine?

Well, no, since qtwebengine is not actually installed. Probably add it in a
wrapper around ebook-viewer and wherever else it pops up in applications?

Andreas





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

* bug#43151: Calibre ebook-viewer requires QtWebEngine
  2020-09-01  9:48 bug#43151: Calibre ebook-viewer requires QtWebEngine Andreas Enge
  2020-09-01 10:03 ` Andreas Enge
@ 2020-09-03  3:33 ` Brendan Tildesley
       [not found]   ` <20200903095847.GA3534@jurong>
  1 sibling, 1 reply; 6+ messages in thread
From: Brendan Tildesley @ 2020-09-03  3:33 UTC (permalink / raw)
  To: 43151

I created this patch which I think fixes it, copying the phase from 
Anki. https://issues.guix.gnu.org/issue/42885#4

Perhaps I should have only wrapped the ebook-viewer with qtwebengine 
instead of every program.





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

* bug#43151: Calibre ebook-viewer requires QtWebEngine
       [not found]     ` <8eae6c95-6f98-ffb7-45ad-72a0ca053ce6@brendan.scot>
@ 2020-09-06  8:25       ` Andreas Enge
  2020-09-07  6:01         ` Brendan Tildesley
  0 siblings, 1 reply; 6+ messages in thread
From: Andreas Enge @ 2020-09-06  8:25 UTC (permalink / raw)
  To: Brendan Tildesley; +Cc: 43151

(cc-ing this and only this bug, the other one seems to have diverged towards
css and typescript)

On Fri, Sep 04, 2020 at 07:53:02PM +1000, Brendan Tildesley wrote:
> > I did not realise there was already an open ticket for updating calibre,
> > thanks for pointing it out. Indeed I do not think we need to wrap all
> > programs. I tried out the programs in ...calibre-4.18.0/bin, and only these
> > two fail with an error message:
> >     ebook-edit
> >     ebook-viewer
> > I did not try the different calibre-*; calibre itself starts. Then it can call
> > ebook-viewer, and I do not know the mechanism, so it might just call the
> > wrapped binary ebook-viewer, or it might need wrapping itself because of using
> > internal python mechanics. I would give it a try and not wrap it in the first
> > place.
> > 
> > All "binaries" are already wrappend with PYTHONPATH, so there is probably some
> > mechanic to avoid double wrapping (which your patch may already address).
> Since it uses (replace 'wrap..., it won't run the old wrap phase any more.
> Also I don't think it matters much that the other variables also have the Qt
> variable wrapped, perhaps it is more correct anyway. Especially since the
> wrap script uses '=, which wrap-program interprets as overwriting the
> variable completely, so applying it twice won't make a difference anyway.

Well, I think we should not wrap more than absolutely necessary. And it would
even be easier to write (no need to look for all the binaries, just use these
two names). Would you like to create a patch maybe for the current calibre,
and handle the update following the other bug?

Andreas





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

* bug#43151: Calibre ebook-viewer requires QtWebEngine
  2020-09-06  8:25       ` Andreas Enge
@ 2020-09-07  6:01         ` Brendan Tildesley
  0 siblings, 0 replies; 6+ messages in thread
From: Brendan Tildesley @ 2020-09-07  6:01 UTC (permalink / raw)
  To: Andreas Enge, Arun Isaac, Leo Famulari; +Cc: 43151

[-- Attachment #1: Type: text/plain, Size: 2601 bytes --]

On 6/9/20 6:25 pm, Andreas Enge wrote:
> (cc-ing this and only this bug, the other one seems to have diverged towards
> css and typescript)
>
> On Fri, Sep 04, 2020 at 07:53:02PM +1000, Brendan Tildesley wrote:
>>> I did not realise there was already an open ticket for updating calibre,
>>> thanks for pointing it out. Indeed I do not think we need to wrap all
>>> programs. I tried out the programs in ...calibre-4.18.0/bin, and only these
>>> two fail with an error message:
>>>      ebook-edit
>>>      ebook-viewer
>>> I did not try the different calibre-*; calibre itself starts. Then it can call
>>> ebook-viewer, and I do not know the mechanism, so it might just call the
>>> wrapped binary ebook-viewer, or it might need wrapping itself because of using
>>> internal python mechanics. I would give it a try and not wrap it in the first
>>> place.
>>>
>>> All "binaries" are already wrappend with PYTHONPATH, so there is probably some
>>> mechanic to avoid double wrapping (which your patch may already address).
>> Since it uses (replace 'wrap..., it won't run the old wrap phase any more.
>> Also I don't think it matters much that the other variables also have the Qt
>> variable wrapped, perhaps it is more correct anyway. Especially since the
>> wrap script uses '=, which wrap-program interprets as overwriting the
>> variable completely, so applying it twice won't make a difference anyway.
> Well, I think we should not wrap more than absolutely necessary. And it would
> even be easier to write (no need to look for all the binaries, just use these
> two names). Would you like to create a patch maybe for the current calibre,
> and handle the update following the other bug?
>
> Andreas
>
It's actually a bit more complicated because every other executable 
still requires PYTHONPATH wrapping anyway as python-build-system does 
it. I just tested creating such a wrap phase that only sets 
QTWEBENGINEPROCESS_PATH for ebook-viewer and ebook-edit. It works when 
they are opened directly, but when they are opened via the calibre 
interface, they fail to find qtwebengine. so it does seem that calibre 
it's self needs that variable set anyway.

I've attached a patching fixing this one issue. For those I've emailed 
coming from the Issue I created for updating Calibre, since it looks 
like the update will be delayed until Mathjax 3 is packaged properly, 
would you mind just reviewing this fix to get it through for the current 
Calibre.

I think Ricardo was having a go at packaging swc to transpile typescript 
which is needed for mathjax, but it looks like quite a challenge.


[-- Attachment #2: 0001-gnu-calibre-Wrap-QTWEBENGINEPROCESS_PATH.patch --]
[-- Type: text/x-patch, Size: 2281 bytes --]

From 33b497cd3b8d21a76307b36729efb67baa08ac26 Mon Sep 17 00:00:00 2001
From: Brendan Tildesley <mail@brendan.scot>
Date: Mon, 7 Sep 2020 01:05:37 +1000
Subject: [PATCH] gnu: calibre: Wrap QTWEBENGINEPROCESS_PATH.

* gnu/packages/ebook.scm (calibre): Wrap QTWEBENGINEPROCESS_PATH in
addition to wrapping PYTHONPATH as python-build-system does.
---
 gnu/packages/ebook.scm | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm
index aab4155d3d..38040c6f65 100644
--- a/gnu/packages/ebook.scm
+++ b/gnu/packages/ebook.scm
@@ -246,6 +246,29 @@
                                           (assoc-ref inputs "js-mathjax")
                                           "/share/javascript/mathjax"))
              (invoke "python2" "setup.py" "rapydscript")))
+         (replace 'wrap
+           ;; Here we wrap PYTHONPATH exactly as it would be in
+           ;; python-build-system, plus the addition of
+           ;; QTWEBENGINEPROCESS_PATH, fixing a bug where Calibre would not
+           ;; find Qtwebengine.
+           (lambda* (#:key inputs outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (python (assoc-ref inputs "python"))
+                    (site-packages
+                     (cons (string-append out "/lib/python"
+                                          (python-version python)
+                                          "/site-packages")
+                           (search-path-as-string->list (getenv "PYTHONPATH"))))
+                    (qtwebengineprocess
+                     (string-append (assoc-ref inputs "qtwebengine")
+                                    "/lib/qt5/libexec/QtWebEngineProcess")))
+               (for-each (lambda (program)
+                           (wrap-program program
+                                 `("QTWEBENGINEPROCESS_PATH" = (,qtwebengineprocess))
+                                 `("PYTHONPATH" prefix ,site-packages)))
+                         (find-files bin ".")))
+             #t))         
          (add-after 'install 'install-man-pages
            (lambda* (#:key outputs #:allow-other-keys)
              (copy-recursively
-- 
2.28.0


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

end of thread, other threads:[~2020-09-07  6:02 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-01  9:48 bug#43151: Calibre ebook-viewer requires QtWebEngine Andreas Enge
2020-09-01 10:03 ` Andreas Enge
2020-09-01 10:37   ` Andreas Enge
2020-09-03  3:33 ` Brendan Tildesley
     [not found]   ` <20200903095847.GA3534@jurong>
     [not found]     ` <8eae6c95-6f98-ffb7-45ad-72a0ca053ce6@brendan.scot>
2020-09-06  8:25       ` Andreas Enge
2020-09-07  6:01         ` Brendan Tildesley

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