Author: Ronan Lamy <ronan.l...@gmail.com> Branch: py3.3 Changeset: r83019:0113d6e6d5ca Date: 2016-03-13 19:29 +0000 http://bitbucket.org/pypy/pypy/changeset/0113d6e6d5ca/
Log: Merged in py3.3-bootstrap-hack (pull request #415) Initialise the filesystem encoding only after imports have been bootstrapped. Creating it requires importing the 'encodings' module from the stdlib, so the stdlib path needs to have been computed first. diff --git a/pypy/interpreter/app_main.py b/pypy/interpreter/app_main.py --- a/pypy/interpreter/app_main.py +++ b/pypy/interpreter/app_main.py @@ -769,6 +769,7 @@ # import os, which is used a bit everywhere in app_main, but only imported # *after* setup_bootstrap_path setup_bootstrap_path(executable) + sys.pypy_initfsencoding() try: cmdline = parse_command_line(argv) except CommandLineError as e: @@ -861,8 +862,9 @@ sys.pypy_find_executable = pypy_find_executable sys.pypy_find_stdlib = pypy_find_stdlib sys.pypy_resolvedirof = pypy_resolvedirof + sys.pypy_initfsencoding = lambda: None sys.cpython_path = sys.path[:] - + try: sys.exit(int(entry_point(sys.argv[0], sys.argv[1:]))) finally: diff --git a/pypy/module/sys/__init__.py b/pypy/module/sys/__init__.py --- a/pypy/module/sys/__init__.py +++ b/pypy/module/sys/__init__.py @@ -40,6 +40,7 @@ 'pypy_find_stdlib' : 'initpath.pypy_find_stdlib', 'pypy_find_executable' : 'initpath.pypy_find_executable', 'pypy_resolvedirof' : 'initpath.pypy_resolvedirof', + 'pypy_initfsencoding' : 'initpath.pypy_initfsencoding', '_getframe' : 'vm._getframe', '_current_frames' : 'currentframes._current_frames', @@ -97,12 +98,7 @@ def startup(self, space): if space.config.translating: - if not we_are_translated(): - # don't get the filesystemencoding at translation time - assert self.filesystemencoding is None - else: - from pypy.module.sys.interp_encoding import _getfilesystemencoding - self.filesystemencoding = _getfilesystemencoding(space) + assert self.filesystemencoding is None if not space.config.translating or we_are_translated(): from pypy.module.sys import version diff --git a/pypy/module/sys/initpath.py b/pypy/module/sys/initpath.py --- a/pypy/module/sys/initpath.py +++ b/pypy/module/sys/initpath.py @@ -12,6 +12,7 @@ from pypy.interpreter.gateway import unwrap_spec from pypy.module.sys.state import get as get_state +from pypy.module.sys.interp_encoding import _getfilesystemencoding PLATFORM = sys.platform _MACOSX = sys.platform == 'darwin' @@ -166,7 +167,9 @@ space.setitem(space.sys.w_dict, space.wrap('base_exec_prefix'), w_prefix) return space.newlist([_w_fsdecode(space, p) for p in path]) +def pypy_initfsencoding(space): + space.sys.filesystemencoding = _getfilesystemencoding(space) + def _w_fsdecode(space, b): return space.fsdecode(space.wrapbytes(b)) - _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit