@@ -27,11 +27,37 @@ set -o xtrace
2727# Make sure custom grep options don't get in the way
2828unset GREP_OPTIONS
2929
30- # Sanitize language settings to avoid commands bailing out
31- # with "unsupported locale setting" errors.
30+ # NOTE(sdague): why do we explicitly set locale when running stack.sh?
31+ #
32+ # Devstack is written in bash, and many functions used throughout
33+ # devstack process text comming off a command (like the ip command)
34+ # and do transforms using grep, sed, cut, awk on the strings that are
35+ # returned. Many of these programs are interationalized, which is
36+ # great for end users, but means that the strings that devstack
37+ # functions depend upon might not be there in other locales. We thus
38+ # need to pin the world to an english basis during the runs.
39+ #
40+ # Previously we used the C locale for this, every system has it, and
41+ # it gives us a stable sort order. It does however mean that we
42+ # effectively drop unicode support.... boo! :(
43+ #
44+ # With python3 being more unicode aware by default, that's not the
45+ # right option. While there is a C.utf8 locale, some distros are
46+ # shipping it as C.UTF8 for extra confusingness. And it's support
47+ # isn't super clear across distros. This is made more challenging when
48+ # trying to support both out of the box distros, and the gate which
49+ # uses diskimage builder to build disk images in a different way than
50+ # the distros do.
51+ #
52+ # So... en_US.utf8 it is. That's existed for a very long time. It is a
53+ # compromise position, but it is the least worse idea at the time of
54+ # this comment.
55+ #
56+ # We also have to unset other variables that might impact LC_ALL
57+ # taking effect.
3258unset LANG
3359unset LANGUAGE
34- LC_ALL=C
60+ LC_ALL=en_US.utf8
3561export LC_ALL
3662
3763# Make sure umask is sane
0 commit comments