[PATCH rtems-source-builder v1] source-builder: Handle utf8 in path
Chris Johns
chrisj at rtems.org
Sun May 15 00:30:43 UTC 2022
OK
Thanks
Chris
On 14/5/2022 3:15 am, Kinsey Moore wrote:
> It's possible for an environment to have unicode characters in its
> paths. This was recently exposed by the latest newlib update and RSB
> fails under Python 2.7 in this situation. This resolves the issue by
> ensuring that the paths are encoded and decoded as necessary.
>
> Related issue that caused the change in newlib:
> https://github.com/golang/go/issues/27836
> ---
> source-builder/sb/path.py | 14 +++++++-------
> 1 file changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/source-builder/sb/path.py b/source-builder/sb/path.py
> index b27cf14..d36e12a 100644
> --- a/source-builder/sb/path.py
> +++ b/source-builder/sb/path.py
> @@ -58,7 +58,7 @@ def host(path):
>
> def shell(path):
> if isinstance(path, bytes):
> - path = path.decode('ascii')
> + path = path.decode('utf8')
> if path is not None:
> if windows or windows_posix:
> path = path.encode('ascii', 'ignore').decode('ascii')
> @@ -189,11 +189,11 @@ def removeall(path):
> # get to the max path length on Windows.
> #
> def _isdir(path):
> - hpath = host(path)
> + hpath = host(path).encode('utf8')
> return os.path.isdir(hpath) and not os.path.islink(hpath)
>
> def _remove_node(path):
> - hpath = host(path)
> + hpath = host(path).encode('utf8')
> if not os.path.islink(hpath) and not os.access(hpath, os.W_OK):
> os.chmod(hpath, stat.S_IWUSR)
> if _isdir(path):
> @@ -216,7 +216,7 @@ def removeall(path):
> _remove_node(dir)
>
> path = shell(path)
> - hpath = host(path)
> + hpath = host(path).encode('utf8')
>
> if os.path.exists(hpath):
> _remove(path)
> @@ -317,11 +317,11 @@ def get_size(path, depth = -1):
> # get to the max path length on Windows.
> #
> def _isdir(path):
> - hpath = host(path)
> + hpath = host(path).encode('utf8')
> return os.path.isdir(hpath) and not os.path.islink(hpath)
>
> def _node_size(path):
> - hpath = host(path)
> + hpath = host(path).encode('utf8')
> size = 0
> if not os.path.islink(hpath):
> size = os.path.getsize(hpath)
> @@ -345,7 +345,7 @@ def get_size(path, depth = -1):
> return size
>
> path = shell(path)
> - hpath = host(path)
> + hpath = host(path).encode('utf8')
> size = 0
>
> if os.path.exists(hpath):
More information about the devel
mailing list