D11455: setup: stop packaging python3.dll and python3X.dll in the wheel distribution

mharbison72 (Matt Harbison) phabricator at mercurial-scm.org
Sun Sep 19 18:28:56 UTC 2021


mharbison72 created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  Now that exewrapper is smart enough to find the DLLs it needs without help from
  the build script, backout ed286d150aa8 <https://phab.mercurial-scm.org/rHGed286d150aa89d742a24015be22f0b1c36855697> and 2960b7fac966 <https://phab.mercurial-scm.org/rHG2960b7fac966193436266a02230f3bc996e768bd>.  Note that this will
  require deleting the build/lib.win-amd64-3.X directory to actually remove it
  from the final wheel.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

REVISION DETAIL
  https://phab.mercurial-scm.org/D11455

AFFECTED FILES
  setup.py

CHANGE DETAILS

diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -780,9 +780,6 @@
 
         pythonlib = None
 
-        dir = os.path.dirname(self.get_ext_fullpath('dummy'))
-        self.hgtarget = os.path.join(dir, 'hg')
-
         if getattr(sys, 'dllhandle', None):
             # Different Python installs can have different Python library
             # names. e.g. the official CPython distribution uses pythonXY.dll
@@ -808,35 +805,6 @@
                     )
                 pythonlib = dllbasename[:-4]
 
-                # Copy the pythonXY.dll next to the binary so that it runs
-                # without tampering with PATH.
-                fsdecode = lambda x: x
-                if sys.version_info[0] >= 3:
-                    fsdecode = os.fsdecode
-                dest = os.path.join(
-                    os.path.dirname(self.hgtarget),
-                    fsdecode(dllbasename),
-                )
-
-                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'
@@ -859,6 +827,8 @@
             output_dir=self.build_temp,
             macros=macros,
         )
+        dir = os.path.dirname(self.get_ext_fullpath('dummy'))
+        self.hgtarget = os.path.join(dir, 'hg')
         self.compiler.link_executable(
             objects, self.hgtarget, libraries=[], output_dir=self.build_temp
         )



To: mharbison72, #hg-reviewers
Cc: mercurial-patches, mercurial-devel


More information about the Mercurial-devel mailing list