Browse code

Merge "Support unicode via en_US.utf8"

Jenkins authored on 2017/06/15 03:35:31
Showing 1 changed files
... ...
@@ -27,11 +27,37 @@ set -o xtrace
27 27
 # Make sure custom grep options don't get in the way
28 28
 unset GREP_OPTIONS
29 29
 
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.
32 58
 unset LANG
33 59
 unset LANGUAGE
34
-LC_ALL=C
60
+LC_ALL=en_US.utf8
35 61
 export LC_ALL
36 62
 
37 63
 # Make sure umask is sane