[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/07: gnu: glibc-locales: Install symlinks using the normalized codeset
From: |
guix-commits |
Subject: |
02/07: gnu: glibc-locales: Install symlinks using the normalized codeset. |
Date: |
Fri, 7 Jun 2019 17:08:10 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 0e6cee21a48294b81a5e57e00602728fe7f7075f
Author: Ludovic Courtès <address@hidden>
Date: Thu Jun 6 16:52:15 2019 +0200
gnu: glibc-locales: Install symlinks using the normalized codeset.
Fixes <https://bugs.gnu.org/36076>.
Reported by Jack Hill <address@hidden>
and Giovanni Biscuolo <address@hidden>
* gnu/build/locale.scm (locale->name+codeset): New file.
* gnu/packages/base.scm (make-glibc-locales): Add #:modules
and #:imported-modules. Add a 'symlink-normalized-codesets' phase.
---
gnu/build/locale.scm | 9 +++++++++
gnu/packages/base.scm | 37 ++++++++++++++++++++++++++++++++++++-
2 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/gnu/build/locale.scm b/gnu/build/locale.scm
index c75a2e9..412759a 100644
--- a/gnu/build/locale.scm
+++ b/gnu/build/locale.scm
@@ -24,6 +24,7 @@
#:use-module (ice-9 regex)
#:export (build-locale
normalize-codeset
+ locale->name+codeset
read-supported-locales))
(define locale-rx
@@ -84,3 +85,11 @@ discarded."
(invoke localedef "--no-archive" "--prefix" directory
"-i" locale "-f" codeset
(string-append directory "/" name)))
+
+(define (locale->name+codeset locale)
+ "Split a locale name such as \"address@hidden-8\" into two values: the
+language/territory/modifier part, and the codeset."
+ (match (string-rindex locale #\.)
+ (#f (values locale #f))
+ (dot (values (string-take locale dot)
+ (string-drop locale (+ dot 1))))))
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index a941a8f..15f3500 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès
<address@hidden>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès
<address@hidden>
;;; Copyright © 2014, 2019 Andreas Enge <address@hidden>
;;; Copyright © 2012 Nikita Karetnikov <address@hidden>
;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <address@hidden>
@@ -1050,12 +1050,47 @@ to the @code{share/locale} sub-directory of this
package.")
(let ((args `(#:tests? #f #:strip-binaries? #f
,@(package-arguments glibc))))
(substitute-keyword-arguments args
+ ((#:modules modules '((guix build utils)
+ (guix build gnu-build-system)))
+ `((srfi srfi-11)
+ (gnu build locale)
+ ,@modules))
+ ((#:imported-modules modules '())
+ `((gnu build locale)
+ ,@%gnu-build-system-modules))
((#:phases phases)
`(modify-phases ,phases
(replace 'build
(lambda _
(invoke "make" "localedata/install-locales"
"-j" (number->string (parallel-job-count)))))
+ (add-after 'build 'symlink-normalized-codesets
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The above phase does not install locales with names using
+ ;; the "normalized codeset." Thus, create symlinks like:
+ ;; en_US.utf8 -> en_US.UTF-8
+ (define (locale-directory? file stat)
+ (and (file-is-directory? file)
+ (string-index (basename file) #\_)
+ (string-rindex (basename file) #\.)))
+
+ (let* ((out (assoc-ref outputs "out"))
+ (locales (find-files out locale-directory?
+ #:directories? #t)))
+ (for-each (lambda (directory)
+ (let*-values (((base)
+ (basename directory))
+ ((name codeset)
+ (locale->name+codeset base))
+ ((normalized)
+ (normalize-codeset codeset)))
+ (unless (string=? codeset normalized)
+ (symlink base
+ (string-append (dirname directory)
+ "/" name "."
+ normalized)))))
+ locales)
+ #t)))
(delete 'install)
(delete 'move-static-libs)))
((#:configure-flags flags)
- branch master updated (bc48088 -> f54cab2), guix-commits, 2019/06/07
- 02/07: gnu: glibc-locales: Install symlinks using the normalized codeset.,
guix-commits <=
- 05/07: installer: Install xterm alongside ratpoison., guix-commits, 2019/06/07
- 06/07: import: print: Honor the outputs of inputs (!)., guix-commits, 2019/06/07
- 04/07: installer: Install companion packages alongside i3., guix-commits, 2019/06/07
- 01/07: Add (gnu build locale)., guix-commits, 2019/06/07
- 07/07: import: utils: 'specs->package-lists' correctly matches "out"., guix-commits, 2019/06/07
- 03/07: nls: Update 'de' translation of the manual., guix-commits, 2019/06/08