gh-119679: Ensures correct import libraries are included in Windows install packages (GH-119790)

(cherry picked from commit fd01271366)

Co-authored-by: Steve Dower <steve.dower@python.org>
This commit is contained in:
Miss Islington (bot) 2024-06-03 17:06:53 +02:00 committed by GitHub
parent b26b410ce9
commit 671b740f45
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 23 additions and 14 deletions

View File

@ -0,0 +1 @@
Ensures correct import libraries are included in Windows installs.

View File

@ -121,7 +121,7 @@ def get_tcltk_lib(ns):
def get_layout(ns):
def in_build(f, dest="", new_name=None):
def in_build(f, dest="", new_name=None, no_lib=False):
n, _, x = f.rpartition(".")
n = new_name or n
src = ns.build / f
@ -136,7 +136,7 @@ def get_layout(ns):
pdb = src.with_suffix(".pdb")
if pdb.is_file():
yield dest + n + ".pdb", pdb
if ns.include_dev:
if ns.include_dev and not no_lib:
lib = src.with_suffix(".lib")
if lib.is_file():
yield "libs/" + n + ".lib", lib
@ -202,7 +202,9 @@ def get_layout(ns):
yield "LICENSE.txt", ns.build / "LICENSE.txt"
for dest, src in rglob(ns.build, "*.pyd"):
dest="" if ns.flat_dlls else "DLLs/"
for _, src in rglob(ns.build, "*.pyd"):
if ns.include_freethreaded:
if not src.match("*.cp*t-win*.pyd"):
continue
@ -217,14 +219,14 @@ def get_layout(ns):
continue
if src in TCLTK_PYDS_ONLY and not ns.include_tcltk:
continue
yield from in_build(src.name, dest="" if ns.flat_dlls else "DLLs/")
yield from in_build(src.name, dest=dest, no_lib=True)
for dest, src in rglob(ns.build, "*.dll"):
for _, src in rglob(ns.build, "*.dll"):
if src.stem.endswith("_d") != bool(ns.debug) and src not in REQUIRED_DLLS:
continue
if src in EXCLUDE_FROM_DLLS:
continue
yield from in_build(src.name, dest="" if ns.flat_dlls else "DLLs/")
yield from in_build(src.name, no_lib=True)
if ns.zip_lib:
zip_name = PYTHON_ZIP_NAME

View File

@ -48,6 +48,12 @@
<Component Id="freethreaded_python.dll" Directory="InstallDirectory" Guid="*">
<File Id="freethreaded_python.dll" Name="python$(var.MajorVersionNumber)$(var.MinorVersionNumber)t.dll" KeyPath="yes" />
</Component>
<Component Id="freethreaded_python_stable.lib" Directory="libs" Guid="*">
<File Id="freethreaded_python_stable.lib" Name="python$(var.MajorVersionNumber)t.lib" KeyPath="yes" />
</Component>
<Component Id="freethreaded_python.lib" Directory="libs" Guid="*">
<File Id="freethreaded_python.lib" Name="python$(var.MajorVersionNumber)$(var.MinorVersionNumber)t.lib" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
<Fragment>
@ -69,8 +75,14 @@
<File Id="freethreaded_python_stable_d.dll" Name="python$(var.MajorVersionNumber)t_d.dll" KeyPath="yes" />
</Component>
<Component Id="freethreaded_python_d.dll" Directory="InstallDirectory" Guid="*">
<File Id="freethreaded_python_d.dll" Name="python$(var.MajorVersionNumber)$(var.MinorVersionNumber)_d.dll" KeyPath="yes" />
<File Id="freethreaded_python_d.pdb" Name="python$(var.MajorVersionNumber)$(var.MinorVersionNumber)_d.pdb" KeyPath="no" />
<File Id="freethreaded_python_d.dll" Name="python$(var.MajorVersionNumber)$(var.MinorVersionNumber)t_d.dll" KeyPath="yes" />
<File Id="freethreaded_python_d.pdb" Name="python$(var.MajorVersionNumber)$(var.MinorVersionNumber)t_d.pdb" KeyPath="no" />
</Component>
<Component Id="freethreaded_python_stable_d.lib" Directory="libs" Guid="*">
<File Id="freethreaded_python_stable_d.lib" Name="python$(var.MajorVersionNumber)t_d.lib" KeyPath="yes" />
</Component>
<Component Id="freethreaded_python_d.lib" Directory="libs" Guid="*">
<File Id="freethreaded_python_d.lib" Name="python$(var.MajorVersionNumber)$(var.MinorVersionNumber)t_d.lib" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>
@ -147,12 +159,6 @@
<?endforeach ?>
<Component Id="venvlauncher_d.exe" Directory="Lib_venv_scripts_nt__freethreaded" Guid="*">
<File Name="python_d.exe" Source="venvlauncher_d.exe" KeyPath="yes" />
</Component>
<Component Id="venvwlauncher_d.exe" Directory="Lib_venv_scripts_nt__freethreaded" Guid="*">
<File Name="pythonw_d.exe" Source="venvwlauncher_d.exe" KeyPath="yes" />
</Component>
<Component Id="venvlaunchert_d.pdb" Directory="Lib_venv_scripts_nt__freethreaded" Guid="*">
<File Name="venvlaunchert_d.pdb" KeyPath="yes" />
</Component>