locale: Demonadify the locale creation API.

* gnu/system/locale.scm (single-locale-directory): Use 'computed-file'
instead of 'gexp->derivation'.
(locale-directory): Adjust accordingly and do the same.
* gnu/system.scm (operating-system-directory-base-entries): Adjust
accordingly.
This commit is contained in:
Ludovic Courtès 2017-07-17 23:38:23 +02:00
parent 6d833b13b7
commit b19a49d015
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 23 additions and 26 deletions

View File

@ -403,17 +403,18 @@ OS."
(define* (operating-system-directory-base-entries os #:key container?)
"Return the basic entries of the 'system' directory of OS for use as the
value of the SYSTEM-SERVICE-TYPE service."
(mlet %store-monad ((locale (operating-system-locale-directory os)))
(if container?
(return `(("locale" ,locale)))
(mlet %store-monad
((kernel -> (operating-system-kernel os))
(initrd (operating-system-initrd-file os))
(params (operating-system-boot-parameters-file os)))
(return `(("kernel" ,kernel)
("parameters" ,params)
("initrd" ,initrd)
("locale" ,locale))))))) ;used by libc
(let ((locale (operating-system-locale-directory os)))
(with-monad %store-monad
(if container?
(return `(("locale" ,locale)))
(mlet %store-monad
((kernel -> (operating-system-kernel os))
(initrd (operating-system-initrd-file os))
(params (operating-system-boot-parameters-file os)))
(return `(("kernel" ,kernel)
("parameters" ,params)
("initrd" ,initrd)
("locale" ,locale)))))))) ;used by libc
(define* (essential-services os #:key container?)
"Return the list of essential services for OS. These are special services

View File

@ -19,7 +19,6 @@
(define-module (gnu system locale)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix records)
#:use-module (guix packages)
#:use-module (gnu packages base)
@ -118,8 +117,7 @@ of LIBC."
(and #$@(map (cut localedef-command <> #:libc libc)
locales)))))
(gexp->derivation (string-append "locale-" version) build
#:local-build? #t))
(computed-file (string-append "locale-" version) build))
(define* (locale-directory locales
#:key (libcs %default-locale-libcs))
@ -133,18 +131,16 @@ data format changes between libc versions."
((libc)
(single-locale-directory locales #:libc libc))
((libcs ..1)
(mlet %store-monad ((dirs (mapm %store-monad
(lambda (libc)
(single-locale-directory locales
#:libc libc))
libcs)))
(gexp->derivation "locale-multiple-versions"
(with-imported-modules '((guix build union))
#~(begin
(use-modules (guix build union))
(union-build #$output (list #$@dirs))))
#:local-build? #t
#:substitutable? #f)))))
(let ((dirs (map (lambda (libc)
(single-locale-directory locales #:libc libc))
libcs)))
(computed-file "locale-multiple-versions"
(with-imported-modules '((guix build union))
#~(begin
(use-modules (guix build union))
(union-build #$output (list #$@dirs))))
#:options '(#:local-build? #t
#:substitutable? #f))))))
(define %default-locale-libcs
;; The libcs for which we build locales by default.