setup: copy python3.dll next to hg.exe when building on Windows for hgext.git
authorMatt Harbison <matt_harbison@yahoo.com>
Sat, 03 Apr 2021 21:15:45 -0400
changeset 46869 ed286d150aa8
parent 46868 802ba3c81507
child 46870 41d43d12c2c4
setup: copy python3.dll next to hg.exe when building on Windows for hgext.git I thought I took care of this already, but it must have been that I just manually copied the file over locally when debugging why the pygit2 library wasn't loading. The problem with that is what was copied over was from py38, and then running a py39 build hard crashed when the extension was loaded. Differential Revision: https://phab.mercurial-scm.org/D10301
setup.py
--- a/setup.py	Sat Apr 03 20:26:45 2021 -0400
+++ b/setup.py	Sat Apr 03 21:15:45 2021 -0400
@@ -817,6 +817,22 @@
                 if not os.path.exists(dest):
                     shutil.copy(buf.value, dest)
 
+                # Also overwrite python3.dll so that hgext.git is usable.
+                # TODO: also handle the MSYS flavor
+                if sys.version_info[0] >= 3:
+                    python_x = os.path.join(
+                        os.path.dirname(fsdecode(buf.value)),
+                        "python3.dll",
+                    )
+
+                    if os.path.exists(python_x):
+                        dest = os.path.join(
+                            os.path.dirname(self.hgtarget),
+                            os.path.basename(python_x),
+                        )
+
+                        shutil.copy(python_x, dest)
+
         if not pythonlib:
             log.warn(
                 'could not determine Python DLL filename; assuming pythonXY'