mirror of
https://git.proxmox.com/git/systemd
synced 2025-12-28 19:24:48 +00:00
This applies an (upstreamed) patch to permit systemd-localed to run locale-gen to generate missing locale when requested to switch the system locale. This makes localectl usable on Debian for changing locale without breaking system localization or even prevent certain applications from running at all after switching to a non-generated locale.
64 lines
1.4 KiB
Bash
Executable File
64 lines
1.4 KiB
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
. `dirname $0`/assert.sh
|
|
|
|
if [ -n "$TEST_UPSTREAM" ]; then
|
|
LOCALE_CONF=/etc/locale.conf
|
|
else
|
|
LOCALE_CONF=/etc/default/locale
|
|
fi
|
|
|
|
if [ -f "$LOCALE_CONF" ]; then
|
|
cp "$LOCALE_CONF" "${LOCALE_CONF}.orig"
|
|
fi
|
|
|
|
# ensure tested locale exist
|
|
mv /etc/locale.gen /etc/locale.gen.orig
|
|
echo "en_US.UTF-8 UTF-8" > /etc/locale.gen
|
|
locale-gen en_US.UTF-8
|
|
|
|
if ! [ -e /etc/default/keyboard ]; then
|
|
/bin/echo -e 'XKBMODEL=us\nXKBLAYOUT=pc105' > /etc/default/keyboard
|
|
fi
|
|
|
|
# should activate daemon and work
|
|
assert_in "System Locale:" "`localectl --no-pager`"
|
|
|
|
# change locale
|
|
assert_eq "`localectl --no-pager set-locale LANG=C LC_CTYPE=en_US.UTF-8 2>&1`" ""
|
|
sync
|
|
assert_eq "`cat $LOCALE_CONF`" "LANG=C
|
|
LC_CTYPE=en_US.UTF-8"
|
|
|
|
if [ -z "$TEST_UPSTREAM" ]; then
|
|
! [ -f /etc/locale.conf ]
|
|
fi
|
|
|
|
STATUS=`localectl`
|
|
assert_in "System Locale: LANG=C" "$STATUS"
|
|
assert_in "LC_CTYPE=en_US.UTF-8" "$STATUS"
|
|
|
|
# test if localed auto-runs locale-gen
|
|
|
|
# ensure tested locale does not exist
|
|
assert_rc 1 validlocale de_DE.UTF-8 2>&1
|
|
|
|
# change locale
|
|
assert_eq "`localectl --no-pager set-locale de_DE.UTF-8 2>&1`" ""
|
|
sync
|
|
assert_eq "`cat $LOCALE_CONF`" "LANG=de_DE.UTF-8
|
|
LC_CTYPE=en_US.UTF-8"
|
|
|
|
# ensure tested locale exists and works now
|
|
assert_rc 0 validlocale de_DE.UTF-8 2>&1
|
|
|
|
# reset locale to original
|
|
if [ -f "${LOCALE_CONF}.orig" ]; then
|
|
mv "${LOCALE_CONF}.orig" "$LOCALE_CONF"
|
|
else
|
|
rm "$LOCALE_CONF"
|
|
fi
|
|
mv /etc/locale.gen.orig /etc/locale.gen
|
|
locale-gen
|