unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#64763] [PATCH] gnu: commencement: Use system in %final-inputs.
@ 2023-07-21 10:11 Christopher Baines
  2023-08-07 15:02 ` Ludovic Courtès
  0 siblings, 1 reply; 5+ messages in thread
From: Christopher Baines @ 2023-07-21 10:11 UTC (permalink / raw)
  To: 64763

Otherwise this causes odd issues, I presume arising from when %current-system
differs from the system argument passed to %final-inputs.

* gnu/packages/commencement.scm (%final-inputs): Set %current-system to
system.
---
 gnu/packages/commencement.scm | 51 ++++++++++++++++++-----------------
 1 file changed, 26 insertions(+), 25 deletions(-)

diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index fe6f025257..e522e70444 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3459,31 +3459,32 @@ (define-public %final-inputs
     ;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are
     ;; used for origins that have patches, thereby avoiding circular
     ;; dependencies.
-    (let ((finalize (compose with-boot6
-                             package-with-bootstrap-guile)))
-      `(,@(map (match-lambda
-                 ((name package)
-                  (list name (finalize package))))
-               `(("tar" ,tar)
-                 ("gzip" ,gzip)
-                 ("bzip2" ,bzip2)
-                 ("file" ,file)
-                 ("diffutils" ,diffutils)
-                 ("patch" ,patch)
-                 ("findutils" ,findutils)
-                 ("gawk" ,gawk)))
-        ("sed" ,sed-final)
-        ("grep" ,grep-final)
-        ("xz" ,xz-final)
-        ("coreutils" ,coreutils-final)
-        ("make" ,gnu-make-final)
-        ("bash" ,bash-final)
-        ("ld-wrapper" ,ld-wrapper)
-        ("binutils" ,binutils-final)
-        ("gcc" ,gcc-final)
-        ("libc" ,glibc-final)
-        ("libc:static" ,glibc-final "static")
-        ("locales" ,glibc-utf8-locales-final)))))
+    (parameterize ((%current-system system))
+      (let ((finalize (compose with-boot6
+                               package-with-bootstrap-guile)))
+        `(,@(map (match-lambda
+                   ((name package)
+                    (list name (finalize package))))
+                 `(("tar" ,tar)
+                   ("gzip" ,gzip)
+                   ("bzip2" ,bzip2)
+                   ("file" ,file)
+                   ("diffutils" ,diffutils)
+                   ("patch" ,patch)
+                   ("findutils" ,findutils)
+                   ("gawk" ,gawk)))
+          ("sed" ,sed-final)
+          ("grep" ,grep-final)
+          ("xz" ,xz-final)
+          ("coreutils" ,coreutils-final)
+          ("make" ,gnu-make-final)
+          ("bash" ,bash-final)
+          ("ld-wrapper" ,ld-wrapper)
+          ("binutils" ,binutils-final)
+          ("gcc" ,gcc-final)
+          ("libc" ,glibc-final)
+          ("libc:static" ,glibc-final "static")
+          ("locales" ,glibc-utf8-locales-final))))))
 
 (define-public canonical-package
   (let ((name->package (mlambda (system)

base-commit: 120f1721b2b66e5c9507556267bbfd83945958ce
prerequisite-patch-id: 9576d8ce545492d52fbe016d30103a51a9ddf94f
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#64763] [PATCH] gnu: commencement: Use system in %final-inputs.
  2023-07-21 10:11 [bug#64763] [PATCH] gnu: commencement: Use system in %final-inputs Christopher Baines
@ 2023-08-07 15:02 ` Ludovic Courtès
  2023-08-09  7:38   ` Josselin Poiret via Guix-patches via
  0 siblings, 1 reply; 5+ messages in thread
From: Ludovic Courtès @ 2023-08-07 15:02 UTC (permalink / raw)
  To: Christopher Baines; +Cc: Josselin Poiret, 64763

Hi!

Christopher Baines <mail@cbaines.net> skribis:

> Otherwise this causes odd issues, I presume arising from when %current-system
> differs from the system argument passed to %final-inputs.
>
> * gnu/packages/commencement.scm (%final-inputs): Set %current-system to
> system.

Please add a “Fixes …” line in the log.

>  gnu/packages/commencement.scm | 51 ++++++++++++++++++-----------------
>  1 file changed, 26 insertions(+), 25 deletions(-)
>
> diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
> index fe6f025257..e522e70444 100644
> --- a/gnu/packages/commencement.scm
> +++ b/gnu/packages/commencement.scm
> @@ -3459,31 +3459,32 @@ (define-public %final-inputs

[...]

> +    (parameterize ((%current-system system))

LGTM!  I think that was definitely the intent of
0dd293b4d9095137c9952e16ca951f887b7e7018 (Cc’ing Josselin just in
case).

Thanks,
Ludo’.

PS: I believe the reason we cannot just write:

      (define/system-dependent %final-inputs …)

    is because we have two places where we do:

      (module-ref m '%final-inputs)

    which wouldn’t work if ‘%final-inputs’ were a macro, as is the case
    with ‘define/system-dependent’.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* [bug#64763] [PATCH] gnu: commencement: Use system in %final-inputs.
  2023-08-07 15:02 ` Ludovic Courtès
@ 2023-08-09  7:38   ` Josselin Poiret via Guix-patches via
  2023-08-09 21:31     ` Ludovic Courtès
  0 siblings, 1 reply; 5+ messages in thread
From: Josselin Poiret via Guix-patches via @ 2023-08-09  7:38 UTC (permalink / raw)
  To: Ludovic Courtès, Christopher Baines; +Cc: Josselin Poiret, 64763

From: Christopher Baines <mail@cbaines.net>

Otherwise this causes odd issues, I presume arising from when %current-system
differs from the system argument passed to %final-inputs.

* gnu/packages/commencement.scm (%final-inputs): Set %current-system to
system.
* gnu/packages/base.scm (%final-inputs): Add optional system parameter.
* gnu/ci.scm (base-packages): New procedure to memoize the base packages
depending on system.
(package->job): Pass system to base-packages.

Co-authored-by: Josselin Poiret <dev@jpoiret.xyz>
Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>
---
Hi everyone,

I think the patch itself looks good but it will probably be missing some
additional stuff for CI, see the modified patch here.

Best,

 gnu/ci.scm                    | 46 ++++++++++++++++---------------
 gnu/packages/base.scm         |  7 ++---
 gnu/packages/commencement.scm | 51 ++++++++++++++++++-----------------
 3 files changed, 55 insertions(+), 49 deletions(-)

diff --git a/gnu/ci.scm b/gnu/ci.scm
index 7acd88ed29..df98c8af97 100644
--- a/gnu/ci.scm
+++ b/gnu/ci.scm
@@ -24,6 +24,7 @@ (define-module (gnu ci)
   #:use-module (guix build-system channel)
   #:use-module (guix config)
   #:autoload   (guix describe) (package-channels)
+  #:use-module (guix memoization)
   #:use-module (guix store)
   #:use-module (guix profiles)
   #:use-module (guix packages)
@@ -342,29 +343,32 @@ (define job-name
   ;; Return the name of a package's job.
   package-name)
 
+(define base-packages
+  (mlambda (system)
+    "Return the set of packages considered to be part of the base for SYSTEM."
+    (delete-duplicates
+     (append-map (match-lambda
+                   ((_ package _ ...)
+                    (match (package-transitive-inputs package)
+                      (((_ inputs _ ...) ...)
+                       inputs))))
+                 (%final-inputs system)))))
+
 (define package->job
-  (let ((base-packages
-         (delete-duplicates
-          (append-map (match-lambda
-                        ((_ package _ ...)
-                         (match (package-transitive-inputs package)
-                           (((_ inputs _ ...) ...)
-                            inputs))))
-                      (%final-inputs)))))
-    (lambda* (store package system #:key (suffix ""))
-      "Return a job for PACKAGE on SYSTEM, or #f if this combination is not
+  (lambda* (store package system #:key (suffix ""))
+    "Return a job for PACKAGE on SYSTEM, or #f if this combination is not
 valid.  Append SUFFIX to the job name."
-      (cond ((member package base-packages)
-             (package-job store (string-append "base." (job-name package))
-                          package system #:suffix suffix))
-            ((supported-package? package system)
-             (let ((drv (package-derivation store package system
-                                            #:graft? #f)))
-               (and (substitutable-derivation? drv)
-                    (package-job store (job-name package)
-                                 package system #:suffix suffix))))
-            (else
-             #f)))))
+    (cond ((member package (base-packages system))
+           (package-job store (string-append "base." (job-name package))
+                        package system #:suffix suffix))
+          ((supported-package? package system)
+           (let ((drv (package-derivation store package system
+                                          #:graft? #f)))
+             (and (substitutable-derivation? drv)
+                  (package-job store (job-name package)
+                               package system #:suffix suffix))))
+          (else
+           #f))))
 
 (define %x86-64-micro-architectures
   ;; Micro-architectures for which we build tuned variants.
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index 1fdfaf8a57..32bc69e2c4 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -78,7 +78,8 @@ (define-module (gnu packages base)
   #:export (glibc
             libc-for-target
             make-ld-wrapper
-            libiconv-if-needed))
+            libiconv-if-needed
+            %final-inputs))
 
 ;;; Commentary:
 ;;;
@@ -1648,10 +1649,10 @@ (define-public (canonical-package package)
          (proc  (module-ref iface 'canonical-package)))
     (proc package)))
 
-(define-public (%final-inputs)
+(define* (%final-inputs #:optional (system (%current-system)))
   "Return the list of \"final inputs\"."
   ;; Avoid circular dependency by lazily resolving 'commencement'.
   (let ((iface (resolve-interface '(gnu packages commencement))))
-    ((module-ref iface '%final-inputs) (%current-system))))
+    ((module-ref iface '%final-inputs) system)))
 
 ;;; base.scm ends here
diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm
index fe6f025257..e522e70444 100644
--- a/gnu/packages/commencement.scm
+++ b/gnu/packages/commencement.scm
@@ -3459,31 +3459,32 @@ (define-public %final-inputs
     ;; still use 'package-with-bootstrap-guile' so that the bootstrap tools are
     ;; used for origins that have patches, thereby avoiding circular
     ;; dependencies.
-    (let ((finalize (compose with-boot6
-                             package-with-bootstrap-guile)))
-      `(,@(map (match-lambda
-                 ((name package)
-                  (list name (finalize package))))
-               `(("tar" ,tar)
-                 ("gzip" ,gzip)
-                 ("bzip2" ,bzip2)
-                 ("file" ,file)
-                 ("diffutils" ,diffutils)
-                 ("patch" ,patch)
-                 ("findutils" ,findutils)
-                 ("gawk" ,gawk)))
-        ("sed" ,sed-final)
-        ("grep" ,grep-final)
-        ("xz" ,xz-final)
-        ("coreutils" ,coreutils-final)
-        ("make" ,gnu-make-final)
-        ("bash" ,bash-final)
-        ("ld-wrapper" ,ld-wrapper)
-        ("binutils" ,binutils-final)
-        ("gcc" ,gcc-final)
-        ("libc" ,glibc-final)
-        ("libc:static" ,glibc-final "static")
-        ("locales" ,glibc-utf8-locales-final)))))
+    (parameterize ((%current-system system))
+      (let ((finalize (compose with-boot6
+                               package-with-bootstrap-guile)))
+        `(,@(map (match-lambda
+                   ((name package)
+                    (list name (finalize package))))
+                 `(("tar" ,tar)
+                   ("gzip" ,gzip)
+                   ("bzip2" ,bzip2)
+                   ("file" ,file)
+                   ("diffutils" ,diffutils)
+                   ("patch" ,patch)
+                   ("findutils" ,findutils)
+                   ("gawk" ,gawk)))
+          ("sed" ,sed-final)
+          ("grep" ,grep-final)
+          ("xz" ,xz-final)
+          ("coreutils" ,coreutils-final)
+          ("make" ,gnu-make-final)
+          ("bash" ,bash-final)
+          ("ld-wrapper" ,ld-wrapper)
+          ("binutils" ,binutils-final)
+          ("gcc" ,gcc-final)
+          ("libc" ,glibc-final)
+          ("libc:static" ,glibc-final "static")
+          ("locales" ,glibc-utf8-locales-final))))))
 
 (define-public canonical-package
   (let ((name->package (mlambda (system)
-- 
2.41.0





^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [bug#64763] [PATCH] gnu: commencement: Use system in %final-inputs.
  2023-08-09  7:38   ` Josselin Poiret via Guix-patches via
@ 2023-08-09 21:31     ` Ludovic Courtès
  2023-08-18 14:15       ` bug#64763: " Ludovic Courtès
  0 siblings, 1 reply; 5+ messages in thread
From: Ludovic Courtès @ 2023-08-09 21:31 UTC (permalink / raw)
  To: Josselin Poiret; +Cc: Christopher Baines, 64763

Hi,

Josselin Poiret <dev@jpoiret.xyz> skribis:

> From: Christopher Baines <mail@cbaines.net>
>
> Otherwise this causes odd issues, I presume arising from when %current-system
> differs from the system argument passed to %final-inputs.
>
> * gnu/packages/commencement.scm (%final-inputs): Set %current-system to
> system.
> * gnu/packages/base.scm (%final-inputs): Add optional system parameter.
> * gnu/ci.scm (base-packages): New procedure to memoize the base packages
> depending on system.
> (package->job): Pass system to base-packages.
>
> Co-authored-by: Josselin Poiret <dev@jpoiret.xyz>
> Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>

LGTM!  Great that you found the (gnu ci) issue.

Thanks,
Ludo’.




^ permalink raw reply	[flat|nested] 5+ messages in thread

* bug#64763: [PATCH] gnu: commencement: Use system in %final-inputs.
  2023-08-09 21:31     ` Ludovic Courtès
@ 2023-08-18 14:15       ` Ludovic Courtès
  0 siblings, 0 replies; 5+ messages in thread
From: Ludovic Courtès @ 2023-08-18 14:15 UTC (permalink / raw)
  To: Josselin Poiret; +Cc: 64763-done, Christopher Baines

Ludovic Courtès <ludo@gnu.org> skribis:

> Josselin Poiret <dev@jpoiret.xyz> skribis:
>
>> From: Christopher Baines <mail@cbaines.net>
>>
>> Otherwise this causes odd issues, I presume arising from when %current-system
>> differs from the system argument passed to %final-inputs.
>>
>> * gnu/packages/commencement.scm (%final-inputs): Set %current-system to
>> system.
>> * gnu/packages/base.scm (%final-inputs): Add optional system parameter.
>> * gnu/ci.scm (base-packages): New procedure to memoize the base packages
>> depending on system.
>> (package->job): Pass system to base-packages.
>>
>> Co-authored-by: Josselin Poiret <dev@jpoiret.xyz>
>> Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>
>
> LGTM!  Great that you found the (gnu ci) issue.

Pushed on your behalf as 560cb51e7b37e2c6f6fe4b72a3781185c57fdf83.

Thanks again!

Ludo’.




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-08-18 14:16 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-21 10:11 [bug#64763] [PATCH] gnu: commencement: Use system in %final-inputs Christopher Baines
2023-08-07 15:02 ` Ludovic Courtès
2023-08-09  7:38   ` Josselin Poiret via Guix-patches via
2023-08-09 21:31     ` Ludovic Courtès
2023-08-18 14:15       ` bug#64763: " Ludovic Courtès

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).