To reproduce: install in any language other than English (I tested with French but I think it affects all cases where translation kicks in) and choose to encrypt the install. Once the encryption passphrase dialog pops up, start typing. Cue crash. Traceback:
Traceback (most recent call first):
File "/usr/lib64/python2.7/site-packages/pyanaconda/ui/gui/spokes/lib/passphrase.py", line 171, in _checkStrength
return ("dialog-error", _(ERROR_WEAK) % self._pwq_error)
File "/usr/lib64/python2.7/site-packages/pyanaconda/ui/helpers.py", line 250, in update_check_status
new_check_status = self._run_check(self)
File "/usr/lib64/python2.7/site-packages/pyanaconda/ui/gui/helpers.py", line 42, in _update_check_status
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 42: ordinal not in range(128)
This is related to the infamous https://bugzilla.redhat.com/show_bug.cgi?id=1169019 and https://bugzilla.redhat.com/show_bug.cgi?id=1209563 (fun with locales and encodings in the live environment).
Proposing as a Final blocker: "The installer must correctly display all sufficiently complete translations available for use." , https://fedoraproject.org/wiki/Fedora_22_Final_Release_Criteria#Installer_translations (alternatively, any of the 'complete an install' criteria in the case that the install is live and in something other than English).
We've tested that this fixes it:
[adamw@adam anaconda (f22-branch %)]$ git diff
diff --git a/pyanaconda/ui/gui/spokes/lib/passphrase.py b/pyanaconda/ui/gui/spokes/lib/passphrase.py
index c104194..2f49fcd 100644
@@ -168,7 +168,7 @@ class PassphraseDialog(GUIObject, GUIInputCheckHandler):
def _checkStrength(self, inputcheck):
- return ("dialog-error", _(ERROR_WEAK) % self._pwq_error)
+ return ("dialog-error", _(ERROR_WEAK).encode('utf-8') % self._pwq_error)
there are likely other cases, though. I would think that any time we use a %s substitution into a translated string and the translation has non-ASCII characters in it would fail, but that doesn't actually seem to be the case: I tested a few others (like "error = _("%s cannot be encrypted") % mountpoint" in custom.py and "return _(PASSWORD_WEAK_WITH_ERROR) % (self._pwq_error, done_msg)" in password.py) and they didn't cause crashes. IIRC there's some kind of wrinkle involved where Python *does* somehow know to use utf-8 in some cases but not others, but I'm not sure we ever fully traced that out.
See also https://bugs.python.org/issue9196 - apparently the behaviour of %s as it relates to unicode objects is...unclear (and I'm not sure why it fails in this case, given the information from that bug - perhaps something odd about pwquality.PWQError objects?)
Discussed at the 2015-05-04 blocker review meeting. Voted as AcceptedBlocker based on different criteria as cited in Comment #1.
AcceptedBlocker - violates "When using the guided partitioning flow, the installer must be able to: ... Complete an installation using any combination of disk configuration options it allows the user to select" for live, non-English installs
*** This bug has been marked as a duplicate of bug 1217504 ***