Exherbo's glibc locales are not brought into the container
If we bring Exherbo's glibc into the container, we don't put any locales at the path where Exherbo glibc expects to find them:
-
/usr/x86_64-pc-linux-gnu/lib/locale
(64-bit processes) -
/usr/i686-pc-linux-gnu/lib/locale
(32-bit processes)
We normally expect to see glibc locales in /usr/lib/locale
. Despite the path, this is actually architecture-independent, and e.g. Debian doesn't architecture-qualify it.
There are two ways we could solve this. Both require action in both pressure-vessel and steamrt.
-
Arbitrarily choose one architecture's locales (
/usr/x86_64-pc-linux-gnu/lib/locale
is probably better). In pressure-vessel, mount it on/usr/lib/locale
. Insteamrt-container-host-compat
, create symbolic links/usr/x86_64-pc-linux-gnu/lib/locale
,/usr/i686-pc-linux-gnu/lib/locale
pointing to/usr/lib/locale
.- This mirrors what we do for Arch Linux's
/usr/lib32/locale
.
- This mirrors what we do for Arch Linux's
-
In
steamrt-container-host-compat
, create real directories/usr/x86_64-pc-linux-gnu/lib/locale
,/usr/i686-pc-linux-gnu/lib/locale
. In pressure-vessel, if those directories exist, mount the corresponding host directories onto them.
Mitigation: pv-adverb --generate-locales
fixes this for us, at a startup time cost.
/cc @denittis