From a22f5186761a437d8845397bbbfeaf9a7d590ec2 Mon Sep 17 00:00:00 2001 From: Daan De Meyer Date: Fri, 3 Jun 2022 13:18:10 +0200 Subject: [PATCH] meson: Add nspawn-locale meson option https://github.com/systemd/systemd/pull/23192 caused breakage in Arch Linux's build tooling. Let's give users an opt-out aside from reverting the patch. It's hardly any maintenance work on our side and gives users an easy way to revert the locale change if needed. Of course, by default we still pick C.UTF-8 if the option is not specified. --- meson.build | 3 +++ meson_options.txt | 2 ++ src/nspawn/nspawn.c | 5 +---- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/meson.build b/meson.build index 2daaf3f400..9adb2160a4 100644 --- a/meson.build +++ b/meson.build @@ -937,6 +937,9 @@ conf.set_quoted('NTP_SERVERS', ntp_servers) default_locale = get_option('default-locale') conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale) +nspawn_locale = get_option('nspawn-locale') +conf.set_quoted('SYSTEMD_NSPAWN_LOCALE', nspawn_locale) + localegen_path = get_option('localegen-path') if localegen_path != '' conf.set_quoted('LOCALEGEN_PATH', localegen_path) diff --git a/meson_options.txt b/meson_options.txt index 6c816abd65..3bb25c6f76 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -302,6 +302,8 @@ option('gshadow', type : 'boolean', description : 'support for shadow group') option('default-locale', type : 'string', value : 'C.UTF-8', description : 'default locale used when /etc/locale.conf does not exist') +option('nspawn-locale', type : 'string', value : 'C.UTF-8', + description : 'default locale used by systemd-nspawn when executing commands in a container') option('localegen-path', type : 'string', value : '', description : 'absolute path to the locale-gen binary in case the system is using locale-gen') option('service-watchdog', type : 'string', value : '3min', diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 8e3c6522e4..a5cf4c2c19 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -3488,10 +3488,7 @@ static int inner_child( } if (arg_start_mode != START_BOOT) { - /* If we're running a command in the container, let's default to the C.UTF-8 locale as it's - * part of glibc these days and was backported to most distros a long time before it got - * added to upstream glibc. */ - envp[n_env] = strdup("LANG=C.UTF-8"); + envp[n_env] = strdup("LANG=" SYSTEMD_NSPAWN_LOCALE); if (!envp[n_env]) return log_oom(); n_env++;