bug#25235: [Maxim Cournoyer] bug#25235: [PATCH v3 1/1] build-system/pyproject: Do not wrap native-inputs.

2024-05-04 Thread Lars-Dominik Braun
Hi,

> I'm advancing with my patch series, which I can submit soon. I was
> curious about why this 25235 patch isn't in python-team branch yet since
> it's also a very welcome change to the pyproject-build-system.

I believe this change is based on #60847, which Ludo objected to
(https://issues.guix.gnu.org/60847#19-lineno32). Thus it cannot be merged.

Lars






bug#25235: [Maxim Cournoyer] bug#25235: [PATCH v3 1/1] build-system/pyproject: Do not wrap native-inputs.

2024-05-01 Thread Nicolas Graves via Bug reports for GNU Guix


Hi Lars, Ricardo,

I'm advancing with my patch series, which I can submit soon. I was
curious about why this 25235 patch isn't in python-team branch yet since
it's also a very welcome change to the pyproject-build-system.

Cheers,

Nicolas

 Start of forwarded message 
Subject: bug#25235: [PATCH v3 1/1] build-system/pyproject: Do not wrap
 native-inputs.
To: 25...@debbugs.gnu.org
Cc: arunis...@systemreboot.net, Maxim Cournoyer ,
 l...@gnu.org, Lars-Dominik Braun , efr...@flashner.co.il,
 rek...@elephly.net, jgart , mar...@gnu.org
From: Maxim Cournoyer 
Date: Mon, 23 Jan 2023 08:34:33 -0500

Fixes .

* guix/build/pyproject-build-system.scm (wrap) [native-inputs]: New argument.
Filter out native inputs from the values in GUIX_PYTHONPATH.

---

Changes in v3:
- Rebase

Changes in v2:
- Add missing copyright line
- Rework wrap phase to avoid removing inputs found in both native-inputs and 
inputs
- Enclose wrap computations in an 'unless' form and streamline

 guix/build/pyproject-build-system.scm | 39 ---
 1 file changed, 24 insertions(+), 15 deletions(-)

diff --git a/guix/build/pyproject-build-system.scm 
b/guix/build/pyproject-build-system.scm
index a66c1fb34a..9da86bfc54 100644
--- a/guix/build/pyproject-build-system.scm
+++ b/guix/build/pyproject-build-system.scm
@@ -1,6 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2021 Lars-Dominik Braun 
 ;;; Copyright © 2022 Marius Bakke 
+;;; Copyright © 2023 Maxim Cournoyer 
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -445,7 +446,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))
@@ -458,20 +459,28 @@ (define bindirs
  (string-append dir "/sbin"
 outputs))
 
-  ;; Do not require "guile" to be present in the package inputs
-  ;; even when there is nothing to wrap.
-  ;; Also, calculate (guile) only once to prevent some I/O.
-  (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") "")
-(for-each (lambda (dir)
-(let ((files (list-of-files dir)))
-  (for-each (cut wrap-script <> #:guile (guile) var)
-files)))
-  bindirs)))
+  (unless (null? bindirs)
+(let* ((guile (search-input-file inputs "bin/guile"))
+   (native-input-dirs (match native-inputs
+(((_ . dir) ...)
+ dir)))
+   (input-dirs (match inputs
+ (((_ . dir) ...)
+  dir)))
+   (build-inputs (lset-difference string=? native-input-dirs
+  input-dirs))
+   ;; A build input is an input listed in native-inputs and NOT in
+   ;; inputs.
+   (build-input? (lambda (x)
+   (any (cut string-prefix? <> x) build-inputs)))
+   (var `("GUIX_PYTHONPATH" prefix
+  ,(remove build-input? (search-path-as-string->list
+ (or (getenv "GUIX_PYTHONPATH") 
""))
+  (for-each (lambda (dir)
+  (let ((files (list-of-files dir)))
+(for-each (cut wrap-script <> #:guile guile var)
+  files)))
+bindirs
 
 (define* (rename-pth-file #:key name native-inputs outputs #:allow-other-keys
   #:rest args)
-- 
2.39.1




 End of forwarded message 

-- 
Best regards,
Nicolas Graves