Subject: Re: bug#26948: gnutls errors on multiple guix commands

From: [email-masked] (Ludovic Courtès)
Date: Fri, 26 May 2017 10:56:48 +0200

Hi Maxim,

Maxim Cournoyer <[email-masked]> skribis:

> It seems that the problem is caused by the file:
> "/etc/ssl/certs/AC_Ra\303\255z_Certic\303\241mara_S.A.:2.15.7.126.82.147.123.224.21.227.87.240.105.140.203.236.12.p".

Indeed.

> The strange thing is that it shouldn't even get into the `files'
> variable since we are scanning for files ending with a ".pem" suffix.
>
> ls /etc/ssl/certs/AC*2.15.7.126*
> /etc/ssl/certs/AC_Raíz_Certicámara_S.A.:2.15.7.126.82.147.123.224.21.227.87.240.105.140.203.236.12.pem
>
>
> It looks like I have a locale problem? In my operating-system
> definition, I'm using (locale "en_US.UTF-8") and the locale-definitions
> field is not set (which means it's using %DEFAULT-LOCALE-DEFINITIONS). I
> also have the following installed in my user profile:
>
> guix package -I locale
> glibc-locales   2.25    out     /gnu/store/2d97vjjx23w3bhwp4sbylwcx6l5fy8g2-glibc-locales-2.25
>
>
> Finally,
>
> set | grep LOC
> GUIX_LOCPATH=/run/current-system/locale
> XTERM_LOCALE=en_US.UTF-8

Does the ‘guix’ command say “failed to install locale”?  It probably
does, which explains why it fails to decode the file name.

Strangely that file name has question marks instead of the non-ASCII
characters on my GuixSD system:

--8<---------------cut here---------------start------------->8---
$ ls -l /etc/ssl/certs/*Certi*mara*
lrwxrwxrwx 8 root root 162 Jan  1  1970 '/etc/ssl/certs/AC_Ra?z_Certic?mara_S.A.:2.15.7.126.82.147.123.224.21.227.87.240.105.140.203.236.12.pem' -> '/gnu/store/3ql0vilc0zv6ra42ghi04787vrg6bb71-nss-certs-3.30.2/etc/ssl/certs/AC_Ra?z_Certic?mara_S.A.:2.15.7.126.82.147.123.224.21.227.87.240.105.140.203.236.12.pem'
--8<---------------cut here---------------end--------------->8---

but the initial problem seems to be in nss-certs itself.

What does this report for you:

  guix package -p /run/current-system/profile -I nss-cert

?

> I would have liked to exercise the
> `make-credendials-with-ca-trust-files' function to debug but there's a
> `make-certificate-credentials' function called which I coudln't source
> (where does it come from? Doing C-c . u in Geiser didn't help making it
> visible, as did grepping the Guix sources for its definition)

These procedures come from (gnutls).  They’re written in C.

Thanks,
Ludo’.