Author: Ronan Lamy <[email protected]>
Branch: py3.3-bootstrap-hack
Changeset: r82949:eb02742ce71d
Date: 2016-03-10 19:01 +0000
http://bitbucket.org/pypy/pypy/changeset/eb02742ce71d/

Log:    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:
@@ -862,7 +863,7 @@
     sys.pypy_find_stdlib = pypy_find_stdlib
     sys.pypy_resolvedirof = pypy_resolvedirof
     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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to