diff mbox series

[bug#54876] gnu: sbcl-py4cl: Fix path to python3.

Message ID 20220412025518.5253-1-paul@apatience.com
State Accepted
Headers show
Series [bug#54876] gnu: sbcl-py4cl: Fix path to python3. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Paul A. Patience April 12, 2022, 2:55 a.m. UTC
* gnu/packages/lisp-xyz.scm (sbcl-py4cl)[arguments]: Add the
'fix-python3-path phase which sets py4cl:*python-command* to the
absolute path to python3.
---
 gnu/packages/lisp-xyz.scm | 6 ++++++
 1 file changed, 6 insertions(+)

--
2.35.1

Comments

Guillaume Le Vaillant April 12, 2022, 12:07 p.m. UTC | #1
Patch pushed as 917c25b3ba0575c6c6e44f8af0d1365bb2378220.
Thanks.
M April 12, 2022, 12:46 p.m. UTC | #2
Paul A. Patience schreef op di 12-04-2022 om 02:55 [+0000]:
+               (substitute* "src/callpython.lisp"
+                 (("\\*python-command\\* \"python\"")
+                  (string-append "*python-command* "
+                                 "\"" (which "python3") "\"")))))

This is most likely incorrect when cross-compiling.  Do

  (lambda* (#:key inputs #:allow-other-keys)
     [...]
     (string-append [...] (search-input-file inputs "bin/python3") [...]) [...])

instead, such that it looks in 'inputs' instead of 'native-inputs'.


Also, now that 'python3' is patched in, is the following still relevant:

      (propagated-inputs
       ;; This package doesn't do anything without python available
       (list python

(I mean, does it still need to be propagated?)

Greetings,
Maxime.
Guillaume Le Vaillant April 12, 2022, 1:15 p.m. UTC | #3
Maxime Devos <maximedevos@telenet.be> skribis:

> Paul A. Patience schreef op di 12-04-2022 om 02:55 [+0000]:
> +               (substitute* "src/callpython.lisp"
> +                 (("\\*python-command\\* \"python\"")
> +                  (string-append "*python-command* "
> +                                 "\"" (which "python3") "\"")))))
>
> This is most likely incorrect when cross-compiling.  Do
>
>   (lambda* (#:key inputs #:allow-other-keys)
>      [...]
>      (string-append [...] (search-input-file inputs "bin/python3") [...]) [...])
>
> instead, such that it looks in 'inputs' instead of 'native-inputs'.

The two are equivalent because so far asdf-build-system doesn't support
cross builds using "--target=TRIPLET". But using 'search-input-file'
looks better.

> Also, now that 'python3' is patched in, is the following still relevant:
>
>       (propagated-inputs
>        ;; This package doesn't do anything without python available
>        (list python
>
> (I mean, does it still need to be propagated?)

Indeed, having python3 in 'inputs' should be enough now.

Pushed in 59377f88ed1e31d38b34279f393949bf17e505ad.
Thanks.
Paul A. Patience April 12, 2022, 1:36 p.m. UTC | #4
Hello,

On 2022-04-12 08:46:23-04:00, Maxime Devos wrote:
> This is most likely incorrect when cross-compiling.  Do
>
>   (lambda* (#:key inputs #:allow-other-keys)
>      [...]
>      (string-append [...] (search-input-file inputs "bin/python3") [...]) [...])
>
> instead, such that it looks in 'inputs' instead of 'native-inputs'.
>
>
> Also, now that 'python3' is patched in, is the following still relevant:
>
>       (propagated-inputs
>        ;; This package doesn't do anything without python available
>        (list python
>
> (I mean, does it still need to be propagated?)

So you're suggesting we call search-input-file and move the python
dependency to inputs rather than propagated-inputs?
Right, since the correct path to python3 is now hardcoded, it doesn't
need to be propagated.

One other thing we could do is move python-numpy to native-inputs.
It's required only for the tests and multidimensional array support, but
py4cl.py looks up python-numpy at runtime for the latter, and gracefully
handles the situation when it is not found.
A user could opt-in to the multidimensional array support by explicitly
installing python-numpy.
However, I'm not familiar with how Guix deals with Python module paths.
Would the python3 in sbcl-py4cl's inputs be able to find python-numpy if
only sbcl-py4cl and python-numpy are explicitly installed by the user?

Best regards,
Paul
diff mbox series

Patch

diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm
index 358bba4e89..10a46d4b9a 100644
--- a/gnu/packages/lisp-xyz.scm
+++ b/gnu/packages/lisp-xyz.scm
@@ -5180,6 +5180,12 @@  (define-public sbcl-py4cl
       (arguments
        '(#:phases
          (modify-phases %standard-phases
+           (add-after 'unpack 'fix-python3-path
+             (lambda _
+               (substitute* "src/callpython.lisp"
+                 (("\\*python-command\\* \"python\"")
+                  (string-append "*python-command* "
+                                 "\"" (which "python3") "\"")))))
            (add-after 'unpack 'replace-*base-directory*-var
              (lambda* (#:key outputs #:allow-other-keys)
                ;; In the ASD, the author makes an attempt to