From: Steve Dower Date: Fri, 8 Apr 2022 00:02:58 +0000 (+0100) Subject: bpo-47103: Copy pgort140.dll into output directory when building PGInstrument on... X-Git-Tag: v3.9.13~122 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=80c115385c01f456cdc6550543cf2112ae7a8161;p=thirdparty%2FPython%2Fcpython.git bpo-47103: Copy pgort140.dll into output directory when building PGInstrument on Windows (GH-32083) --- diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index 11c8f012896d..8e5cfa4824b1 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -1145,20 +1145,11 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase): if MS_WINDOWS: # Copy pythonXY.dll (or pythonXY_d.dll) - ver = sys.version_info - dll = f'python{ver.major}{ver.minor}' - dll3 = f'python{ver.major}' - if debug_build(sys.executable): - dll += '_d' - dll3 += '_d' - dll += '.dll' - dll3 += '.dll' - dll = os.path.join(os.path.dirname(self.test_exe), dll) - dll3 = os.path.join(os.path.dirname(self.test_exe), dll3) - dll_copy = os.path.join(tmpdir, os.path.basename(dll)) - dll3_copy = os.path.join(tmpdir, os.path.basename(dll3)) - shutil.copyfile(dll, dll_copy) - shutil.copyfile(dll3, dll3_copy) + import fnmatch + exedir = os.path.dirname(self.test_exe) + for f in os.listdir(exedir): + if fnmatch.fnmatch(f, '*.dll'): + shutil.copyfile(os.path.join(exedir, f), os.path.join(tmpdir, f)) # Copy Python program exec_copy = os.path.join(tmpdir, os.path.basename(self.test_exe)) diff --git a/Misc/NEWS.d/next/Build/2022-03-23-20-01-16.bpo-47103.b4-00F.rst b/Misc/NEWS.d/next/Build/2022-03-23-20-01-16.bpo-47103.b4-00F.rst new file mode 100644 index 000000000000..c1e01adce0d2 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2022-03-23-20-01-16.bpo-47103.b4-00F.rst @@ -0,0 +1,2 @@ +Windows ``PGInstrument`` builds now copy a required DLL into the output +directory, making it easier to run the profile stage of a PGO build. diff --git a/PCbuild/python.vcxproj b/PCbuild/python.vcxproj index 2094420a8df3..42b27084e04d 100644 --- a/PCbuild/python.vcxproj +++ b/PCbuild/python.vcxproj @@ -126,9 +126,6 @@ set PYTHONPATH=$(PySourcePath)Lib - <_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(Platform) == 'Win32'">@set PATH=%PATH%%3B$(VCInstallDir)bin - <_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(Platform) == 'x64'">@set PATH=%PATH%%3B$(VCInstallDir)bin\amd64 - <_PGOPath Condition="$(Configuration) == 'PGInstrument' and $(VC_PGO_RunTime_Dir) != ''">@set PATH=%PATH%%3B$(VC_PGO_RunTime_Dir) <_Content>@rem This script invokes the most recently built Python with all arguments @rem passed through to the interpreter. This file is generated by the @rem build process and any changes *will* be thrown away by the next @@ -138,7 +135,6 @@ set PYTHONPATH=$(PySourcePath)Lib @echo Running $(Configuration)^|$(Platform) interpreter... @setlocal @set PYTHONHOME=$(PySourcePath) -$(_PGOPath) @"$(OutDir)python$(PyDebugExt).exe" %* <_ExistingContent Condition="Exists('$(PySourcePath)python.bat')">$([System.IO.File]::ReadAllText('$(PySourcePath)python.bat')) @@ -164,4 +160,15 @@ $(_PGOPath) Overwrite="true" Lines="@(_LicenseFiles->'%(Content)')" /> + + + <_PGORT Include="$(VCToolsInstallDir)bin\Hostx86\x86\pgort140.dll" Condition="$(Platform) == 'Win32'" /> + <_PGORT Include="$(VCToolsInstallDir)bin\Hostx64\x64\pgort140.dll" Condition="$(Platform) == 'x64'" /> + <_PGORT Include="$(VCToolsInstallDir)bin\arm64\pgort140.dll" Condition="$(Platform) == 'ARM64'" /> + + + + + +