Re: [docs] [PATCH v2] ref-manual: use standardized method accross both ubuntu and debian for locale install

Guénaël MULLER
2024-11-22T09:22:54Z

[-- Attachment #1: Type: text/plain, Size: 6165 bytes --]

Hi Quentin, Antonin,

On Tue, Nov 19, 2024 at 10:28 AM Quentin Schulz <quentin.schulz@cherry.de>
wrote:

> Hi Anotnin, Guénaël,
>
> On 11/18/24 12:00 PM, Antonin Godard via lists.yoctoproject.org wrote:
> > Hi Guénaël,
> >
> > On Mon Nov 18, 2024 at 11:45 AM CET, Guénaël Muller wrote:
> >> Modify locale installation method to be standard accross all
> debian-based distributions.
> >> Pre-existing method is available only on Ubuntu, locale-gen tool has no
> parameter in Debian.
> >>
> >> Signed-off-by: Guénaël Muller <guenael.muller@smile.fr>
> >> Reviewed-by: Yoann Congal <yoann.congal@smile.fr>
> >> Tested-by: Antonin Godard <antonin.godard@bootlin.com>
> >> ---
> >> documentation/poky.yaml.in | 3 +--
> >> documentation/ref-manual/system-requirements.rst | 8 ++++++++
> >> 2 files changed, 9 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/documentation/poky.yaml.in b/documentation/poky.yaml.in
> >> index c770318f2..66f758fe8 100644
> >> --- a/documentation/poky.yaml.in
> >> +++ b/documentation/poky.yaml.in
> >> @@ -13,8 +13,7 @@ YOCTO_RELEASE_DL_URL :
> "&YOCTO_DL_URL;/releases/yocto/yocto-&DISTRO;"
> >> UBUNTU_HOST_PACKAGES_ESSENTIAL : "gawk wget git diffstat unzip
> texinfo gcc \
> >> build-essential chrpath socat cpio python3 python3-pip
> python3-pexpect \
> >> xz-utils debianutils iputils-ping python3-git python3-jinja2 \
> >> - python3-subunit zstd liblz4-tool file locales libacl1
> >> - \n\ $ sudo locale-gen en_US.UTF-8"
> >> + python3-subunit zstd liblz4-tool file locales libacl1"
> >> FEDORA_HOST_PACKAGES_ESSENTIAL : "gawk make wget tar bzip2 gzip
> python3 unzip perl patch \
> >> diffutils diffstat git cpp gcc gcc-c++ glibc-devel texinfo
> chrpath \
> >> ccache perl-Data-Dumper perl-Text-ParseWords perl-Thread-Queue
> perl-bignum socat \
> >> diff --git a/documentation/ref-manual/system-requirements.rst
> b/documentation/ref-manual/system-requirements.rst
> >> index 0fc92550a..b33518c7f 100644
> >> --- a/documentation/ref-manual/system-requirements.rst
> >> +++ b/documentation/ref-manual/system-requirements.rst
> >> @@ -152,6 +152,14 @@ with a supported Ubuntu or Debian Linux
> distribution::
> >>
> >> $ sudo apt install &UBUNTU_HOST_PACKAGES_ESSENTIAL;
> >>
> >> +You also need to ensure you have the locale ``en_US.UTF-8`` enabled::
> >> +
>
> I believe "the ``en_US.UTF-8`` locale" is more proper here.
>

You're Right.

>
> On a side note, what's the actual cost of reconfiguring the locales
> regardless of the presence of en_US.UTF-8?
>

It may take some time depending on how many locales are enabled. The
command is build to generate all enabled locales, it should be technically
possible to generate only one (it's a bash script) but as far I know there
is no such thing in the Debian package from Debian 12.

> My point being we could probably have this command in poky.yaml.in like
> it used to be?
>

> >> + $ locale --all-locales | grep en_US.utf8
> >> +
> >> +If this is not the case, you can reconfigure the ``locales`` package
> to add it::
> >> +
> >> + $ sudo dpkg-reconfigure locales
> >> +
>
> How does this actually generate en_US.utf8 locale if we don't explicitly
> add it somewhere? Are you sure it's not because your system has LANG or
> LC_ALL set to that locale and then calling reconfigure it regenerate it?
>
> This runs an interactive program where you have to select explicitly that
you want to add this locale, there is no magic.
The other solution to do similar thing is modifying `/etc/locale.gen` which
seems not more straightforward for me.
I tried it on both podman (container) and classic environnement and it
works correctly.

Also on a side note we tell people to check if "en_US.UTF-8" locale is
> enabled by grepping for "en_US.utf8", is that expected? Why aren't they
> the same?
>
> Cheers,
> Quentin
>

On Wed, Nov 20, 2024 at 5:43 PM Antonin Godard <antonin.godard@bootlin.com>
wrote:

> Hi Guénaël, Quentin,
>
> On Tue Nov 19, 2024 at 10:28 AM CET, Quentin Schulz via
> lists.yoctoproject.org wrote:
> [...]
> >>> +You also need to ensure you have the locale ``en_US.UTF-8`` enabled::
> >>> +
> >
> > I believe "the ``en_US.UTF-8`` locale" is more proper here.
> >
> > On a side note, what's the actual cost of reconfiguring the locales
> > regardless of the presence of en_US.UTF-8?
> >
> > My point being we could probably have this command in poky.yaml.in like
> > it used to be?
> >
> >>> + $ locale --all-locales | grep en_US.utf8
> >>> +
> >>> +If this is not the case, you can reconfigure the ``locales`` package
> to add it::
> >>> +
> >>> + $ sudo dpkg-reconfigure locales
> >>> +
> >
> > How does this actually generate en_US.utf8 locale if we don't explicitly
> > add it somewhere? Are you sure it's not because your system has LANG or
> > LC_ALL set to that locale and then calling reconfigure it regenerate it?
> >
> > Also on a side note we tell people to check if "en_US.UTF-8" locale is
> > enabled by grepping for "en_US.utf8", is that expected? Why aren't they
> > the same?
>
> Yes, "locale --all-locales" does return "en_US.utf8" while we install the
> "en_US.UTF-8" locale (different string, not sure why).
>
> I seem to be able to build with both Debian/Ubuntu with this command:
>
> LANG="en_US.UTF-8" locale-gen
>
> Maybe this is a more straightforward approach, closer to what we had
> before.
> What do you think? Guénaël would you be able to update your patch with this
> command if this works for you too?
>
>
How do you achieve this ? I tried this with podman container (should be the
same with docker) and it clearly doesn't work at all:

podman run -it --rm debian:12 /bin/bash
apt update && apt install locales -y
LANG="en_US.UTF-8" locale-gen

This generates zero locale whereas "dpkg-reconfigure locales" work as
expected.

>
> Antonin
>
> --
> Antonin Godard, Bootlin
> Embedded Linux and Kernel engineering
> https://bootlin.com

Guénaël

[-- Attachment #2: Type: text/html, Size: 9552 bytes --]