Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
1434a80b
Commit
1434a80b
authored
Oct 12, 2010
by
Victor Stinner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
current directory was deleted.
parent
c983457d
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
29 additions
and
11 deletions
+29
-11
Lib/site.py
Lib/site.py
+7
-3
Lib/sysconfig.py
Lib/sysconfig.py
+19
-8
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/site.py
View file @
1434a80b
...
...
@@ -70,7 +70,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
)
...
...
@@ -81,11 +85,11 @@ def abs_paths():
continue
# don't mess with a PEP 302-supplied __file__
try
:
m
.
__file__
=
os
.
path
.
abspath
(
m
.
__file__
)
except
AttributeError
:
except
(
AttributeError
,
OSError
)
:
pass
try
:
m
.
__cached__
=
os
.
path
.
abspath
(
m
.
__cached__
)
except
AttributeError
:
except
(
AttributeError
,
OSError
)
:
pass
...
...
Lib/sysconfig.py
View file @
1434a80b
...
...
@@ -107,21 +107,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"
):
...
...
@@ -362,7 +369,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
...
...
@@ -475,7 +482,7 @@ def get_config_vars(*args):
if
'srcdir'
not
in
_CONFIG_VARS
:
_CONFIG_VARS
[
'srcdir'
]
=
_PROJECT_BASE
else
:
_CONFIG_VARS
[
'srcdir'
]
=
realpath
(
_CONFIG_VARS
[
'srcdir'
])
_CONFIG_VARS
[
'srcdir'
]
=
_safe_
realpath
(
_CONFIG_VARS
[
'srcdir'
])
# Convert srcdir into an absolute path if it appears necessary.
...
...
@@ -484,8 +491,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.
...
...
Misc/NEWS
View file @
1434a80b
...
...
@@ -10,6 +10,9 @@ What's New in Python 3.2 Beta 1?
Core and Builtins
-----------------
- Issue #6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
current directory was deleted.
Library
-------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment