--- gnu/packages/ebook.scm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index d290b19f5f..aab4155d3d 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2017, 2019 Brendan Tildesley <mail@brendan.scot> +;;; Copyright © 2017, 2019, 2020 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> @@ -28,7 +28,6 @@ #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix build-system gnu) - #:use-module (gnu packages) #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages compression) -- 2.28.0
* gnu/packages/javascript.scm: (mathjax-bin): New variable --- gnu/packages/javascript.scm | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index d5ff5bffee..d6a66a1482 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot> ;;; ;;; This file is part of GNU Guix. ;;; @@ -128,6 +129,45 @@ plugins or software to be installed on the browser. So the page author can write web documents that include mathematics and be confident that readers will be able to view it naturally and easily."))) +(define-public mathjax-bin + (package + (name "mathjax") + (version "3.0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mathjax/MathJax") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1zd0chn0cjahi28qv3nzshwljz2hgmj6lizyvvd8qs89gsx0z3h9")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let ((install-directory (string-append %output "/lib/node_modules/mathjax"))) + (mkdir-p install-directory) + (copy-recursively (string-append (assoc-ref %build-inputs "source")) + install-directory))))) + (home-page "https://www.mathjax.org/") + (synopsis "JavaScript display engine for LaTeX, MathML, and AsciiMath (prebuilt)") + (description "MathJax is a JavaScript display engine for LaTeX, MathML, +and AsciiMath notation that works in all modern browsers. It requires no +plugins or software to be installed on the browser. So the page author can +write web documents that include mathematics and be confident that readers will +be able to view it naturally and easily. + +The package is derived from not the true source but the built version of +MathJax 3 for distribution by upstream. This package should eventually be +replaced my a package built directly from the source at +https://github.com/mathjax/MathJax-src.") + (license license:asl2.0))) + (define-public js-respond (package (name "js-respond") -- 2.28.0
* gnu/packages/ebook.scm (calbre): Update to 4.22.0. Replace MathJax 2 input with newly required MathJax 3. --- gnu/packages/ebook.scm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index aab4155d3d..a434f56bc1 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -82,7 +82,7 @@ (define-public calibre (package (name "calibre") - (version "4.18.0") + (version "4.22.0") (source (origin (method url-fetch) @@ -91,7 +91,7 @@ version ".tar.xz")) (sha256 (base32 - "0w9pcfvskjh4v00vjw3i6hzrafy863pgsmmqdx4lffip3p856brw")) + "0d0wmd3ijk8px1d662igal4lfmpyzynfzs6ms1bb9nf42mq2pxai")) (modules '((guix build utils))) (snippet '(begin @@ -126,7 +126,7 @@ ("hunspell" ,hunspell) ("hyphen" ,hyphen) ("icu4c" ,icu4c) - ("js-mathjax" ,js-mathjax) + ("mathjax" ,mathjax-bin) ("libmtp" ,libmtp) ("libpng" ,libpng) ("libusb" ,libusb) @@ -243,8 +243,8 @@ (lambda* (#:key inputs #:allow-other-keys) (invoke "python2" "setup.py" "mathjax""--system-mathjax" "--path-to-mathjax" (string-append - (assoc-ref inputs "js-mathjax") - "/share/javascript/mathjax")) + (assoc-ref inputs "mathjax") + "/lib/node_modules/mathjax/es5")) (invoke "python2" "setup.py" "rapydscript"))) (add-after 'install 'install-man-pages (lambda* (#:key outputs #:allow-other-keys) -- 2.28.0
* gnu/packages/ebook.scm (calibre): [arguments]: Copy the wrap phase from Anki to wrap QTWEBENGINEPROCESS_PATH. This fixes the 'Could not find QtWebEngineProcess error' when opening a book with the ebook-viewer. --- gnu/packages/ebook.scm | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index a434f56bc1..31864a0786 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -165,7 +165,10 @@ ("qtwebengine" ,qtwebengine) ("sqlite" ,sqlite))) (arguments - `(#:python ,python-2 + `(#:modules ((guix build python-build-system) + (guix build utils) + (ice-9 match)) + #:python ,python-2 ;; Calibre is using setuptools by itself, but the setup.py is not ;; compatible with the shim wrapper (taken from pip) we are using. #:use-setuptools? #f @@ -252,6 +255,35 @@ "man-pages" (string-append (assoc-ref outputs "out") "/share/man")) #t)) + ;; wrap phase copied from anki package. + (add-after 'install 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin")) + ;; List of paths to the site-packages directories of Python + ;; library inputs. + (site-packages + (map (lambda (pyinput) + (string-append + (cdr pyinput) + "/lib/python2.7/site-packages")) + (filter (match-lambda + ((label . _) + (string-prefix? "python2-" label))) + inputs))) + (qtwebengineprocess + (string-append (assoc-ref inputs "qtwebengine") + "/lib/qt5/libexec/QtWebEngineProcess"))) + ;; The program fails to find the QtWebEngineProcess program, so + ;; we set QTWEBENGINEPROCESS_PATH to help it. PYTHONPATH is + ;; wrapped to avoid declaring Python libraries as propagated + ;; inputs. + (for-each (lambda (program) + (wrap-program program + `("QTWEBENGINEPROCESS_PATH" = + (,qtwebengineprocess)) + `("PYTHONPATH" = ,site-packages))) + (find-files bin "."))) + #t)) ;; The font TTF files are used in some miscellaneous tests, so we ;; unbundle them here to avoid patching the tests. (add-after 'install 'unbundle-font-liberation -- 2.28.0
* gnu/packages/ebook.scm (calibre): Update to 4.23.0. --- gnu/packages/ebook.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 31864a0786..72a0d3b22a 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -82,7 +82,7 @@ (define-public calibre (package (name "calibre") - (version "4.22.0") + (version "4.23.0") (source (origin (method url-fetch) @@ -91,7 +91,7 @@ version ".tar.xz")) (sha256 (base32 - "0d0wmd3ijk8px1d662igal4lfmpyzynfzs6ms1bb9nf42mq2pxai")) + "064mnmz2w4xa2kydh5vzhlgvmyzlwjhm2wm58vwkdqzh7i3m3phn")) (modules '((guix build utils))) (snippet '(begin -- 2.28.0
On Fri, Aug 21, 2020 at 07:20:14PM +1000, Brendan Tildesley wrote:
> * gnu/packages/ebook.scm (calibre): Update to 4.23.0.
Thanks! Can you send an updated patch series? I don't think we should
update to 4.22.0 and then immediately to 4.23.0.
[-- Attachment #1: Type: text/plain, Size: 115 bytes --] Calibre 4.23.0 was released. This just replaces the second patch. the others should still apply without conflict. [-- Attachment #2: 0002-gnu-calibre-Update-to-4.23.0.patch --] [-- Type: text/x-patch, Size: 1989 bytes --] From d3b70c4c2329abbe6d210b9993a99306d93c5f29 Mon Sep 17 00:00:00 2001 From: Brendan Tildesley <mail@brendan.scot> Date: Sun, 16 Aug 2020 16:16:19 +1000 Subject: [PATCH 2/3] gnu: calibre: Update to 4.23.0. * gnu/packages/ebook.scm (calbre): Update to 4.23.0. Replace MathJax 2 input with newly required MathJax 3. --- gnu/packages/ebook.scm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index aab4155d3d..f1698900f3 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -82,7 +82,7 @@ (define-public calibre (package (name "calibre") - (version "4.18.0") + (version "4.23.0") (source (origin (method url-fetch) @@ -91,7 +91,7 @@ version ".tar.xz")) (sha256 (base32 - "0w9pcfvskjh4v00vjw3i6hzrafy863pgsmmqdx4lffip3p856brw")) + "064mnmz2w4xa2kydh5vzhlgvmyzlwjhm2wm58vwkdqzh7i3m3phn")) (modules '((guix build utils))) (snippet '(begin @@ -126,7 +126,7 @@ ("hunspell" ,hunspell) ("hyphen" ,hyphen) ("icu4c" ,icu4c) - ("js-mathjax" ,js-mathjax) + ("mathjax" ,mathjax-bin) ("libmtp" ,libmtp) ("libpng" ,libpng) ("libusb" ,libusb) @@ -243,8 +243,8 @@ (lambda* (#:key inputs #:allow-other-keys) (invoke "python2" "setup.py" "mathjax""--system-mathjax" "--path-to-mathjax" (string-append - (assoc-ref inputs "js-mathjax") - "/share/javascript/mathjax")) + (assoc-ref inputs "mathjax") + "/lib/node_modules/mathjax/es5")) (invoke "python2" "setup.py" "rapydscript"))) (add-after 'install 'install-man-pages (lambda* (#:key outputs #:allow-other-keys) -- 2.28.0
[-- Attachment #1: Type: text/plain, Size: 1232 bytes --] On Sun, Aug 16, 2020 at 05:03:15PM +1000, Brendan Tildesley wrote: > --- > gnu/packages/ebook.scm | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm > index d290b19f5f..aab4155d3d 100644 > --- a/gnu/packages/ebook.scm > +++ b/gnu/packages/ebook.scm > @@ -2,7 +2,7 @@ > ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr> > ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il> > ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> > -;;; Copyright © 2017, 2019 Brendan Tildesley <mail@brendan.scot> > +;;; Copyright © 2017, 2019, 2020 Brendan Tildesley <mail@brendan.scot> > ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> > ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> > ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> > @@ -28,7 +28,6 @@ > #:use-module (guix download) > #:use-module (guix git-download) > #:use-module (guix build-system gnu) > - #:use-module (gnu packages) > #:use-module (guix build-system python) > #:use-module (gnu packages) > #:use-module (gnu packages compression) I pushed this patch as 29f61501f309a719be91a47fd43872437435cd1a [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]
On Sun, Aug 16, 2020 at 05:03:16PM +1000, Brendan Tildesley wrote: > * gnu/packages/javascript.scm: (mathjax-bin): New variable > + (description "MathJax is a JavaScript display engine for LaTeX, MathML, > +and AsciiMath notation that works in all modern browsers. It requires no > +plugins or software to be installed on the browser. So the page author can > +write web documents that include mathematics and be confident that readers will > +be able to view it naturally and easily. > + > +The package is derived from not the true source but the built version of > +MathJax 3 for distribution by upstream. This package should eventually be > +replaced my a package built directly from the source at > +https://github.com/mathjax/MathJax-src.") I'm not really familiar with the state of JavaScript in Guix. However, Guix generally only includes packages built from source. Is this a case where the package has bene "minified"? Or, in what way is not built from source?
[-- Attachment #1: Type: text/plain, Size: 493 bytes --] >> +The package is derived from not the true source but the built version of >> +MathJax 3 for distribution by upstream. This package should eventually be >> +replaced my a package built directly from the source at >> +https://github.com/mathjax/MathJax-src.") > > I'm not really familiar with the state of JavaScript in Guix. However, > Guix generally only includes packages built from source. If I understand correctly, we already have a mathjax package built from source. See js-mathjax. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 487 bytes --]
[-- Attachment #1: Type: text/plain, Size: 1154 bytes --] On August 24, 2020 2:25:16 PM GMT+10:00, Arun Isaac <arunisaac@systemreboot.net> wrote: > >>> +The package is derived from not the true source but the built >version of >>> +MathJax 3 for distribution by upstream. This package should >eventually be >>> +replaced my a package built directly from the source at >>> +https://github.com/mathjax/MathJax-src.") >> >> I'm not really familiar with the state of JavaScript in Guix. >However, >> Guix generally only includes packages built from source. > >If I understand correctly, we already have a mathjax package built from >source. See js-mathjax. Mathjax 3 is a complete rewrite of mathjax 2. I had thought js-mathjax was just the component files too and not truely built from source. Maybe I was wrong. Currently, building this from the true source requires a huge number of js packages and we haven't got a npm importer and full JavaScript bootstrap yet so I wasn't sure what to do. If you like we can ignore this and I can modify calibre to disable mathjax for now since I don't think it works with the old mathjax 2. I would like to work on getting more JavaScript in to guix properly [-- Attachment #2: Type: text/html, Size: 1664 bytes --]
[-- Attachment #1: Type: text/plain, Size: 947 bytes --] > I had thought js-mathjax was just the component files too and not > truely built from source. Maybe I was wrong. Currently, building this > from the true source requires a huge number of js packages and we > haven't got a npm importer and full JavaScript bootstrap yet so I > wasn't sure what to do. True. js-mathjax is not truly built from source. A true source build will properly depend on a huge number of other js packaces. js-mathjax only redoes the minification step. In light of this, perhaps we should remove js-mathjax from Guix. But, I'm not sure. > If you like we can ignore this and I can modify calibre to disable > mathjax for now since I don't think it works with the old mathjax 2. I > would like to work on getting more JavaScript in to guix properly Yes, disabling mathjax for calibre is a good way to go if the functionality is not too critical. But, I don't know much about calibre. So, someone else should take a call. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 483 bytes --]
[-- Attachment #1: Type: text/plain, Size: 1078 bytes --] On August 24, 2020 4:44:37 PM GMT+10:00, Arun Isaac <arunisaac@systemreboot.net> wrote: > >> I had thought js-mathjax was just the component files too and not >> truely built from source. Maybe I was wrong. Currently, building this >> from the true source requires a huge number of js packages and we >> haven't got a npm importer and full JavaScript bootstrap yet so I >> wasn't sure what to do. > >True. js-mathjax is not truly built from source. A true source build >will properly depend on a huge number of other js packaces. js-mathjax >only redoes the minification step. In light of this, perhaps we should >remove js-mathjax from Guix. But, I'm not sure. > >> If you like we can ignore this and I can modify calibre to disable >> mathjax for now since I don't think it works with the old mathjax 2. >I >> would like to work on getting more JavaScript in to guix properly > >Yes, disabling mathjax for calibre is a good way to go if the >functionality is not too critical. But, I don't know much about >calibre. So, someone else should take a call. [-- Attachment #2: Type: text/html, Size: 1599 bytes --]
[-- Attachment #1: Type: text/plain, Size: 1398 bytes --] On August 24, 2020 4:44:37 PM GMT+10:00, Arun Isaac <arunisaac@systemreboot.net> wrote: > >> I had thought js-mathjax was just the component files too and not >> truely built from source. Maybe I was wrong. Currently, building this >> from the true source requires a huge number of js packages and we >> haven't got a npm importer and full JavaScript bootstrap yet so I >> wasn't sure what to do. > >True. js-mathjax is not truly built from source. A true source build >will properly depend on a huge number of other js packaces. js-mathjax >only redoes the minification step. In light of this, perhaps we should >remove js-mathjax from Guix. But, I'm not sure. > >> If you like we can ignore this and I can modify calibre to disable >> mathjax for now since I don't think it works with the old mathjax 2. >I >> would like to work on getting more JavaScript in to guix properly > >Yes, disabling mathjax for calibre is a good way to go if the >functionality is not too critical. But, I don't know much about >calibre. So, someone else should take a call. Its just for rendering math in the eBook-viewer for books that include it. It shouldn't be essential. The reason I felt OK adding it is because its not like its actually proprietary, its just we haven't gotten around to integrating JavaScript into guix yet fully, and it doesn't look like that will happen any time soon. [-- Attachment #2: Type: text/html, Size: 1919 bytes --]
[-- Attachment #1: Type: text/plain, Size: 98 bytes --] This replaces the second patch, renaming mathjax-bin to mathjax-3 since its not actually binary. [-- Attachment #2: 0002-gnu-Add-mathjax-3.patch --] [-- Type: text/x-patch, Size: 2822 bytes --] From 77e2312306c6684cdfc72f90e6be1a008e5e676f Mon Sep 17 00:00:00 2001 From: Brendan Tildesley <mail@brendan.scot> Date: Sun, 16 Aug 2020 16:14:02 +1000 Subject: [PATCH 2/4] gnu: Add mathjax-3. * gnu/packages/javascript.scm: (mathjax-3): New variable. --- gnu/packages/javascript.scm | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index d5ff5bffee..57e8302094 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2020 Brendan Tildesley <mail@brendan.scot> ;;; ;;; This file is part of GNU Guix. ;;; @@ -128,6 +129,45 @@ plugins or software to be installed on the browser. So the page author can write web documents that include mathematics and be confident that readers will be able to view it naturally and easily."))) +(define-public mathjax-3 + (package + (name "mathjax") + (version "3.0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mathjax/MathJax") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1zd0chn0cjahi28qv3nzshwljz2hgmj6lizyvvd8qs89gsx0z3h9")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (let ((install-directory (string-append %output "/lib/node_modules/mathjax"))) + (mkdir-p install-directory) + (copy-recursively (string-append (assoc-ref %build-inputs "source")) + install-directory))))) + (home-page "https://www.mathjax.org/") + (synopsis "JavaScript display engine for LaTeX, MathML, and AsciiMath (prebuilt)") + (description "MathJax is a JavaScript display engine for LaTeX, MathML, +and AsciiMath notation that works in all modern browsers. It requires no +plugins or software to be installed on the browser. So the page author can +write web documents that include mathematics and be confident that readers will +be able to view it naturally and easily. + +The package is derived from not the true source but the built version of +MathJax 3 for distribution by upstream. This package should eventually be +replaced my a package built directly from the source at +https://github.com/mathjax/MathJax-src.") + (license license:asl2.0))) + (define-public js-respond (package (name "js-respond") -- 2.28.0
Hello there! Arun, Leo, what’s the status of this patch series? https://issues.guix.gnu.org/42885 Can it be applied? Brendan, to make it clear what the latest version of the patch series is (next time), consider adding a “v2” etc. suffix to the subject, like so: git format-patch --subject-prefix="PATCH v2" … Thanks, Ludo’.
Hello,
On Fri, Sep 04, 2020 at 11:02:46AM +0200, Ludovic Courtès wrote:
> Arun, Leo, what’s the status of this patch series?
> https://issues.guix.gnu.org/42885
why is the variable called mathjax-bin? Should it not be mathjax?
By the way, there is a version 3.1.0 now.
Andreas
Arun Isaac <arunisaac@systemreboot.net> writes:
>> I had thought js-mathjax was just the component files too and not
>> truely built from source. Maybe I was wrong. Currently, building this
>> from the true source requires a huge number of js packages and we
>> haven't got a npm importer and full JavaScript bootstrap yet so I
>> wasn't sure what to do.
>
> True. js-mathjax is not truly built from source. A true source build
> will properly depend on a huge number of other js packaces. js-mathjax
> only redoes the minification step. In light of this, perhaps we should
> remove js-mathjax from Guix. But, I'm not sure.
js-mathjax does not contain minified JavaScript. The code is in
editable and readable form although it is not in the form that upstream
uses for development. In this case I still consider it to be actual
source code, because for the purposes of Guix this is the preferred
format (given that we have no way of building the sources in the format
that is used by upstream).
--
Ricardo
> Arun, Leo, what’s the status of this patch series? > > https://issues.guix.gnu.org/42885 > > Can it be applied? Ricardo has clarified that we may consider the existing js-mathjax 2.7.2 package to have been built from source even though it isn't the form upstream uses for development. No problems there. But, like Brendan said, mathjax 3 is quite a different beast. With mathjax 2, the source was in javascript, and our build system had merely to minify it. But mathjax 3 is written in typescript that gets compiled into javascript and then combined into "web component files" (this is the first I'm hearing of web components and I'm not entirely clear what they are). Since we don't have a typescript build system, packaging mathjax 3 may be non-trivial. So, we should proceed with updating calibre without mathjax support. > Brendan, to make it clear what the latest version of the patch series is > (next time), consider adding a “v2” etc. suffix to the subject, like so: > > git format-patch --subject-prefix="PATCH v2" … You could also do the slightly shorter git format-patch -v2 ... Cheers!
Arun Isaac <arunisaac@systemreboot.net> writes:
>> Arun, Leo, what’s the status of this patch series?
>>
>> https://issues.guix.gnu.org/42885
>>
>> Can it be applied?
>
> Ricardo has clarified that we may consider the existing js-mathjax 2.7.2
> package to have been built from source even though it isn't the form
> upstream uses for development. No problems there.
>
> But, like Brendan said, mathjax 3 is quite a different beast. With
> mathjax 2, the source was in javascript, and our build system had merely
> to minify it. But mathjax 3 is written in typescript that gets compiled
> into javascript and then combined into "web component files" (this is
> the first I'm hearing of web components and I'm not entirely clear what
> they are). Since we don't have a typescript build system, packaging
> mathjax 3 may be non-trivial. So, we should proceed with updating
> calibre without mathjax support.
There may be a way to transpile the TypeScript sources with swc, a
babel-like transpiler with TypeScript support; it’s written in Rust, so
there may be a way to work around the JavaScript packaging problem.
--
Ricardo
[-- Attachment #1.1: Type: text/plain, Size: 1034 bytes --] Hey there Mr. Tildesley, Without knowing that this was going on, I worked on, and sent a patch to fix the QtWebEngineProcess issue yesterday: https://issues.guix.gnu.org/43249 My patch also fixes this issue, but without appending things to PYTHONPATH. And it works just the same. Since you say, sir, that you copied the wrap-phase from Anki to fix the issue, and I manually poked around with things, grepping the output of `env` and stuff to deal with it - I wonder if I have stumbled upon the bare minimum changes necessary to resolve this issue. I would like to request that you, and other esteemed contributors, test my patch. And, if it seems good to you, I would like to request that you incorporate my patch in this change set. Attached are the wrappers for `ebook-viewer`: with your patch applied, and with my patch applied, for anyone to compare. Please do let me know if there are any insufficiencies in my solution, or if it does not work for anybody else (I did use --pure option with `guix environment`). Thank you [-- Attachment #1.2: Type: text/html, Size: 1322 bytes --] [-- Attachment #2: ebook-viewer_MrTildesley --] [-- Type: application/octet-stream, Size: 7547 bytes --] #!/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin/bash export QTWEBENGINEPROCESS_PATH="/gnu/store/j03dhjpfz76bakz17vngvrf1pmsa6z3i-qtwebengine-5.14.2/lib/qt5/libexec/QtWebEngineProcess" export PYTHONPATH="/gnu/store/5sh894ar0dwzx9ir1p8v2zgv6yyvxjjr-python2-flake8-3.8.3/lib/python2.7/site-packages:/gnu/store/4rx9sshrj9gjh2zw5h34klf893qyxmfg-python2-apsw-3.31.1-r1/lib/python2.7/site-packages:/gnu/store/1552mhnfqk6iw6hlwar878klcrqsc6g7-python2-beautifulsoup4-4.9.1/lib/python2.7/site-packages:/gnu/store/sp1szsg6iwbfc7ffkxg8339r677xyv7j-python2-chardet-3.0.4/lib/python2.7/site-packages:/gnu/store/4q0p868nnwc3rkmms2lh9yk6gby87w7w-python2-cssselect-1.1.0/lib/python2.7/site-packages:/gnu/store/9335jjl61pai0wvad82qp433s51qc75s-python2-css-parser-1.0.4/lib/python2.7/site-packages:/gnu/store/10w4shanr7rpbg5mi124bva4s506gh2g-python2-dateutil-2.8.1/lib/python2.7/site-packages:/gnu/store/kwpha09pmjc511brswsnh4ddix2l6jn1-python2-dbus-1.2.16/lib/python2.7/site-packages:/gnu/store/f9pn5zxk2i6iafmvy663xzlndjizbgla-python2-dnspython-1.16.0/lib/python2.7/site-packages:/gnu/store/kmw3aibw14h1j65dd4pm7yazmb6dh5rs-python2-dukpy-0.3/lib/python2.7/site-packages:/gnu/store/z7yjrhk6dlqm286adlni8k4gm1agws7r-python2-feedparser-5.2.1/lib/python2.7/site-packages:/gnu/store/fqrp9r7jp6qx4hkmbmx21df3lq6zkssc-python2-html2text-2019.8.11/lib/python2.7/site-packages:/gnu/store/dlpwq143iqyf0whh70wgnyzww05w1fwz-python2-html5-parser-0.4.9/lib/python2.7/site-packages:/gnu/store/asvwznls5cm91mxq24rwfv4jixf6rm31-python2-html5lib-1.0.1/lib/python2.7/site-packages:/gnu/store/rjphpjgh1mqrh5md8bdvcysza5vr923s-python2-lxml-4.4.2/lib/python2.7/site-packages:/gnu/store/nhlclna1lfjapw2bfmz0c7lpv9hr011q-python2-markdown-3.1.1/lib/python2.7/site-packages:/gnu/store/p2ns0jcgvq3m5scv1khmpb5zhflx8sp7-python2-mechanize-0.4.5/lib/python2.7/site-packages:/gnu/store/1ycfggk9fjasik1k4w34fj72g0lwa61j-python2-msgpack-1.0.0/lib/python2.7/site-packages:/gnu/store/gx4hbmpyqjkqr2d2a3k7jr0xd6678k09-python2-netifaces-0.10.9/lib/python2.7/site-packages:/gnu/store/gi8gy8xagj1w4749vf0d7flsd6ivi08j-python2-odfpy-1.4.1/lib/python2.7/site-packages:/gnu/store/m7wc31yc9jq1ya4wwywly791gmkgkdg3-python2-pillow-6.2.1/lib/python2.7/site-packages:/gnu/store/zd1jkgyd9h9syn0nrz6si0m38f4fqmwz-python2-psutil-5.7.2/lib/python2.7/site-packages:/gnu/store/99kgpamqbwdlwv5rnbia111v7sq0mxhi-python2-pygments-2.5.2/lib/python2.7/site-packages:/gnu/store/cbrmckf70vg5xd3br1l5i5rgdmjqlkav-python2-pyqtwebengine-5.14.0/lib/python2.7/site-packages:/gnu/store/szdbpgia5i05kgnzj4jav2js2q9nsax8-python2-pyqt-5.14.2/lib/python2.7/site-packages:/gnu/store/x9yf8hj875ca55g9ddk7x0cmkipzsc3n-python2-sip-4.19.22/lib/python2.7/site-packages:/gnu/store/mdg1q4mgc0plqa044jl96cmbivmzxgpc-python2-regex-2020.6.8/lib/python2.7/site-packages:/gnu/store/7vhmdrjny5cw9pjki8lvd67fgjw0a670-python2-typing-3.7.4.3/lib/python2.7/site-packages:/gnu/store/mzbcm1ix83k0rwkivcpry7pjr7qx5i2x-python2-functools32-3.2.3-2/lib/python2.7/site-packages:/gnu/store/k1pbrq8s6kv0qxjkkj58qmwfymqmi054-python2-enum34-1.1.6/lib/python2.7/site-packages:/gnu/store/gzwcn4kgvz497za5dcnpl0lhffmn3ljl-python2-configparser-4.0.2/lib/python2.7/site-packages:/gnu/store/kzcnk81hyg9kj510hff5cksz2rfpb1j8-python2-backports-functools-lru-cache-1.6.1/lib/python2.7/site-packages" export PYTHONPATH="/gnu/store/js6i40h36cgj0iwviwi4shjs71pg26hv-calibre-4.18.0/lib/python2.7/site-packages:/gnu/store/sd278fsdfx5hjrcgncflnp9qq4l42p1c-python2-2.7.17/lib/python2.7/site-packages:/gnu/store/5sh894ar0dwzx9ir1p8v2zgv6yyvxjjr-python2-flake8-3.8.3/lib/python2.7/site-packages:/gnu/store/4rx9sshrj9gjh2zw5h34klf893qyxmfg-python2-apsw-3.31.1-r1/lib/python2.7/site-packages:/gnu/store/1552mhnfqk6iw6hlwar878klcrqsc6g7-python2-beautifulsoup4-4.9.1/lib/python2.7/site-packages:/gnu/store/sp1szsg6iwbfc7ffkxg8339r677xyv7j-python2-chardet-3.0.4/lib/python2.7/site-packages:/gnu/store/4q0p868nnwc3rkmms2lh9yk6gby87w7w-python2-cssselect-1.1.0/lib/python2.7/site-packages:/gnu/store/9335jjl61pai0wvad82qp433s51qc75s-python2-css-parser-1.0.4/lib/python2.7/site-packages:/gnu/store/10w4shanr7rpbg5mi124bva4s506gh2g-python2-dateutil-2.8.1/lib/python2.7/site-packages:/gnu/store/kwpha09pmjc511brswsnh4ddix2l6jn1-python2-dbus-1.2.16/lib/python2.7/site-packages:/gnu/store/f9pn5zxk2i6iafmvy663xzlndjizbgla-python2-dnspython-1.16.0/lib/python2.7/site-packages:/gnu/store/kmw3aibw14h1j65dd4pm7yazmb6dh5rs-python2-dukpy-0.3/lib/python2.7/site-packages:/gnu/store/z7yjrhk6dlqm286adlni8k4gm1agws7r-python2-feedparser-5.2.1/lib/python2.7/site-packages:/gnu/store/fqrp9r7jp6qx4hkmbmx21df3lq6zkssc-python2-html2text-2019.8.11/lib/python2.7/site-packages:/gnu/store/dlpwq143iqyf0whh70wgnyzww05w1fwz-python2-html5-parser-0.4.9/lib/python2.7/site-packages:/gnu/store/asvwznls5cm91mxq24rwfv4jixf6rm31-python2-html5lib-1.0.1/lib/python2.7/site-packages:/gnu/store/rjphpjgh1mqrh5md8bdvcysza5vr923s-python2-lxml-4.4.2/lib/python2.7/site-packages:/gnu/store/nhlclna1lfjapw2bfmz0c7lpv9hr011q-python2-markdown-3.1.1/lib/python2.7/site-packages:/gnu/store/p2ns0jcgvq3m5scv1khmpb5zhflx8sp7-python2-mechanize-0.4.5/lib/python2.7/site-packages:/gnu/store/1ycfggk9fjasik1k4w34fj72g0lwa61j-python2-msgpack-1.0.0/lib/python2.7/site-packages:/gnu/store/gx4hbmpyqjkqr2d2a3k7jr0xd6678k09-python2-netifaces-0.10.9/lib/python2.7/site-packages:/gnu/store/gi8gy8xagj1w4749vf0d7flsd6ivi08j-python2-odfpy-1.4.1/lib/python2.7/site-packages:/gnu/store/m7wc31yc9jq1ya4wwywly791gmkgkdg3-python2-pillow-6.2.1/lib/python2.7/site-packages:/gnu/store/zd1jkgyd9h9syn0nrz6si0m38f4fqmwz-python2-psutil-5.7.2/lib/python2.7/site-packages:/gnu/store/99kgpamqbwdlwv5rnbia111v7sq0mxhi-python2-pygments-2.5.2/lib/python2.7/site-packages:/gnu/store/cbrmckf70vg5xd3br1l5i5rgdmjqlkav-python2-pyqtwebengine-5.14.0/lib/python2.7/site-packages:/gnu/store/szdbpgia5i05kgnzj4jav2js2q9nsax8-python2-pyqt-5.14.2/lib/python2.7/site-packages:/gnu/store/x9yf8hj875ca55g9ddk7x0cmkipzsc3n-python2-sip-4.19.22/lib/python2.7/site-packages:/gnu/store/mdg1q4mgc0plqa044jl96cmbivmzxgpc-python2-regex-2020.6.8/lib/python2.7/site-packages:/gnu/store/28hqf5rhn5cbsygrm7mdpy4jypyd95jc-python2-mccabe-0.6.1/lib/python2.7/site-packages:/gnu/store/57sr15na1p9v25qv7scpsrafnpz77qwz-python2-pyflakes-2.2.0/lib/python2.7/site-packages:/gnu/store/yi1rvh08nppzn2q63dn3122d61nq8yaj-python2-entrypoints-0.3/lib/python2.7/site-packages:/gnu/store/drrf4cpq9k0ypb0lpa7zqskz9a9043xa-python2-pycodestyle-2.6.0/lib/python2.7/site-packages:/gnu/store/7vhmdrjny5cw9pjki8lvd67fgjw0a670-python2-typing-3.7.4.3/lib/python2.7/site-packages:/gnu/store/mzbcm1ix83k0rwkivcpry7pjr7qx5i2x-python2-functools32-3.2.3-2/lib/python2.7/site-packages:/gnu/store/k1pbrq8s6kv0qxjkkj58qmwfymqmi054-python2-enum34-1.1.6/lib/python2.7/site-packages:/gnu/store/gzwcn4kgvz497za5dcnpl0lhffmn3ljl-python2-configparser-4.0.2/lib/python2.7/site-packages:/gnu/store/1qnbq1vd8iihv9mcj9jk8pxdxpwgv3bj-python2-soupsieve-1.9.6/lib/python2.7/site-packages:/gnu/store/lr88qfwz3lfwy2ygqbmnhc193d7m2k7l-python2-six-1.14.0/lib/python2.7/site-packages:/gnu/store/xjjsr0iz35njjkzbvqqv6ywnnsi96rdj-python2-webencodings-0.5.1/lib/python2.7/site-packages:/gnu/store/v0h4qbmrbfwci60h0frnvilcy3mpygg3-python2-defusedxml-0.6.0/lib/python2.7/site-packages:/gnu/store/kbkvdfjc688vhpb4fvr5f7gx2nyrrv1c-python2-olefile-0.46/lib/python2.7/site-packages:/gnu/store/kzcnk81hyg9kj510hff5cksz2rfpb1j8-python2-backports-functools-lru-cache-1.6.1/lib/python2.7/site-packages${PYTHONPATH:+:}$PYTHONPATH" exec -a "$0" "/gnu/store/js6i40h36cgj0iwviwi4shjs71pg26hv-calibre-4.18.0/bin/.ebook-viewer-real" "$@" [-- Attachment #3: ebook-viewer_peanutbutterandcrackers --] [-- Type: application/octet-stream, Size: 4457 bytes --] #!/gnu/store/pwcp239kjf7lnj5i4lkdzcfcxwcfyk72-bash-minimal-5.0.16/bin/bash export PYTHONPATH="/gnu/store/1k9fgjx7hmms9fivz80d9rj70c67x4w5-calibre-4.18.0/lib/python2.7/site-packages:/gnu/store/sd278fsdfx5hjrcgncflnp9qq4l42p1c-python2-2.7.17/lib/python2.7/site-packages:/gnu/store/5sh894ar0dwzx9ir1p8v2zgv6yyvxjjr-python2-flake8-3.8.3/lib/python2.7/site-packages:/gnu/store/4rx9sshrj9gjh2zw5h34klf893qyxmfg-python2-apsw-3.31.1-r1/lib/python2.7/site-packages:/gnu/store/1552mhnfqk6iw6hlwar878klcrqsc6g7-python2-beautifulsoup4-4.9.1/lib/python2.7/site-packages:/gnu/store/sp1szsg6iwbfc7ffkxg8339r677xyv7j-python2-chardet-3.0.4/lib/python2.7/site-packages:/gnu/store/4q0p868nnwc3rkmms2lh9yk6gby87w7w-python2-cssselect-1.1.0/lib/python2.7/site-packages:/gnu/store/9335jjl61pai0wvad82qp433s51qc75s-python2-css-parser-1.0.4/lib/python2.7/site-packages:/gnu/store/10w4shanr7rpbg5mi124bva4s506gh2g-python2-dateutil-2.8.1/lib/python2.7/site-packages:/gnu/store/kwpha09pmjc511brswsnh4ddix2l6jn1-python2-dbus-1.2.16/lib/python2.7/site-packages:/gnu/store/f9pn5zxk2i6iafmvy663xzlndjizbgla-python2-dnspython-1.16.0/lib/python2.7/site-packages:/gnu/store/kmw3aibw14h1j65dd4pm7yazmb6dh5rs-python2-dukpy-0.3/lib/python2.7/site-packages:/gnu/store/z7yjrhk6dlqm286adlni8k4gm1agws7r-python2-feedparser-5.2.1/lib/python2.7/site-packages:/gnu/store/fqrp9r7jp6qx4hkmbmx21df3lq6zkssc-python2-html2text-2019.8.11/lib/python2.7/site-packages:/gnu/store/dlpwq143iqyf0whh70wgnyzww05w1fwz-python2-html5-parser-0.4.9/lib/python2.7/site-packages:/gnu/store/asvwznls5cm91mxq24rwfv4jixf6rm31-python2-html5lib-1.0.1/lib/python2.7/site-packages:/gnu/store/rjphpjgh1mqrh5md8bdvcysza5vr923s-python2-lxml-4.4.2/lib/python2.7/site-packages:/gnu/store/nhlclna1lfjapw2bfmz0c7lpv9hr011q-python2-markdown-3.1.1/lib/python2.7/site-packages:/gnu/store/p2ns0jcgvq3m5scv1khmpb5zhflx8sp7-python2-mechanize-0.4.5/lib/python2.7/site-packages:/gnu/store/1ycfggk9fjasik1k4w34fj72g0lwa61j-python2-msgpack-1.0.0/lib/python2.7/site-packages:/gnu/store/gx4hbmpyqjkqr2d2a3k7jr0xd6678k09-python2-netifaces-0.10.9/lib/python2.7/site-packages:/gnu/store/gi8gy8xagj1w4749vf0d7flsd6ivi08j-python2-odfpy-1.4.1/lib/python2.7/site-packages:/gnu/store/m7wc31yc9jq1ya4wwywly791gmkgkdg3-python2-pillow-6.2.1/lib/python2.7/site-packages:/gnu/store/zd1jkgyd9h9syn0nrz6si0m38f4fqmwz-python2-psutil-5.7.2/lib/python2.7/site-packages:/gnu/store/99kgpamqbwdlwv5rnbia111v7sq0mxhi-python2-pygments-2.5.2/lib/python2.7/site-packages:/gnu/store/cbrmckf70vg5xd3br1l5i5rgdmjqlkav-python2-pyqtwebengine-5.14.0/lib/python2.7/site-packages:/gnu/store/szdbpgia5i05kgnzj4jav2js2q9nsax8-python2-pyqt-5.14.2/lib/python2.7/site-packages:/gnu/store/x9yf8hj875ca55g9ddk7x0cmkipzsc3n-python2-sip-4.19.22/lib/python2.7/site-packages:/gnu/store/mdg1q4mgc0plqa044jl96cmbivmzxgpc-python2-regex-2020.6.8/lib/python2.7/site-packages:/gnu/store/28hqf5rhn5cbsygrm7mdpy4jypyd95jc-python2-mccabe-0.6.1/lib/python2.7/site-packages:/gnu/store/57sr15na1p9v25qv7scpsrafnpz77qwz-python2-pyflakes-2.2.0/lib/python2.7/site-packages:/gnu/store/yi1rvh08nppzn2q63dn3122d61nq8yaj-python2-entrypoints-0.3/lib/python2.7/site-packages:/gnu/store/drrf4cpq9k0ypb0lpa7zqskz9a9043xa-python2-pycodestyle-2.6.0/lib/python2.7/site-packages:/gnu/store/7vhmdrjny5cw9pjki8lvd67fgjw0a670-python2-typing-3.7.4.3/lib/python2.7/site-packages:/gnu/store/mzbcm1ix83k0rwkivcpry7pjr7qx5i2x-python2-functools32-3.2.3-2/lib/python2.7/site-packages:/gnu/store/k1pbrq8s6kv0qxjkkj58qmwfymqmi054-python2-enum34-1.1.6/lib/python2.7/site-packages:/gnu/store/gzwcn4kgvz497za5dcnpl0lhffmn3ljl-python2-configparser-4.0.2/lib/python2.7/site-packages:/gnu/store/1qnbq1vd8iihv9mcj9jk8pxdxpwgv3bj-python2-soupsieve-1.9.6/lib/python2.7/site-packages:/gnu/store/lr88qfwz3lfwy2ygqbmnhc193d7m2k7l-python2-six-1.14.0/lib/python2.7/site-packages:/gnu/store/xjjsr0iz35njjkzbvqqv6ywnnsi96rdj-python2-webencodings-0.5.1/lib/python2.7/site-packages:/gnu/store/v0h4qbmrbfwci60h0frnvilcy3mpygg3-python2-defusedxml-0.6.0/lib/python2.7/site-packages:/gnu/store/kbkvdfjc688vhpb4fvr5f7gx2nyrrv1c-python2-olefile-0.46/lib/python2.7/site-packages:/gnu/store/kzcnk81hyg9kj510hff5cksz2rfpb1j8-python2-backports-functools-lru-cache-1.6.1/lib/python2.7/site-packages${PYTHONPATH:+:}$PYTHONPATH" export QTWEBENGINEPROCESS_PATH="/gnu/store/j03dhjpfz76bakz17vngvrf1pmsa6z3i-qtwebengine-5.14.2/lib/qt5/libexec/QtWebEngineProcess" exec -a "$0" "/gnu/store/1k9fgjx7hmms9fivz80d9rj70c67x4w5-calibre-4.18.0/bin/.ebook-viewer-real" "$@"
[-- Attachment #1: Type: text/plain, Size: 1436 bytes --] I just realized that the PYTHONPATH set by the default %standard-phase 'wrap of python-build-environment is (most likely) a superset of the manual PYTHONPATH set by the custom phase 'wrap phase added after 'install in patch no. 4. As such, perhaps it is redundant, too? On Mon, Sep 7, 2020 at 8:56 AM Prafulla Giri <pratheblackdiamond@gmail.com> wrote: > Hey there Mr. Tildesley, > > Without knowing that this was going on, I worked on, and sent a patch to > fix the QtWebEngineProcess issue yesterday: > https://issues.guix.gnu.org/43249 > > My patch also fixes this issue, but without appending things to > PYTHONPATH. And it works just the same. > > Since you say, sir, that you copied the wrap-phase from Anki to fix the > issue, and I manually poked around with things, grepping the output of > `env` and stuff to deal with it - I wonder if I have stumbled upon the bare > minimum changes necessary to resolve this issue. > > I would like to request that you, and other esteemed contributors, test my > patch. And, if it seems good to you, I would like to request that you > incorporate my patch in this change set. > > Attached are the wrappers for `ebook-viewer`: with your patch applied, and > with my patch applied, for anyone to compare. > > Please do let me know if there are any insufficiencies in my solution, or > if it does not work for anybody else (I did use --pure option with `guix > environment`). > > Thank you > [-- Attachment #2: Type: text/html, Size: 1982 bytes --]
[-- Attachment #1: Type: text/plain, Size: 394 bytes --] > There may be a way to transpile the TypeScript sources with swc, a > babel-like transpiler with TypeScript support; it’s written in Rust, so > there may be a way to work around the JavaScript packaging problem. I am packaging swc for Guix. I'm running into some unstable feature issues with Rust, but otherwise things are going well. I will report on further progress by tonight. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --]
Arun Isaac <arunisaac@systemreboot.net> writes:
>> There may be a way to transpile the TypeScript sources with swc, a
>> babel-like transpiler with TypeScript support; it’s written in Rust, so
>> there may be a way to work around the JavaScript packaging problem.
>
> I am packaging swc for Guix. I'm running into some unstable feature
> issues with Rust, but otherwise things are going well. I will report on
> further progress by tonight.
Oh, me too.
I’m currently at rust-napi@0.4.
--
Ricardo
[-- Attachment #1: Type: text/plain, Size: 417 bytes --] >> I am packaging swc for Guix. I'm running into some unstable feature >> issues with Rust, but otherwise things are going well. I will report on >> further progress by tonight. > > Oh, me too. Oops, hopefully we haven't duplicated too much work. Packaging rust programs is a much deeper rabbit hole than I imagined! But, I'm making progress, and will hopefully be done given some more time. Will keep you posted. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --]
[-- Attachment #1: Type: text/plain, Size: 435 bytes --] Hi, I have finished packaging swc. I am now mid-way through cleaning up and committing my changes. Considering the number of commits, that alone might take a couple more days. I will push my changes to a wip-swc branch and let you know. But, I also have some bad news. swc is not entirely written in rust. Its CLI, swc-cli, is a separate package and uses node. So, packaging that may be yet another deep rabbit hole. Regards, Arun [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --]
Hi Arun, > I have finished packaging swc. I am now mid-way through cleaning up and > committing my changes. Considering the number of commits, that alone > might take a couple more days. I will push my changes to a wip-swc > branch and let you know. Wow, thank you very much! > But, I also have some bad news. swc is not entirely written in rust. Its > CLI, swc-cli, is a separate package and uses node. So, packaging that > may be yet another deep rabbit hole. I expected as much, but I was hoping that we could invoke it some other way, much like we invoke uglify-js (the Common Lisp package) with a little custom wrapper. -- Ricardo
I have pushed my commits to a new wip-swc branch. A few questions and discussion points below. Considering that only the source of rust dependencies is used, should those packages successfully build on their own? In the wip-swc branch, I have only verified that the rust-swc package builds. There may be some dependencies which fail to build on their own. Related to the previous question, what is the purpose of the #:skip-build? argument? Should it be set to #t for all dependency packages? While working on this patchset, I hacked the crate importer a bit to make my life easier. In particular, I modified it to correctly append the version to the package variable name. This requires a slightly more general recursive importer than we have currently. The current recursive importer assumes that we will package only one version for each package. That assumption does not stand for rust crates. We also don't always need to put the minor version into the package variable name. For example, rust-syn-1 is sufficient. rust-syn-1.0 is not required. The exact rules follow from https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html I improved the crate importer to better understand these version requirement rules and put packages of the correct version into the #:cargo-inputs and #:cargo-development-inputs fields. I will send patches for these crate importer improvements separately after this patchset is approved. We also need some automated way to "garbage collect" old versions of packages in crates-io.scm. crates-io.scm is getting quite large, and I suspect many packages in there are old versions that are not really necessary. > I expected as much, but I was hoping that we could invoke it some other > way, much like we invoke uglify-js (the Common Lisp package) with a > little custom wrapper. That is a good idea. But, I have never written any rust. Perhaps someone who is more familiar with rust should write it.
On 21/9/20 8:36 pm, Arun Isaac wrote: > ... > While working on this patchset, I hacked the crate importer a bit to > make my life easier. In particular, I modified it to correctly append > the version to the package variable name. This requires a slightly more > general recursive importer than we have currently. The current recursive > importer assumes that we will package only one version for each > package. That assumption does not stand for rust crates. Are you aware of this importer: https://issues.guix.gnu.org/issue/38408/ ?
[-- Attachment #1: Type: text/plain, Size: 299 bytes --] >> While working on this patchset, I hacked the crate importer a bit to >> make my life easier. > Are you aware of this importer: https://issues.guix.gnu.org/issue/38408/ ? Oh, I wasn't aware of this importer. It seems to address my concerns. So, I'll just wait for it to get merged into master. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --]
BTW, is it possible for your wip-swc branch to be merged into master? I found my self building a package of my own starting from this branch because it includes the rust packages I needed. Is there any reason it can't be done? It would be convenient for me at least.
[-- Attachment #1: Type: text/plain, Size: 194 bytes --] > BTW, is it possible for your wip-swc branch to be merged into master? I think it can be done. I was just waiting for someone to review and approve it. @Ricardo: Shall I go ahead and merge? [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --]
I have merged wip-swc into master. Should this bug report be closed now? Is there any pending work here related to calibre? We need a typescript build system that uses swc. But, we should handle that in a separate bug report. Thanks!
On 12/10/20 5:23 pm, Arun Isaac wrote:
> I have merged wip-swc into master. Should this bug report be closed now?
> Is there any pending work here related to calibre? We need a typescript
> build system that uses swc. But, we should handle that in a separate bug
> report.
>
> Thanks!
Thank you very much.
I'm kind of worried how long it will take to get that build system. Even
if we have it, will it really succeed at building MathJax so easily? If
it's going to take a while, I'm tempted to just update Calibre without
mathjax support. In theory I'm willing to do work to help but it all
seems rather advanced for me, so i'm glad to see you make progress.
What's the next step?
Calibre 5+ is out now which is on python3. I could even create a
calibre-next so that both calibre@4.18.0 exists and calibre will be
calibre@5.0.1, utilizing Guix's design.
> Thank you very much. :-) > I'm kind of worried how long it will take to get that build system. Even > if we have it, will it really succeed at building MathJax so easily? If > it's going to take a while, I'm tempted to just update Calibre without > mathjax support. In theory I'm willing to do work to help but it all > seems rather advanced for me, so i'm glad to see you make progress. > What's the next step? True, I have similar concerns too. The next step, like Ricardo said, is to write a simple rust script that uses rust-swc to compile typescript to javascript. I am unfamiliar with both rust and typescript. So, if I am to do it, I would need some time. If someone else volunteers to do it, that would be great. > Calibre 5+ is out now which is on python3. I could even create a > calibre-next so that both calibre@4.18.0 exists and calibre will be > calibre@5.0.1, utilizing Guix's design. I think we shouldn't let the typescript build system and mathjax block calibre. If I understand correctly, calibre depends on mathjax only optionally. So, you should go ahead with your work on calibre regardless of what happens with mathjax.
Arun Isaac <arunisaac@systemreboot.net> writes: >> I'm kind of worried how long it will take to get that build system. Even >> if we have it, will it really succeed at building MathJax so easily? If >> it's going to take a while, I'm tempted to just update Calibre without >> mathjax support. In theory I'm willing to do work to help but it all >> seems rather advanced for me, so i'm glad to see you make progress. >> What's the next step? > > True, I have similar concerns too. The next step, like Ricardo said, is > to write a simple rust script that uses rust-swc to compile typescript > to javascript. I am unfamiliar with both rust and typescript. So, if I > am to do it, I would need some time. If someone else volunteers to do > it, that would be great. I looked at this today, but my rust-foo is very, very weak. I tried to compile this: https://github.com/swc-project/swc/blob/master/examples/usage.rs jlicht told me on IRC that we also have a package for esbuild now, which could also be used for transpiling TypeScript to JS. -- Ricardo
[-- Attachment #1.1: Type: text/plain, Size: 815 bytes --] > I looked at this today, but my rust-foo is very, very weak. > I tried to compile this: > > https://github.com/swc-project/swc/blob/master/examples/usage.rs I managed to get this working. Please see the attached tarball. The steps to test are: Unpack the tarball and change directory. Clone the swc git repo. Build and run using cargo. --8<---------------cut here---------------start------------->8--- tar xvf miniswc.tar.gz cd miniswc git clone https://github.com/swc-project cargo run --8<---------------cut here---------------end--------------->8--- src/main.rs in the tarball is a slightly modified version of examples/usage.rs in the swc git repo. On running, it transpiles the file foo.ts and outputs to stdout. The next step is to see if this is any good for building MathJax from source. Cheers! [-- Attachment #1.2: miniswc.tar.gz --] [-- Type: application/octet-stream, Size: 883 bytes --] [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --]
Hey ho! What’s the status of this Calibre update? https://issues.guix.gnu.org/42885 It it waiting on the SWC thing? Thanks in advance, :-) Ludo’.
[-- Attachment #1: Type: text/plain, Size: 425 bytes --] Hi Ludo, I got a minimal swc (attached in my previous mail) working. This minimal swc works for compiling typescript to javascript. But, I haven't figured out how to use it to build web components. This is blocking packaging mathjax v3, and thus calibre. I feel that if calibre can go ahead without mathjax v3, it should. Then, we can close this issue and open a separate one for web components and mathjax. Regards, Arun [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 524 bytes --]
[-- Attachment #1: Type: text/plain, Size: 639 bytes --] Arun Isaac <arunisaac@systemreboot.net> writes: > I got a minimal swc (attached in my previous mail) working. This minimal > swc works for compiling typescript to javascript. But, I haven't figured > out how to use it to build web components. We can also try esbuild. > This is blocking packaging > mathjax v3, and thus calibre. I feel that if calibre can go ahead > without mathjax v3, it should. Then, we can close this issue and open a > separate one for web components and mathjax. I’ve been trying to package mathjax v3 for a while, but didn’t get far enough to present anything yet. Here’s what I have: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: p.patch --] [-- Type: text/x-patch, Size: 4092 bytes --] diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index 8434836c6f..e6ff5d619d 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -27,6 +27,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages lisp-xyz) + #:use-module (gnu packages node) #:use-module (gnu packages readline) #:use-module (gnu packages web) #:use-module (guix packages) @@ -270,6 +271,95 @@ of wicked-good-xpath together with xmldom.") (license (list license:expat license:lgpl2.0))))) +(define-public js-mathjax-3 + (package + (name "js-mathjax") + (version "3.1.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/mathjax/MathJax-src") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0kqcb6pl0zfs4hf8zqb4l50kkfq7isv35vpy05m0lg0yr9w0w4ai")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 match)) + (set-path-environment-variable + "PATH" '("bin") (map (match-lambda + ((_ . input) + input)) + %build-inputs)) + (copy-recursively (assoc-ref %build-inputs "source") + "source") + (chdir "source") + + ;; TODO: we can't build this because it depends on + ;; speech-rule-engine. + ;;(delete-file-recursively "ts/a11y") + (delete-file-recursively "components/src/a11y") + + ;;(delete-file-recursively "components/src/sre") + ;; This file copies a11y files, which we don't build (see above). + (delete-file "components/src/node-main/copy.json") + + (substitute* '("components/bin/build" + "components/bin/pack" + "components/bin/copy" + "components/bin/makeAll") + (("/usr/bin/env node") + (which "node"))) + + ;; Make the compiled files of the context menu available. + (mkdir-p "mj-context-menu/js") + (copy-recursively (string-append (assoc-ref %build-inputs "js-context-menu") + "/share/javascript/context-menu") + "mj-context-menu/js") + + (let ((esbuild (string-append (assoc-ref %build-inputs "esbuild") + "/bin/esbuild")) + (node (string-append (assoc-ref %build-inputs "node") + "/bin/node")) + (target (string-append %output "/share/javascript/mathjax"))) + + ;; Transpile TypeScript + (apply invoke esbuild + "--bundle" + "--tsconfig=tsconfig.json" + "--platform=node" + "--outdir=js" + (find-files "ts" "\\.ts$")) + + (setenv "HOME" "/tmp") + (with-directory-excursion "components" + ;; This requires network access + (substitute* "bin/makeAll" + (("processDir\\(fulldir, webpackLib\\);") "")) + (invoke node "bin/makeAll" "src")) + + ;; Build components + (invoke esbuild + "components/src/tex-chtml-full/tex-chtml-full.js" + "--bundle" + "--minify" + "--platform=node" + (string-append "--outfile=" target "/es5/mml-chtml.js")))))) + (native-inputs + `(("esbuild" ,esbuild) + ("node" ,node-10.22) + ("js-context-menu" ,js-context-menu))) + (home-page "https://www.mathjax.org/") + (synopsis "TODO") + (description "TODO") + (license license:asl2.0))) + (define-public js-respond (package (name "js-respond") [-- Attachment #3: Type: text/plain, Size: 14 bytes --] -- Ricardo
On 14/1/21 1:00 am, Ludovic Courtès wrote:
> Hey ho!
>
> What’s the status of this Calibre update?
>
> https://issues.guix.gnu.org/42885
>
> It it waiting on the SWC thing?
>
> Thanks in advance, :-)
> Ludo’.
I was away from the project for a bit, but I'm back. I intend to update
Calibre to the latest (5.11.0) without mathjax since it's not a big
deal. New obstacles have come in to existence. I think python-pyqt5 may
need to be updated to use sip5 or sip6, which uses some new sip-build
thingy. I found it results in make files that tries to install files to
the python-wrapper store directory, which is immutable. Haven't yet
figured out how to fix that.
* gnu/packages/qt.scm (python-sip): Update to 5.5.0. (python-sip-4): New variable. Rename the old python-sip to python-sip-4. --- gnu/packages/qt.scm | 52 +++++++++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index d921aa87fe..ac5a68e8de 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -20,6 +20,7 @@ ;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot> ;;; ;;; This file is part of GNU Guix. ;;; @@ -88,6 +89,7 @@ #:use-module (gnu packages pulseaudio) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-xyz) #:use-module (gnu packages regex) #:use-module (gnu packages ruby) @@ -1977,6 +1979,42 @@ and binaries removed, and adds modular support for using system libraries.") (define-public python-sip (package + (name "python-sip") + (version "5.5.0") + (source + (origin + (method url-fetch) + (uri (list (pypi-uri "sip" version) + (string-append "https://www.riverbankcomputing.com/static/" + "Downloads/sip/" version + "/sip-" version ".tar.gz"))) + (sha256 + (base32 + "1idaivamp1jvbbai9yzv471c62xbqxhaawccvskaizihkd0lq0jx")))) + (build-system python-build-system) + (native-inputs + `(("python" ,python-wrapper))) + (propagated-inputs + `(("python-toml" ,python-toml) + ("python-packaging" ,python-packaging))) + (home-page "https://www.riverbankcomputing.com/software/sip/intro") + (synopsis "Python binding creator for C and C++ libraries") + (description + "SIP is a tool to create Python bindings for C and C++ libraries. It +was originally developed to create PyQt, the Python bindings for the Qt +toolkit, but can be used to create bindings for any C or C++ library. + +SIP comprises a code generator and a Python module. The code generator +processes a set of specification files and generates C or C++ code, which +is then compiled to create the bindings extension module. The SIP Python +module provides support functions to the automatically generated code.") + ;; There is a choice between a python like license, gpl2 and gpl3. + ;; For compatibility with pyqt, we need gpl3. + (license license:gpl3))) + +(define-public python-sip-4 + (package + (inherit python-sip) (name "python-sip") (version "4.19.24") (source @@ -1992,6 +2030,7 @@ and binaries removed, and adds modular support for using system libraries.") (build-system gnu-build-system) (native-inputs `(("python" ,python-wrapper))) + (propagated-inputs `()) (arguments `(#:tests? #f ; no check target #:imported-modules ((guix build python-build-system) @@ -2014,19 +2053,6 @@ and binaries removed, and adds modular support for using system libraries.") "--bindir" bin "--destdir" lib "--incdir" include))))))) - (home-page "https://www.riverbankcomputing.com/software/sip/intro") - (synopsis "Python binding creator for C and C++ libraries") - (description - "SIP is a tool to create Python bindings for C and C++ libraries. It -was originally developed to create PyQt, the Python bindings for the Qt -toolkit, but can be used to create bindings for any C or C++ library. - -SIP comprises a code generator and a Python module. The code generator -processes a set of specification files and generates C or C++ code, which -is then compiled to create the bindings extension module. The SIP Python -module provides support functions to the automatically generated code.") - ;; There is a choice between a python like license, gpl2 and gpl3. - ;; For compatibility with pyqt, we need gpl3. (license license:gpl3))) (define-public python2-sip -- 2.30.1
* gnu/packages/qt.scm (python2-sip): Fix renamed python-sip-4 input. --- gnu/packages/qt.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index ac5a68e8de..877e4b698e 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2056,7 +2056,7 @@ module provides support functions to the automatically generated code.") (license license:gpl3))) (define-public python2-sip - (package (inherit python-sip) + (package (inherit python-sip-4) (name "python2-sip") (native-inputs `(("python" ,python-2))))) -- 2.30.1
* gnu/packages/maths.scm (veusz): Fix build that was broken by updating python-sip --- gnu/packages/maths.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index 6856737bdf..675e1d5b88 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -2289,7 +2289,8 @@ ASCII text files using Gmsh's own scripting language.") (native-inputs `(("pkg-config" ,pkg-config) ;;("python-astropy" ,python-astropy) ;; FIXME: Package this. - ("qttools" ,qttools))) + ("qttools" ,qttools) + ("python-sip" ,python-sip-4))) (inputs `(("ghostscript" ,ghostscript) ;optional, for EPS/PS output ("python-dbus" ,python-dbus) -- 2.30.1
* gnu/packages/qt.scm (python-pyqt-builder): New variable. --- gnu/packages/qt.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 877e4b698e..6435c4b3c3 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2326,6 +2326,27 @@ itself.") "--sipdir" sip))))))) (license (list license:gpl2 license:gpl3)))) ; choice of either license +(define-public python-pyqt-builder + (package + (name "python-pyqt-builder") + (version "1.9.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PyQt-builder" version)) + (sha256 + (base32 + "0nh0054c54ji3sm6d268fccf0y5f613spswwgwqd3rnn816hnljl")))) + (build-system python-build-system) + (inputs + `(("python-sip" ,python-sip))) + (home-page "https://www.riverbankcomputing.com/static/Docs/PyQt-builder/") + (synopsis "The PEP 517 compliant PyQt build system") + (description "PyQt-builder is a tool for generating Python bindings for C++ +libraries that use the Qt application framework. The bindings are built on +top of the PyQt bindings for Qt. PyQt-builder is used to build PyQt itself.") + (license (list license:gpl2 license:gpl3)))) + (define-public python-qtpy (package (name "python-qtpy") -- 2.30.1
* gnu/packages/qt.scm (python-pyqt5-sip): New variable. --- gnu/packages/qt.scm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 6435c4b3c3..65e61d4dc4 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2153,6 +2153,25 @@ framework. The bindings are implemented as a set of Python modules and contain over 620 classes.") (license license:gpl3))) +(define-public python-pyqt5-sip + (package + (name "python-pyqt5-sip") + (version "12.8.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "PyQt5_sip" version)) + (sha256 + (base32 + "1gg032ys4pccwkdzmdryadc9a4lq85nr05pag9swrsdykbdl9s9h")))) + (build-system python-build-system) + (arguments + `(#:tests? #f)) ;; No test code. + (home-page "https://www.riverbankcomputing.com/software/sip/") + (synopsis "Sip module support for PyQt5") + (description "Sip module support for PyQt5") + (license license:lgpl2.1+))) + (define-public python-pyqtwebengine (package (name "python-pyqtwebengine") -- 2.30.1
* gnu/packages/qt.scm (python-pyqt) [source]: Remove pyqt-public-sip.patch. PyQt uses python-pyqt5-sip now. This patch is still used by python2-pyqt so we don't delete it completely. [inputs]: Add python-pyqt-builder, python-pyqt5-sip [arguments]: Add phase to link PyQt5-sip module. --- gnu/packages/qt.scm | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index 65e61d4dc4..b615a74755 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2074,12 +2074,11 @@ module provides support functions to the automatically generated code.") (string-append "https://www.riverbankcomputing.com/static/" "Downloads/PyQt5/" version "/PyQt5-" version ".tar.gz"))) - (file-name (string-append "PyQt5-"version ".tar.gz")) + (file-name (string-append "PyQt5-" version ".tar.gz")) (sha256 (base32 "1z74295i69cha52llsqffzhb5zz7qnbjc64h8qg21l91jgf0harp")) - (patches (search-patches "pyqt-configure.patch" - "pyqt-public-sip.patch")))) + (patches (search-patches "pyqt-configure.patch")))) (build-system gnu-build-system) (native-inputs `(("qtbase" ,qtbase))) ; for qmake @@ -2087,6 +2086,8 @@ module provides support functions to the automatically generated code.") `(("python-sip" ,python-sip))) (inputs `(("python" ,python-wrapper) + ("python-pyqt-builder" ,python-pyqt-builder) + ("python-pyqt5-sip" ,python-pyqt5-sip) ("qtbase" ,qtbase) ("qtconnectivity" ,qtconnectivity) ("qtdeclarative" ,qtdeclarative) @@ -2144,7 +2145,16 @@ module provides support functions to the automatically generated code.") ; installed into the python package's ; site-package directory, which is read-only. "--stubsdir" stubs - "--sipdir" sip))))))) + "--sipdir" sip)))) + ;; Linking here means the sip module can be found without + ;; python-pyqt5-sip needing to be added as an input. + (add-after 'install 'pyqt5-sip + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (pyqt5-sip (assoc-ref inputs "python-pyqt5-sip")) + (site "/lib/python3.8/site-packages/PyQt5/") + (.so (first (find-files (string-append pyqt5-sip site) "sip.*")))) + (symlink .so (string-append out site (basename .so))))))))) (home-page "https://www.riverbankcomputing.com/software/pyqt/intro") (synopsis "Python bindings for Qt") (description -- 2.30.1
* gnu/packages/python-xyz.scm (python-ifaddr): New variable. --- gnu/packages/python-xyz.scm | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index b1ac3e2e3b..f6bb57d518 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -43,7 +43,7 @@ ;;; Copyright © 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com> -;;; Copyright © 2017, 2019 Brendan Tildesley <mail@brendan.scot> +;;; Copyright © 2017, 2019, 2021 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2018 Ethan R. Jones <ethanrjones97@gmail.com ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> ;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com> @@ -20684,6 +20684,32 @@ by Igor Pavlov.") (define-public python2-pylzma (package-with-python2 python-pylzma)) +(define-public python-ifaddr + (package + (name "python-ifaddr") + (version "0.1.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ifaddr" version)) + (sha256 + (base32 + "150sxdlicwrphmhnv03ykxplyd2jdrxz0mikgnivavgilrn8m7hz")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ (invoke "nosetests")))))) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/pydron/ifaddr") + (synopsis + "Cross-platform network interface and IP address enumeration library") + (description + "Cross-platform network interface and IP address enumeration library") + (license license:expat))) + (define-public python2-zeroconf (package (name "python2-zeroconf") -- 2.30.1
* gnu/packages/python-xyz.scm (python-zeroconf): New variable. --- gnu/packages/python-xyz.scm | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index f6bb57d518..4ac8b0d926 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -20710,6 +20710,39 @@ by Igor Pavlov.") "Cross-platform network interface and IP address enumeration library") (license license:expat))) +(define-public python-zeroconf + (package + (name "python-zeroconf") + (version "0.28.8") + (source + (origin + (method url-fetch) + (uri (pypi-uri "zeroconf" version)) + (sha256 + (base32 + "0narq8haa3b375vfblbyil77n8bw0wxqnanl91pl0wwwm884mqjb")))) + (build-system python-build-system) + (native-inputs + `(("python-nose" ,python-nose))) + (propagated-inputs + `(("python-ifaddr" ,python-ifaddr))) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ ;; Networking isn't available for these tests. + (invoke "nosetests" "-v" + "--exclude" "test_integration_with_listener_ipv6" + "--exclude" "test_launch_and_close_v6_only" + "--exclude" "test_launch_and_close_v4_v6" + "--exclude" "test_launch_and_close")))))) + (home-page "https://github.com/jstasiak/python-zeroconf") + (synopsis "Pure Python mDNS service discovery") + (description + "Pure Python multicast DNS (mDNS) service discovery library (Bonjour/Avahi +compatible).") + (license license:lgpl2.1+))) + (define-public python2-zeroconf (package (name "python2-zeroconf") -- 2.30.1
* gnu/packages/python-check.scm (python-pyannotate): New variable. --- gnu/packages/python-check.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/python-check.scm b/gnu/packages/python-check.scm index 15efdd3297..0de3a779b6 100644 --- a/gnu/packages/python-check.scm +++ b/gnu/packages/python-check.scm @@ -10,6 +10,7 @@ ;;; Copyright © 2020 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1156,6 +1157,28 @@ any Python VM with basically no runtime overhead.") ;; mypyc/lib-rt/getargs.c (license (list license:expat license:psfl)))) +(define-public python-pyannotate + (package + (name "python-pyannotate") + (version "1.2.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pyannotate" version)) + (sha256 + (base32 + "16bm0mf7wxvy0lgmcs1p8n1ji8pnvj1jvj8zk3am70dkp825iv84")))) + (build-system python-build-system) + (propagated-inputs + `(("python-mypy-extensions" ,python-mypy-extensions) + ("python-six" ,python-six))) + (home-page + "https://github.com/dropbox/pyannotate") + (synopsis + "PyAnnotate: Auto-generate PEP-484 annotations") + (description + "PyAnnotate: Auto-generate PEP-484 annotations") + (license license:asl2.0))) (define-public python-eradicate (package (name "python-eradicate") -- 2.30.1
* gnu/packages/python-compression.scm (python-multivolumefile): New variable. --- gnu/packages/python-compression.scm | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index 6b2da5f925..fe73dd38cb 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,9 +36,37 @@ #:use-module (gnu packages maths) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-check) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sphinx)) +(define-public python-multivolumefile + (package + (name "python-multivolumefile") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "multivolumefile" version)) + (sha256 + (base32 + "0j46wab4b09s3favjzp3zs1cn2sn8pr7qyngs5wn31hpqqxbbz76")))) + (build-system python-build-system) + (native-inputs + `(("python-pep517" ,python-pep517) + ("python-setuptools" ,python-setuptools) + ("python-setuptools-scm" ,python-setuptools-scm/next) + ("python-coverage" ,python-coverage) + ("python-coveralls" ,python-coveralls) + ("python-pyannotate" ,python-pyannotate) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov))) + (home-page "https://github.com/miurahr/multivolume") + (synopsis "Treat multiple files as one") + (description "MultiVolumefile is a python library to provide a file-object +wrapping multiple files as virtually like as a single file.") + (license license:lgpl2.1+))) + (define-public python-lzo (package (name "python-lzo") -- 2.30.1
* gnu/packages/python-compression.scm (python-ppmd-cffi): New variable. --- gnu/packages/python-compression.scm | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index fe73dd38cb..101211019b 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -31,6 +31,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (gnu packages) + #:use-module (gnu packages libffi) #:use-module (gnu packages compression) #:use-module (gnu packages check) #:use-module (gnu packages maths) @@ -67,6 +68,35 @@ wrapping multiple files as virtually like as a single file.") (license license:lgpl2.1+))) +(define-public python-ppmd-cffi + (package + (name "python-ppmd-cffi") + (version "0.3.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "ppmd-cffi" version)) + (sha256 + (base32 + "01wcd9l6pp6hivdmd275qh9dhcwficjqfl67hxix5n07vvq7jzz0")))) + (build-system python-build-system) + (propagated-inputs + `(("python-cffi" ,python-cffi))) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-setuptools-scm" ,python-setuptools-scm/next) + ("python-pep517" ,python-pep517) + ("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov))) + (home-page "http://github.com/miurahr/ppmd") + (synopsis "Compression/decompression library") + (description + "PPMd is a compression algorithm library using the Prediction by Partial +Matching statical technique. It is by RAR and 7-Zip as one of several possible +methods.") + (license license:lgpl2.1+))) + (define-public python-lzo (package (name "python-lzo") -- 2.30.1
* gnu/packages/python-compression.scm (python-zstandard): Update to 0.15.2. --- gnu/packages/python-compression.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index 101211019b..860b4ee342 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -348,13 +348,13 @@ wrapper. It provides a backport of the @code{Path} object.") (define-public python-zstandard (package (name "python-zstandard") - (version "0.13.0") + (version "0.15.2") (source (origin (method url-fetch) (uri (pypi-uri "zstandard" version)) (sha256 - (base32 "0q9msi00s93iqm8vzd839r7yc51gz54z90h5bckqyjdxa6vxijz5")))) + (base32 "0by9z7nxnkzhmza075q6q91rs8lnpf91129k8ppv7kymbwshipjj")))) (build-system python-build-system) (native-inputs `(("python-hypothesis" ,python-hypothesis))) -- 2.30.1
* gnu/packages/python-compression.scm (python-pyzstd): New variable. --- gnu/packages/python-compression.scm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index 860b4ee342..51e1fb3ccf 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -364,3 +364,21 @@ wrapper. It provides a backport of the @code{Path} object.") the Zstandard compression library. A C extension and CFFI interface are provided.") (license license:bsd-3))) + +(define-public python-pyzstd + (package + (name "python-pyzstd") + (version "0.14.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pyzstd" version)) + (sha256 + (base32 + "1d3mngs45w2p490vrq5ymd2wz4lp15phmks1ilcx4k7amgibml3d")))) + (build-system python-build-system) + (home-page "https://github.com/animalize/pyzstd") + (synopsis "Zstandard bindings for Python") + (description "Python bindings to Zstandard (zstd) compression library, the +API is similar to Python's bz2/lzma/zlib module.") + (license license:bsd-3))) -- 2.30.1
* gnu/packages/python-compression.scm (python-bcj-cffi): New variable. --- gnu/packages/python-compression.scm | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index 51e1fb3ccf..a25a658ff2 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -37,6 +37,7 @@ #:use-module (gnu packages maths) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sphinx)) @@ -68,6 +69,32 @@ wrapping multiple files as virtually like as a single file.") (license license:lgpl2.1+))) +(define-public python-bcj-cffi + (package + (name "python-bcj-cffi") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "bcj-cffi" version)) + (sha256 + (base32 + "1jcczrb8zgg6w7v76w1wpz3nw75fghk3xwxkn09ll7kck7sdf68d")))) + (build-system python-build-system) + (propagated-inputs + `(("python-cffi" ,python-cffi) + ("python-toml" ,python-toml) + ("python-setuptools-scm" ,python-setuptools-scm/next))) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-coverage" ,python-coverage) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov))) + (home-page "http://github.com/miurahr/bcj-cffi") + (synopsis "bcj algorithm library") + (description "bcj algorithm library") + (license license:lgpl2.1+))) + (define-public python-ppmd-cffi (package (name "python-ppmd-cffi") -- 2.30.1
* gnu/packages/python-compression.scm (python-py7zr): New variable. --- gnu/packages/python-compression.scm | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index a25a658ff2..9cc5a1b679 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -39,6 +39,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages python-build) #:use-module (gnu packages python-check) + #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-xyz) #:use-module (gnu packages sphinx)) @@ -124,6 +125,45 @@ Matching statical technique. It is by RAR and 7-Zip as one of several possible methods.") (license license:lgpl2.1+))) +(define-public python-py7zr + (package + (name "python-py7zr") + (version "0.14.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "py7zr" version)) + (sha256 + (base32 + "1zmgp7yax328fj8yj8pj4l7yh78hp727j6wk12vfi6nmi82wl32i")))) + (build-system python-build-system) + (propagated-inputs + `(("python-bcj-cffi" ,python-bcj-cffi) + ("python-multivolumefile" ,python-multivolumefile) + ("python-ppmd-cffi" ,python-ppmd-cffi) + ("python-pycryptodome" ,python-pycryptodome) + ("python-pyzstd" ,python-pyzstd) + ("python-texttable" ,python-texttable) + ("python-zstandard" ,python-zstandard))) + (native-inputs + `(("python-setuptools" ,python-setuptools) + ("python-setuptools-scm" ,python-setuptools-scm/next) + ("python-coverage" ,python-coverage) + ("python-coveralls" ,python-coveralls) + ("python-libarchive-c" ,python-libarchive-c) + ("python-py-cpuinfo" ,python-py-cpuinfo) + ("python-pyannotate" ,python-pyannotate) + ("python-pytest" ,python-pytest) + ("python-pytest-benchmark" ,python-pytest-benchmark) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-remotedata" ,python-pytest-remotedata) + ("python-pytest-timeout" ,python-pytest-timeout))) + (home-page "https://github.com/miurahr/py7zr") + (synopsis "Pure python 7-zip library") + (description "py7zr is a library and utility to support 7zip archive +compression, decompression, encryption and decryption written in Python.") + (license license:lgpl2.1+))) + (define-public python-lzo (package (name "python-lzo") -- 2.30.1
* gnu/packages/python-xyz.scm (python-markdown): Update to 3.3.4. --- gnu/packages/python-xyz.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 4ac8b0d926..0bf7c31ede 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -8775,14 +8775,14 @@ Python.") (define-public python-markdown (package (name "python-markdown") - (version "3.2.1") + (version "3.3.4") (source (origin (method url-fetch) (uri (pypi-uri "Markdown" version)) (sha256 (base32 - "00k91gwhxnm8jdnm2v5xjz9irj6dbi7afywz2hpakqdbxs1ydzlh")))) + "0jbs73nincha8fkfxx267sfxac6pl0ckszjbqbb8gk4dhs8v9d9i")))) (build-system python-build-system) (native-inputs `(("python-nose" ,python-nose) -- 2.30.1
* gnu/packages/web.scm (python-feedparser): Update to 6.0.2. --- gnu/packages/web.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 836328d758..ea0155cb54 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -4610,14 +4610,14 @@ their web site.") (define-public python-feedparser (package (name "python-feedparser") - (version "5.2.1") + (version "6.0.2") (source (origin (method url-fetch) - (uri (pypi-uri "feedparser" version ".tar.bz2")) + (uri (pypi-uri "feedparser" version ".tar.gz")) (sha256 (base32 - "00hb4qg2am06g81mygfi1jsbx8830024jm45g6qp9g8fr6am91yf")))) + "0x0hm9brh3j71645pydvlkrwxaaca9dnwd7xahwjyjaz882s200v")))) (build-system python-build-system) (arguments '(#:tests? #f)) -- 2.30.1
* gnu/packages/pdf.scm (python-poppler-qt5): Keep using python-sip 4 since it doesn't work with 5. --- gnu/packages/pdf.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index e81c3caf87..a931f04ff7 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -346,7 +346,7 @@ When present, Poppler is able to correctly render CJK and Cyrillic text.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("python-sip" ,python-sip) + `(("python-sip" ,python-sip-4) ("python-pyqt" ,python-pyqt) ("poppler-qt5" ,poppler-qt5) ("qtbase" ,qtbase))) -- 2.30.1
* gnu/packages/pdf (python-poppler-qt5): Update to 21.1.0. (Unrelated to Calibre, just updating this since I updated python-sip.) --- gnu/packages/pdf.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index a931f04ff7..520f4b60f9 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -316,14 +316,14 @@ When present, Poppler is able to correctly render CJK and Cyrillic text.") (define-public python-poppler-qt5 (package (name "python-poppler-qt5") - (version "0.24.2") + (version "21.1.0") (source (origin (method url-fetch) (uri (pypi-uri "python-poppler-qt5" version)) (sha256 (base32 - "0l69llw1fzwz8y90q0qp9q5pifbrqjjbwii7di54dwghw5fc6w1r")))) + "0b82gm4i75q5v19kfbq0h4y0b2vcwr2213zkhxh6l0h45kdndmxd")))) (build-system python-build-system) (arguments `(;; There are no tests. The check phase just causes a rebuild. -- 2.30.1
* gnu/packages/ebook.scm (python-pychm): New variable. --- gnu/packages/ebook.scm | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 47bbd1a789..763e3eba2b 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -88,6 +88,26 @@ (description "CHMLIB is a library for dealing with ITSS/CHM format files.") (license license:lgpl2.1+))) +(define-public python-pychm + (package + (name "python-pychm") + (version "0.8.6") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pychm" version)) + (sha256 + (base32 + "0wpn9ijlsmrpyiwg3drmgz4dms1i1i347adgqw37bkrh3vn6yq16")))) + (build-system python-build-system) + (inputs + `(("chmlib" ,chmlib))) + (home-page "https://github.com/dottedmag/pychm") + (synopsis "Python package to handle CHM files") + (description + "Python package to handle CHM files") + (license license:gpl3))) + (define-public calibre (package (name "calibre") -- 2.30.1
* gnu/packages/freedesktop.scm (python-cchardet): New variable. --- gnu/packages/freedesktop.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index e5f9ea71b6..87f592844d 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Anders Thuné <asse.97@gmail.com> ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> +;;; Copyright © 2021 Brendan Tildesley <mail@brendan.scot> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1920,6 +1921,26 @@ encoding names are iconv-compatible.") ;; combination is GPL 2.0+. (license license:gpl2+))) +(define-public python-cchardet + (package + (name "python-cchardet") + (version "2.1.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cchardet" version)) + (sha256 + (base32 + "1bqfz85cd51sw0bvhvdq9ikccxi2ld7g5jpni4jkq1a5clrvca64")))) + (build-system python-build-system) + (inputs + `(("uchardet" ,uchardet))) + (home-page "https://github.com/PyYoshi/cChardet") + (synopsis "Fast universal character encoding detector") + (description + "cChardet is high speed universal character encoding detector.") + (license license:gpl2+))) + (define-public udiskie (package (name "udiskie") -- 2.30.1
* gnu/packages/python-web.scm: python-chardet to propragated-inputs. html5lib uses this as a fallback for encoding detection, and Calibre tests for its being there, so ad it. --- gnu/packages/python-web.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index b0268e5a31..c527cfad90 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -1041,7 +1041,8 @@ storage.") (build-system python-build-system) (propagated-inputs `(("python-six" ,python-six) - ("python-webencodings" ,python-webencodings))) + ("python-webencodings" ,python-webencodings) + ("python-chardet" ,python-chardet))) (arguments `(#:test-target "check")) (home-page -- 2.30.1
* gnu/packages/ebook.scm (calibre): Update to 5.13.0. Switch all Python 2 inputs to their Python 3 equivalents. [native-inputs]: Add new dependency python-pyqt-builder. [inputs]: Remove js-mathmax. Calibre now uses a newer mathjax that we don't have in guix since it's needs a javascript bootstrap. Remove python-chardet. This is still used by python-html5lib but since I added the input directly to python-htmpl5lib, it is no longer needed here. Remove chmlib. python-chmlib bindings are used now. Remove python-sip Add new dependencies: - python-cchardet - python-speechd - python-zeroconf - python-py7zr - python-pychm - python-pycryptodome (Used by some Calibre extensions) [arguments]: get_sip_dir isn't used anymore, so now we specify the sip directory by editing the project.toml file. Also, for whatever reason, it doesn't build unless the WS_X11 tag is set. Don't try building mathjax support. Don't set SIP_BIN anymore since it isn't needed. * gnu/packages/patches/calibre-no-updates-dialog.patch * gnu/packages/patches/calibre-remove-test-sqlite.patch * gnu/packages/patches/calibre-remove-test-unrar.patch Remake these patches to work with the slightly different new source code. startars --- gnu/packages/ebook.scm | 101 +++++++++--------- .../patches/calibre-no-updates-dialog.patch | 22 ++-- .../patches/calibre-remove-test-sqlite.patch | 21 ++-- .../patches/calibre-remove-test-unrar.patch | 24 ++--- 4 files changed, 88 insertions(+), 80 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 763e3eba2b..124fcda4df 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015, 2016 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2017, 2019, 2020 Brendan Tildesley <mail@brendan.scot> +;;; Copyright © 2017, 2019, 2020, 2021 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> @@ -58,10 +58,14 @@ #:use-module (gnu packages pdf) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) + #:use-module (gnu packages python-compression) + #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages serialization) + #:use-module (gnu packages speech) #:use-module (gnu packages sqlite) #:use-module (gnu packages time) #:use-module (gnu packages tls) @@ -111,7 +115,7 @@ (define-public calibre (package (name "calibre") - (version "4.18.0") + (version "5.13.0") (source (origin (method url-fetch) @@ -120,7 +124,7 @@ version ".tar.xz")) (sha256 (base32 - "0w9pcfvskjh4v00vjw3i6hzrafy863pgsmmqdx4lffip3p856brw")) + "08sljr5rg5f5i1s92g2li5f63mw458b8w5drgcxjm4k62rkl0c8q")) (modules '((guix build utils))) (snippet '(begin @@ -145,17 +149,16 @@ (native-inputs `(("pkg-config" ,pkg-config) ("qtbase" ,qtbase) ; for qmake - ("python2-flake8" ,python2-flake8) + ("python-flake8" ,python-flake8) + ("python-pyqt-builder" ,python-pyqt-builder) ("xdg-utils" ,xdg-utils))) (inputs - `(("chmlib" ,chmlib) - ("fontconfig" ,fontconfig) + `(("fontconfig" ,fontconfig) ("font-liberation" ,font-liberation) ("glib" ,glib) ("hunspell" ,hunspell) ("hyphen" ,hyphen) ("icu4c" ,icu4c) - ("js-mathjax" ,js-mathjax) ("libmtp" ,libmtp) ("libpng" ,libpng) ("libusb" ,libusb) @@ -163,39 +166,41 @@ ("optipng" ,optipng) ("podofo" ,podofo) ("poppler" ,poppler) - ("python" ,python-2) - ("python2-apsw" ,python2-apsw) - ("python2-beautifulsoup4" ,python2-beautifulsoup4) - ("python2-chardet" ,python2-chardet) - ("python2-cssselect" ,python2-cssselect) - ("python2-css-parser" ,python2-css-parser) - ("python2-dateutil" ,python2-dateutil) - ("python2-dbus" ,python2-dbus) - ("python2-dnspython" ,python2-dnspython-1.16) - ("python2-dukpy" ,python2-dukpy) - ("python2-feedparser" ,python2-feedparser) - ("python2-html2text" ,python2-html2text) - ("python2-html5-parser" ,python2-html5-parser) - ("python2-html5lib" ,python2-html5lib) - ("python2-lxml" ,python2-lxml) - ("python2-markdown" ,python2-markdown) - ("python2-mechanize" ,python2-mechanize) - ;; python2-msgpack is needed for the network content server to work. - ("python2-msgpack" ,python2-msgpack) - ("python2-netifaces" ,python2-netifaces) - ("python2-odfpy" ,python2-odfpy) - ("python2-pillow" ,python2-pillow) - ("python2-psutil" ,python2-psutil) - ("python2-pygments" ,python2-pygments) - ("python2-pyqtwebengine" ,python2-pyqtwebengine) - ("python2-pyqt" ,python2-pyqt) - ("python2-sip" ,python2-sip) - ("python2-regex" ,python2-regex) + ("python-apsw" ,python-apsw) + ("python-beautifulsoup4" ,python-beautifulsoup4) + ("python-cchardet" ,python-cchardet) + ("python-css-parser" ,python-css-parser) + ("python-cssselect" ,python-cssselect) + ("python-dateutil" ,python-dateutil) + ("python-dbus" ,python-dbus) + ("python-dnspython" ,python-dnspython-1.16) + ("python-dukpy" ,python-dukpy) + ("python-feedparser" ,python-feedparser) + ("python-html2text" ,python-html2text) + ("python-html5-parser" ,python-html5-parser) + ("python-html5lib" ,python-html5lib) + ("python-lxml" ,python-lxml) + ("python-markdown" ,python-markdown) + ("python-mechanize" ,python-mechanize) + ;; python-msgpack is needed for the network content server to work. + ("python-msgpack" ,python-msgpack) + ("python-netifaces" ,python-netifaces) + ("python-odfpy" ,python-odfpy) + ("python-pillow" ,python-pillow) + ("python-psutil" ,python-psutil) + ("python-py7zr" ,python-py7zr) + ("python-pychm" ,python-pychm) + ("python-pycryptodome" ,python-pycryptodome) + ("python-pygments" ,python-pygments) + ("python-pyqt" ,python-pyqt) + ("python-pyqtwebengine" ,python-pyqtwebengine) + ("python-regex" ,python-regex) + ("python-speechd" ,speech-dispatcher) + ("python-zeroconf" ,python-zeroconf) ("qtwebengine" ,qtwebengine) ("sqlite" ,sqlite))) (arguments - `(#:python ,python-2 - ;; Calibre is using setuptools by itself, but the setup.py is not + `(;; Calibre is using setuptools by itself, but the setup.py is not ;; compatible with the shim wrapper (taken from pip) we are using. #:use-setuptools? #f #:phases @@ -227,13 +232,16 @@ (add-before 'build 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let ((podofo (assoc-ref inputs "podofo")) - (pyqt (assoc-ref inputs "python2-pyqt")) - (python-sip (assoc-ref inputs "python2-sip")) + (pyqt (assoc-ref inputs "python-pyqt")) + (python-sip (assoc-ref inputs "python-sip")) (out (assoc-ref outputs "out"))) - (substitute* "setup/build_environment.py" - (("= get_sip_dir\\(\\)") - (string-append "= '" pyqt "/share/sip'"))) - + (substitute* "setup/build.py" + (("\\[tool.sip.bindings.pictureflow\\]") + "[tool.sip.bindings.pictureflow] +tags = [\"WS_X11\"]") + (("\\[tool.sip.project\\]") + (string-append "[tool.sip.project] +sip-include-dirs = [\"" pyqt "/share/sip" "\"]"))) (substitute* "src/calibre/ebooks/pdf/pdftohtml.py" (("PDFTOHTML = 'pdftohtml'") (string-append "PDFTOHTML = \"" (assoc-ref inputs "poppler") @@ -257,7 +265,6 @@ "/share/fonts") "/tmp/.fonts") - (setenv "SIP_BIN" (string-append python-sip "/bin/sip")) (setenv "PODOFO_INC_DIR" (string-append podofo "/include/podofo")) (setenv "PODOFO_LIB_DIR" (string-append podofo "/lib")) ;; This informs the tests we are a continuous integration @@ -270,11 +277,7 @@ #t))) (add-after 'build 'build-extra (lambda* (#:key inputs #:allow-other-keys) - (invoke "python2" "setup.py" "mathjax""--system-mathjax" - "--path-to-mathjax" (string-append - (assoc-ref inputs "js-mathjax") - "/share/javascript/mathjax")) - (invoke "python2" "setup.py" "rapydscript") + (invoke "python" "setup.py" "rapydscript") #t)) (add-after 'install 'install-man-pages (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/patches/calibre-no-updates-dialog.patch b/gnu/packages/patches/calibre-no-updates-dialog.patch index 1d8d79660e..66ac913cb5 100644 --- a/gnu/packages/patches/calibre-no-updates-dialog.patch +++ b/gnu/packages/patches/calibre-no-updates-dialog.patch @@ -1,11 +1,17 @@ -Taken from debian. +From 19e8d7701c302b0eca4c638705a6db625352caa3 Mon Sep 17 00:00:00 2001 +From: Brendan Tildesley <mail@brendan.scot> +Date: Thu, 25 Feb 2021 12:17:30 +1100 +Subject: [PATCH] Don't check for updates. -# Description: Disable update check by default. -Index: calibre/src/calibre/gui2/main.py -=================================================================== ---- calibre.orig/src/calibre/gui2/main.py 2014-02-02 10:41:28.470954623 +0100 -+++ calibre/src/calibre/gui2/main.py 2014-02-02 10:41:56.546954247 +0100 -@@ -37,8 +37,8 @@ +--- + src/calibre/gui2/main.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py +index 776f8bebfb..4302716d7e 100644 +--- a/src/calibre/gui2/main.py ++++ b/src/calibre/gui2/main.py +@@ -59,8 +59,8 @@ def option_parser(): help=_('Start minimized to system tray.')) parser.add_option('-v', '--verbose', default=0, action='count', help=_('Ignored, do not use. Present only for legacy reasons')) @@ -16,3 +22,5 @@ Index: calibre/src/calibre/gui2/main.py parser.add_option('--ignore-plugins', default=False, action='store_true', help=_('Ignore custom plugins, useful if you installed a plugin' ' that is preventing calibre from starting')) +-- +2.30.1 diff --git a/gnu/packages/patches/calibre-remove-test-sqlite.patch b/gnu/packages/patches/calibre-remove-test-sqlite.patch index 7bdd90874d..fc2b237ef2 100644 --- a/gnu/packages/patches/calibre-remove-test-sqlite.patch +++ b/gnu/packages/patches/calibre-remove-test-sqlite.patch @@ -1,20 +1,20 @@ -From a92e26359bd07743ab105819ed0b619e27e14017 Mon Sep 17 00:00:00 2001 +From d8225e83c3b73f0e0da73874910f50ca652f48cf Mon Sep 17 00:00:00 2001 From: Brendan Tildesley <mail@brendan.scot> -Date: Sat, 27 Apr 2019 03:30:53 +1000 -Subject: [PATCH] Disable test_sqlite. +Date: Thu, 25 Feb 2021 00:48:00 +1100 +Subject: [PATCH] Remove test_sqlite --- src/calibre/test_build.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py -index 07bdffd3e5..740588c95b 100644 +index 0ab7aa0646..87fdfabd9a 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py -@@ -162,12 +162,6 @@ class BuildTest(unittest.TestCase): - au(x, 'strftime') - self.assertEqual(unicode_type(time.strftime(fmt.replace('%e', '%#d'), t)), x) - +@@ -273,12 +273,6 @@ def read_changes(): + m.close() + self.assertEqual(winutil.parse_cmdline('"c:\\test exe.exe" "some arg" 2'), ('c:\\test exe.exe', 'some arg', '2')) + - def test_sqlite(self): - import sqlite3 - conn = sqlite3.connect(':memory:') @@ -24,6 +24,5 @@ index 07bdffd3e5..740588c95b 100644 def test_apsw(self): import apsw conn = apsw.Connection(':memory:') --- -2.21.0 - +-- +2.30.1 diff --git a/gnu/packages/patches/calibre-remove-test-unrar.patch b/gnu/packages/patches/calibre-remove-test-unrar.patch index 4e5572d1a6..961cc3eba7 100644 --- a/gnu/packages/patches/calibre-remove-test-unrar.patch +++ b/gnu/packages/patches/calibre-remove-test-unrar.patch @@ -1,28 +1,26 @@ -Unrar contains security vulnerabilities and has thus been removed from Guix. -From a16f97b02bd8afd0ec05c471e156f631f2cc6eec Mon Sep 17 00:00:00 2001 +From 9edf67191cc3655480b6fd418247709ade930b1a Mon Sep 17 00:00:00 2001 From: Brendan Tildesley <mail@brendan.scot> -Date: Tue, 26 Mar 2019 22:17:03 +1100 -Subject: [PATCH] Remove test_unrar. +Date: Thu, 25 Feb 2021 00:33:10 +1100 +Subject: [PATCH] Remove test_unrar --- src/calibre/test_build.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py -index d67afd20a6..709132ef17 100644 +index b37fb1bcfb..0ab7aa0646 100644 --- a/src/calibre/test_build.py +++ b/src/calibre/test_build.py -@@ -220,10 +220,6 @@ class BuildTest(unittest.TestCase): +@@ -369,10 +369,6 @@ def test_file_dialog_helper(self): from calibre.gui2.win_file_dialogs import test test() - + - def test_unrar(self): - from calibre.utils.unrar import test_basic - test_basic() - - @unittest.skipUnless(iswindows, 'WPD is windows only') - def test_wpd(self): - wpd = plugins['wpd'][0] --- -2.21.0 - + def test_7z(self): + from calibre.utils.seven_zip import test_basic + test_basic() +-- +2.30.1 -- 2.30.1
* gnu/packages/ebook.scm (calibre): [inputs]: Add libjpeg and libjxz. [arguments]: substitute Calibre's weird get_exe_path procedure that looks in poppler's output directory for binaries with direct paths to jpegtran, cjpeg, optipng, and JxrDecApp. --- gnu/packages/ebook.scm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 124fcda4df..be367a5245 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -161,6 +161,8 @@ ("icu4c" ,icu4c) ("libmtp" ,libmtp) ("libpng" ,libpng) + ("libjpeg" ,libjpeg-turbo) + ("libjxr" ,libjxr) ("libusb" ,libusb) ("openssl" ,openssl) ("optipng" ,optipng) @@ -246,7 +248,12 @@ sip-include-dirs = [\"" pyqt "/share/sip" "\"]"))) (("PDFTOHTML = 'pdftohtml'") (string-append "PDFTOHTML = \"" (assoc-ref inputs "poppler") "/bin/pdftohtml\""))) - + ;; get_exe_path looks in poppler's output for these binaries. + (substitute* "src/calibre/utils/img.py" + (("get_exe_path..jpegtran..") (string-append "'" (which "jpegtran") "'")) + (("get_exe_path..cjpeg..") (string-append "'" (which "cjpeg") "'")) + (("get_exe_path..optipng..") (string-append "'" (which "optipng") "'")) + (("get_exe_path..JxrDecApp..") (string-append "'" (which "JxrDecApp") "'"))) ;; Calibre thinks we are installing desktop files into a home ;; directory, but here we butcher the script in to installing ;; to calibres /share directory. -- 2.30.1
* gnu/packages/ebook.scm (calibre):[inputs]: Add qtsvg as an input. This fixes part of the broken qt test, but not all. It still fails printing to pdf. --- gnu/packages/ebook.scm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index be367a5245..25a31c9a65 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -199,6 +199,7 @@ ("python-regex" ,python-regex) ("python-speechd" ,speech-dispatcher) ("python-zeroconf" ,python-zeroconf) + ("qtsvg" ,qtsvg) ("qtwebengine" ,qtwebengine) ("sqlite" ,sqlite))) (arguments @@ -277,9 +278,8 @@ sip-include-dirs = [\"" pyqt "/share/sip" "\"]"))) ;; This informs the tests we are a continuous integration ;; environment and thus have no networking. (setenv "CI" "true") - ;; The Qt test complains about being unable to load all image plugins, and I - ;; notice the available plugins list it shows lacks 'svg'. Adding qtsvg doesn't - ;; fix it, so I'm not sure how to fix it. TODO: Fix test and remove this. + ;; The Qt test fails at printing to pdf: + ;; AssertionError: b'Skia/PDF' not found in b'' : Print to PDF failed (setenv "SKIP_QT_BUILD_TEST" "true") #t))) (add-after 'build 'build-extra -- 2.30.1
* gnu/packages/qt.scm (python2-pyqtwebengine): Delete unused variable. --- gnu/packages/qt.scm | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index b615a74755..ad779940e9 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2289,25 +2289,6 @@ itself.") ("python2-enum34" ,python2-enum34) ,@(alist-delete "python" (package-inputs python-pyqt)))))) -(define-public python2-pyqtwebengine - (package/inherit - python-pyqtwebengine - (name "python2-pyqtwebengine") - (native-inputs - `(("python" ,python-2) - ("python-sip" ,python2-sip) - ;; qtbase is required for qmake - ("qtbase" ,qtbase))) - (inputs - `(("python" ,python-2) - ("python-sip" ,python2-sip) - ("python-pyqt" ,python2-pyqt) - ("qtbase" ,qtbase) - ("qtsvg" ,qtsvg) - ("qtdeclarative" ,qtdeclarative) - ("qtwebchannel" ,qtwebchannel) - ("qtwebengine" ,qtwebengine))))) - (define-public python2-pyqt-4 (package (inherit python-pyqt) (name "python2-pyqt") -- 2.30.1
* gnu/packages/qt.scm (python2-pyqt): Delete unused variable. --- gnu/packages/qt.scm | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index ad779940e9..872cb40305 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -2275,20 +2275,6 @@ itself.") (inputs (alist-delete "qtwebkit" (package-inputs python-pyqt))))) -(define-public python2-pyqt - (package (inherit python-pyqt) - (name "python2-pyqt") - (propagated-inputs - `(("python-enum34" ,python2-enum34) - ("python-sip" ,python2-sip))) - (native-inputs - `(("python-sip" ,python2-sip) - ("qtbase" ,qtbase))) - (inputs - `(("python" ,python-2) - ("python2-enum34" ,python2-enum34) - ,@(alist-delete "python" (package-inputs python-pyqt)))))) - (define-public python2-pyqt-4 (package (inherit python-pyqt) (name "python2-pyqt") -- 2.30.1
[-- Attachment #1.1: Type: text/plain, Size: 88 bytes --] These two patches go after the last 27 patches, fixing up some mistakes I made earlier. [-- Attachment #1.2: Type: text/html, Size: 238 bytes --] [-- Attachment #2: 0001-gnu-calibre-Don-t-install-junk-temporary-files.patch --] [-- Type: text/x-patch, Size: 1348 bytes --] From a222592c08909b67ff2334f617a7b273cc5ab082 Mon Sep 17 00:00:00 2001 From: Brendan Tildesley <mail@brendan.scot> Date: Sat, 20 Mar 2021 21:28:22 +1100 Subject: [PATCH 1/2] gnu: calibre: Don't install junk temporary files. * gnu/packages/ebook.scm (calibre): [arguments]: Unset XDG_DATA_HOME just for installing rapydscript so that Qtwebengine temporary files aren't put in /share/. Moving the phase until after the install phase prevents breaking .desktop file installation. --- gnu/packages/ebook.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 25a31c9a65..b55af5c865 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -282,8 +282,10 @@ sip-include-dirs = [\"" pyqt "/share/sip" "\"]"))) ;; AssertionError: b'Skia/PDF' not found in b'' : Print to PDF failed (setenv "SKIP_QT_BUILD_TEST" "true") #t))) - (add-after 'build 'build-extra + (add-after 'install 'install-rapydscript (lambda* (#:key inputs #:allow-other-keys) + ;; Unset so QtWebengine doesn't dump temporary files here. + (unsetenv "XDG_DATA_HOME") (invoke "python" "setup.py" "rapydscript") #t)) (add-after 'install 'install-man-pages -- 2.30.2 [-- Attachment #3: 0002-gnu-calibre-Don-t-delete-needed-files.patch --] [-- Type: text/x-patch, Size: 936 bytes --] From f8fe46256cbfe211b1bbbb624651cfc5b261ee32 Mon Sep 17 00:00:00 2001 From: Brendan Tildesley <mail@brendan.scot> Date: Sun, 21 Mar 2021 17:18:13 +1100 Subject: [PATCH 2/2] gnu: calibre: Don't delete needed files. * gnu/packages/ebook.scm (calibre)[snippet]: Don't delete viewer.js since it's actually used by the html reader. --- gnu/packages/ebook.scm | 2 -- 1 file changed, 2 deletions(-) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index b55af5c865..6fb525a2c2 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -136,8 +136,6 @@ "")) ;; Remove unneeded resources. - (delete-file "resources/viewer.js") - (delete-file "resources/viewer.html") (delete-file "resources/mozilla-ca-certs.pem") (delete-file "resources/calibre-portable.bat") (delete-file "resources/calibre-portable.sh") -- 2.30.2
On Wed, Mar 10, 2021 at 08:00:49PM +1100, Brendan Tildesley wrote:
> * gnu/packages/ebook.scm (calibre): Update to 5.13.0.
>
> Switch all Python 2 inputs to their Python 3 equivalents.
Thanks a lot for working on this! I'm going to start reviewing / pushing
patches today.
On Wed, Mar 10, 2021 at 08:00:49PM +1100, Brendan Tildesley wrote:
> * gnu/packages/ebook.scm (calibre): Update to 5.13.0.
>
> Switch all Python 2 inputs to their Python 3 equivalents.
Alright, the patches are aleady stale, even at patch 2 of 27.
To make this easier, can you either put this work online in a Git repo
somewhere? It's easier to clone a repo with a custom branch to rebase
the patches.
Alternatively, can you say which older Guix Git commit these patches
apply to?
Thansk!
> On 03/23/2021 7:36 PM Leo Famulari <leo@famulari.name> wrote: > > > On Wed, Mar 10, 2021 at 08:00:49PM +1100, Brendan Tildesley wrote: > > * gnu/packages/ebook.scm (calibre): Update to 5.13.0. > > > > Switch all Python 2 inputs to their Python 3 equivalents. > > Alright, the patches are aleady stale, even at patch 2 of 27. > > To make this easier, can you either put this work online in a Git repo > somewhere? It's easier to clone a repo with a custom branch to rebase > the patches. > > Alternatively, can you say which older Guix Git commit these patches > apply to? > > Thansk! https://notabug.org/Brendan/guix/src/calibre-5.13.0 I fixed the conflict updated to latest master here. Also, a minor change, I oved the "gnu: veusz: Fix build" until after "gnu: python-pyqt: Fix build for new python-sip." since it doesn't actually work until that ones applied.
On Wed, Mar 24, 2021 at 03:13:26AM +0100, Brendan Tildesley wrote:
> https://notabug.org/Brendan/guix/src/calibre-5.13.0
>
> I fixed the conflict updated to latest master here.
> Also, a minor change, I oved the
> "gnu: veusz: Fix build"
> until after
> "gnu: python-pyqt: Fix build for new python-sip."
> since it doesn't actually work until that ones applied.
Thanks for the updated branch! I'm going through the patches now.
On Wed, Mar 24, 2021 at 03:13:26AM +0100, Brendan Tildesley wrote: > https://notabug.org/Brendan/guix/src/calibre-5.13.0 Can you clarify some things about the commit "gnu: python-pyqt: Fix build for new python-sip"? First, python-pyqt before applying this commit; if it's broken, can you say how? Also, there is a comment "Linking here means the sip module can be found without python-pyqt5-sip needing to be added as an input". But, python-pyqt5-sip is an input to this package. Can you explain what you mean? I think we should drop the commit "gnu: calibre: Add qtsvg as input.", since it adds a dependency but for what seems to be no reason. What do you think? Based on your branch, I've made the following changes and pushed the branch at <https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-update-calibre>. Can you take a look and tell me what you think? I squashed the first two commits, so that there is no commit where python2-sip fails to build. It's not always easy to avoid intermediate breakage in complicated package upgrades like this, but it's worth trying. At least, it can improve the utility of `git bisect`. I also squashed the "fix veusz" commit into that one, for the same reason. And all the rest of the commits that are adjusting to that change. For the "Fix build for new python-sip" commit, I removed the hardcoding of "python3.8" in the 'pyqt5-sip' phase, and instead used the python-version procedure. I squashed the remaining cleanup-type commits into the Calibre update. I pushed the commit 'gnu: python-poppler-qt5: Update to 21.1.0.' as 02f664a0a3dd3a936213e687802bdc62f2a10983 I corrected the license of python-pychm from gpl3 to gpl2+. I made many other changes to satisfy `guix lint`, and improved synopses and descriptions.
> On 03/30/2021 1:05 AM Leo Famulari <leo@famulari.name> wrote: > > > On Wed, Mar 24, 2021 at 03:13:26AM +0100, Brendan Tildesley wrote: > > https://notabug.org/Brendan/guix/src/calibre-5.13.0 > > Can you clarify some things about the commit "gnu: python-pyqt: Fix > build for new python-sip"? First, python-pyqt before applying this > commit; if it's broken, can you say how? Me adding python-pyqt-builder here looks like a mistake. I left it there while experimenting. When I was Upgrading SIP, I experimented with switching to the new 'sip-build' tool introduced in SIP 5. SIP 6's main change is to delete obsoleted code, so the old 'python configure.py' won't work. I never got it working so I just went back to the old way with SIP 5. python-pyqt-builder is still needed by Calibre however. The only other functional change in this patch is to remove the patch pyqt-public-sip.patch. The introduction of python-pyqt5-sip as a separate module means means that with this patch, the module is not found at all. Removing it fixes it. I don't understand it in any great depth but it seems the patch may only really relevant to SIP 4. > Also, there is a comment "Linking here means the sip module can be found > without python-pyqt5-sip needing to be added as an input". But, > python-pyqt5-sip is an input to this package. Can you explain what you > mean? Upstream for whatever reason chose to move the sip module part out in to a separate source package python-pyqt5-sip. It's broken without removing the pyqt-public-sip. The linking can be removed, but it would mean for every input that requires python-pyqt5 as an input, you also need to add python-pyqt5-sip so the sip module can be found. On a distribution with a traditional filesystem layout, that would not be necessary, you just have the -sip module as a dependency to pyqt5 and its then its available at a global path to be found. On Nix/Guix that doesn't work so it has to be added every time, or linked in like this. Actually I'm not sure if there is ever any case where one /doesn't/ need the sip modules, but they're only 200KiB. The Nix developers chose to just link it like this so I copied their way. Do you think it's fine? > I think we should drop the commit "gnu: calibre: Add qtsvg as input.", > since it adds a dependency but for what seems to be no reason. What do > you think? The reason I added qtsvg was to try fix the Qt test. If you remove the line (setenv "SKIP_QT_BUILD_TEST" "true"), this test fails for multiple reasons. One of them was qtsvg missing. Another was the get_exe_path bit. But a third reason I that its call to printtopdf in pyqtwebegine returns an empty string instaed of b'Skia/PDF'. I had no idea how to proceed with fixing that so I left it for now. But at least fixed the other errors. I assume some SVG related functionality will fail without it... > Based on your branch, I've made the following changes and pushed the > branch at > <https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-update-calibre>. > > Can you take a look and tell me what you think? > > I squashed the first two commits, so that there is no commit where > python2-sip fails to build. It's not always easy to avoid intermediate > breakage in complicated package upgrades like this, but it's worth > trying. At least, it can improve the utility of `git bisect`. > > I also squashed the "fix veusz" commit into that one, for the same > reason. And all the rest of the commits that are adjusting to that > change. > > For the "Fix build for new python-sip" commit, I removed the hardcoding > of "python3.8" in the 'pyqt5-sip' phase, and instead used the > python-version procedure. > > I squashed the remaining cleanup-type commits into the Calibre update. > > I pushed the commit 'gnu: python-poppler-qt5: Update to 21.1.0.' as > 02f664a0a3dd3a936213e687802bdc62f2a10983 > > I corrected the license of python-pychm from gpl3 to gpl2+. > > I made many other changes to satisfy `guix lint`, and improved synopses > and descriptions. All good I think. My descriptions were much worse than I realised. python-cchardet differs from in python-chardet in that its not written /in/ python, but links to a fast C library to do it, but your description/synopsis changes make it look like its all in Python. Maybe make the description: "cChardet is a character encoding detector, binding to the C library uchardet for speed." ? I fixed another one of my typos 'statical' -> 'statistical', and removed the python-pyqt-builder input from python-pyqt https://notabug.org/Brendan/guix/src/wip-update-calibre
Just updated for Calibre 5.14.0 released 4 days ago also. https://notabug.org/Brendan/guix/src/wip-update-calibre
On Tue, Mar 30, 2021 at 12:45:18PM +0200, Brendan Tildesley wrote:
> Just updated for Calibre 5.14.0 released 4 days ago also.
>
> https://notabug.org/Brendan/guix/src/wip-update-calibre
Thanks! I will review these today or tomorrow.
[-- Attachment #1: Type: text/plain, Size: 3972 bytes --] On Tue, Mar 30, 2021 at 08:23:43AM +0200, Brendan Tildesley wrote: > Me adding python-pyqt-builder here looks like a mistake. I left it > there while experimenting. When I was Upgrading SIP, I experimented > with switching to the new 'sip-build' tool introduced in SIP 5. SIP > 6's main change is to delete obsoleted code, so the old 'python > configure.py' won't work. I never got it working so I just went back > to the old way with SIP 5. python-pyqt-builder is still needed by > Calibre however. > > The only other functional change in this patch is to remove the patch > pyqt-public-sip.patch. The introduction of python-pyqt5-sip as a > separate module means means that with this patch, the module is not > found at all. Removing it fixes it. I don't understand it in any great > depth but it seems the patch may only really relevant to SIP 4. Okay. I adjusted the commit message to match your revision. > > On 03/30/2021 1:05 AM Leo Famulari <leo@famulari.name> wrote: > > Also, there is a comment "Linking here means the sip module can be found > > without python-pyqt5-sip needing to be added as an input". But, > > python-pyqt5-sip is an input to this package. Can you explain what you > > mean? > > Upstream for whatever reason chose to move the sip module part out in > to a separate source package python-pyqt5-sip. It's broken without > removing the pyqt-public-sip. > > The linking can be removed, but it would mean for every input that > requires python-pyqt5 as an input, you also need to add > python-pyqt5-sip so the sip module can be found. If I understand correctly, the issue that any package that uses python-pyqt5 also needs to be able to find python-pyqt5-sip. Is that right? If so, it sounds like a case for propagated-inputs [0]. Concretely, I made python-pyqt5-sip a propagated-input of python-pyqt and removed the 'pyqt5-sip' phase, and Calibre built successfully. Does that seem like the right approach? > The reason I added qtsvg was to try fix the Qt test. If you remove the > line (setenv "SKIP_QT_BUILD_TEST" "true"), this test fails for > multiple reasons. One of them was qtsvg missing. Another was the > get_exe_path bit. But a third reason I that its call to printtopdf in > pyqtwebegine returns an empty string instaed of b'Skia/PDF'. I had no > idea how to proceed with fixing that so I left it for now. But at > least fixed the other errors. I assume some SVG related functionality > will fail without it... That's a good point. However, I checked if the built Calibre refers to qtsvg, and it doesn't [1]. So, it's unlikely that Calibre will be able to find and use qtsvg, regardless of whether or not it's an input. So, I'd prefer to leave it out until we understand what it's for and how to make sure that Calibre can use it. > All good I think. My descriptions were much worse than I realised. No worries. Writing the synopses and descriptions is a completely different type of work from packaging or programming. I often "finish" some packages, but need to go back later to write the descriptions. I'm happy to finish these tasks as part of the code review process. > python-cchardet differs from in python-chardet in that its not written > /in/ python, but links to a fast C library to do it, but your > description/synopsis changes make it look like its all in > Python. Maybe make the description: > > "cChardet is a character encoding detector, binding to the C > library uchardet for speed." ? Thanks, that helps. I amended the synopses and description based on this. I pushed my revisions of your updated branch, rebased on the current master branch, to Savannah: https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-update-calibre [0] https://guix.gnu.org/manual/en/html_node/package-Reference.html [1] This command be used: $ guix gc --references $(./pre-inst-env guix build --no-grafts calibre) | grep qtsvg [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]
> On 04/05/2021 9:58 PM Leo Famulari <leo@famulari.name> wrote: [...] > If I understand correctly, the issue that any package that uses > python-pyqt5 also needs to be able to find python-pyqt5-sip. Is that > right? > > If so, it sounds like a case for propagated-inputs [0]. Concretely, I made > python-pyqt5-sip a propagated-input of python-pyqt and removed the > 'pyqt5-sip' phase, and Calibre built successfully. > > Does that seem like the right approach? > Sounds good. I didn't realise propagated-inputs did that, I thought they were just normal inputs that were installed along side the package in a profile, but wouldn't make a difference during build time. Does this mean all packages that depend on python-pyqt5 will have python-pyqt5-sip added to its own list of inputs in their own package definition? If so the manual doesn't mention that. > > The reason I added qtsvg was to try fix the Qt test. If you remove the > > line (setenv "SKIP_QT_BUILD_TEST" "true"), this test fails for > > multiple reasons. One of them was qtsvg missing. Another was the > > get_exe_path bit. But a third reason I that its call to printtopdf in > > pyqtwebegine returns an empty string instaed of b'Skia/PDF'. I had no > > idea how to proceed with fixing that so I left it for now. But at > > least fixed the other errors. I assume some SVG related functionality > > will fail without it... > > That's a good point. However, I checked if the built Calibre refers to > qtsvg, and it doesn't [1]. So, it's unlikely that Calibre will be able to > find and use qtsvg, regardless of whether or not it's an input. So, I'd > prefer to leave it out until we understand what it's for and how to make > sure that Calibre can use it. I see, that's a good trick for checking references.. Leave svg out for now then. > > > All good I think. My descriptions were much worse than I realised. > > No worries. Writing the synopses and descriptions is a completely > different type of work from packaging or programming. I often "finish" > some packages, but need to go back later to write the descriptions. I'm > happy to finish these tasks as part of the code review process. > I find writing them the most stressful part because I sit there not knowing what to write. > > python-cchardet differs from in python-chardet in that its not written > > /in/ python, but links to a fast C library to do it, but your > > description/synopsis changes make it look like its all in > > Python. Maybe make the description: > > > > "cChardet is a character encoding detector, binding to the C > > library uchardet for speed." ? > > Thanks, that helps. I amended the synopses and description based on > this. > > I pushed my revisions of your updated branch, rebased on the current > master branch, to Savannah: > > https://git.savannah.gnu.org/cgit/guix.git/log/?h=wip-update-calibre > > [0] > https://guix.gnu.org/manual/en/html_node/package-Reference.html > > [1] This command be used: > $ guix gc --references $(./pre-inst-env guix build --no-grafts calibre) | grep qtsvg
On Tue, Apr 06, 2021 at 03:30:08AM +0200, Brendan Tildesley wrote: > Sounds good. I didn't realise propagated-inputs did that, I thought they were > just normal inputs that were installed along side the package in a profile, > but wouldn't make a difference during build time. > Does this mean all packages that depend on python-pyqt5 will have python-pyqt5-sip > added to its own list of inputs in their own package definition? If so > the manual doesn't mention that. That's the idea: they are run-time dependencies of a package that lacks the ability for recording references to its dependencies. We have to help the package with our packaging tools. In general, all Python packages in Guix use this mechanism. Just to clarify, does Calibre work on your end with my latest Savannah branch? I built it on CI, so you can get substitutes for it on x86_64. The basics work for me: library management, conversion, etc. I think we're almost done! > I find writing them the most stressful part because I sit there not knowing > what to write. Don't hesitate to send in your patches with a note like, "I didn't know what to put here".
> On 04/06/2021 7:11 PM Leo Famulari <leo@famulari.name> wrote:
>
>
> On Tue, Apr 06, 2021 at 03:30:08AM +0200, Brendan Tildesley wrote:
> > Sounds good. I didn't realise propagated-inputs did that, I thought they were
> > just normal inputs that were installed along side the package in a profile,
> > but wouldn't make a difference during build time.
> > Does this mean all packages that depend on python-pyqt5 will have python-pyqt5-sip
> > added to its own list of inputs in their own package definition? If so
> > the manual doesn't mention that.
>
> That's the idea: they are run-time dependencies of a package that lacks
> the ability for recording references to its dependencies. We have to
> help the package with our packaging tools.
>
> In general, all Python packages in Guix use this mechanism.
>
> Just to clarify, does Calibre work on your end with my latest Savannah
> branch? I built it on CI, so you can get substitutes for it on x86_64.
>
> The basics work for me: library management, conversion, etc.
Works for me.
While testing the dependents of packages changes in this patch series, I found that QGIS fails to build as a result of these patches, like this: ------ [...] [ 50%] Built target qgis_sqliteutilstest_autogen make -f tests/src/core/CMakeFiles/qgis_layouthtmltest_autogen.dir/build.make tests/src/core/CMakeFiles/qgis_layouthtmltest_autogen.dir/depend .sip5-real: Unable to find file "QtXml/QtXmlmod.sip" make[2]: Entering directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' cd /tmp/guix-build-qgis-3.16.3.drv-0/build && /gnu/store/3dsl2jalrcyldkrsqab1hc6sv8pyag9z-cmake-minimal-3.16.5/bin/cmake -E cmake_depends "Unix Makefiles" /tmp/guix-build-qgis-3.16.3.drv-0/qgi s-3.16.3 /tmp/guix-build-qgis-3.16.3.drv-0/qgis-3.16.3/tests/src/core /tmp/guix-build-qgis-3.16.3.drv-0/build /tmp/guix-build-qgis-3.16.3.drv-0/build/tests/src/core /tmp/guix-build-qgis-3.16.3 .drv-0/build/tests/src/core/CMakeFiles/qgis_layouthtmltest_autogen.dir/DependInfo.cmake --color= Scanning dependencies of target qgis_layouthtmltest_autogen make[2]: Leaving directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' make -f tests/src/core/CMakeFiles/qgis_layouthtmltest_autogen.dir/build.make tests/src/core/CMakeFiles/qgis_layouthtmltest_autogen.dir/build make[2]: Entering directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' [ 50%] Automatic MOC for target qgis_layouthtmltest cd /tmp/guix-build-qgis-3.16.3.drv-0/build/tests/src/core && /gnu/store/3dsl2jalrcyldkrsqab1hc6sv8pyag9z-cmake-minimal-3.16.5/bin/cmake -E cmake_autogen /tmp/guix-build-qgis-3.16.3.drv-0/build /tests/src/core/CMakeFiles/qgis_layouthtmltest_autogen.dir/AutogenInfo.json RelWithDebInfo make[2]: *** [python/CMakeFiles/python_module_qgis__core_autogen.dir/build.make:682: python/core/sip_corepart0.cpp] Error 1 make[2]: *** Deleting file 'python/core/sip_corepart0.cpp' make[2]: Leaving directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' make[1]: *** [CMakeFiles/Makefile2:8003: python/CMakeFiles/python_module_qgis__core_autogen.dir/all] Error 2 [...] builder for `/gnu/store/svp5sjdga02zngsrh3x613wjfqm2cwyi-qgis-3.16.3.drv' failed with exit code 1 ------ I think the salient part is near the beginning: .sip5-real: Unable to find file "QtXml/QtXmlmod.sip" I tried using your original approach for pyqt5-sip, where you symlinked it into the output of python-pyqt, but I got the same result. I guess that we need to adjust the package python-pyqt+qscintilla. Any ideas?
> .sip5-real: Unable to find file "QtXml/QtXmlmod.sip" I found an upstream bug report that is superficially similar: https://issues.qgis.org/issues/20969 However, their solution is already done in our package: Make sure that pyqt is available.
On Wed, Apr 07, 2021 at 08:05:00PM -0400, Leo Famulari wrote:
> .sip5-real: Unable to find file "QtXml/QtXmlmod.sip"
I also noticed this passage in the QGIS ChangeLog:
------
Daniel Minor <daniel.minor@gmail.com> 2020-07-14
Fix FindPyQt5 cmake and python scripts
As written, the FindPyQt5.cmake and FindPyQt5.py scripts will succeed even if
PyQt5 is not installed. In FindPyQt5.cmake, we have PYQT5_FIND_REQUIRED rather
than PyQt5_FIND_REQUIRED, so the package is always treated as though it is
optional. In FindPyQt5.py, the script will succeed with a default location for
the sip directory, even if the PyQt5 directory is not located.
For some systems, if enough other dependencies are installed, the build can
get about halfway complete without the main PyQt5 dependency, and then fail
with a message like:
sip: Unable to find file "QtXml/QtXmlmod.sip"
I hit this building on Ubuntu, and there have been a few similar bug reports in
the past.
------
Well, using a python-pyqt with the python-sip input set back to python-sip-4 fixes it. Do we want to commit to getting it working with python-sip@5. I'm still playing around with it trying to get it to build Not sure where you see that sip error. The builds fail for me with make[2]: Leaving directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' make[2]: *** [python/CMakeFiles/python_module_qgis__core_autogen.dir/build.make:682: python/core/sip_corepart0.cpp] Error 1 make[2]: *** Deleting file 'python/core/sip_corepart0.cpp' make[2]: Leaving directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' make[1]: *** [CMakeFiles/Makefile2:8003: python/CMakeFiles/python_module_qgis__core_autogen.dir/all] Error 2
On Thu, Apr 08, 2021 at 06:11:55AM +0200, Brendan Tildesley wrote: > Well, using a python-pyqt with the python-sip input set back to python-sip-4 fixes it. Do we want to commit to getting it working with python-sip@5. I'm still playing around with it trying to get it to build I think it's okay to use python-sip-4, unless you want to hunt down this bug. > Not sure where you see that sip error. The builds fail for me with > > make[2]: Leaving directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' > make[2]: *** [python/CMakeFiles/python_module_qgis__core_autogen.dir/build.make:682: python/core/sip_corepart0.cpp] Error 1 > make[2]: *** Deleting file 'python/core/sip_corepart0.cpp' > make[2]: Leaving directory '/tmp/guix-build-qgis-3.16.3.drv-0/build' > make[1]: *** [CMakeFiles/Makefile2:8003: python/CMakeFiles/python_module_qgis__core_autogen.dir/all] Error 2 I see these lines too, but later. The QtXml error may be a few lines above.
[-- Attachment #1: Type: text/plain, Size: 507 bytes --] > On 04/08/2021 6:28 AM Leo Famulari <leo@famulari.name> wrote: > > > On Thu, Apr 08, 2021 at 06:11:55AM +0200, Brendan Tildesley wrote: > > Well, using a python-pyqt with the python-sip input set back to python-sip-4 fixes it. Do we want to commit to getting it working with python-sip@5. I'm still playing around with it trying to get it to build > > I think it's okay to use python-sip-4, unless you want to hunt down this > bug. Fixed I think. Also I deleted the unused python2-sip (in my notabug) [-- Attachment #2: 0001-gnu-qgis-Fix-build.patch --] [-- Type: text/x-patch, Size: 1813 bytes --] From 6143e197e1caf55d4c0a29aad01f07ca6c73bec8 Mon Sep 17 00:00:00 2001 From: Brendan Tildesley <mail@brendan.scot> Date: Thu, 8 Apr 2021 20:49:57 +1000 Subject: [PATCH] gnu: qgis: Fix build. * gnu/packages/geo.scm (qgis):[arguments]: Add another hack in the 'configure-pyqt5-sip-path phase to fix build failure caused by the upgrade to python-sip@5. The reason for this is that python-sip@5 introduces some changes such as a new build system 'sip-build' as well as the use of the path "/lib/pythonX.X/site-packages/*/bindings/" instead of "/share/sip/" for .sip files. However, we do not actually use that those yet. Qgis detects SIP5 and assumes we are, messing up the build. The long term solution is to fully upgrade SIP, use sip-build and fix all failing packages, but for now I just want to get the build working. --- gnu/packages/geo.scm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index bc5e6820f3..baa95f3cc3 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -2082,7 +2082,11 @@ growing set of geoscientific methods.") (("sip_dir = cfg.default_sip_dir") (string-append "sip_dir = \"" (assoc-ref inputs "python-pyqt+qscintilla") - "/share/sip\""))) + "/share/sip\"")) + ((".pyqt_sip_dir...os.path.join.*,") + (string-append "'pyqt_sip_dir': \"" + (assoc-ref inputs "python-pyqt+qscintilla") + "/share/sip" "\","))) (substitute* (list "scripts/prepare_commit.sh" "scripts/qstringfixup.sh" "scripts/release.pl" -- 2.31.1
On Thu, Apr 08, 2021 at 01:17:43PM +0200, Brendan Tildesley wrote:
>
> > On 04/08/2021 6:28 AM Leo Famulari <leo@famulari.name> wrote:
> >
> >
> > On Thu, Apr 08, 2021 at 06:11:55AM +0200, Brendan Tildesley wrote:
> > > Well, using a python-pyqt with the python-sip input set back to python-sip-4 fixes it. Do we want to commit to getting it working with python-sip@5. I'm still playing around with it trying to get it to build
> >
> > I think it's okay to use python-sip-4, unless you want to hunt down this
> > bug.
>
> Fixed I think.
> Also I deleted the unused python2-sip (in my notabug)
Alright, I pushed as f68bcc1bc3aa0a8d1829e2eb5d9ef256c817c17c
Thank you very much for tackling this complicated upgrade of such an
important package!