Ticket #312 (closed defect: fixed)
subversion error with no-ascii filenames due to locale environment of svn process
|Reported by:||eckert||Owned by:||dustin|
On Linux, if a subversion repository contains non-ascii filenames the VC update step hangs.
The primary cause is setting of LC_ALL in svn subprocess environment to C locale which leads svnversion process to exit with error.
The secondary cause (for the hang) is because in slave/commands.py class SourceBase?.setup the environment variable LC_ALL is set to C locale for the svnversion process. This settings leads to subversion assumung hat filesystem encoding is ascii (svn looks in LC_CTYPE and LC_ALL) and tries to decode the non-ascii filenames into the wrong charset, which cannot be done. svnversion exits with exitcode 1 and an error message on stderr Because there is not output on stdout the line
if r[-1] == 'M'
in slave/commands.py leads to an IndexError? which isn't caught by the gui, it only shows up in the twistd.log. The build master must be restarted to allow subsequent build to run.
Solution proposal for primary cause: setting LC_ALL in order to parse subprocess output is overkill, it also affects file system encoding and other behaviour. Use only LC_MESSAGES for that, this only affects the output. A patch is attached to this ticket.