From 332ef131dc0d8c71dc76bf9d0726390d0ec3abbd Mon Sep 17 00:00:00 2001 From: Luming Wang Date: Sat, 20 May 2023 17:29:59 +0800 Subject: [PATCH] scons: fix build failed caused by Non-ASCII directory path This patch addresses the issue of gem5 failing to build when the build directory path contains non-ASCII characters. The previous patches[1] that attempted to fix this issue became ineffective after the upgrade of Python and pybind11 to new versions. This new patch manually sets the locale in marshal.py based on the `LC_CTYPE` environment variable, providing a comprehensive solution that works with Non-ASCII build directory paths. [1] https://gem5-review.googlesource.com/c/public/gem5/+/58369 Change-Id: I3ad28b6ee52fd347d2fe71f279baab629e88d12c Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/70818 Tested-by: kokoro Reviewed-by: Bobby Bruce Maintainer: Bobby Bruce --- build_tools/marshal.py | 6 ++++++ site_scons/gem5_scons/defaults.py | 1 + 2 files changed, 7 insertions(+) diff --git a/build_tools/marshal.py b/build_tools/marshal.py index 18afe2ca52..4a1522f0b8 100644 --- a/build_tools/marshal.py +++ b/build_tools/marshal.py @@ -48,6 +48,7 @@ interpretters, and so the exact same interpretter should be used both to run this script, and to read in and execute the marshalled code later. """ +import locale import marshal import sys import zlib @@ -65,6 +66,11 @@ if len(sys.argv) < 4: print(f"Usage: {sys.argv[0]} CPP PY MODPATH ABSPATH", file=sys.stderr) sys.exit(1) +# Set the Python's locale settings manually based on the `LC_CTYPE` +# environment variable +if "LC_CTYPE" in os.environ: + locale.setlocale(locale.LC_CTYPE, os.environ["LC_CTYPE"]) + _, cpp, python, modpath, abspath = sys.argv with open(python, "r") as f: diff --git a/site_scons/gem5_scons/defaults.py b/site_scons/gem5_scons/defaults.py index a07b7ffa4b..996cfd495f 100644 --- a/site_scons/gem5_scons/defaults.py +++ b/site_scons/gem5_scons/defaults.py @@ -66,6 +66,7 @@ def EnvDefaults(env): "GEM5PY_LINKFLAGS_EXTRA", "LINKFLAGS_EXTRA", "LANG", + "LC_CTYPE", ] )