Fixing double insertion of encoding in locale.gen/locale.conf (#1421)
* A temporary fix for #1200, in the long run we need something like what was mentioned in the issue comments: https://github.com/archlinux/archinstall/issues/1200#issuecomment-1212754806 * Enabled the use of modifier detection and getting it in right * Mistaken a split * Adding less strict decoding of output log, this in order to handle the more correct locale generation introduced in this PR.
This commit is contained in:
parent
7b4940ef6d
commit
b1ab5ba372
|
|
@ -444,7 +444,7 @@ class SysCommand:
|
||||||
|
|
||||||
def __repr__(self, *args :List[Any], **kwargs :Dict[str, Any]) -> str:
|
def __repr__(self, *args :List[Any], **kwargs :Dict[str, Any]) -> str:
|
||||||
if self.session:
|
if self.session:
|
||||||
return self.session._trace_log.decode('UTF-8')
|
return self.session._trace_log.decode('UTF-8', errors='backslashreplace')
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
def __json__(self) -> Dict[str, Union[str, bool, List[str], Dict[str, Any], Optional[bool], Optional[Dict[str, Any]]]]:
|
def __json__(self) -> Dict[str, Union[str, bool, List[str], Dict[str, Any], Optional[bool], Optional[Dict[str, Any]]]]:
|
||||||
|
|
|
||||||
|
|
@ -443,10 +443,27 @@ class Installer:
|
||||||
if not len(locale):
|
if not len(locale):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
modifier = ''
|
||||||
|
|
||||||
|
# This is a temporary patch to fix #1200
|
||||||
|
if '.' in locale:
|
||||||
|
locale, potential_encoding = locale.split('.', 1)
|
||||||
|
|
||||||
|
# Override encoding if encoding is set to the default parameter
|
||||||
|
# and the "found" encoding differs.
|
||||||
|
if encoding == 'UTF-8' and encoding != potential_encoding:
|
||||||
|
encoding = potential_encoding
|
||||||
|
|
||||||
|
# Make sure we extract the modifier, that way we can put it in if needed.
|
||||||
|
if '@' in locale:
|
||||||
|
locale, modifier = locale.split('@', 1)
|
||||||
|
modifier = f"@{modifier}"
|
||||||
|
# - End patch
|
||||||
|
|
||||||
with open(f'{self.target}/etc/locale.gen', 'a') as fh:
|
with open(f'{self.target}/etc/locale.gen', 'a') as fh:
|
||||||
fh.write(f'{locale}.{encoding} {encoding}\n')
|
fh.write(f'{locale}.{encoding}{modifier} {encoding}\n')
|
||||||
with open(f'{self.target}/etc/locale.conf', 'w') as fh:
|
with open(f'{self.target}/etc/locale.conf', 'w') as fh:
|
||||||
fh.write(f'LANG={locale}.{encoding}\n')
|
fh.write(f'LANG={locale}.{encoding}{modifier}\n')
|
||||||
|
|
||||||
return True if SysCommand(f'/usr/bin/arch-chroot {self.target} locale-gen').exit_code == 0 else False
|
return True if SysCommand(f'/usr/bin/arch-chroot {self.target} locale-gen').exit_code == 0 else False
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue