Subject: "guix system reconfigure" doesn't work with LC_ALL=C - and locale problems

From: Danny Milosavljevic <[email-masked]>
Date: Thu, 10 Oct 2019 00:18:56 +0200

Because of the locale problems every time there is a merge, I've tried to upgrade
as follows:

sudo -i
LC_ALL=C guix system reconfigure /etc/config.scm

downloading from https://ci.guix.gnu.org/nar/lzip/532l4zja85y9c69i0l0bwnsxx98gpzdw-nss-certs-3.45...
 nss-certs-3.45  135KiB                                                     104.5MiB/s 00:00 [########          ]  47.4%Backtrace:
           3 (apply-smob/1 #<catch-closure 1083000>)
In ice-9/boot-9.scm:
    705:2  2 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
In ice-9/eval.scm:
    619:8  1 (_ #(#(#<directory (guile-user) 10e6140>)))
In guix/ui.scm:
  1692:12  0 (run-guix-command _ . _)

guix/ui.scm:1692:12: In procedure run-guix-command:
Throw to key `encoding-error' with args `("scm_to_stringn" "cannot convert wide string to output locale" 84 #f #f)'.

Can we please do something about these encoding problems once and for all?

Most have standardized on UTF-8 in like 2000, so why does this keep happening?

Also, what is it that changes the locale database format so fundamentally each
and every time that it can't be used any more?  Human culture doesn't change that
quickly :P

The reason I set LC_ALL=C is because with my usual language setting I cannot see
where the log file is when a build failure occurs:

>Das Erstellungsprotokoll kann unter â eingesehen werden.

                                     ^ You got this E-Mail right.  That's what it said.

That is very bad usability.

If there's an official way to make these upgrades not break (automatically update
in a cron job, say), is it documented in the manual how to do that?

On the other hand:

$ LC_ALL=de_AT.utf8 guix package -u . # With broken locales.
[...]
>Das Erstellungsprotokoll kann unter â eingesehen werden.

                                     ^ You got this E-Mail right.  That's what it said.

$ LC_ALL=C guix package -u . # With broken locales.
[...]
View build log at '/var/log/guix/drvs/3y/jqbvjchd344qwg62x0gbj95dx0vfk9-simple-scan-3.24.1.drv.bz2'.

There it works.

Furthermore, I cannot log in on the Linux console.  It doesn't ask for the
password and doesn't let me log in either.  (I wanted to see whether the
text console does the same--well, I guess we won't know)