guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 2/2] services: postgresql: Add locale to configuration


From: Ludovic Courtès
Subject: Re: [PATCH 2/2] services: postgresql: Add locale to configuration
Date: Wed, 14 Dec 2016 00:09:18 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Christopher Baines <address@hidden> skribis:

> On 11/12/16 23:14, Ludovic Courtès wrote:
>> Hi!
>>
>> Christopher Baines <address@hidden> skribis:
>>
>>> * gnu/services/postgresql.scm (<postgresql-configuration>): Add locale
>>>   field.
>>>   (postgresql-shepherd-service): Pass locale to initdb.
>>>   (postgresql-service): Add locale default.
>>
>> [...]
>>
>>> +  (locale         postgresql-configuration-locale
>>> +                  (default "en_US.UTF-8"))
>>
>> Note: this should use the “normalized codeset”, so “en_US.utf8”.
>>
>>>           (let ((user (getpwnam "postgres"))
>>> -               (initdb (string-append #$postgresql "/bin/initdb")))
>>> +               (initdb (string-append #$postgresql "/bin/initdb"))
>>> +               (initdb-args
>>> +                (append
>>> +                 (if #$locale
>>> +                     (list (string-append "--locale=" #$locale))
>>> +                     '()))))
>>>             ;; Create db state directory.
>>>             (mkdir-p #$data-directory)
>>>             (chown #$data-directory (passwd:uid user) (passwd:gid user))
>>> @@ -103,14 +110,19 @@ host  all     all     ::1/128         trust"))
>>>                  (lambda ()
>>>                    (setgid (passwd:gid user))
>>>                    (setuid (passwd:uid user))
>>> -                  (primitive-exit (system* initdb "-D" #$data-directory)))
>>> +                  (primitive-exit
>>> +                   (apply system*
>>> +                          initdb
>>> +                          "-D"
>>> +                          #$data-directory
>>> +                          initdb-args)))
>>>                  (lambda ()
>>>                    (primitive-exit 1))))
>>>               (pid (waitpid pid))))))))
>>
>> The effect of that is that ‘initdb’, but not ‘postgresql’ itself, would
>> run in a locale different from the system locale by default.
>>
>> These two inconsistencies may be quite confusing.  WDYT?
>
> I believe the locale passed to initdb sets "the default locale for the
> database cluster",

Oh, so it affects the initial format of the DB, right?  In that case,
you’re right of course.

> I thought about trying to get the LANG from /etc/environment, or the
> <operating-system>, but I could not see an easy and elegant way to do
> either. By default, initdb will use the environment, its just that the
> environment during service activation contains no locale information.

With 97bb1ab66519736afbdab57c230c3a9deef2fa05 there *is* locale data
available at least, right?

But yeah, there’s no easy way to retrieve the currently-configured system
locale, so let’s forget about it (maybe add an “XXX” comment next to
it.)

Could you send an updated patch with (1) the normalized codeset by
default (“en_US.utf8”), and (2) a guix.texi update mentioning the new
option?

Thanks in advance!

Ludo’.



reply via email to

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