]> granicus.if.org Git - python/commitdiff
Issue #21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX.
authorVinay Sajip <vinay_sajip@yahoo.co.uk>
Tue, 15 Apr 2014 10:18:10 +0000 (11:18 +0100)
committerVinay Sajip <vinay_sajip@yahoo.co.uk>
Tue, 15 Apr 2014 10:18:10 +0000 (11:18 +0100)
Lib/test/test_venv.py
Lib/venv/__init__.py
Misc/NEWS

index 1084a99a5e365c3b787574cfc08612633b0c0791..e13cd8cf9890c7cb35222c8112765f6f2f0ea448 100644 (file)
@@ -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):
index bbdd91133878acda2275c00b213c5057f80cdbe5..20dafc0353fdc0a5a7107c5e2ec0e15d73b02a7c 100644 (file)
@@ -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)
index a158999f98292428e0c2f20db9d135ded60647b4..26377fe23d136269d7826c031514ae7e074433b1 100644 (file)
--- 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