~ruther/guix-local

949ee85019b242d29a1065cde27c491af57b657b — Ludovic Courtès 2 years ago 92727f4
profiles: Use C.UTF-8 instead of ‘glibc-utf8-locales’ where possible.

This is a followup to 1cebc334a77030c0c94955981652f4df7608c9e3.

* guix/profiles.scm (ca-certificate-bundle)[libc-utf8-locales-for-target]:
Remove.
[build]: Use “C.UTF-8” instead of “en_US.utf8”.
(profile-derivation)[libc-utf8-locales-for-target]: Remove.
[set-utf8-locale]: Rewrite to a gexp that calls ‘setlocale’ for “C.UTF-8”.
* tests/profiles.scm ("profile-derivation, cross-compilation"): Remove
‘locales’ variable and related check.

Change-Id: I7cb148b9149fe5fbe5b9b1b25fdce1002ad1f37e
2 files changed, 6 insertions(+), 34 deletions(-)

M guix/profiles.scm
M tests/profiles.scm
M guix/profiles.scm => guix/profiles.scm +5 -28
@@ 1127,11 1127,6 @@ 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."
  ;; See <http://lists.gnu.org/archive/html/guix-devel/2015-02/msg00429.html>
  ;; for a discussion.

  (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))
      #~(begin


@@ 1163,13 1158,7 @@ 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 #+(libc-utf8-locales-for-target system)
                                 "/lib/locale/"
                                 #+(version-major+minor
                                    (package-version
                                     (libc-utf8-locales-for-target system)))))
          (setlocale LC_ALL "en_US.utf8")
          (setlocale LC_ALL "C.UTF-8")

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


@@ 1965,8 1954,7 @@ with a different version number.)  Unless ALLOW-UNSUPPORTED-PACKAGES? is true
or TARGET is set, raise an error if MANIFEST contains a package that does not
support SYSTEM.

When LOCALES? is true, the build is performed under a UTF-8 locale; this adds
a dependency on the 'glibc-utf8-locales' package.
When LOCALES? is true, the build is performed under a UTF-8 locale.

When RELATIVE-SYMLINKS? is true, use relative file names for symlink targets.
This is one of the things to do for the result to be relocatable.


@@ 2009,21 1997,10 @@ are cross-built for TARGET."
                    (and (derivation? drv) (gexp-input drv)))
                  extras))

    (define libc-utf8-locales-for-target ;lazy reference
      (module-ref (resolve-interface '(gnu packages base))
                  '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.
      (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"))))
      ;; Some file names (e.g., in 'nss-certs') are UTF-8 encoded so install a
      ;; UTF-8 locale.  Assume libc comes with a copy of C.UTF-8.
      #~(setlocale LC_ALL "C.UTF-8"))

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

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


@@ 475,15 474,11 @@
                 (and (string-suffix? name input) input)))
             (derivation-inputs drv))))

    ;; The inputs for grep and sed should be cross-build derivations, but that
    ;; for the glibc-utf8-locales should be a native build.
    (return (and (string=? (derivation-system drv) (%current-system))
                 (string=? (find-input packages:grep)
                           (derivation-file-name grep))
                 (string=? (find-input packages:sed)
                           (derivation-file-name sed))
                 (string=? (find-input (packages:libc-utf8-locales-for-target))
                           (derivation-file-name locales))))))
                           (derivation-file-name sed))))))

(test-assert "package->manifest-entry defaults to \"out\""
  (let ((outputs (package-outputs packages:glibc)))