From eb0b0f383d56454cc6fde8f19ea056bf5bed75ce Mon Sep 17 00:00:00 2001
From: Christoph Reiter <reiter.christoph@gmail.com>
Date: Thu, 17 Jun 2021 18:52:26 +0530
Subject: [PATCH 084/N] venv creation fixes

---
 Lib/venv/__init__.py | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
index 8009deb..b471006 100644
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -11,6 +11,7 @@ import subprocess
 import sys
 import sysconfig
 import types
+from sysconfig import _POSIX_BUILD
 
 
 CORE_VENV_DEPS = ('pip', 'setuptools')
@@ -119,7 +120,7 @@ class EnvBuilder:
         context.executable = executable
         context.python_dir = dirname
         context.python_exe = exename
-        if sys.platform == 'win32':
+        if sys.platform == 'win32' and not _POSIX_BUILD:
             binname = 'Scripts'
             incpath = 'Include'
             libpath = os.path.join(env_dir, 'Lib', 'site-packages')
@@ -252,7 +253,7 @@ class EnvBuilder:
                     if not os.path.islink(path):
                         os.chmod(path, 0o755)
         else:
-            if self.symlinks:
+            if self.symlinks and not _POSIX_BUILD:
                 # For symlinking, we need a complete copy of the root directory
                 # If symlinks fail, you'll get unnecessary copies of files, but
                 # we assume that if you've opted into symlinks on Windows then
@@ -275,7 +276,13 @@ class EnvBuilder:
                 if os.path.lexists(src):
                     copier(src, os.path.join(binpath, suffix))
 
-            if sysconfig.is_python_build(True):
+            if _POSIX_BUILD:
+                # copy from python/pythonw so the venvlauncher magic in symlink_or_copy triggers
+                copier(os.path.join(dirname, 'python.exe'), os.path.join(binpath, 'python3.exe'))
+                copier(os.path.join(dirname, 'python.exe'), os.path.join(binpath, 'python%d.%d.exe' % sys.version_info[:2]))
+                copier(os.path.join(dirname, 'pythonw.exe'), os.path.join(binpath, 'python3w.exe'))
+
+            if sysconfig.is_python_build(True) and not _POSIX_BUILD:
                 # copy init.tcl
                 for root, dirs, files in os.walk(context.python_dir):
                     if 'init.tcl' in files:
@@ -293,9 +300,11 @@ class EnvBuilder:
         # We run ensurepip in isolated mode to avoid side effects from
         # environment vars, the current directory and anything else
         # intended for the global Python environment
+        env = os.environ.copy()
+        env.pop("MSYSTEM", None)
         cmd = [context.env_exe, '-Im', 'ensurepip', '--upgrade',
-                                                    '--default-pip']
-        subprocess.check_output(cmd, stderr=subprocess.STDOUT)
+               '--default-pip']
+        subprocess.check_call(cmd, stderr=subprocess.STDOUT, env=env)
 
     def setup_scripts(self, context):
         """
-- 
2.32.0

