mirror of https://github.com/python/cpython
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 ........
This commit is contained in:
parent
169b133c82
commit
d2f6ae63cd
10
Lib/site.py
10
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():
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue