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

Quentin Schulz
2024-11-25T10:20:02Z

Hi Guénaël,

On 11/22/24 10:25 AM, Guénaël MULLER wrote:
> 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.
>

I assume this works correctly if one uses an interactive container. E.g.
I'm expecting this won't work with these instructions in a
Containerfile/Dockerfile for example.

podman run --userns=keep-id --user root debian:bookworm sh -c 'apt-get
update && apt-get install -y locales; locale --all-locales | grep
en_US.utf8; dpkg-reconfigure locales; locale --all-locales | grep
en_US.utf8;'

it'll fail when running dpkg-reconfigure. If you add --frontend
noninteractive, then it just does nothing.

I'm not sure if we really need noninteractive instructions, but I would
at least mention that we know it doesn't work for noninteractive
terminals in a note below the instructions? I understand we may not want
to instruct users to modify their locales with a simple sed command
which is apparently the appropriate way?

Cheers,
Quentin