[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
132/242: gnu: python-ipython-documentation: Also build info and pdf targ
From: |
guix-commits |
Subject: |
132/242: gnu: python-ipython-documentation: Also build info and pdf targets. |
Date: |
Wed, 11 May 2022 18:03:16 -0400 (EDT) |
apteryx pushed a commit to branch wip-ipython-polyglossia
in repository guix.
commit 901ad36d314be6c9cd1b7397c371dbc1edac5681
Author: Maxim Cournoyer <maxim.cournoyer@gmail.com>
AuthorDate: Sat Apr 16 23:44:01 2022 -0400
gnu: python-ipython-documentation: Also build info and pdf targets.
* gnu/packages/patches/python-ipython-documentation-chars.patch: New file.
* gnu/packages/patches/python-ipython-documentation-repro.patch: Likewise.
* gnu/local.mk: Register them.
* gnu/packages/python-xyz.scm (python-ipython-documentation)
[source]: Apply patches.
[arguments]: Use gexps.
[phases]{sanitize-sources}: New phase.
{configure-sphinx-for-xelatex}: Likewise.
{install}: Streamline. Also build and install the PDF and info manual.
Enable parallel processing.
[inputs]: Delete field.
[propagated-inputs]: Remove texlive-updmap.cfg input. Add fontconfig,
font-gnu-freefont, graphviz, python-docrepr, texlive-polyglossia,
texlive-bin and texlive-xindy.
---
gnu/local.mk | 2 +
.../python-ipython-documentation-chars.patch | 18 +++
.../python-ipython-documentation-repro.patch | 25 ++++
gnu/packages/python-xyz.scm | 145 +++++++++++----------
4 files changed, 118 insertions(+), 72 deletions(-)
diff --git a/gnu/local.mk b/gnu/local.mk
index 3c7a2da230..2332ba1f26 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1687,6 +1687,8 @@ dist_patch_DATA =
\
%D%/packages/patches/python-execnet-read-only-fix.patch \
%D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \
%D%/packages/patches/python-flask-restful-werkzeug-compat.patch \
+ %D%/packages/patches/python-ipython-documentation-chars.patch \
+ %D%/packages/patches/python-ipython-documentation-repro.patch \
%D%/packages/patches/python-keras-integration-test.patch \
%D%/packages/patches/python-pdoc3-tests.patch \
%D%/packages/patches/python-peachpy-determinism.patch \
diff --git a/gnu/packages/patches/python-ipython-documentation-chars.patch
b/gnu/packages/patches/python-ipython-documentation-chars.patch
new file mode 100644
index 0000000000..a52c54f513
--- /dev/null
+++ b/gnu/packages/patches/python-ipython-documentation-chars.patch
@@ -0,0 +1,18 @@
+Avoid LaTeX errors due to non-printable characters.
+Submitted upstream: https://github.com/ipython/ipython/pull/13640
+
+diff --git a/IPython/utils/coloransi.py b/IPython/utils/coloransi.py
+index e33142180..9300b0108 100644
+--- a/IPython/utils/coloransi.py
++++ b/IPython/utils/coloransi.py
+@@ -74,8 +74,8 @@ class TermColors:
+ class InputTermColors:
+ """Color escape sequences for input prompts.
+
+- This class is similar to TermColors, but the escapes are wrapped in \001
+- and \002 so that readline can properly know the length of each line and
++ This class is similar to TermColors, but the escapes are wrapped in \\001
++ and \\002 so that readline can properly know the length of each line and
+ can wrap lines accordingly. Use this class for any colored text which
+ needs to be used in input prompts, such as in calls to raw_input().
+
diff --git a/gnu/packages/patches/python-ipython-documentation-repro.patch
b/gnu/packages/patches/python-ipython-documentation-repro.patch
new file mode 100644
index 0000000000..d6a6e9c3fd
--- /dev/null
+++ b/gnu/packages/patches/python-ipython-documentation-repro.patch
@@ -0,0 +1,25 @@
+Fix non-reproducibilities caused by time-dependent procedures.
+Submitted upstream: https://github.com/ipython/ipython/pull/13640
+
+diff --git a/IPython/sphinxext/ipython_directive.py
b/IPython/sphinxext/ipython_directive.py
+index 18bdfcae9..2c665ac87 100644
+--- a/IPython/sphinxext/ipython_directive.py
++++ b/IPython/sphinxext/ipython_directive.py
+@@ -19,7 +19,7 @@
+ In [1]: 1+1
+
+ In [1]: import datetime
+- ...: datetime.datetime.now()
++ ...: datetime.date.fromisoformat('2022-02-22')
+
+ It supports IPython construct that plain
+ Python does not understand (like magics):
+@@ -28,7 +28,7 @@
+
+ In [0]: import time
+
+- In [0]: %timeit time.sleep(0.05)
++ In [0]: %pdoc time
+
+ This will also support top-level async when using IPython 7.0+
+
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index c996ec8506..ab41d2b3aa 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -155,9 +155,11 @@
#:use-module (gnu packages django)
#:use-module (gnu packages djvu)
#:use-module (gnu packages docker)
+ #:use-module (gnu packages documentation)
#:use-module (gnu packages enchant)
#:use-module (gnu packages file)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages fonts)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gdb)
#:use-module (gnu packages gcc)
@@ -9379,79 +9381,78 @@ computing.")
(inherit python-ipython)
(name "python-ipython-documentation")
(version (package-version python-ipython))
+ (source
+ (origin
+ (inherit (package-source python-ipython))
+ (patches (append (search-patches
+ "python-ipython-documentation-chars.patch"
+ "python-ipython-documentation-repro.patch")
+ (origin-patches (package-source python-ipython))))))
(arguments
- `(#:phases
- (modify-phases %standard-phases
- (delete 'build)
- (delete 'check)
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let* ((data (string-append (assoc-ref outputs "out") "/share"))
- (doc (string-append data "/doc/" ,name "-" ,version))
- (html (string-append doc "/html"))
- (man1 (string-append data "/man/man1"))
- (info (string-append data "/info"))
- (examples (string-append doc "/examples"))
- (python-arg (string-append "PYTHON=" (which "python"))))
- (setenv "LANG" "en_US.utf8")
- (with-directory-excursion "docs"
- ;; FIXME: pdf fails to build
- ;;(system* "make" "pdf" "PAPER=a4")
- (system* "make" python-arg "html")
- ;; FIXME: the generated texi file contains ^@^@, which trips
- ;; up the parser.
- ;; (system* "make" python-arg "info")
- )
- (copy-recursively "docs/man" man1)
- (copy-recursively "examples" examples)
- (copy-recursively "docs/build/html" html)
- ;; (copy-file "docs/build/latex/ipython.pdf"
- ;; (string-append doc "/ipython.pdf"))
- (mkdir-p info)
- ;; (copy-file "docs/build/texinfo/ipython.info"
- ;; (string-append info "/ipython.info"))
- (copy-file "COPYING.rst" (string-append doc
"/COPYING.rst"))))))))
- (inputs
- (list python-ipython python-ipykernel))
- (native-inputs
- `(("python-sphinx" ,python-sphinx)
- ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
- ;; FIXME: It's possible that a smaller updmap.cfg would work just as
- ;; well.
- ("texlive" ,(texlive-updmap.cfg (list texlive-amsfonts
- texlive-capt-of
- texlive-fonts-ec
- texlive-generic-iftex
- texlive-pdftex
- texlive-latex-cmap
- texlive-latex-environ
- texlive-latex-eqparbox
- texlive-etoolbox
- texlive-latex-expdlist
- texlive-latex-fancyhdr
- texlive-latex-fancyvrb
- texlive-latex-fncychap
- texlive-latex-float
- texlive-latex-framed
- texlive-latex-geometry
- texlive-latex-graphics
- texlive-hyperref
- texlive-latex-mdwtools
- texlive-latex-multirow
- texlive-latex-needspace
- texlive-oberdiek
- texlive-latex-parskip
- texlive-latex-preview
- texlive-latex-tabulary
- texlive-latex-threeparttable
- texlive-latex-titlesec
- texlive-latex-trimspaces
- texlive-latex-ucs
- texlive-latex-upquote
- texlive-url
- texlive-latex-varwidth
- texlive-wrapfig)))
- ("texinfo" ,texinfo)))))
+ (list
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-pythonpath
+ (lambda _
+ ;; Ensure this fixed (via the
+ ;; "python-ipython-documentation-chars.patch" patch) copy of
+ ;; IPython gets used.
+ (setenv "PYTHONPATH" (string-append (getcwd)))))
+ (add-before 'build 'configure-sphinx-for-xelatex
+ (lambda _
+ ;; Use XeLaTeX instead of PDFLaTeX, as it can
+ ;; cope with the Unicode characters present in the
+ ;; contributors page, for example.
+ (substitute* "docs/source/conf.py"
+ (("project = 'IPython'.*" all)
+ (string-append all "latex_engine = 'xelatex'\n")))
+ ;; XXX: The Sphinx-generated ipython.tex specifies the GNU
+ ;; FreeFont font to be searched via its extension, which uses
+ ;; kpathsea instead of fontconfig and fail (see:
+ ;; https://github.com/sphinx-doc/sphinx/issues/10347). Create a
+ ;; symlink to GNU FreeFont and add it to the TEXMF tree via
+ ;; GUIX_TEXMF.
+ (mkdir-p "texmf-dist/fonts/opentype/public")
+ (symlink (string-append
+ #$(this-package-native-input "font-gnu-freefont")
+ "/share/fonts/opentype")
+ (string-append
+ (getcwd) "/"
+ "texmf-dist/fonts/opentype/public/gnu-freefont"))
+ (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") ":"
+ (getcwd) "/texmf-dist"))))
+ (delete 'build)
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((data (string-append #$output "/share"))
+ (doc (string-append data "/doc/" #$name "-" #$version))
+ (html (string-append doc "/html"))
+ (info (string-append data "/info")))
+ (invoke "make" "-C" "docs" "info" "html" "pdf"
+ (string-append "SPHINXOPTS=-j"
+ (number->string (parallel-job-count))))
+ (install-file "COPYING.rst" doc)
+ (copy-recursively "examples" (string-append doc "/examples"))
+ ;; Install HTML documentation.
+ (copy-recursively "docs/build/html" html)
+ ;; Likewise for the PDF.
+ (install-file "docs/build/latex/ipython.pdf" doc)
+ ;; Likewise for the info manual.
+ (install-file "docs/build/texinfo/ipython.info" info)
+ (symlink (string-append html "/_images")
+ (string-append info "/ipython-figures"))))))))
+ (native-inputs
+ (list fontconfig ;for XDG_DATA_DIRS to locate fonts
+ font-gnu-freefont
+ graphviz
+ python-docrepr
+ python-sphinx
+ python-sphinx-rtd-theme
+ texinfo
+ texlive-bin
+ texlive-polyglossia
+ texlive-xindy))))
(define-public python-urwid
(package
- 107/242: gnu: python-ipyparallel: Update to 8.2.1., (continued)
- 107/242: gnu: python-ipyparallel: Update to 8.2.1., guix-commits, 2022/05/11
- 108/242: gnu: python-anyio: Replace python-pytest-trio with python-trio., guix-commits, 2022/05/11
- 115/242: gnu: python-nbval: Fix build., guix-commits, 2022/05/11
- 120/242: gnu: python-sphinx: Propagate TexLive dependencies., guix-commits, 2022/05/11
- 125/242: gnu: texlive-polyglossia: Rename and fix package., guix-commits, 2022/05/11
- 126/242: gnu: Add texlive-cbfonts-fd., guix-commits, 2022/05/11
- 127/242: gnu: Add texlive-cbfonts., guix-commits, 2022/05/11
- 128/242: download: Add a mirror for CTAN., guix-commits, 2022/05/11
- 129/242: gnu: texlive-latex-geometry: Propagate texlive-latex-graphics., guix-commits, 2022/05/11
- 134/242: gnu: Add python-strict-rfc3339., guix-commits, 2022/05/11
- 132/242: gnu: python-ipython-documentation: Also build info and pdf targets.,
guix-commits <=
- 138/242: gnu: Add python-cbor2., guix-commits, 2022/05/11
- 136/242: gnu: Add python-openapi-schema-validator., guix-commits, 2022/05/11
- 140/242: gnu: Add python-httpcore-bootstrap., guix-commits, 2022/05/11
- 146/242: gnu: python-sqlalchemy: Update to 1.4.35., guix-commits, 2022/05/11
- 149/242: gnu: python-fakeredis: Update to 1.7.1., guix-commits, 2022/05/11
- 144/242: gnu: Add python-socksio., guix-commits, 2022/05/11
- 137/242: gnu: Add python-openapi-spec-validator., guix-commits, 2022/05/11
- 145/242: gnu: python-sqlalchemy: Run tests in parallel via xdist., guix-commits, 2022/05/11
- 141/242: gnu: Add python-httpx-bootstrap., guix-commits, 2022/05/11
- 150/242: gnu: python-falcon: Update to 3.1.0., guix-commits, 2022/05/11