Skip to content

Commit 82381f3

Browse files
committed
layer: Decouple locale from device and fix setup
Locale should not been coupled to device because device agnostic builds need a base locale configuration. Move locale to new layer, add to essential so it's included automatically in the foundation of every build by default, and add it to the distro base layers so the dependency is clear and tag the appropriate (renamed) variables as required in the layer metadata. A new layer means a new namespace for variables: IGconf_device_locale1 -> IGconf_locale_default IGconf_device_keyboard_keymap -> IGconf_locale_keyboard_keymap IGconf_device_keyboard_layout -> IGconf_locale_keyboard_layout IGconf_device_timezone -> IGconf_locale_timezone Update distro base layers to reference the new variables when seeding the debconf database. Also: Fix debconf timezone seeding Fix debconf locales_to_be_generated seeding Set a safe (prebuilt) locale to avoid warnings until locales are generated on-device. Bump applicable layer versions
1 parent 7a2035b commit 82381f3

File tree

11 files changed

+141
-116
lines changed

11 files changed

+141
-116
lines changed

layer/base/core-essential.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# X-Env-Layer-Desc: Serves as the mandatory foundation for all rpi-image-gen
55
# builds, and is automatically included in every configuration to provide
66
# essential build infrastructure.
7-
# X-Env-Layer-Version: 1.0.0
8-
# X-Env-Layer-Requires: artefact-base,sys-build-base,target-config
7+
# X-Env-Layer-Version: 1.1.0
8+
# X-Env-Layer-Requires: artefact-base,sys-build-base,target-config,locale-base
99
# METAEND
1010
---

layer/base/device-base.yaml

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# X-Env-Layer-Name: device-base
33
# X-Env-Layer-Category: device
44
# X-Env-Layer-Desc: Device defaults.
5-
# X-Env-Layer-Version: 1.0.0
5+
# X-Env-Layer-Version: 1.1.0
66
# X-Env-Layer-Requires:
77
# X-Env-Layer-RequiresProvider: device
88
#
@@ -47,31 +47,6 @@
4747
# X-Env-Var-user1pass-Valid: regex:^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
4848
# X-Env-Var-user1pass-Set: n
4949
#
50-
# X-Env-Var-locale1: en_GB.UTF-8
51-
# X-Env-Var-locale1-Desc: The default system locale.
52-
# X-Env-Var-locale1-Required: n
53-
# X-Env-Var-locale1-Valid: string
54-
# X-Env-Var-locale1-Set: y
55-
#
56-
# X-Env-Var-keyboard_keymap: gb
57-
# X-Env-Var-keyboard_keymap-Desc: The default system keyboard map.
58-
# X-Env-Var-keyboard_keymap-Required: n
59-
# X-Env-Var-keyboard_keymap-Valid: string
60-
# X-Env-Var-keyboard_keymap-Set: y
61-
#
62-
# X-Env-Var-keyboard_layout: English (UK)
63-
# X-Env-Var-keyboard_layout-Desc: The default system keyboard layout. See
64-
# debconf-show keyboard-configuration keyboard-configuration/xkb-keymap
65-
# X-Env-Var-keyboard_layout-Required: n
66-
# X-Env-Var-keyboard_layout-Valid: string
67-
# X-Env-Var-keyboard_layout-Set: y
68-
#
69-
# X-Env-Var-timezone: Europe/London
70-
# X-Env-Var-timezone-Desc: The default system timezone defined by IANA.
71-
# X-Env-Var-timezone-Required: n
72-
# X-Env-Var-timezone-Valid: string
73-
# X-Env-Var-timezone-Set: y
74-
#
7550
# X-Env-Var-storage_type: sd
7651
# X-Env-Var-storage_type-Desc: Device storage media type.
7752
# X-Env-Var-storage_type-Required: n

layer/base/locale-base.yaml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# METABEGIN
2+
# X-Env-Layer-Name: locale-base
3+
# X-Env-Layer-Category: foundation
4+
# X-Env-Layer-Desc: Default locale settings
5+
# X-Env-Layer-Version: 1.0.0
6+
#
7+
# X-Env-VarPrefix: locale
8+
#
9+
# X-Env-Var-default: en_GB.UTF-8
10+
# X-Env-Var-default-Desc: The default system locale.
11+
# X-Env-Var-default-Required: n
12+
# X-Env-Var-default-Valid: string
13+
# X-Env-Var-default-Set: y
14+
#
15+
# X-Env-Var-keyboard_keymap: gb
16+
# X-Env-Var-keyboard_keymap-Desc: The default system keyboard map.
17+
# X-Env-Var-keyboard_keymap-Required: n
18+
# X-Env-Var-keyboard_keymap-Valid: string
19+
# X-Env-Var-keyboard_keymap-Set: y
20+
#
21+
# X-Env-Var-keyboard_layout: English (UK)
22+
# X-Env-Var-keyboard_layout-Desc: The default system keyboard layout. See
23+
# debconf-show keyboard-configuration keyboard-configuration/xkb-keymap
24+
# X-Env-Var-keyboard_layout-Required: n
25+
# X-Env-Var-keyboard_layout-Valid: string
26+
# X-Env-Var-keyboard_layout-Set: y
27+
#
28+
# X-Env-Var-timezone: Europe/London
29+
# X-Env-Var-timezone-Desc: The default system timezone defined by IANA.
30+
# X-Env-Var-timezone-Required: n
31+
# X-Env-Var-timezone-Valid: string
32+
# X-Env-Var-timezone-Set: y
33+
# METAEND
34+
---

layer/debian/bookworm/arm64/base-apt-multi.yaml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
# X-Env-Layer-Name: debian-bookworm-arm64-multi
33
# X-Env-Layer-Category: distribution
44
# X-Env-Layer-Desc: Debian Bookworm apt base for arm64 and armhf.
5-
# X-Env-Layer-Version: 1.0.0
5+
# X-Env-Layer-Version: 1.1.0
6+
# X-Env-Layer-Requires: locale-base
67
#
7-
# X-Env-VarRequires: IGconf_device_timezone,
8-
# IGconf_device_locale1,
9-
# IGconf_device_keyboard_layout,
10-
# IGconf_device_keyboard_keymap
8+
# X-Env-VarRequires: IGconf_locale_timezone,
9+
# IGconf_locale_default,
10+
# IGconf_locale_keyboard_layout,
11+
# IGconf_locale_keyboard_keymap
1112
# METAEND
1213
---
1314
mmdebstrap:
@@ -21,18 +22,19 @@ mmdebstrap:
2122
- deb http://deb.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
2223
- deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
2324
essential-hooks:
24-
- echo tzdata tzdata/Areas select "${IGconf_device_timezone%%/*}"
25+
- echo tzdata tzdata/Areas select "${IGconf_locale_timezone%%/*}"
2526
| chroot $1 debconf-set-selections
26-
- echo tzdata tzdata/Zones/$IGconf_device_timezone_area select "${IGconf_device_timezone#*/}"
27+
- echo tzdata tzdata/Zones/"${IGconf_locale_timezone%%/*}" select "${IGconf_locale_timezone#*/}"
2728
| chroot $1 debconf-set-selections
28-
- echo locales locales/locales_to_be_generated multiselect "$IGconf_device_locale1"
29+
- echo locales locales/locales_to_be_generated multiselect "$IGconf_locale_default" UTF-8
2930
| chroot $1 debconf-set-selections
30-
- echo locales locales/default_environment_locale select "$IGconf_device_locale1"
31+
- echo locales locales/default_environment_locale select "$IGconf_locale_default"
3132
| chroot $1 debconf-set-selections
32-
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_device_keyboard_layout"
33+
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_locale_keyboard_layout"
3334
| chroot $1 debconf-set-selections
34-
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_device_keyboard_keymap"
35+
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_locale_keyboard_keymap"
3536
| chroot $1 debconf-set-selections
37+
- printf "LANG=C.UTF-8\nLANGUAGE=C\n" > $1/etc/default/locale
3638
aptopts:
3739
- APT::Install-Suggests "false"
3840
- APT::Install-Recommends "false"

layer/debian/bookworm/arm64/base-apt.yaml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
# X-Env-Layer-Name: debian-bookworm-arm64
33
# X-Env-Layer-Category: distribution
44
# X-Env-Layer-Desc: Debian Bookworm apt base for arm64
5-
# X-Env-Layer-Version: 1.0.0
5+
# X-Env-Layer-Version: 1.1.0
6+
# X-Env-Layer-Requires: locale-base
67
#
7-
# X-Env-VarRequires: IGconf_device_timezone,
8-
# IGconf_device_locale1,
9-
# IGconf_device_keyboard_layout,
10-
# IGconf_device_keyboard_keymap
8+
# X-Env-VarRequires: IGconf_locale_timezone,
9+
# IGconf_locale_default,
10+
# IGconf_locale_keyboard_layout,
11+
# IGconf_locale_keyboard_keymap
1112
# METAEND
1213
---
1314
mmdebstrap:
@@ -21,18 +22,19 @@ mmdebstrap:
2122
- deb http://deb.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
2223
- deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware
2324
essential-hooks:
24-
- echo tzdata tzdata/Areas select "${IGconf_device_timezone%%/*}"
25+
- echo tzdata tzdata/Areas select "${IGconf_locale_timezone%%/*}"
2526
| chroot $1 debconf-set-selections
26-
- echo tzdata tzdata/Zones/$IGconf_device_timezone_area select "${IGconf_device_timezone#*/}"
27+
- echo tzdata tzdata/Zones/"${IGconf_locale_timezone%%/*}" select "${IGconf_locale_timezone#*/}"
2728
| chroot $1 debconf-set-selections
28-
- echo locales locales/locales_to_be_generated multiselect "$IGconf_device_locale1"
29+
- echo locales locales/locales_to_be_generated multiselect "$IGconf_locale_default" UTF-8
2930
| chroot $1 debconf-set-selections
30-
- echo locales locales/default_environment_locale select "$IGconf_device_locale1"
31+
- echo locales locales/default_environment_locale select "$IGconf_locale_default"
3132
| chroot $1 debconf-set-selections
32-
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_device_keyboard_layout"
33+
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_locale_keyboard_layout"
3334
| chroot $1 debconf-set-selections
34-
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_device_keyboard_keymap"
35+
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_locale_keyboard_keymap"
3536
| chroot $1 debconf-set-selections
37+
- printf "LANG=C.UTF-8\nLANGUAGE=C\n" > $1/etc/default/locale
3638
aptopts:
3739
- APT::Install-Suggests "false"
3840
- APT::Install-Recommends "false"

layer/debian/bookworm/arm64/base-slim.yaml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
# X-Env-Layer-Category: distribution
44
# X-Env-Layer-Desc: Debian Bookworm custom layer for arm64 providing
55
# a usable and practical base.
6-
# X-Env-Layer-Version: 1.0.0
6+
# X-Env-Layer-Version: 1.1.0
7+
# X-Env-Layer-Requires: locale-base
78
#
8-
# X-Env-VarRequires: IGconf_device_timezone,
9-
# IGconf_device_locale1,
10-
# IGconf_device_keyboard_layout,
11-
# IGconf_device_keyboard_keymap
9+
# X-Env-VarRequires: IGconf_locale_timezone,
10+
# IGconf_locale_default,
11+
# IGconf_locale_keyboard_layout,
12+
# IGconf_locale_keyboard_keymap
1213
# METAEND
1314
---
1415
mmdebstrap:
@@ -41,18 +42,19 @@ mmdebstrap:
4142
- mkdir -p $1/bin
4243
- ln -s bash $1/bin/sh
4344
essential-hooks:
44-
- echo tzdata tzdata/Areas select "${IGconf_device_timezone%%/*}"
45+
- echo tzdata tzdata/Areas select "${IGconf_locale_timezone%%/*}"
4546
| chroot $1 debconf-set-selections
46-
- echo tzdata tzdata/Zones/$IGconf_device_timezone_area select "${IGconf_device_timezone#*/}"
47+
- echo tzdata tzdata/Zones/"${IGconf_locale_timezone%%/*}" select "${IGconf_locale_timezone#*/}"
4748
| chroot $1 debconf-set-selections
48-
- echo locales locales/locales_to_be_generated multiselect "$IGconf_device_locale1"
49+
- echo locales locales/locales_to_be_generated multiselect "$IGconf_locale_default" UTF-8
4950
| chroot $1 debconf-set-selections
50-
- echo locales locales/default_environment_locale select "$IGconf_device_locale1"
51+
- echo locales locales/default_environment_locale select "$IGconf_locale_default"
5152
| chroot $1 debconf-set-selections
52-
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_device_keyboard_layout"
53+
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_locale_keyboard_layout"
5354
| chroot $1 debconf-set-selections
54-
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_device_keyboard_keymap"
55+
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_locale_keyboard_keymap"
5556
| chroot $1 debconf-set-selections
57+
- printf "LANG=C.UTF-8\nLANGUAGE=C\n" > $1/etc/default/locale
5658
aptopts:
5759
- APT::Install-Suggests "false"
5860
- APT::Install-Recommends "false"

layer/debian/trixie/arm64/base-apt-multi.yaml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
# X-Env-Layer-Name: debian-trixie-arm64-multi
33
# X-Env-Layer-Category: distribution
44
# X-Env-Layer-Desc: Debian Trixie apt base for arm64 and armhf.
5-
# X-Env-Layer-Version: 1.0.0
5+
# X-Env-Layer-Version: 1.1.0
6+
# X-Env-Layer-Requires: locale-base
67
#
7-
# X-Env-VarRequires: IGconf_device_timezone,
8-
# IGconf_device_locale1,
9-
# IGconf_device_keyboard_layout,
10-
# IGconf_device_keyboard_keymap
8+
# X-Env-VarRequires: IGconf_locale_timezone,
9+
# IGconf_locale_default,
10+
# IGconf_locale_keyboard_layout,
11+
# IGconf_locale_keyboard_keymap
1112
# METAEND
1213
---
1314
mmdebstrap:
@@ -23,18 +24,19 @@ mmdebstrap:
2324
packages:
2425
- linux-sysctl-defaults
2526
essential-hooks:
26-
- echo tzdata tzdata/Areas select "${IGconf_device_timezone%%/*}"
27+
- echo tzdata tzdata/Areas select "${IGconf_locale_timezone%%/*}"
2728
| chroot $1 debconf-set-selections
28-
- echo tzdata tzdata/Zones/$IGconf_device_timezone_area select "${IGconf_device_timezone#*/}"
29+
- echo tzdata tzdata/Zones/"${IGconf_locale_timezone%%/*}" select "${IGconf_locale_timezone#*/}"
2930
| chroot $1 debconf-set-selections
30-
- echo locales locales/locales_to_be_generated multiselect "$IGconf_device_locale1"
31+
- echo locales locales/locales_to_be_generated multiselect "$IGconf_locale_default" UTF-8
3132
| chroot $1 debconf-set-selections
32-
- echo locales locales/default_environment_locale select "$IGconf_device_locale1"
33+
- echo locales locales/default_environment_locale select "$IGconf_locale_default"
3334
| chroot $1 debconf-set-selections
34-
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_device_keyboard_layout"
35+
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_locale_keyboard_layout"
3536
| chroot $1 debconf-set-selections
36-
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_device_keyboard_keymap"
37+
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_locale_keyboard_keymap"
3738
| chroot $1 debconf-set-selections
39+
- printf "LANG=C.UTF-8\nLANGUAGE=C\n" > $1/etc/locale.conf
3840
aptopts:
3941
- APT::Install-Suggests "false"
4042
- APT::Install-Recommends "false"

layer/debian/trixie/arm64/base-apt.yaml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
# X-Env-Layer-Name: debian-trixie-arm64
33
# X-Env-Layer-Category: distribution
44
# X-Env-Layer-Desc: Debian Trixie apt base for arm64.
5-
# X-Env-Layer-Version: 1.0.0
5+
# X-Env-Layer-Version: 1.1.0
6+
# X-Env-Layer-Requires: locale-base
67
#
7-
# X-Env-VarRequires: IGconf_device_timezone,
8-
# IGconf_device_locale1,
9-
# IGconf_device_keyboard_layout,
10-
# IGconf_device_keyboard_keymap
8+
# X-Env-VarRequires: IGconf_locale_timezone,
9+
# IGconf_locale_default,
10+
# IGconf_locale_keyboard_layout,
11+
# IGconf_locale_keyboard_keymap
1112
# METAEND
1213
---
1314
mmdebstrap:
@@ -23,18 +24,19 @@ mmdebstrap:
2324
packages:
2425
- linux-sysctl-defaults
2526
essential-hooks:
26-
- echo tzdata tzdata/Areas select "${IGconf_device_timezone%%/*}"
27+
- echo tzdata tzdata/Areas select "${IGconf_locale_timezone%%/*}"
2728
| chroot $1 debconf-set-selections
28-
- echo tzdata tzdata/Zones/$IGconf_device_timezone_area select "${IGconf_device_timezone#*/}"
29+
- echo tzdata tzdata/Zones/"${IGconf_locale_timezone%%/*}" select "${IGconf_locale_timezone#*/}"
2930
| chroot $1 debconf-set-selections
30-
- echo locales locales/locales_to_be_generated multiselect "$IGconf_device_locale1"
31+
- echo locales locales/locales_to_be_generated multiselect "$IGconf_locale_default" UTF-8
3132
| chroot $1 debconf-set-selections
32-
- echo locales locales/default_environment_locale select "$IGconf_device_locale1"
33+
- echo locales locales/default_environment_locale select "$IGconf_locale_default"
3334
| chroot $1 debconf-set-selections
34-
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_device_keyboard_layout"
35+
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_locale_keyboard_layout"
3536
| chroot $1 debconf-set-selections
36-
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_device_keyboard_keymap"
37+
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_locale_keyboard_keymap"
3738
| chroot $1 debconf-set-selections
39+
- printf "LANG=C.UTF-8\nLANGUAGE=C\n" > $1/etc/locale.conf
3840
aptopts:
3941
- APT::Install-Suggests "false"
4042
- APT::Install-Recommends "false"

layer/debian/trixie/arm64/base-slim.yaml

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
# X-Env-Layer-Category: distribution
44
# X-Env-Layer-Desc: Debian Trixie custom layer for arm64 providing
55
# a usable and practical base.
6-
# X-Env-Layer-Version: 1.0.0
6+
# X-Env-Layer-Version: 1.1.0
7+
# X-Env-Layer-Requires: locale-base
78
#
8-
# X-Env-VarRequires: IGconf_device_timezone,
9-
# IGconf_device_locale1,
10-
# IGconf_device_keyboard_layout,
11-
# IGconf_device_keyboard_keymap
9+
# X-Env-VarRequires: IGconf_locale_timezone,
10+
# IGconf_locale_default,
11+
# IGconf_locale_keyboard_layout,
12+
# IGconf_locale_keyboard_keymap
1213
# METAEND
1314
---
1415
mmdebstrap:
@@ -41,18 +42,19 @@ mmdebstrap:
4142
- mkdir -p $1/usr/bin
4243
- ln -s bash $1/usr/bin/sh
4344
essential-hooks:
44-
- echo tzdata tzdata/Areas select "${IGconf_device_timezone%%/*}"
45+
- echo tzdata tzdata/Areas select "${IGconf_locale_timezone%%/*}"
4546
| chroot $1 debconf-set-selections
46-
- echo tzdata tzdata/Zones/$IGconf_device_timezone_area select "${IGconf_device_timezone#*/}"
47+
- echo tzdata tzdata/Zones/"${IGconf_locale_timezone%%/*}" select "${IGconf_locale_timezone#*/}"
4748
| chroot $1 debconf-set-selections
48-
- echo locales locales/locales_to_be_generated multiselect "$IGconf_device_locale1"
49+
- echo locales locales/locales_to_be_generated multiselect "$IGconf_locale_default" UTF-8
4950
| chroot $1 debconf-set-selections
50-
- echo locales locales/default_environment_locale select "$IGconf_device_locale1"
51+
- echo locales locales/default_environment_locale select "$IGconf_locale_default"
5152
| chroot $1 debconf-set-selections
52-
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_device_keyboard_layout"
53+
- echo keyboard-configuration keyboard-configuration/variant select "$IGconf_locale_keyboard_layout"
5354
| chroot $1 debconf-set-selections
54-
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_device_keyboard_keymap"
55+
- echo keyboard-configuration keyboard-configuration/xkb-keymap select "$IGconf_locale_keyboard_keymap"
5556
| chroot $1 debconf-set-selections
57+
- printf "LANG=C.UTF-8\nLANGUAGE=C\n" > $1/etc/locale.conf
5658
aptopts:
5759
- APT::Install-Suggests "false"
5860
- APT::Install-Recommends "false"

0 commit comments

Comments
 (0)