summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@haypocalc.com>2010-10-12 22:53:51 (GMT)
committerVictor Stinner <victor.stinner@haypocalc.com>2010-10-12 22:53:51 (GMT)
commitd2f6ae63cd546d84310324012740425772e83de7 (patch)
treea46ffb06d8806f6e6a08d0fd728fda5f2ad9a55b
parent169b133c82ef1463444c6835e37760addb6c3d68 (diff)
downloadcpython-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.py10
-rw-r--r--Lib/sysconfig.py25
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS7
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.
diff --git a/Misc/ACKS b/Misc/ACKS
index ea7d9da..982af4c 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -418,6 +418,7 @@ Vivek Khera
Akira Kitada
Mads Kiilerich
Taek Joo Kim
+W. Trevor King
Paul Kippes
Steve Kirsch
Sebastian Kirsche
diff --git a/Misc/NEWS b/Misc/NEWS
index d86f34f..a19b478 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -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.