[v2,1/1] Set default locale in /etc/locale.conf

Message ID 43195c93-c49b-bc5b-16fc-8c21ffb16e08@siemens.com
State Superseded, archived
Headers show
Series [v2,1/1] Set default locale in /etc/locale.conf | expand

Commit Message

Tobias Schaffner Oct. 24, 2022, 3:07 p.m. UTC
Debian bookworm introduced systemd-firstboot [1] which asks the user to
configure some basic settings like hostname, timezone or locale if not already
configured.

It asks the user interactively to select a locale on first boot as we do not
have it set in /etc/locale.conf [2].

/etc/locale.conf has the same format as /etc/default/locale.

Symlink /etc/locale.conf to /etc/default/locale for bookworm images to allow
booting without user interaction.

[1] https://www.freedesktop.org/software/systemd/man/systemd-firstboot.html
[2] https://man7.org/linux/man-pages/man5/locale.conf.5.html

Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
---
  meta/classes/image-locales-extension.bbclass | 8 ++++++++
  1 file changed, 8 insertions(+)

Comments

Henning Schild Oct. 25, 2022, 8:36 a.m. UTC | #1
Am Mon, 24 Oct 2022 17:07:11 +0200
schrieb "Schaffner, Tobias (T CED SES-DE)"
<tobias.schaffner@siemens.com>:

> Debian bookworm introduced systemd-firstboot [1] which asks the user
> to configure some basic settings like hostname, timezone or locale if
> not already configured.
> 
> It asks the user interactively to select a locale on first boot as we
> do not have it set in /etc/locale.conf [2].
> 
> /etc/locale.conf has the same format as /etc/default/locale.
> 
> Symlink /etc/locale.conf to /etc/default/locale for bookworm images
> to allow booting without user interaction.
> 
> [1]
> https://www.freedesktop.org/software/systemd/man/systemd-firstboot.html
> [2] https://man7.org/linux/man-pages/man5/locale.conf.5.html
> 
> Signed-off-by: Tobias Schaffner <tobias.schaffner@siemens.com>
> ---
>   meta/classes/image-locales-extension.bbclass | 8 ++++++++
>   1 file changed, 8 insertions(+)
> 
> diff --git a/meta/classes/image-locales-extension.bbclass
> b/meta/classes/image-locales-extension.bbclass index 2db6d4a..9def316
> 100644 --- a/meta/classes/image-locales-extension.bbclass
> +++ b/meta/classes/image-locales-extension.bbclass
> @@ -82,6 +82,14 @@ __EOF__
>               debconf-set-selections /tmp/locale.debconf
>               rm -f '/tmp/locale.debconf'
>   
> +            SYSTEMD_VERSION=$(dpkg-query \
> +                --showformat='${source:Upstream-Version}' \
> +                --show systemd || echo "0" )
> +
> +            if dpkg --compare-versions "$SYSTEMD_VERSION" "ge"
> "251"; then
> +                ln -s /etc/default/locale /etc/locale.conf
> +            fi
> +

I would want to bet that we can create that as a file (not a
symlink) instead of some other files we used to create. But for now
that looks like a good quick fix for a problem that might come back in
some form.

Henning

>               echo 'reconfigure locales'
>               dpkg-reconfigure -f noninteractive locales
>

Patch

diff --git a/meta/classes/image-locales-extension.bbclass b/meta/classes/image-locales-extension.bbclass
index 2db6d4a..9def316 100644
--- a/meta/classes/image-locales-extension.bbclass
+++ b/meta/classes/image-locales-extension.bbclass
@@ -82,6 +82,14 @@  __EOF__
              debconf-set-selections /tmp/locale.debconf
              rm -f '/tmp/locale.debconf'
  
+            SYSTEMD_VERSION=$(dpkg-query \
+                --showformat='${source:Upstream-Version}' \
+                --show systemd || echo "0" )
+
+            if dpkg --compare-versions "$SYSTEMD_VERSION" "ge" "251"; then
+                ln -s /etc/default/locale /etc/locale.conf
+            fi
+
              echo 'reconfigure locales'
              dpkg-reconfigure -f noninteractive locales