Skip to content

Commit 1901e80

Browse files
committed
Install build-details.json on Windows
1 parent 3b4cd88 commit 1901e80

5 files changed

Lines changed: 23 additions & 5 deletions

File tree

Lib/test/test_build_details.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,17 +90,19 @@ def test_implementation(self):
9090
)
9191

9292

93-
@unittest.skipIf(os.name != 'posix', 'Feature only implemented on POSIX right now')
9493
@unittest.skipIf(is_wasm32, 'Feature not available on WebAssembly builds')
9594
class CPythonBuildDetailsTests(unittest.TestCase, FormatTestsBase):
9695
"""Test CPython's install details file implementation."""
9796

9897
@property
9998
def location(self):
10099
if sysconfig.is_python_build():
101-
projectdir = sysconfig.get_config_var('projectbase')
102-
with open(os.path.join(projectdir, 'pybuilddir.txt')) as f:
103-
dirname = os.path.join(projectdir, f.read())
100+
if sys.platform == 'win32':
101+
dirname = sysconfig.get_config_var('BINDIR')
102+
else:
103+
projectdir = sysconfig.get_config_var('projectbase')
104+
with open(os.path.join(projectdir, 'pybuilddir.txt')) as f:
105+
dirname = os.path.join(projectdir, f.read())
104106
else:
105107
dirname = sysconfig.get_path('stdlib')
106108
return os.path.join(dirname, 'build-details.json')
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
The :pep:`739` :file:`build-details.json` file is now generated and
2+
installed on Windows.
3+
Patch by Adam Turner.

PCbuild/python.vcxproj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,13 @@
126126
<Message Text="Generating $(OutDir)pybuilddir.txt" />
127127
<WriteLinesToFile File="$(OutDir)pybuilddir.txt" Lines="%0D%0A" Overwrite="true" />
128128
</Target>
129+
<Target Name="GenerateBuildDetailsJSON" AfterTargets="Link">
130+
<Message Text="Generating $(OutDir)build-details.json" />
131+
<WriteLinesToFile File="$(OutDir)build-details.json" Lines="%0D%0A" Overwrite="true" />
132+
<Exec Command='setlocal
133+
set PYTHONPATH=$(PySourcePath)Lib
134+
"$(OutDir)$(PyExeName)$(PyDebugExt).exe" "$(PySourcePath)Tools\build\generate-build-details.py" "$(OutDir)build-details.json"' ContinueOnError="true" />
135+
</Target>
129136
<Target Name="ValidateUcrtbase" AfterTargets="AfterBuild" Condition="$(Configuration) != 'PGInstrument' and $(Platform) != 'ARM' and $(Platform) != 'ARM64'">
130137
<PropertyGroup>
131138
<UcrtName>ucrtbase</UcrtName>

PCbuild/pythoncore.vcxproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,4 +735,7 @@
735735
<Target Name="_DeletePyBuildDirTxt" BeforeTargets="PrepareForBuild">
736736
<Delete Files="$(OutDir)pybuilddir.txt" />
737737
</Target>
738+
<Target Name="_DeleteBuildDetailsJson" BeforeTargets="PrepareForBuild">
739+
<Delete Files="$(OutDir)build-details.json" />
740+
</Target>
738741
</Project>

Tools/build/generate-build-details.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ def generate_data(schema_version: str) -> collections.defaultdict[str, Any]:
6161
if '_multiarch' in data['implementation']:
6262
data['implementation']['_multiarch'] = sysconfig.get_config_var('MULTIARCH')
6363

64-
data['abi']['flags'] = list(sys.abiflags)
64+
if sys.platform != 'win32':
65+
data['abi']['flags'] = list(sys.abiflags)
66+
else:
67+
data['abi']['flags'] = []
6568

6669
data['suffixes']['source'] = importlib.machinery.SOURCE_SUFFIXES
6770
data['suffixes']['bytecode'] = importlib.machinery.BYTECODE_SUFFIXES

0 commit comments

Comments
 (0)