guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

05/13: services: guix: Use the right locale package on GNU/Hurd.


From: guix-commits
Subject: 05/13: services: guix: Use the right locale package on GNU/Hurd.
Date: Sun, 1 Oct 2023 17:02:32 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 21deb89e287b5821975544118bf137562a91d4e1
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Thu Sep 21 16:19:21 2023 +0200

    services: guix: Use the right locale package on GNU/Hurd.
    
    Fixes a bug introduced in 0dd293b4d9095137c9952e16ca951f887b7e7018
    whereby guix-daemon on GNU/Hurd would have ‘GUIX_LOCPATH’ set to the
    “wrong” locale data (2.35 instead of 2.37).
    
    Consequently, it would fail to setlocale(3) and calls to
    ‘std::stoi’ (when reading the output of ‘guix authenticate’) would
    throw, leading to this error message of guix-daemon:
    
      unexpected build daemon error: stoi
    
    This would manifest when sending store items to a childhurd:
    
      $ guix copy --to=localhost:10022 sed
      guix copy: sending 1 store item (1 MiB) to 'localhost'...
      guix copy: error: unknown error while sending files over SSH
    
    The “unknown error” is the ‘stoi’ exception.
    
    This commit fixes that, but for the ‘guix-daemon’ service only.
    
    * gnu/services/base.scm (guix-shepherd-service)[locales]: New variable.
    Use it instead of ‘glibc-utf8-locales’.
---
 gnu/services/base.scm | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index b3f2d2e8b8..10e0d4cf9d 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -62,8 +62,9 @@
                           util-linux xfsprogs))
   #:use-module (gnu packages bash)
   #:use-module ((gnu packages base)
-                #:select (coreutils glibc glibc-utf8-locales tar
-                          canonical-package))
+                #:select (coreutils glibc glibc/hurd
+                          glibc-utf8-locales make-glibc-utf8-locales
+                          tar canonical-package))
   #:use-module ((gnu packages compression) #:select (gzip))
   #:use-module (gnu packages fonts)
   #:autoload   (gnu packages guile-xyz) (guile-netlink)
@@ -87,6 +88,7 @@
   #:use-module ((guix self) #:select (make-config.scm))
   #:use-module (guix diagnostics)
   #:use-module (guix i18n)
+  #:autoload   (guix utils) (target-hurd?)
   #:use-module (srfi srfi-1)
   #:use-module (srfi srfi-26)
   #:use-module (srfi srfi-34)
@@ -1831,6 +1833,12 @@ proxy of 'guix-daemon'...~%")
 
 (define (guix-shepherd-service config)
   "Return a <shepherd-service> for the Guix daemon service with CONFIG."
+  (define locales
+    (let-system (system target)
+      (if (target-hurd? (or target system))
+          (make-glibc-utf8-locales glibc/hurd)
+          glibc-utf8-locales)))
+
   (match-record config <guix-configuration>
     (guix build-group build-accounts authorize-key? authorized-keys
           use-substitutes? substitute-urls max-silent-time timeout
@@ -1912,8 +1920,7 @@ proxy of 'guix-daemon'...~%")
                                  ;; 'nss-certs'.  See
                                  ;; <https://bugs.gnu.org/32942>.
                                  (string-append "GUIX_LOCPATH="
-                                                #$glibc-utf8-locales
-                                                "/lib/locale")
+                                                #$locales "/lib/locale")
                                  "LC_ALL=en_US.utf8"
                                  ;; Make 'tar' and 'gzip' available so
                                  ;; that 'guix perform-download' can use



reply via email to

[Prev in Thread] Current Thread [Next in Thread]