From: Vinay Sajip Date: Tue, 15 Apr 2014 10:18:10 +0000 (+0100) Subject: Issue #21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX. X-Git-Tag: v3.4.1rc1~75 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1e53f8d9bff9d9a7f6ea27aa0aea9eaca5307cc6;p=thirdparty%2FPython%2Fcpython.git Issue #21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX. --- diff --git a/Lib/test/test_venv.py b/Lib/test/test_venv.py index 1084a99a5e36..e13cd8cf9890 100644 --- a/Lib/test/test_venv.py +++ b/Lib/test/test_venv.py @@ -9,6 +9,7 @@ import ensurepip import os import os.path import shutil +import struct import subprocess import sys import tempfile @@ -87,6 +88,14 @@ class BasicTest(BaseTest): 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)) data = self.get_text_file_contents('pyvenv.cfg') if sys.platform == 'darwin' and ('__PYVENV_LAUNCHER__' in os.environ): diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py index bbdd91133878..20dafc0353fd 100644 --- a/Lib/venv/__init__.py +++ b/Lib/venv/__init__.py @@ -1,7 +1,7 @@ """ Virtual environment (venv) package for Python. Based on PEP 405. -Copyright (C) 2011-2012 Vinay Sajip. +Copyright (C) 2011-2014 Vinay Sajip. Licensed to the PSF under a contributor agreement. usage: python -m venv [-h] [--system-site-packages] [--symlinks] [--clear] @@ -30,6 +30,7 @@ optional arguments: import logging import os import shutil +import struct import subprocess import sys import types @@ -132,10 +133,18 @@ class EnvBuilder: else: binname = 'bin' incpath = 'include' - libpath = os.path.join(env_dir, 'lib', 'python%d.%d' % sys.version_info[:2], 'site-packages') + libpath = os.path.join(env_dir, 'lib', + 'python%d.%d' % sys.version_info[:2], + 'site-packages') context.inc_path = path = os.path.join(env_dir, incpath) create_if_needed(path) create_if_needed(libpath) + # Issue 21197: create lib64 as a symlink to lib on 64-bit non-OS X POSIX + if ((struct.calcsize('P') == 8) and (os.name == 'posix') and + (sys.platform != 'darwin')): + p = os.path.join(env_dir, 'lib') + link_path = os.path.join(env_dir, 'lib64') + os.symlink(p, link_path) context.bin_path = binpath = os.path.join(env_dir, binname) context.bin_name = binname context.env_exe = os.path.join(binpath, exename) diff --git a/Misc/NEWS b/Misc/NEWS index a158999f9829..26377fe23d13 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -41,6 +41,8 @@ Core and Builtins Library ------- +- Issue #21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX. + - Issue #17498: Some SMTP servers disconnect after certain errors, violating strict RFC conformance. Instead of losing the error code when we issue the subsequent RSET, smtplib now returns the error code and defers raising the