GNU bug report logs - #25235
Wrapped python programs get native-inputs in PYTHONPATH

Previous Next

Package: guix;

Reported by: Marius Bakke <mbakke <at> fastmail.com>

Date: Mon, 19 Dec 2016 23:30:02 UTC

Severity: normal

Fix blocked by 60847: [PATCH] Enable cross-compilation for the pyproject-build-system.

Full log


View this message in rfc822 format

From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: arunisaac <at> systemreboot.net, 25235 <at> debbugs.gnu.org, Lars-Dominik Braun <lars <at> 6xq.net>, rekado <at> elephly.net, jgart <jgart <at> dismail.de>, marius <at> 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
Hi Ludovic,

Ludovic Courtès <ludo <at> gnu.org> writes:

> Hi,
>
> Maxim Cournoyer <maxim.cournoyer <at> 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




This bug report was last modified 1 year and 39 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.