unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [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

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