From 6c6ab847e6acfc9924ef905fc100404914dcbf6f Mon Sep 17 00:00:00 2001
From: Naveen M K <naveen521kk@gmail.com>
Date: Fri, 23 Jun 2023 20:49:15 +0530
Subject: [PATCH 088/N] venv creation fixes

---
 Lib/venv/__init__.py | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/Lib/venv/__init__.py b/Lib/venv/__init__.py
index aeb522c..7266f83 100644
--- a/Lib/venv/__init__.py
+++ b/Lib/venv/__init__.py
@@ -13,6 +13,7 @@ import sysconfig
 import types
 import shlex
 
+from sysconfig import _POSIX_BUILD
 
 CORE_VENV_DEPS = ('pip',)
 logger = logging.getLogger(__name__)
@@ -330,7 +331,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
@@ -354,6 +355,12 @@ class EnvBuilder:
                 if os.path.lexists(src):
                     copier(src, os.path.join(binpath, suffix))
 
+            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():
                 # copy init.tcl
                 for root, dirs, files in os.walk(context.python_dir):
@@ -378,6 +385,7 @@ class EnvBuilder:
         env['VIRTUAL_ENV'] = context.env_dir
         env.pop('PYTHONHOME', None)
         env.pop('PYTHONPATH', None)
+        env.pop("MSYSTEM", None)
         kwargs['cwd'] = context.env_dir
         kwargs['executable'] = context.env_exec_cmd
         subprocess.check_output(args, **kwargs)
