Merge issue #15833: don't raise an exception if importlib can't write

byte-compiled files.

This fixes a regression introduced by 3.3.

Patch by Charles-François Natali.
This commit is contained in:
Trent Nelson 2012-10-16 08:03:21 -04:00
commit 744faddae8
3 changed files with 1870 additions and 1859 deletions

View File

@ -1066,17 +1066,17 @@ class SourceFileLoader(FileLoader, SourceLoader):
except FileExistsError:
# Probably another Python process already created the dir.
continue
except PermissionError:
# If can't get proper access, then just forget about writing
# the data.
except OSError as exc:
# Could be a permission error, read-only filesystem: just forget
# about writing the data.
_verbose_message('could not create {!r}: {!r}', parent, exc)
return
try:
_write_atomic(path, data, _mode)
_verbose_message('created {!r}', path)
except (PermissionError, FileExistsError):
# Don't worry if you can't write bytecode or someone is writing
# it at the same time.
pass
except OSError as exc:
# Same as above: just don't write the bytecode.
_verbose_message('could not create {!r}: {!r}', path, exc)
class SourcelessFileLoader(FileLoader, _LoaderBasics):

View File

@ -158,6 +158,10 @@ Tests
Build
-----
- Issue #15833: Fix a regression in 3.3 that resulted in exceptions being
raised if importlib failed to write byte-compiled files. This affected
attempts to build Python out-of-tree from a read-only source directory.
- Issue #15923: Fix a mistake in ``asdl_c.py`` that resulted in a TypeError
after 2801bf875a24 (see #15801).

File diff suppressed because it is too large Load Diff