* [bug#66640] [PATCH 0/2] Build profile hooks for the right system [not found] <87bkfcdlwi.fsf@gnu.org> @ 2023-10-19 14:48 ` Ludovic Courtès 2023-10-19 14:53 ` [bug#66640] [PATCH 1/2] packages: Add ‘system’ parameter for ‘set-guile-for-build’ Ludovic Courtès ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Ludovic Courtès @ 2023-10-19 14:48 UTC (permalink / raw) To: 66640 Cc: Ludovic Courtès, Tobias Geerinckx-Rice, Josselin Poiret, 65225, Christopher Baines, Josselin Poiret, Ludovic Courtès, Mathieu Othacehe, Ricardo Wurmus, Simon Tournier, Tobias Geerinckx-Rice Hello Guix, This fixes <https://issues.guix.gnu.org/65225>, ensuring that profile hooks are built for the right system. It does so by passing each profile hook the targeted system. Thoughts? Thanks, Ludo'. Ludovic Courtès (2): packages: Add ‘system’ parameter for ‘set-guile-for-build’. profiles: Hooks honor the #:system parameter of ‘profile-derivation’. gnu/bootloader.scm | 5 +++-- guix/channels.scm | 3 ++- guix/packages.scm | 7 ++++--- guix/profiles.scm | 49 ++++++++++++++++++++++++++++++---------------- tests/profiles.scm | 24 ++++++++++++++++++++++- 5 files changed, 64 insertions(+), 24 deletions(-) base-commit: 8d6b3dd0b863ccada887da8cd347727dd04cb456 -- 2.41.0 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#66640] [PATCH 1/2] packages: Add ‘system’ parameter for ‘set-guile-for-build’. 2023-10-19 14:48 ` [bug#66640] [PATCH 0/2] Build profile hooks for the right system Ludovic Courtès @ 2023-10-19 14:53 ` Ludovic Courtès 2023-10-19 14:53 ` [bug#66640] [PATCH 2/2] profiles: Hooks honor the #:system parameter of ‘profile-derivation’ Ludovic Courtès ` (2 subsequent siblings) 3 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2023-10-19 14:53 UTC (permalink / raw) To: 66640 Cc: Ludovic Courtès, Christopher Baines, Josselin Poiret, Ludovic Courtès, Mathieu Othacehe, Ricardo Wurmus, Simon Tournier, Tobias Geerinckx-Rice * guix/packages.scm (set-guile-for-build): Add ‘system’ parameter. --- guix/packages.scm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/guix/packages.scm b/guix/packages.scm index f70fad695e..e2e82692ad 100644 --- a/guix/packages.scm +++ b/guix/packages.scm @@ -2022,11 +2022,12 @@ (define* (package-output store package ;;; Monadic interface. ;;; -(define (set-guile-for-build guile) +(define* (set-guile-for-build guile #:optional system) "This monadic procedure changes the Guile currently used to run the build -code of derivations to GUILE, a package object." +code of derivations to GUILE, a package object, compiled for SYSTEM." (lambda (store) - (let ((guile (package-derivation store guile))) + (let ((guile (package-derivation store guile + (or system (%current-system))))) (values (%guile-for-build guile) store)))) (define* (package-file package -- 2.41.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* [bug#66640] [PATCH 2/2] profiles: Hooks honor the #:system parameter of ‘profile-derivation’. 2023-10-19 14:48 ` [bug#66640] [PATCH 0/2] Build profile hooks for the right system Ludovic Courtès 2023-10-19 14:53 ` [bug#66640] [PATCH 1/2] packages: Add ‘system’ parameter for ‘set-guile-for-build’ Ludovic Courtès @ 2023-10-19 14:53 ` Ludovic Courtès 2023-10-20 22:46 ` bug#65225: ‘guix shell --system=ALIEN’ builds for both systems Maxim Cournoyer [not found] ` <875y2xlj5r.fsf@gmail.com> 3 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2023-10-19 14:53 UTC (permalink / raw) To: 66640 Cc: Ludovic Courtès, Tobias Geerinckx-Rice, Christopher Baines, Josselin Poiret, Ludovic Courtès, Mathieu Othacehe, Ricardo Wurmus, Simon Tournier, Tobias Geerinckx-Rice Fixes <https://issues.guix.gnu.org/65225>. * guix/profiles.scm (info-dir-file, package-cache-file) (info-dir-file, ghc-package-cache-file, ca-certificate-bundle) (emacs-subdirs, gdk-pixbuf-loaders-cache-file, glib-schemas) (gtk-icon-themes, gtk-im-modules, linux-module-database) (xdg-desktop-database, xdg-mime-database, fonts-dir-file) (manual-database, manual-database/optional): Add optional #:system parameter and pass it to ‘gexp->derivation’. (profile-derivation): Pass HOOK a second parameter, SYSTEM. * gnu/bootloader.scm (efi-bootloader-profile)[efi-bootloader-profile-hook]: Add optional #:system parameter and pass it to ‘gexp->derivation’. * guix/channels.scm (package-cache-file): Likewise. * tests/profiles.scm ("profile-derivation, #:system, and hooks"): New test. Reported-by: Tobias Geerinckx-Rice <me@tobias.gr> --- gnu/bootloader.scm | 5 +++-- guix/channels.scm | 3 ++- guix/profiles.scm | 49 ++++++++++++++++++++++++++++++---------------- tests/profiles.scm | 24 ++++++++++++++++++++++- 4 files changed, 60 insertions(+), 21 deletions(-) diff --git a/gnu/bootloader.scm b/gnu/bootloader.scm index 2c36d8c6cf..ba06de7618 100644 --- a/gnu/bootloader.scm +++ b/gnu/bootloader.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2017 David Craven <david@craven.ch> ;;; Copyright © 2017, 2020, 2022 Mathieu Othacehe <othacehe@gnu.org> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2019, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019, 2021, 2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2022 Josselin Poiret <dev@jpoiret.xyz> ;;; Copyright © 2022 Reza Alizadeh Majd <r.majd@pantherx.org> @@ -335,7 +335,7 @@ (define (efi-bootloader-profile packages files hooks) local-file, etc., or package contents produced with file-append. HOOKS lists additional hook functions to modify the profile." - (define (efi-bootloader-profile-hook manifest) + (define* (efi-bootloader-profile-hook manifest #:optional system) (define build (with-imported-modules '((guix build utils)) #~(begin @@ -383,6 +383,7 @@ (define (efi-bootloader-profile packages files hooks) (gexp->derivation "efi-bootloader-profile" build + #:system system #:local-build? #t #:substitutable? #f #:properties diff --git a/guix/channels.scm b/guix/channels.scm index 681adafc6c..f01903642d 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -926,7 +926,7 @@ (define* (channel-instances->manifest instances #:key system) (entries -> (map instance->entry instances derivations))) (return (manifest entries)))) -(define (package-cache-file manifest) +(define* (package-cache-file manifest #:optional system) "Build a package cache file for the instance in MANIFEST. This is meant to be used as a profile hook." ;; Note: Emit a profile in format version 3, which was introduced in 2017 @@ -961,6 +961,7 @@ (define (package-cache-file manifest) (gexp->derivation-in-inferior "guix-package-cache" build profile + #:system system ;; If the Guix in PROFILE is too old and ;; lacks 'guix repl', don't build the cache diff --git a/guix/profiles.scm b/guix/profiles.scm index fea766879d..5d2fb8dc64 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -993,7 +993,7 @@ (define* (manifest-lookup-package manifest name #:optional version) (anym %store-monad entry-lookup-package (manifest-entries manifest))) -(define (info-dir-file manifest) +(define* (info-dir-file manifest #:optional system) "Return a derivation that builds the 'dir' file for all the entries of MANIFEST." (define texinfo ;lazy reference @@ -1051,13 +1051,14 @@ (define (info-dir-file manifest) '#$(manifest-inputs manifest))))))) (gexp->derivation "info-dir" build + #:system system #:local-build? #t #:substitutable? #f #:properties `((type . profile-hook) (hook . info-dir)))) -(define (ghc-package-cache-file manifest) +(define* (ghc-package-cache-file manifest #:optional system) "Return a derivation that builds the GHC 'package.cache' file for all the entries of MANIFEST, or #f if MANIFEST does not have any GHC packages." (define ghc ;lazy reference @@ -1108,6 +1109,7 @@ (define (ghc-package-cache-file manifest) (if (any (cut string-prefix? "ghc" <>) (map manifest-entry-name (manifest-entries manifest))) (gexp->derivation "ghc-package-cache" build + #:system system #:local-build? #t #:substitutable? #f #:properties @@ -1115,7 +1117,7 @@ (define (ghc-package-cache-file manifest) (hook . ghc-package-cache))) (return #f)))) -(define (ca-certificate-bundle manifest) +(define* (ca-certificate-bundle manifest #:optional system) "Return a derivation that builds a single-file bundle containing the CA certificates in the /etc/ssl/certs sub-directories of the packages in MANIFEST. Single-file bundles are required by programs such as Git and Lynx." @@ -1179,13 +1181,14 @@ (define (ca-certificate-bundle manifest) #t)))))) (gexp->derivation "ca-certificate-bundle" build + #:system system #:local-build? #t #:substitutable? #f #:properties `((type . profile-hook) (hook . ca-certificate-bundle)))) -(define (emacs-subdirs manifest) +(define* (emacs-subdirs manifest #:optional system) (define build (with-imported-modules (source-module-closure '((guix build profiles) @@ -1219,13 +1222,14 @@ (define (emacs-subdirs manifest) (newline port) #t))))))) (gexp->derivation "emacs-subdirs" build + #:system system #:local-build? #t #:substitutable? #f #:properties `((type . profile-hook) (hook . emacs-subdirs)))) -(define (gdk-pixbuf-loaders-cache-file manifest) +(define* (gdk-pixbuf-loaders-cache-file manifest #:optional system) "Return a derivation that produces a loaders cache file for every gdk-pixbuf loaders discovered in MANIFEST." (define gdk-pixbuf ;lazy reference @@ -1264,6 +1268,7 @@ (define (gdk-pixbuf-loaders-cache-file manifest) (if gdk-pixbuf (gexp->derivation "gdk-pixbuf-loaders-cache-file" build + #:system system #:local-build? #t #:substitutable? #f #:properties @@ -1271,7 +1276,7 @@ (define (gdk-pixbuf-loaders-cache-file manifest) (hook . gdk-pixbuf-loaders-cache-file))) (return #f)))) -(define (glib-schemas manifest) +(define* (glib-schemas manifest #:optional system) "Return a derivation that unions all schemas from manifest entries and creates the Glib 'gschemas.compiled' file." (define glib ; lazy reference @@ -1318,6 +1323,7 @@ (define (glib-schemas manifest) ;; Don't run the hook when there's nothing to do. (if %glib (gexp->derivation "glib-schemas" build + #:system system #:local-build? #t #:substitutable? #f #:properties @@ -1325,7 +1331,7 @@ (define (glib-schemas manifest) (hook . glib-schemas))) (return #f)))) -(define (gtk-icon-themes manifest) +(define* (gtk-icon-themes manifest #:optional system) "Return a derivation that unions all icon themes from manifest entries and creates the GTK+ 'icon-theme.cache' file for each theme." (define gtk+ ; lazy reference @@ -1377,6 +1383,7 @@ (define (gtk-icon-themes manifest) ;; Don't run the hook when there's nothing to do. (if %gtk+ (gexp->derivation "gtk-icon-themes" build + #:system system #:local-build? #t #:substitutable? #f #:properties @@ -1384,7 +1391,7 @@ (define (gtk-icon-themes manifest) (hook . gtk-icon-themes))) (return #f)))) -(define (gtk-im-modules manifest) +(define* (gtk-im-modules manifest #:optional system) "Return a derivation that builds the cache files for input method modules for both major versions of GTK+." @@ -1454,6 +1461,7 @@ (define (gtk-im-modules manifest) #t)))) (if (or gtk+ gtk+-2) (gexp->derivation "gtk-im-modules" gexp + #:system system #:local-build? #t #:substitutable? #f #:properties @@ -1461,7 +1469,7 @@ (define (gtk-im-modules manifest) (hook . gtk-im-modules))) (return #f))))) -(define (linux-module-database manifest) +(define* (linux-module-database manifest #:optional system) "Return a derivation that unites all the kernel modules of the manifest and creates the dependency graph of all these kernel modules. @@ -1511,13 +1519,14 @@ (define (linux-module-database manifest) (_ (error "Specified Linux kernel and Linux kernel modules are not all of the same version")))))))) (gexp->derivation "linux-module-database" build + #:system system #:local-build? #t #:substitutable? #f #:properties `((type . profile-hook) (hook . linux-module-database)))) -(define (xdg-desktop-database manifest) +(define* (xdg-desktop-database manifest #:optional system) "Return a derivation that builds the @file{mimeinfo.cache} database from desktop files. It's used to query what applications can handle a given MIME type." @@ -1551,6 +1560,7 @@ (define (xdg-desktop-database manifest) ;; Don't run the hook when 'glib' is not referenced. (if glib (gexp->derivation "xdg-desktop-database" build + #:system system #:local-build? #t #:substitutable? #f #:properties @@ -1558,7 +1568,7 @@ (define (xdg-desktop-database manifest) (hook . xdg-desktop-database))) (return #f)))) -(define (xdg-mime-database manifest) +(define* (xdg-mime-database manifest #:optional system) "Return a derivation that builds the @file{mime.cache} database from manifest entries. It's used to query the MIME type of a given file." (define shared-mime-info ; lazy reference @@ -1605,6 +1615,7 @@ (define (xdg-mime-database manifest) ;; Don't run the hook when there are no GLib based applications. (if glib (gexp->derivation "xdg-mime-database" build + #:system system #:local-build? #t #:substitutable? #f #:properties @@ -1615,7 +1626,7 @@ (define (xdg-mime-database manifest) ;; Several font packages may install font files into same directory, so ;; fonts.dir and fonts.scale file should be generated here, instead of in ;; packages. -(define (fonts-dir-file manifest) +(define* (fonts-dir-file manifest #:optional system) "Return a derivation that builds the @file{fonts.dir} and @file{fonts.scale} files for the fonts of the @var{manifest} entries." (define mkfontscale @@ -1676,6 +1687,7 @@ (define (fonts-dir-file manifest) directories))))))) (gexp->derivation "fonts-dir" build + #:system system #:modules '((guix build utils) (guix build union) (srfi srfi-26)) @@ -1685,7 +1697,7 @@ (define (fonts-dir-file manifest) `((type . profile-hook) (hook . fonts-dir)))) -(define (manual-database manifest) +(define* (manual-database manifest #:optional system) "Return a derivation that builds the manual page database (\"mandb\") for the entries in MANIFEST." (define gdbm-ffi @@ -1761,23 +1773,24 @@ (define (manual-database manifest) (force-output)))))) (gexp->derivation "manual-database" build + #:system system #:substitutable? #f #:local-build? #t #:properties `((type . profile-hook) (hook . manual-database)))) -(define (manual-database/optional manifest) +(define* (manual-database/optional manifest #:optional system) "Return a derivation to build the manual database of MANIFEST, but only if MANIFEST contains the \"man-db\" package. Otherwise, return #f." ;; Building the man database (for "man -k") is expensive and rarely used. ;; Build it only if the profile also contains "man-db". (mlet %store-monad ((man-db (manifest-lookup-package manifest "man-db"))) (if man-db - (manual-database manifest) + (manual-database manifest system) (return #f)))) -(define (texlive-font-maps manifest) +(define* (texlive-font-maps manifest #:optional system) "Return a derivation that builds the TeX Live font maps for the entries in MANIFEST." (define entry->texlive-input @@ -1898,6 +1911,7 @@ (define (texlive-font-maps manifest) ;; incomplete modular TeX Live installations to generate errors. (if (any texlive-scripts-entry? (manifest-entries manifest)) (gexp->derivation "texlive-font-maps" build + #:system system #:substitutable? #f #:local-build? #t #:properties @@ -1977,7 +1991,8 @@ (define* (profile-derivation manifest (extras (if (null? (manifest-entries manifest)) (return '()) (mapm/accumulate-builds (lambda (hook) - (hook manifest)) + (hook manifest + system)) hooks)))) (define extra-inputs (filter-map (lambda (drv) diff --git a/tests/profiles.scm b/tests/profiles.scm index 9ad03f2b24..9c419ada93 100644 --- a/tests/profiles.scm +++ b/tests/profiles.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013-2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -382,6 +382,28 @@ (define glibc (_ (built-derivations (list drv)))) (return (file-exists? (string-append bindir "/guile"))))) +(test-assertm "profile-derivation, #:system, and hooks" + ;; Make sure all the profile hooks are built for the system specified with + ;; #:system, even if that does not match (%current-system). + ;; See <https://issues.guix.gnu.org/65225>. + (mlet* %store-monad + ((system -> (if (string=? (%current-system) "riscv64-linux") + "x86_64-linux" + "riscv64-linux")) + (entry -> (package->manifest-entry packages:coreutils)) + (_ (set-guile-for-build (default-guile) system)) + (drv (profile-derivation (manifest (list entry)) + #:system system)) + (refs (references* (derivation-file-name drv)))) + (return (and (string=? (derivation-system drv) system) + (pair? refs) + (every (lambda (ref) + (or (not (string-suffix? ".drv" ref)) + (let ((drv (read-derivation-from-file ref))) + (string=? (derivation-system drv) + system)))) + refs))))) + (test-assertm "profile-derivation relative symlinks, one entry" (mlet* %store-monad ((entry -> (package->manifest-entry %bootstrap-guile)) -- 2.41.0 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* bug#65225: ‘guix shell --system=ALIEN’ builds for both systems 2023-10-19 14:48 ` [bug#66640] [PATCH 0/2] Build profile hooks for the right system Ludovic Courtès 2023-10-19 14:53 ` [bug#66640] [PATCH 1/2] packages: Add ‘system’ parameter for ‘set-guile-for-build’ Ludovic Courtès 2023-10-19 14:53 ` [bug#66640] [PATCH 2/2] profiles: Hooks honor the #:system parameter of ‘profile-derivation’ Ludovic Courtès @ 2023-10-20 22:46 ` Maxim Cournoyer 2023-10-23 10:16 ` Simon Tournier [not found] ` <875y2xlj5r.fsf@gmail.com> 3 siblings, 1 reply; 9+ messages in thread From: Maxim Cournoyer @ 2023-10-20 22:46 UTC (permalink / raw) To: Ludovic Courtès Cc: Josselin Poiret, 65225, Mathieu Othacehe, Tobias Geerinckx-Rice, Ricardo Wurmus, Christopher Baines, Simon Tournier, guix-patches Hi, Ludovic Courtès <ludo@gnu.org> writes: > Hello Guix, > > This fixes <https://issues.guix.gnu.org/65225>, ensuring that profile > hooks are built for the right system. It does so by passing each > profile hook the targeted system. > > Thoughts? > > Thanks, > Ludo'. > > Ludovic Courtès (2): > packages: Add ‘system’ parameter for ‘set-guile-for-build’. > profiles: Hooks honor the #:system parameter of ‘profile-derivation’. > > gnu/bootloader.scm | 5 +++-- > guix/channels.scm | 3 ++- > guix/packages.scm | 7 ++++--- > guix/profiles.scm | 49 ++++++++++++++++++++++++++++++---------------- > tests/profiles.scm | 24 ++++++++++++++++++++++- > 5 files changed, 64 insertions(+), 24 deletions(-) I see the cover letter, but not the patches :-). Where did they go? -- Thanks, Maxim ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#65225: ‘guix shell --system=ALIEN’ builds for both systems 2023-10-20 22:46 ` bug#65225: ‘guix shell --system=ALIEN’ builds for both systems Maxim Cournoyer @ 2023-10-23 10:16 ` Simon Tournier 2023-10-23 14:29 ` Maxim Cournoyer 0 siblings, 1 reply; 9+ messages in thread From: Simon Tournier @ 2023-10-23 10:16 UTC (permalink / raw) To: Maxim Cournoyer, Ludovic Courtès Cc: Josselin Poiret, 65225, Mathieu Othacehe, Tobias Geerinckx-Rice, Ricardo Wurmus, Christopher Baines, guix-patches Hi Maxim, On Fri, 20 Oct 2023 at 18:46, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote: > I see the cover letter, but not the patches :-). Where did they go? They are in #66640 [1]. The cover letter had been CC: 65225@debbugs.gnu.org, I guess. 1: https://issues.guix.gnu.org/issue/66640 Cheers, simon ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#65225: ‘guix shell --system=ALIEN’ builds for both systems 2023-10-23 10:16 ` Simon Tournier @ 2023-10-23 14:29 ` Maxim Cournoyer 0 siblings, 0 replies; 9+ messages in thread From: Maxim Cournoyer @ 2023-10-23 14:29 UTC (permalink / raw) To: Simon Tournier Cc: Josselin Poiret, 65225, Mathieu Othacehe, Ludovic Courtès, Tobias Geerinckx-Rice, Ricardo Wurmus, Christopher Baines, guix-patches Hi Simon, Simon Tournier <zimon.toutoune@gmail.com> writes: > Hi Maxim, > > On Fri, 20 Oct 2023 at 18:46, Maxim Cournoyer <maxim.cournoyer@gmail.com> wrote: > >> I see the cover letter, but not the patches :-). Where did they go? > > They are in #66640 [1]. The cover letter had been CC: > 65225@debbugs.gnu.org, I guess. Thanks! -- Maxim ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <875y2xlj5r.fsf@gmail.com>]
* [bug#66640] [PATCH 0/2] Build profile hooks for the right system [not found] ` <875y2xlj5r.fsf@gmail.com> @ 2023-10-23 19:53 ` Ludovic Courtès 2023-10-24 18:34 ` Simon Tournier 0 siblings, 1 reply; 9+ messages in thread From: Ludovic Courtès @ 2023-10-23 19:53 UTC (permalink / raw) To: Simon Tournier Cc: Josselin Poiret, 65225, Mathieu Othacehe, Tobias Geerinckx-Rice, Ricardo Wurmus, 66640, Christopher Baines Simon Tournier <zimon.toutoune@gmail.com> skribis: > Do I understand correctly when I consider that > ’(efi-bootloader-profile-hook manifest)’ pass #false as ’system’ and > then it is ’set-guile-for-build’ that sets ’(%current-system)’? Yes. > Somehow, my question is about the readability of default values. > > Why not, > > #:system (or system (%current-system)) > > for all the hooks? Because that value would be captured at call time rather than at monadic-bind time. See Josselin’s excellent explanation of this trap: https://issues.guix.gnu.org/65225#4-lineno34 HTH! Ludo’. ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bug#66640] [PATCH 0/2] Build profile hooks for the right system 2023-10-23 19:53 ` [bug#66640] [PATCH 0/2] Build profile hooks for the right system Ludovic Courtès @ 2023-10-24 18:34 ` Simon Tournier 2023-10-27 23:36 ` bug#66640: " Ludovic Courtès 0 siblings, 1 reply; 9+ messages in thread From: Simon Tournier @ 2023-10-24 18:34 UTC (permalink / raw) To: Ludovic Courtès Cc: Josselin Poiret, 65225, Mathieu Othacehe, Tobias Geerinckx-Rice, Ricardo Wurmus, 66640, Christopher Baines Hi, On Mon, 23 Oct 2023 at 21:53, Ludovic Courtès <ludo@gnu.org> wrote: > Because that value would be captured at call time rather than at > monadic-bind time. See Josselin’s excellent explanation of this trap: > > https://issues.guix.gnu.org/65225#4-lineno34 Yeah, all clear. Thank you. Before the patch: --8<---------------cut here---------------start------------->8--- $ guix shell --system=riscv64-linux sterm --no-grafts --rebuild-cache --dry-run 2>&1 | grep profile /gnu/store/0l02iwcq3bzh38qykg70ygy5cf5c2hml-profile.drv $ guix repl GNU Guile 3.0.9 Copyright (C) 1995-2023 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guix-user)> ,run-in-store (references* "/gnu/store/0l02iwcq3bzh38qykg70ygy5cf5c2hml-profile.drv") $1 = ("/gnu/store/4zg87dbcf7mcr82jlbfsbqqffn1miaml-ca-certificate-bundle.drv" "/gnu/store/5myp281kr169dag03plk5wy0s1jmkk40-emacs-subdirs.drv" "/gnu/store/7s9j9ns9mmfg0vg8wpjvjj0x8rrq992f-info-dir.drv" "/gnu/store/8q36aw38kr2879ll9zrn3cg7w5xpxmjd-module-import" "/gnu/store/bvnibpf0kfk2w4vh069q97mk98q3pwbz-profile-builder" "/gnu/store/fw22lk3vnal8477lpbi0f5wfgh8i1w6f-fonts-dir.drv" "/gnu/store/j0vmqz44kmsp8jhpxw8wa4jq60rjfgaj-module-import-compiled.drv" "/gnu/store/s38y5afcy2bwzsspqsz2n4riiqy77gr4-sterm-20200306.drv" "/gnu/store/x6qzhxy1wilipnlygi508l9yvz66dlvs-glibc-utf8-locales-2.35.drv" "/gnu/store/zraigp7miin3vzr5dcbr4i9rvds0i07r-guile-3.0.9.drv") scheme@(guix-user)> $1 ;;; <stdin>:4:0: warning: possibly unbound variable `$1' $2 = ("/gnu/store/4zg87dbcf7mcr82jlbfsbqqffn1miaml-ca-certificate-bundle.drv" "/gnu/store/5myp281kr169dag03plk5wy0s1jmkk40-emacs-subdirs.drv" "/gnu/store/7s9j9ns9mmfg0vg8wpjvjj0x8rrq992f-info-dir.drv" "/gnu/store/8q36aw38kr2879ll9zrn3cg7w5xpxmjd-module-import" "/gnu/store/bvnibpf0kfk2w4vh069q97mk98q3pwbz-profile-builder" "/gnu/store/fw22lk3vnal8477lpbi0f5wfgh8i1w6f-fonts-dir.drv" "/gnu/store/j0vmqz44kmsp8jhpxw8wa4jq60rjfgaj-module-import-compiled.drv" "/gnu/store/s38y5afcy2bwzsspqsz2n4riiqy77gr4-sterm-20200306.drv" "/gnu/store/x6qzhxy1wilipnlygi508l9yvz66dlvs-glibc-utf8-locales-2.35.drv" "/gnu/store/zraigp7miin3vzr5dcbr4i9rvds0i07r-guile-3.0.9.drv") scheme@(guix-user)> ,pp (map (lambda (drv) (list drv (or (not (string-suffix? ".drv" drv)) (derivation-system (read-derivation-from-file drv))))) $1) $3 = (("/gnu/store/4zg87dbcf7mcr82jlbfsbqqffn1miaml-ca-certificate-bundle.drv" "x86_64-linux") ("/gnu/store/5myp281kr169dag03plk5wy0s1jmkk40-emacs-subdirs.drv" "x86_64-linux") ("/gnu/store/7s9j9ns9mmfg0vg8wpjvjj0x8rrq992f-info-dir.drv" "x86_64-linux") ("/gnu/store/8q36aw38kr2879ll9zrn3cg7w5xpxmjd-module-import" #t) ("/gnu/store/bvnibpf0kfk2w4vh069q97mk98q3pwbz-profile-builder" #t) ("/gnu/store/fw22lk3vnal8477lpbi0f5wfgh8i1w6f-fonts-dir.drv" "x86_64-linux") ("/gnu/store/j0vmqz44kmsp8jhpxw8wa4jq60rjfgaj-module-import-compiled.drv" "riscv64-linux") ("/gnu/store/s38y5afcy2bwzsspqsz2n4riiqy77gr4-sterm-20200306.drv" "riscv64-linux") ("/gnu/store/x6qzhxy1wilipnlygi508l9yvz66dlvs-glibc-utf8-locales-2.35.drv" "riscv64-linux") ("/gnu/store/zraigp7miin3vzr5dcbr4i9rvds0i07r-guile-3.0.9.drv" "x86_64-linux")) --8<---------------cut here---------------end--------------->8--- After the patch: --8<---------------cut here---------------start------------->8--- $ ./pre-inst-env guix shell --system=riscv64-linux sterm --no-grafts --rebuild-cache --dry-run 2>&1 | grep profile /gnu/store/1nnji4fr8mgpsal0rcnzbdjdm4p04yk3-profile.drv $ guix repl GNU Guile 3.0.9 Copyright (C) 1995-2023 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guix-user)> ,run-in-store (references* "/gnu/store/1nnji4fr8mgpsal0rcnzbdjdm4p04yk3-profile.drv") $1 = ("/gnu/store/2ff9j170rckkr2zs0l6sf4bbkx7fk5vc-profile-builder" "/gnu/store/5mi4ij2vf5cxhsbh52n04h48mvc6z6r8-module-import-compiled.drv" "/gnu/store/5sbcg8siv5jzzbdy4m7bfravpxg95j7h-emacs-subdirs.drv" "/gnu/store/7rz0kd6bigj3gdlp9l4z1v91sxy43bib-fonts-dir.drv" "/gnu/store/8l03g4sg271c0wc2axhpn689r6faa0ij-info-dir.drv" "/gnu/store/94ad504y18rg0d1kgznlj0ib1l56ljxl-ca-certificate-bundle.drv" "/gnu/store/w314gb2gc9z6jd9ng7gpn88zvhhsax09-sterm-20200306.drv" "/gnu/store/x6qzhxy1wilipnlygi508l9yvz66dlvs-glibc-utf8-locales-2.35.drv" "/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import" "/gnu/store/zb3vrbwv8qx9430n839ljbalnik8019g-guile-3.0.9.drv") scheme@(guix-user)> $1 ;;; <stdin>:2:0: warning: possibly unbound variable `$1' $2 = ("/gnu/store/2ff9j170rckkr2zs0l6sf4bbkx7fk5vc-profile-builder" "/gnu/store/5mi4ij2vf5cxhsbh52n04h48mvc6z6r8-module-import-compiled.drv" "/gnu/store/5sbcg8siv5jzzbdy4m7bfravpxg95j7h-emacs-subdirs.drv" "/gnu/store/7rz0kd6bigj3gdlp9l4z1v91sxy43bib-fonts-dir.drv" "/gnu/store/8l03g4sg271c0wc2axhpn689r6faa0ij-info-dir.drv" "/gnu/store/94ad504y18rg0d1kgznlj0ib1l56ljxl-ca-certificate-bundle.drv" "/gnu/store/w314gb2gc9z6jd9ng7gpn88zvhhsax09-sterm-20200306.drv" "/gnu/store/x6qzhxy1wilipnlygi508l9yvz66dlvs-glibc-utf8-locales-2.35.drv" "/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import" "/gnu/store/zb3vrbwv8qx9430n839ljbalnik8019g-guile-3.0.9.drv") scheme@(guix-user)> ,pp (map (lambda (drv) (list drv (or (not (string-suffix? ".drv" drv)) (derivation-system (read-derivation-from-file drv))))) $1) $3 = (("/gnu/store/2ff9j170rckkr2zs0l6sf4bbkx7fk5vc-profile-builder" #t) ("/gnu/store/5mi4ij2vf5cxhsbh52n04h48mvc6z6r8-module-import-compiled.drv" "riscv64-linux") ("/gnu/store/5sbcg8siv5jzzbdy4m7bfravpxg95j7h-emacs-subdirs.drv" "riscv64-linux") ("/gnu/store/7rz0kd6bigj3gdlp9l4z1v91sxy43bib-fonts-dir.drv" "riscv64-linux") ("/gnu/store/8l03g4sg271c0wc2axhpn689r6faa0ij-info-dir.drv" "riscv64-linux") ("/gnu/store/94ad504y18rg0d1kgznlj0ib1l56ljxl-ca-certificate-bundle.drv" "riscv64-linux") ("/gnu/store/w314gb2gc9z6jd9ng7gpn88zvhhsax09-sterm-20200306.drv" "riscv64-linux") ("/gnu/store/x6qzhxy1wilipnlygi508l9yvz66dlvs-glibc-utf8-locales-2.35.drv" "riscv64-linux") ("/gnu/store/y545dx7df92al3yz1a9swnf0lhjg9igi-module-import" #t) ("/gnu/store/zb3vrbwv8qx9430n839ljbalnik8019g-guile-3.0.9.drv" "x86_64-linux")) --8<---------------cut here---------------end--------------->8--- Therefore, it seems fixing the issue. All the x86_64-linux above are turned as riscv64-linux. However, still a naive question: Why ’guile’ is not? Is it expected? If not, does it mean that some ’set-guile-for-build’ is missing? Cheers, simon ^ permalink raw reply [flat|nested] 9+ messages in thread
* bug#66640: [PATCH 0/2] Build profile hooks for the right system 2023-10-24 18:34 ` Simon Tournier @ 2023-10-27 23:36 ` Ludovic Courtès 0 siblings, 0 replies; 9+ messages in thread From: Ludovic Courtès @ 2023-10-27 23:36 UTC (permalink / raw) To: Simon Tournier Cc: Josselin Poiret, 65225, Mathieu Othacehe, Tobias Geerinckx-Rice, Ricardo Wurmus, 66640-done, Christopher Baines Hi, Simon Tournier <zimon.toutoune@gmail.com> skribis: > ("/gnu/store/zb3vrbwv8qx9430n839ljbalnik8019g-guile-3.0.9.drv" > "x86_64-linux")) > > Therefore, it seems fixing the issue. All the x86_64-linux above are > turned as riscv64-linux. However, still a naive question: > > Why ’guile’ is not? Is it expected? Oh, that’s another bug, this one in ‘guix shell’ (missing argument for ‘package-derivation’). I pushed this: 344e39c928 profiles: Hooks honor the #:system parameter of ‘profile-derivation’. 9d4b720e1f packages: Add ‘system’ parameter for ‘set-guile-for-build’. b3ec2a0d37 environment: Honor ‘-s’ for guile-for-build. Thanks for reviewing and reporting the issue! Ludo’. ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2023-10-27 23:37 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <87bkfcdlwi.fsf@gnu.org> 2023-10-19 14:48 ` [bug#66640] [PATCH 0/2] Build profile hooks for the right system Ludovic Courtès 2023-10-19 14:53 ` [bug#66640] [PATCH 1/2] packages: Add ‘system’ parameter for ‘set-guile-for-build’ Ludovic Courtès 2023-10-19 14:53 ` [bug#66640] [PATCH 2/2] profiles: Hooks honor the #:system parameter of ‘profile-derivation’ Ludovic Courtès 2023-10-20 22:46 ` bug#65225: ‘guix shell --system=ALIEN’ builds for both systems Maxim Cournoyer 2023-10-23 10:16 ` Simon Tournier 2023-10-23 14:29 ` Maxim Cournoyer [not found] ` <875y2xlj5r.fsf@gmail.com> 2023-10-23 19:53 ` [bug#66640] [PATCH 0/2] Build profile hooks for the right system Ludovic Courtès 2023-10-24 18:34 ` Simon Tournier 2023-10-27 23:36 ` bug#66640: " 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).