~ruther/guix-local

b0715d7cd2a74bc231751f8afc9dffb2047501ac — Janneke Nieuwenhuizen 2 years ago 9442b53
gnu: Use ‘libc-utf8-locales-for-target’.

* guix/packages.scm (%standard-patch-inputs): Use
‘libc-utf8-locales-for-target’ instead of ‘glibc-utf8-locales’.
* guix/self.scm (%packages): Likewise.
* gnu/home/services/ssh.scm (file-join): Likewise
* gnu/installer.scm (build-compiled-file): Likewise.
* gnu/packages/chromium.scm (ungoogled-chromium/wayland): Likewise.
* gnu/packages/gnome.scm (libgweather4, tracker): Likewise.
* gnu/packages/javascript.scm (js-mathjax): Likewise.
* gnu/packages/package-management.scm (guix, flatpak): Likewise.
* gnu/packages/raspberry-pi.scm (raspi-arm64-chainloader): Likewise.
* gnu/packages/suckless.scm (svkbd): Likewise.
* gnu/services.scm (cleanup-gexp): Likewise.
* gnu/services/base.scm (guix-publish-shepherd-service): Likewise.
* gnu/services/guix.scm (guix-build-coordinator-shepherd-services)
(guix-build-coordinator-agent-shepherd-services): Likewise.
* gnu/services/guix.scm (guix-build-coordinator-queue-builds-shepherd-services):
(guix-data-service-shepherd-services)
(nar-herder-shepherd-services)
(bffe-shepherd-services): Likewise.
* gnu/services/web.scm (anonip-shepherd-service)
(mumi-shepherd-services): Likewise.
* gnu/system/image.scm (system-disk-image, system-iso9660-image)
(system-docker-image, system-tarball-image): Likewise.
* gnu/system/install.scm (%installation-services): Likewise.
* guix/profiles.scm (info-dir-file): Likewise.
(ca-certificate-bundle, profile-derivation): Likewise.
* guix/scripts/pack.scm (store-database, set-utf8-locale): Likewise.
* tests/pack.scm: Likewise.
* tests/profiles.scm ("profile-derivation, cross-compilation"):
Likewise.

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Co-authored-by: Christopher Baines <mail@cbaines.net>
Change-Id: I24239f427bcc930c29d2ba5d00dc615960a6c374
M gnu/home/services/ssh.scm => gnu/home/services/ssh.scm +5 -3
@@ 25,6 25,7 @@
  #:use-module (guix deprecation)
  #:use-module (guix diagnostics)
  #:use-module (guix i18n)
  #:use-module ((guix utils) #:select (%current-system))
  #:use-module (gnu services)
  #:use-module (gnu services configuration)
  #:use-module (guix modules)


@@ 32,7 33,7 @@
  #:use-module (gnu home services shepherd)
  #:use-module ((gnu home services utils)
                #:select (object->camel-case-string))
  #:autoload   (gnu packages base) (glibc-utf8-locales)
  #:autoload   (gnu packages base) (libc-utf8-locales-for-target)
  #:use-module (gnu packages ssh)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-9)


@@ 357,8 358,9 @@ inserted after each of them."

                       ;; Support non-ASCII file names.
                       (setenv "GUIX_LOCPATH"
                               #+(file-append glibc-utf8-locales
                                              "/lib/locale"))
                               #+(file-append
                                  (libc-utf8-locales-for-target (%current-system))
                                  "/lib/locale"))
                       (setlocale LC_ALL "en_US.utf8")

                       (call-with-output-file #$output

M gnu/installer.scm => gnu/installer.scm +4 -3
@@ 85,9 85,10 @@ version of this file."
  (define set-utf8-locale
    #~(begin
        (setenv "LOCPATH"
                #$(file-append glibc-utf8-locales "/lib/locale/"
                               (version-major+minor
                                (package-version glibc-utf8-locales))))
                #$(file-append
                   (libc-utf8-locales-for-target) "/lib/locale/"
                   (version-major+minor
                    (package-version (libc-utf8-locales-for-target)))))
        (setlocale LC_ALL "en_US.utf8")))

  (define builder

M gnu/packages/chromium.scm => gnu/packages/chromium.scm +1 -1
@@ 967,7 967,7 @@ testing.")
    (name "ungoogled-chromium-wayland")
    (native-inputs '())
    (inputs
     (list bash-minimal glibc-utf8-locales ungoogled-chromium))
     (list bash-minimal (libc-utf8-locales-for-target) ungoogled-chromium))
    (build-system trivial-build-system)
    (arguments
     (list

M gnu/packages/gnome.scm => gnu/packages/gnome.scm +2 -2
@@ 5917,7 5917,7 @@ services for numerous locations.")
           gi-docgen
           `(,glib "bin")               ;for glib-mkenums
           gobject-introspection
           glibc-utf8-locales
           (libc-utf8-locales-for-target)
           gsettings-desktop-schemas
           pkg-config
           python


@@ 9471,7 9471,7 @@ easy, safe, and automatic.")
    (native-inputs
     (list gettext-minimal
           `(,glib "bin")
           glibc-utf8-locales
           (libc-utf8-locales-for-target)
           gobject-introspection
           docbook-xsl
           docbook-xml

M gnu/packages/javascript.scm => gnu/packages/javascript.scm +1 -1
@@ 184,7 184,7 @@ context menu in TypeScript.")
           #t))))
    (native-inputs
     `(("font-mathjax" ,font-mathjax)
       ("glibc-utf8-locales" ,glibc-utf8-locales)
       ("glibc-utf8-locales" ,(libc-utf8-locales-for-target))
       ("uglifyjs" ,node-uglify-js)
       ,@(package-native-inputs font-mathjax)))
    (synopsis "JavaScript display engine for LaTeX, MathML, and AsciiMath")

M gnu/packages/package-management.scm => gnu/packages/package-management.scm +2 -2
@@ 524,7 524,7 @@ $(prefix)/etc/openrc\n")))

         ("git-minimal" ,git-minimal)             ;for 'guix perform-download'

         ("glibc-utf8-locales" ,glibc-utf8-locales)))
         ("glibc-utf8-locales" ,(libc-utf8-locales-for-target))))
      (propagated-inputs
       `(("guile-gnutls" ,guile-gnutls)
         ;; Avahi requires "glib" which doesn't cross-compile yet.


@@ 2052,7 2052,7 @@ cp -r /tmp/locale/*/en_US.*")))
           dbus ; for dbus-daemon
           gettext-minimal
           `(,glib "bin") ; for glib-mkenums + gdbus-codegen
           glibc-utf8-locales
           (libc-utf8-locales-for-target)
           gobject-introspection
           libcap
           pkg-config

M gnu/packages/raspberry-pi.scm => gnu/packages/raspberry-pi.scm +1 -1
@@ 199,7 199,7 @@ Raspberry Pi.  Note: It does not work on Raspberry Pi 1.")
       ("ld-wrapper" ,ld-wrapper)
       ("make" ,gnu-make)
       ("gcc" ,gcc-6)
       ("locales" ,glibc-utf8-locales)))
       ("locales" ,(libc-utf8-locales-for-target))))
    (inputs
     `())
    (arguments

M gnu/packages/suckless.scm => gnu/packages/suckless.scm +1 -1
@@ 1247,7 1247,7 @@ a nice format.")
               (delete 'configure)))) ;no configure script
    (native-inputs (list pkg-config))
    (inputs (list freetype libx11 libxft libxtst libxinerama))
    (propagated-inputs (list glibc-utf8-locales))
    (propagated-inputs (list (libc-utf8-locales-for-target)))
    (home-page "https://tools.suckless.org/x/svkbd/")
    (synopsis "Virtual on-screen keyboard")
    (description "svkbd is a simple virtual keyboard, intended to be used in

M gnu/services.scm => gnu/services.scm +3 -1
@@ 651,7 651,9 @@ information is missing, return the empty list (for channels) and possibly
           ;; Force file names to be decoded as UTF-8.  See
           ;; <https://bugs.gnu.org/26353>.
           (setenv "GUIX_LOCPATH"
                   #+(file-append glibc-utf8-locales "/lib/locale"))
                   #+(file-append
                      (libc-utf8-locales-for-target (%current-system))
                      "/lib/locale"))
           (setlocale LC_CTYPE "en_US.utf8")
           (delete-file-recursively "/tmp")
           (delete-file-recursively "/var/run")

M gnu/services/base.scm => gnu/services/base.scm +5 -2
@@ 63,7 63,9 @@
  #:use-module (gnu packages bash)
  #:use-module ((gnu packages base)
                #:select (coreutils glibc glibc/hurd
                          glibc-utf8-locales make-glibc-utf8-locales
                          glibc-utf8-locales
                          libc-utf8-locales-for-target
                          make-glibc-utf8-locales
                          tar canonical-package))
  #:use-module ((gnu packages compression) #:select (gzip))
  #:use-module (gnu packages fonts)


@@ 2147,7 2149,8 @@ raise a deprecation warning if the 'compression-level' field was used."
                      ;; nars for packages that contain UTF-8 file names such
                      ;; as 'nss-certs'.  See <https://bugs.gnu.org/26948>.
                      (list (string-append "GUIX_LOCPATH="
                                           #$glibc-utf8-locales "/lib/locale")
                                           #$(libc-utf8-locales-for-target)
                                           "/lib/locale")
                            "LC_ALL=en_US.utf8")
                      #:log-file "/var/log/guix-publish.log"))
          (endpoints #~(let ((ai (false-if-exception

M gnu/services/guix.scm => gnu/services/guix.scm +15 -8
@@ 23,7 23,7 @@
  #:use-module (guix records)
  #:use-module (guix packages)
  #:use-module ((gnu packages base)
                #:select (glibc-utf8-locales))
                #:select (libc-utf8-locales-for-target))
  #:use-module (gnu packages admin)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages web)


@@ 381,7 381,8 @@
                     #:pid-file-timeout 60
                     #:environment-variables
                     `(,(string-append
                         "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
                         "GUIX_LOCPATH="
                         #$(libc-utf8-locales-for-target) "/lib/locale")
                       "LC_ALL=en_US.utf8"
                       "PATH=/run/current-system/profile/bin" ; for hooks
                       #$@extra-environment-variables)


@@ 508,7 509,8 @@
              #:user #$user
              #:environment-variables
              `(,(string-append
                  "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
                  "GUIX_LOCPATH="
                  #$(libc-utf8-locales-for-target) "/lib/locale")
                ;; XDG_CACHE_HOME is used by Guix when caching narinfo files
                "XDG_CACHE_HOME=/var/cache/guix-build-coordinator-agent"
                "LC_ALL=en_US.utf8")


@@ 600,7 602,8 @@
              #:user #$user
              #:environment-variables
              `(,(string-append
                  "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
                  "GUIX_LOCPATH="
                  #$(libc-utf8-locales-for-target) "/lib/locale")
                "LC_ALL=en_US.utf8")
              #:log-file "/var/log/guix-build-coordinator/queue-builds.log"))))
      (stop #~(make-kill-destructor))


@@ 712,7 715,8 @@ ca-certificates.crt file in the system profile."
                #:pid-file "/var/run/guix-data-service/pid"
                #:environment-variables
                `(,(string-append
                    "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
                    "GUIX_LOCPATH="
                    #$(libc-utf8-locales-for-target) "/lib/locale")
                  "LC_ALL=en_US.UTF-8")
                #:log-file "/var/log/guix-data-service/web.log"))
      (stop #~(make-kill-destructor)))


@@ 733,7 737,8 @@ ca-certificates.crt file in the system profile."
                `("HOME=/var/lib/guix-data-service"
                  "GIT_SSL_CAINFO=/etc/ssl/certs/ca-certificates.crt"
                  ,(string-append
                    "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
                    "GUIX_LOCPATH="
                    #$(libc-utf8-locales-for-target) "/lib/locale")
                  "LC_ALL=en_US.UTF-8")
                #:log-file "/var/log/guix-data-service/process-jobs.log"))
      (stop #~(make-kill-destructor))))))


@@ 989,7 994,8 @@ ca-certificates.crt file in the system profile."
                #:pid-file "/var/run/nar-herder/pid"
                #:environment-variables
                `(,(string-append
                    "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
                    "GUIX_LOCPATH="
                    #$(libc-utf8-locales-for-target) "/lib/locale")
                  "LC_ALL=en_US.utf8"
                  #$@extra-environment-variables)
                #:log-file "/var/log/nar-herder/server.log"))


@@ 1108,7 1114,8 @@ ca-certificates.crt file in the system profile."
                #:directory "/var/lib/bffe"
                #:environment-variables
                `(,(string-append
                    "GUIX_LOCPATH=" #$glibc-utf8-locales "/lib/locale")
                    "GUIX_LOCPATH="
                    #$(libc-utf8-locales-for-target) "/lib/locale")
                  "LC_ALL=en_US.utf8"
                  #$@extra-environment-variables)
                #:log-file "/var/log/bffe/server.log"))

M gnu/services/web.scm => gnu/services/web.scm +4 -2
@@ 1498,7 1498,8 @@ files.")
               '#$(optional anonip-configuration-regex "--regex"))
              ;; Run in a UTF-8 locale
              #:environment-variables
              (list (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales
              (list (string-append "GUIX_LOCPATH="
                                   #$(libc-utf8-locales-for-target)
                                   "/lib/locale")
                    "LC_ALL=en_US.utf8")))



@@ 1976,7 1977,8 @@ WSGIPassAuthorization On
(define (mumi-shepherd-services config)
  (define environment
    #~(list "LC_ALL=en_US.utf8"
            (string-append "GUIX_LOCPATH=" #$glibc-utf8-locales
            (string-append "GUIX_LOCPATH="
                           #$(libc-utf8-locales-for-target)
                           "/lib/locale")))

  (match config

M gnu/system/image.scm => gnu/system/image.scm +9 -4
@@ 466,7 466,9 @@ used in the image."
                 ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be
                 ;; decoded.
                 (setenv "GUIX_LOCPATH"
                         #+(file-append glibc-utf8-locales "/lib/locale"))
                         #+(file-append (libc-utf8-locales-for-target
                                         (%current-system))
                                        "/lib/locale"))
                 (setlocale LC_ALL "en_US.utf8")

                 (initializer image-root


@@ 633,7 635,8 @@ used in the image. "

             ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded.
             (setenv "GUIX_LOCPATH"
                     #+(file-append glibc-utf8-locales "/lib/locale"))
                     #+(file-append (libc-utf8-locales-for-target (%current-system))
                                    "/lib/locale"))

             (setlocale LC_ALL "en_US.utf8")



@@ 737,7 740,8 @@ output file."

              ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded.
              (setenv "GUIX_LOCPATH"
                      #+(file-append glibc-utf8-locales "/lib/locale"))
                      #+(file-append (libc-utf8-locales-for-target (%current-system))
                                     "/lib/locale"))
              (setlocale LC_ALL "en_US.utf8")

              (set-path-environment-variable "PATH" '("bin" "sbin") '(#+tar))


@@ 816,7 820,8 @@ output file."

              ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded.
              (setenv "GUIX_LOCPATH"
                      #+(file-append glibc-utf8-locales "/lib/locale"))
                      #+(file-append (libc-utf8-locales-for-target (%current-system))
                                     "/lib/locale"))
              (setlocale LC_ALL "en_US.utf8")

              (let ((image-root (string-append (getcwd) "/tmp-root"))

M gnu/system/install.scm => gnu/system/install.scm +1 -1
@@ 454,7 454,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m
           (service gc-root-service-type
                    (append
                     (list bare-bones-os
                           glibc-utf8-locales
                           (libc-utf8-locales-for-target system)
                           texinfo
                           guile-3.0)
                     %default-locale-libcs)))

M guix/packages.scm => guix/packages.scm +5 -1
@@ 866,7 866,11 @@ identifiers.  The result is inferred from the file names of patches."
      ("lzip"  ,(ref '(gnu packages compression) 'lzip))
      ("unzip" ,(ref '(gnu packages compression) 'unzip))
      ("patch" ,(ref '(gnu packages base) 'patch))
      ("locales" ,(ref '(gnu packages base) 'glibc-utf8-locales)))))
      ("locales"
       ,(parameterize ((%current-target-system #f))
          (canonical
           ((module-ref (resolve-interface '(gnu packages base))
                        'libc-utf8-locales-for-target))))))))

(define (default-guile)
  "Return the default Guile package used to run the build code of

M guix/profiles.scm => guix/profiles.scm +22 -15
@@ 1000,8 1000,9 @@ MANIFEST."
    (module-ref (resolve-interface '(gnu packages texinfo)) 'texinfo))
  (define gzip                                    ;lazy reference
    (module-ref (resolve-interface '(gnu packages compression)) 'gzip))
  (define glibc-utf8-locales                      ;lazy reference
    (module-ref (resolve-interface '(gnu packages base)) 'glibc-utf8-locales))
  (define libc-utf8-locales-for-target            ;lazy reference
    (module-ref (resolve-interface '(gnu packages base))
                'libc-utf8-locales-for-target))

  (define build
    (with-imported-modules '((guix build utils))


@@ 1043,7 1044,8 @@ MANIFEST."

          (setenv "PATH" (string-append #+gzip "/bin")) ;for info.gz files
          (setenv "GUIX_LOCPATH"
                  #+(file-append glibc-utf8-locales "/lib/locale"))
                  #+(file-append (libc-utf8-locales-for-target system)
                                 "/lib/locale"))

          (mkdir-p (string-append #$output "/share/info"))
          (exit (every install-info


@@ 1124,8 1126,9 @@ MANIFEST.  Single-file bundles are required by programs such as Git and Lynx."
  ;; See <http://lists.gnu.org/archive/html/guix-devel/2015-02/msg00429.html>
  ;; for a discussion.

  (define glibc-utf8-locales                      ;lazy reference
    (module-ref (resolve-interface '(gnu packages base)) 'glibc-utf8-locales))
  (define libc-utf8-locales-for-target  ;lazy reference
    (module-ref (resolve-interface '(gnu packages base))
                'libc-utf8-locales-for-target))

  (define build
    (with-imported-modules '((guix build utils))


@@ 1159,9 1162,11 @@ MANIFEST.  Single-file bundles are required by programs such as Git and Lynx."
          ;; Some file names in the NSS certificates are UTF-8 encoded so
          ;; install a UTF-8 locale.
          (setenv "LOCPATH"
                  (string-append #+glibc-utf8-locales "/lib/locale/"
                  (string-append #+(libc-utf8-locales-for-target system)
                                 "/lib/locale/"
                                 #+(version-major+minor
                                    (package-version glibc-utf8-locales))))
                                    (package-version
                                     (libc-utf8-locales-for-target system)))))
          (setlocale LC_ALL "en_US.utf8")

          (match (append-map ca-files '#$(manifest-inputs manifest))


@@ 1999,19 2004,21 @@ are cross-built for TARGET."
                    (and (derivation? drv) (gexp-input drv)))
                  extras))

    (define glibc-utf8-locales                    ;lazy reference
    (define libc-utf8-locales-for-target ;lazy reference
      (module-ref (resolve-interface '(gnu packages base))
                  'glibc-utf8-locales))
                  'libc-utf8-locales-for-target))

    (define set-utf8-locale
      ;; Some file names (e.g., in 'nss-certs') are UTF-8 encoded so
      ;; install a UTF-8 locale.
      #~(begin
          (setenv "LOCPATH"
                  #$(file-append glibc-utf8-locales "/lib/locale/"
                                 (version-major+minor
                                  (package-version glibc-utf8-locales))))
          (setlocale LC_ALL "en_US.utf8")))
      (let ((locales (libc-utf8-locales-for-target
                      (or system (%current-system)))))
        #~(begin
            (setenv "LOCPATH"
                    #$(file-append locales "/lib/locale/"
                                   (version-major+minor
                                    (package-version locales))))
            (setlocale LC_ALL "en_US.utf8"))))

    (define builder
      (with-imported-modules '((guix build profiles)

M guix/scripts/pack.scm => guix/scripts/pack.scm +6 -2
@@ 137,7 137,8 @@ dependencies are registered."

            ;; Make sure non-ASCII file names are properly handled.
            (setenv "GUIX_LOCPATH"
                    #+(file-append glibc-utf8-locales "/lib/locale"))
                    #+(file-append (libc-utf8-locales-for-target (%current-system))
                                   "/lib/locale"))
            (setlocale LC_ALL "en_US.utf8")

            (sql-schema #$schema)


@@ 209,7 210,10 @@ GLIBC-UT8-LOCALES package."
          (profile-locales? profile))
      #~(begin
          (setenv "GUIX_LOCPATH"
                  #+(file-append glibc-utf8-locales "/lib/locale"))
                  #+(file-append (let-system (system target)
                                   (libc-utf8-locales-for-target
                                    (or target system)))
                                 "/lib/locale"))
          (setlocale LC_ALL "en_US.utf8"))
      #~(setenv "GUIX_LOCPATH" "unset for tests")))


M guix/self.scm => guix/self.scm +4 -1
@@ 73,7 73,10 @@
      ("po4a"               . ,(ref 'gettext 'po4a))
      ("gettext-minimal"    . ,(ref 'gettext 'gettext-minimal))
      ("gcc-toolchain"      . ,(ref 'commencement 'gcc-toolchain))
      ("glibc-utf8-locales" . ,(ref 'base 'glibc-utf8-locales))
      ("glibc-utf8-locales" . ,(delay
                                 ((module-ref (resolve-interface
                                               '(gnu packages base))
                                              'libc-utf8-locales-for-target))))
      ("graphviz"           . ,(ref 'graphviz 'graphviz-minimal))
      ("font-ghostscript"   . ,(ref 'ghostscript 'font-ghostscript))
      ("texinfo"            . ,(ref 'texinfo 'texinfo)))))

M tests/pack.scm => tests/pack.scm +4 -3
@@ 30,7 30,7 @@
  #:use-module (guix modules)
  #:use-module (guix utils)
  #:use-module (gnu packages)
  #:use-module ((gnu packages base) #:select (glibc-utf8-locales))
  #:use-module ((gnu packages base) #:select (libc-utf8-locales-for-target))
  #:use-module (gnu packages bootstrap)
  #:use-module ((gnu packages package-management) #:select (rpm))
  #:use-module ((gnu packages compression) #:select (squashfs-tools))


@@ 197,8 197,9 @@
                             ;; Make sure non-ASCII file names are properly
                             ;; handled.
                             (setenv "GUIX_LOCPATH"
                                     #+(file-append glibc-utf8-locales
                                                    "/lib/locale"))
                                     #+(file-append
                                        (libc-utf8-locales-for-target)
                                        "/lib/locale"))
                             (setlocale LC_ALL "en_US.utf8")

                             (mkdir #$output)

M tests/profiles.scm => tests/profiles.scm +2 -2
@@ 463,7 463,7 @@
       (target ->   "arm-linux-gnueabihf")
       (grep        (package->cross-derivation packages:grep target))
       (sed         (package->cross-derivation packages:sed target))
       (locales     (package->derivation packages:glibc-utf8-locales))
       (locales     (package->derivation (packages:libc-utf8-locales-for-target)))
       (drv         (profile-derivation manifest
                                        #:hooks '()
                                        #:locales? #t


@@ 482,7 482,7 @@
                           (derivation-file-name grep))
                 (string=? (find-input packages:sed)
                           (derivation-file-name sed))
                 (string=? (find-input packages:glibc-utf8-locales)
                 (string=? (find-input (packages:libc-utf8-locales-for-target))
                           (derivation-file-name locales))))))

(test-assert "package->manifest-entry defaults to \"out\""