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

Reply via email to