summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-04-12 23:36:01 -0400
committerMaxim Cournoyer <maxim.cournoyer@gmail.com>2022-05-12 12:45:43 -0400
commit53e179c752a7e0a289d845f1dc92883dd335e1f2 (patch)
treeb91b624c1bd7d04ab15cb87b609cfbff23761ab4
parentf30bdda88f6103a004ff118d568950aa42d36ad3 (diff)
downloadguix-53e179c752a7e0a289d845f1dc92883dd335e1f2.tar.gz
gnu: python-ipykernel: Update to 6.13.0.
* gnu/packages/python-xyz.scm (python-ipykernel): Update to 6.13.0.
[origin]: Fix indentation.
[phases]: Use gexps.
{check}: Invoke pytest via tini
{set-python-file-name}: Adjust to use search-input-file.
[propagated-inputs]: Add python-debugpy, python-matplotlib-inline and
python-psutil.
[native-inputs]{python-nose}: Delete.
{python-ipyrallel-bootstrap}: New native input.
{python-pytest}: Replace with...
{python-pytest-bootstrap}: ... this.
{python-pytest-timeout, tini}: New native inputs.
-rw-r--r--gnu/packages/python-xyz.scm94
1 files changed, 64 insertions, 30 deletions
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 9ede07e505..7055b58094 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -9093,42 +9093,76 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
 (define-public python-ipykernel
   (package
     (name "python-ipykernel")
-    (version "5.5.3")
+    (version "6.13.0")
     (source
      (origin
-      (method url-fetch)
-      (uri (pypi-uri "ipykernel" version))
-      (sha256
-       (base32 "02f55cjkp5q64x7ikjxznbxwjpkdmfy237b9kg7dk1pxmzvy90m6"))))
+       (method url-fetch)
+       (uri (pypi-uri "ipykernel" version))
+       (sha256
+        (base32 "0q5yni8h08nadsn53f957p0pjsjhwl2b2lp1hqz3jn0854z2fa0f"))))
     (build-system python-build-system)
     (arguments
-     `(#:phases
-       (modify-phases %standard-phases
-         (replace 'check
-           (lambda* (#:key tests? #:allow-other-keys)
-             (when tests?
-               (setenv "HOME" "/tmp")
-               (invoke "pytest" "-v"))))
-         (add-after 'install 'set-python-file-name
-           (lambda* (#:key outputs #:allow-other-keys)
-             ;; Record the absolute file name of the 'python' executable in
-             ;; 'kernel.json'.
-             (let ((out (assoc-ref outputs "out")))
-               (substitute* (string-append out "/share/jupyter"
-                                           "/kernels/python3/kernel.json")
-                 (("\"python\"")
-                  (string-append "\"" (which "python") "\"")))
-               #t))))))
-    (propagated-inputs
-     (list python-ipython python-tornado-6 python-traitlets
-           ;; imported at runtime during connect
-           python-jupyter-client))
-    (native-inputs
-     (list python-flaky python-nose python-pytest))
+     (list
+      #:imported-modules `(,@%python-build-system-modules
+                           (guix build syscalls))
+      #:modules '((guix build python-build-system)
+                  (guix build syscalls)
+                  (guix build utils)
+                  (ice-9 match))
+      #:phases
+      #~(modify-phases %standard-phases
+          (replace 'check
+            (lambda* (#:key tests? #:allow-other-keys)
+              (when tests?
+                (match (primitive-fork)
+                  (0                    ;child process
+                   (set-child-subreaper!)
+                   ;; XXX: Tini provides proper PID1-like signal handling that
+                   ;; reaps zombie processes, necessary for the
+                   ;; 'test_shutdown_subprocesses' test to pass.
+
+                   ;; TODO: Complete https://issues.guix.gnu.org/30948.
+                   (setenv "HOME" "/tmp")
+                   (execlp "tini" "--" "pytest" "-vv"))
+                  (pid
+                   (match (waitpid pid)
+                     ((_ . status)
+                      (unless (zero? status)
+                        (error "`pytest' exited with status"
+                               status)))))))))
+          (add-after 'install 'set-python-file-name
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Record the absolute file name of the 'python' executable in
+              ;; 'kernel.json'.
+              (substitute* (string-append #$output "/share/jupyter"
+                                          "/kernels/python3/kernel.json")
+                (("\"python\"")
+                 (format #f "~s" (search-input-file inputs
+                                                    "/bin/python3")))))))))
+    (propagated-inputs
+     (list python-debugpy
+           python-ipython
+           python-jupyter-client        ;imported at runtime during connect
+           python-matplotlib-inline
+           ;;python-nest-asyncio
+           ;;python-packaging
+           python-psutil
+           python-tornado-6
+           python-traitlets))
+    (inputs (list python))              ;for cross compilation
+    (native-inputs
+     (list python-flaky
+           python-ipyparallel-bootstrap
+           ;; XXX: Our Pytest package captures its native inputs in its
+           ;; wrapper script (such as python-nose), which is used in the code
+           ;; and causes deprecation warnings.  Using the bootstrap variant
+           ;; avoids that.
+           python-pytest-bootstrap
+           python-pytest-timeout
+           tini))
     (home-page "https://ipython.org")
     (synopsis "IPython Kernel for Jupyter")
-    (description
-     "This package provides the IPython kernel for Jupyter.")
+    (description "This package provides the IPython kernel for Jupyter.")
     (license license:bsd-3)))
 
 ;; Bootstrap variant of ipykernel, which uses the bootstrap jupyter-client to