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
e43c0350
Commit
e43c0350
authored
Feb 06, 2015
by
Barry Warsaw
Browse files
Options
Browse Files
Download
Plain Diff
Issue #23399: pyvenv creates relative symlinks where possible.
parents
b4e20bb5
581c29f8
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
10 additions
and
6 deletions
+10
-6
Lib/venv/__init__.py
Lib/venv/__init__.py
+8
-6
Misc/NEWS
Misc/NEWS
+2
-0
No files found.
Lib/venv/__init__.py
View file @
e43c0350
...
...
@@ -141,10 +141,9 @@ class EnvBuilder:
# Issue 21197: create lib64 as a symlink to lib on 64-bit non-OS X POSIX
if
((
sys
.
maxsize
>
2
**
32
)
and
(
os
.
name
==
'posix'
)
and
(
sys
.
platform
!=
'darwin'
)):
p
=
os
.
path
.
join
(
env_dir
,
'lib'
)
link_path
=
os
.
path
.
join
(
env_dir
,
'lib64'
)
if
not
os
.
path
.
exists
(
link_path
):
# Issue #21643
os
.
symlink
(
p
,
link_path
)
os
.
symlink
(
'lib'
,
link_path
)
context
.
bin_path
=
binpath
=
os
.
path
.
join
(
env_dir
,
binname
)
context
.
bin_name
=
binname
context
.
env_exe
=
os
.
path
.
join
(
binpath
,
exename
)
...
...
@@ -178,7 +177,7 @@ class EnvBuilder:
result
=
f
.
startswith
(
'python'
)
and
f
.
endswith
(
'.exe'
)
return
result
def
symlink_or_copy
(
self
,
src
,
dst
):
def
symlink_or_copy
(
self
,
src
,
dst
,
relative_symlinks_ok
=
False
):
"""
Try symlinking a file, and if that fails, fall back to copying.
"""
...
...
@@ -186,7 +185,11 @@ class EnvBuilder:
if
not
force_copy
:
try
:
if
not
os
.
path
.
islink
(
dst
):
# can't link to itself!
os
.
symlink
(
src
,
dst
)
if
relative_symlinks_ok
:
assert
os
.
path
.
dirname
(
src
)
==
os
.
path
.
dirname
(
dst
)
os
.
symlink
(
os
.
path
.
basename
(
src
),
dst
)
else
:
os
.
symlink
(
src
,
dst
)
except
Exception
:
# may need to use a more specific exception
logger
.
warning
(
'Unable to symlink %r to %r'
,
src
,
dst
)
force_copy
=
True
...
...
@@ -201,7 +204,6 @@ class EnvBuilder:
being processed.
"""
binpath
=
context
.
bin_path
exename
=
context
.
python_exe
path
=
context
.
env_exe
copier
=
self
.
symlink_or_copy
copier
(
context
.
executable
,
path
)
...
...
@@ -214,7 +216,7 @@ class EnvBuilder:
if
not
os
.
path
.
exists
(
path
):
# Issue 18807: make copies if
# symlinks are not wanted
copier
(
context
.
env_exe
,
path
)
copier
(
context
.
env_exe
,
path
,
relative_symlinks_ok
=
True
)
if
not
os
.
path
.
islink
(
path
):
os
.
chmod
(
path
,
0o755
)
else
:
...
...
Misc/NEWS
View file @
e43c0350
...
...
@@ -59,6 +59,8 @@ Core and Builtins
Library
-------
- Issue #23399: pyvenv creates relative symlinks where possible.
- Issue #23099: Closing io.BytesIO with exported buffer is rejected now to
prevent corrupting exported buffer.
...
...
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