[PATCH] gnu: commencement: Use system in %final-inputs.

  • Done
  • quality assurance status badge
Details
3 participants
  • Josselin Poiret
  • Ludovic Courtès
  • Christopher Baines
Owner
unassigned
Submitted by
Christopher Baines
Severity
important
C
C
Christopher Baines wrote on 21 Jul 2023 12:11
(address . guix-patches@gnu.org)
3e0a5d1957c35a9925aab5600ee02b923584a599.1689934305.git.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/commencement.scm | 51 ++++++++++++++++++-----------------
1 file changed, 26 insertions(+), 25 deletions(-)

Toggle diff (67 lines)
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
L
L
Ludovic Courtès wrote on 7 Aug 2023 17:02
(name . Christopher Baines)(address . mail@cbaines.net)
87h6pasxof.fsf@gnu.org
Hi!

Christopher Baines <mail@cbaines.net> skribis:

Toggle quote (6 lines)
> 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.

Toggle quote (9 lines)
> 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

[...]

Toggle quote (2 lines)
> + (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’.
J
J
Josselin Poiret wrote on 9 Aug 2023 09:38
[PATCH] gnu: commencement: Use system in %final-inputs.
b4775df70588bbc6d63073ba019eccb73733eb26.1691566711.git.dev@jpoiret.xyz
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(-)

Toggle diff (157 lines)
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
L
L
Ludovic Courtès wrote on 9 Aug 2023 23:31
(name . Josselin Poiret)(address . dev@jpoiret.xyz)
87edkboqby.fsf@gnu.org
Hi,

Josselin Poiret <dev@jpoiret.xyz> skribis:

Toggle quote (15 lines)
> 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’.
L
L
Ludovic Courtès wrote on 18 Aug 2023 15:17
control message for bug #64763
(address . control@debbugs.gnu.org)
87h6owtrq9.fsf@gnu.org
severity 64763 important
quit
L
L
Ludovic Courtès wrote on 18 Aug 2023 16:15
Re: bug#64763: [PATCH] gnu: commencement: Use system in %final-inputs.
(name . Josselin Poiret)(address . dev@jpoiret.xyz)
87o7j4qvwt.fsf_-_@gnu.org
Ludovic Courtès <ludo@gnu.org> skribis:

Toggle quote (19 lines)
> 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’.
Closed
?
Your comment

This issue is archived.

To comment on this conversation send an email to 64763@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 64763
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch