Mercurial > hg
changeset 48303:2ce31dbde4b1
backout: backed out changeset f78d8b8c46d7
This and the following backout exist because the original patches break the
Windows CI for some yet unknown reason.
Differential Revision: https://phab.mercurial-scm.org/D11726
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Wed, 27 Oct 2021 12:07:58 +0200 |
parents | 1eaf37369eba |
children | 2ec5fbe26659 |
files | setup.py |
diffstat | 1 files changed, 32 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/setup.py Thu Nov 04 12:35:05 2021 +0100 +++ b/setup.py Wed Oct 27 12:07:58 2021 +0200 @@ -780,6 +780,9 @@ 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 @@ -805,6 +808,35 @@ ) 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' @@ -827,8 +859,6 @@ 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 )