Skip to content

gh-133951: Remove lib64->lib symlink in venv creation #137139

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 2 additions & 8 deletions Lib/test/test_venv.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import pathlib
import re
import shutil
import struct
import subprocess
import sys
import sysconfig
Expand Down Expand Up @@ -138,14 +137,9 @@ def _check_output_of_default_create(self):
self.isdir(self.bindir)
self.isdir(self.include)
self.isdir(*self.lib)
# Issue 21197
p = self.get_env_file('lib64')
conditions = ((struct.calcsize('P') == 8) and (os.name == 'posix') and
(sys.platform != 'darwin'))
if conditions:
self.assertTrue(os.path.islink(p))
else:
self.assertFalse(os.path.exists(p))
if os.path.exists(p):
self.assertFalse(os.path.islink(p))
data = self.get_text_file_contents('pyvenv.cfg')
executable = sys._base_executable
path = os.path.dirname(executable)
Expand Down
9 changes: 3 additions & 6 deletions Lib/venv/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,7 @@ def create_if_needed(d):
context.python_exe = exename
binpath = self._venv_path(env_dir, 'scripts')
libpath = self._venv_path(env_dir, 'purelib')
platlibpath = self._venv_path(env_dir, 'platlib')

# PEP 405 says venvs should create a local include directory.
# See https://peps.python.org/pep-0405/#include-files
Expand All @@ -191,12 +192,8 @@ def create_if_needed(d):
create_if_needed(incpath)
context.lib_path = libpath
create_if_needed(libpath)
# 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')):
link_path = os.path.join(env_dir, 'lib64')
if not os.path.exists(link_path): # Issue #21643
os.symlink('lib', link_path)
context.platlib_path = platlibpath
create_if_needed(platlibpath)
context.bin_path = binpath
context.bin_name = os.path.relpath(binpath, env_dir)
context.env_exe = os.path.join(binpath, exename)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Remove lib64-lib symlink creation when creating new virtual environments in
:mod:`venv` module
Loading