From: Maxim Cournoyer <maxim.cournoyer@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: arunisaac@systemreboot.net, 25235@debbugs.gnu.org,
Lars-Dominik Braun <lars@6xq.net>,
rekado@elephly.net, jgart <jgart@dismail.de>,
marius@gnu.org
Subject: bug#25235: [PATCH 1/1] build-system/pyproject: Do not wrap native-inputs.
Date: Tue, 17 Jan 2023 10:49:00 -0500 [thread overview]
Message-ID: <877cxl2mc3.fsf@gmail.com> (raw)
In-Reply-To: <874jspjyrv.fsf@gnu.org> ("Ludovic Courtès"'s message of "Tue, 17 Jan 2023 10:28:20 +0100")
Hi Ludovic,
Ludovic Courtès <ludo@gnu.org> writes:
> Hi,
>
> Maxim Cournoyer <maxim.cournoyer@gmail.com> skribis:
>
>> Fixes <https://issues.guix.gnu.org/25235>.
>>
>> * guix/build/pyproject-build-system.scm (wrap) [native-inputs]: New argument.
>> Filter out native inputs from the values in GUIX_PYTHONPATH.
>
> Yay, great to see this fixed!
>
>> guix/build/pyproject-build-system.scm | 16 ++++++++++++----
>> 1 file changed, 12 insertions(+), 4 deletions(-)
>>
>> diff --git a/guix/build/pyproject-build-system.scm b/guix/build/pyproject-build-system.scm
>> index a66c1fb34a..cd418f7ec9 100644
>> --- a/guix/build/pyproject-build-system.scm
>> +++ b/guix/build/pyproject-build-system.scm
>> @@ -445,7 +445,7 @@ (define* (add-install-to-pythonpath #:key native-inputs outputs
>> "A phase that just wraps the 'add-installed-pythonpath' procedure."
>> (add-installed-pythonpath native-inputs outputs))
>>
>> -(define* (wrap #:key inputs outputs #:allow-other-keys)
>> +(define* (wrap #:key native-inputs inputs outputs #:allow-other-keys)
>> (define (list-of-files dir)
>> (find-files dir (lambda (file stat)
>> (and (eq? 'regular (stat:type stat))
>> @@ -464,9 +464,17 @@ (define bindirs
>> (define %guile (delay (search-input-file inputs "bin/guile")))
>> (define (guile) (force %guile))
>>
>> - (let* ((var `("GUIX_PYTHONPATH" prefix
>> - ,(search-path-as-string->list
>> - (or (getenv "GUIX_PYTHONPATH") "")))))
>> + ;; Use the same strategy to compute the native-input file names.
>> + (define %native-input-dirs (delay (match native-inputs
>> + (((_ . dir) ...)
>> + dir))))
>> + (define (native-input-dirs) (force %native-input-dirs))
>> +
>> + (let ((var `("GUIX_PYTHONPATH" prefix
>> + ,(remove (lambda (x)
>> + (any (cut string-prefix? <> x) (native-input-dirs)))
>> + (search-path-as-string->list
>> + (or (getenv "GUIX_PYTHONPATH") ""))))))
>
> I think there’s no need to delay+thunk things since we’re using them
> right away. How about:
>
> (define native-input-directories
> (match native-inputs
> …))
>
> (let ((var `("GUIX_PYTHONPATH" prefix
> ,(remove (lambda (x) … native-input-directories …) …))))
> …)
>
> ?
It's a (small) optimization, that was intended to delay things until
they are really needed that was already used for %bash (now %guile) in
the wrap phase of (guix build python-build-system).
The idea is to delay the evaluation of native-input-directories or the
lookup for guile in the inputs until it's really necessary. For
example, the computations are avoided when there are no "bin" or "sbin"
sub-directories in the outputs.
> (Same for ‘%guile’ above, but I don’t see it in ‘master’; maybe that’s
> from another branch?)
Yes, the change build on both #60847 (Enable cross-compilation for the
pyproject-build-system) and #60868 (Use wrap-script instead of
wrap-program), which should be applied first. %guile appears in #60868,
and changes that make the above easy (native-inputs always appearing as
native-inputs, even for native builds) are from #60847.
--
Thanks,
Maxim
next prev parent reply other threads:[~2023-01-17 15:51 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-19 23:28 bug#25235: Wrapped python programs get native-inputs in PYTHONPATH Marius Bakke
2016-12-20 14:00 ` Ludovic Courtès
2016-12-26 18:26 ` Leo Famulari
2017-03-29 11:27 ` Arun Isaac
2017-03-30 15:30 ` Ludovic Courtès
2017-03-30 19:07 ` Arun Isaac
2017-04-04 17:02 ` Arun Isaac
2019-02-07 13:22 ` Ricardo Wurmus
2020-04-06 14:49 ` bug#25235: (no subject) Ricardo Wurmus via web
2020-04-09 0:02 ` Arun Isaac
2020-04-21 2:15 ` bug#25235: Wrapped python programs get native-inputs in PYTHONPATH Arun Isaac
2023-01-16 21:29 ` bug#25235: [PATCH 0/1] build-system/pyproject: Do not wrap native-inputs Maxim Cournoyer
2023-01-16 21:29 ` bug#25235: [PATCH 1/1] " Maxim Cournoyer
2023-01-17 9:28 ` Ludovic Courtès
2023-01-17 15:49 ` Maxim Cournoyer [this message]
2023-01-18 9:51 ` Efraim Flashner
2023-01-18 13:22 ` Maxim Cournoyer
2023-01-18 13:59 ` bug#25235: [PATCH v2 0/1] " Maxim Cournoyer
2023-01-18 14:00 ` bug#25235: [PATCH v2 1/1] " Maxim Cournoyer
2023-01-23 10:27 ` Ludovic Courtès
2023-01-23 13:38 ` Maxim Cournoyer
2023-01-23 13:34 ` bug#25235: [PATCH v3 0/1] " Maxim Cournoyer
2023-01-23 13:34 ` bug#25235: [PATCH v3 1/1] " Maxim Cournoyer
2024-05-01 9:36 ` bug#25235: [Maxim Cournoyer] " Nicolas Graves via Bug reports for GNU Guix
2024-05-04 8:05 ` Lars-Dominik Braun
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877cxl2mc3.fsf@gmail.com \
--to=maxim.cournoyer@gmail.com \
--cc=25235@debbugs.gnu.org \
--cc=arunisaac@systemreboot.net \
--cc=jgart@dismail.de \
--cc=lars@6xq.net \
--cc=ludo@gnu.org \
--cc=marius@gnu.org \
--cc=rekado@elephly.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).