diff options
author | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-12 22:53:51 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@haypocalc.com> | 2010-10-12 22:53:51 (GMT) |
commit | d2f6ae63cd546d84310324012740425772e83de7 (patch) | |
tree | a46ffb06d8806f6e6a08d0fd728fda5f2ad9a55b | |
parent | 169b133c82ef1463444c6835e37760addb6c3d68 (diff) | |
download | cpython-d2f6ae63cd546d84310324012740425772e83de7.zip cpython-d2f6ae63cd546d84310324012740425772e83de7.tar.gz cpython-d2f6ae63cd546d84310324012740425772e83de7.tar.bz2 |
Merged revisions 85386-85387,85389 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r85386 | victor.stinner | 2010-10-13 00:23:23 +0200 (mer., 13 oct. 2010) | 3 lines
Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
current directory was deleted.
........
r85387 | victor.stinner | 2010-10-13 00:26:08 +0200 (mer., 13 oct. 2010) | 2 lines
#6612: add the author of the patch (W. Trevor King)
........
r85389 | victor.stinner | 2010-10-13 00:42:37 +0200 (mer., 13 oct. 2010) | 2 lines
NEWS: Move #6612 to Library section
........
-rw-r--r-- | Lib/site.py | 10 | ||||
-rw-r--r-- | Lib/sysconfig.py | 25 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 7 |
4 files changed, 31 insertions, 12 deletions
diff --git a/Lib/site.py b/Lib/site.py index 9865cc9..f22e1d1 100644 --- a/Lib/site.py +++ b/Lib/site.py @@ -76,7 +76,11 @@ USER_BASE = None def makepath(*paths): - dir = os.path.abspath(os.path.join(*paths)) + dir = os.path.join(*paths) + try: + dir = os.path.abspath(dir) + except OSError: + pass return dir, os.path.normcase(dir) @@ -87,8 +91,8 @@ def abs__file__(): continue # don't mess with a PEP 302-supplied __file__ try: m.__file__ = os.path.abspath(m.__file__) - except AttributeError: - continue + except (AttributeError, OSError): + pass def removeduppaths(): diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index b8880f5..5d5d5c0 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -93,21 +93,28 @@ _PREFIX = os.path.normpath(sys.prefix) _EXEC_PREFIX = os.path.normpath(sys.exec_prefix) _CONFIG_VARS = None _USER_BASE = None + +def _safe_realpath(path): + try: + return realpath(path) + except OSError: + return path + if sys.executable: - _PROJECT_BASE = os.path.dirname(realpath(sys.executable)) + _PROJECT_BASE = os.path.dirname(_safe_realpath(sys.executable)) else: # sys.executable can be empty if argv[0] has been changed and Python is # unable to retrieve the real program name - _PROJECT_BASE = realpath(os.getcwd()) + _PROJECT_BASE = _safe_realpath(os.getcwd()) if os.name == "nt" and "pcbuild" in _PROJECT_BASE[-8:].lower(): - _PROJECT_BASE = realpath(os.path.join(_PROJECT_BASE, pardir)) + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir)) # PC/VS7.1 if os.name == "nt" and "\\pc\\v" in _PROJECT_BASE[-10:].lower(): - _PROJECT_BASE = realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) # PC/AMD64 if os.name == "nt" and "\\pcbuild\\amd64" in _PROJECT_BASE[-14:].lower(): - _PROJECT_BASE = realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) + _PROJECT_BASE = _safe_realpath(os.path.join(_PROJECT_BASE, pardir, pardir)) def is_python_build(): for fn in ("Setup.dist", "Setup.local"): @@ -319,7 +326,7 @@ def _init_non_posix(vars): vars['SO'] = '.pyd' vars['EXE'] = '.exe' vars['VERSION'] = _PY_VERSION_SHORT_NO_DOT - vars['BINDIR'] = os.path.dirname(realpath(sys.executable)) + vars['BINDIR'] = os.path.dirname(_safe_realpath(sys.executable)) # # public APIs @@ -439,8 +446,12 @@ def get_config_vars(*args): # from a different directory. if _PYTHON_BUILD and os.name == "posix": base = _PROJECT_BASE + try: + cwd = os.getcwd() + except OSError: + cwd = None if (not os.path.isabs(_CONFIG_VARS['srcdir']) and - base != os.getcwd()): + base != cwd): # srcdir is relative and we are not in the same directory # as the executable. Assume executable is in the build # directory and make srcdir absolute. @@ -418,6 +418,7 @@ Vivek Khera Akira Kitada Mads Kiilerich Taek Joo Kim +W. Trevor King Paul Kippes Steve Kirsch Sebastian Kirsche @@ -48,6 +48,9 @@ Core and Builtins Library ------- +- Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the + current directory was deleted. Patch written by W. Trevor King. + - Issue #10045: Improved performance when writing after seeking past the end of the "file" in cStringIO. @@ -108,7 +111,7 @@ Library to zero. - Issue #9816: random.Random.jumpahead(n) did not produce a sufficiently - different internal state for small values of n. Fixed by salting the + different internal state for small values of n. Fixed by salting the value. - Issue #9792: In case of connection failure, socket.create_connection() @@ -319,7 +322,7 @@ Extension Modules ----------------- - Issue #10003: Allow handling of SIGBREAK on Windows. Fixes a regression - introduced by issue #9324. + introduced by issue #9324. - Issue #8734: Avoid crash in msvcrt.get_osfhandle() when an invalid file descriptor is provided. Patch by Pascal Chambon. |