gh-133059: Fix Tools/build/deepfreeze.py for new nsmallposints (#139906)
This commit is contained in:
1
.github/workflows/mypy.yml
vendored
1
.github/workflows/mypy.yml
vendored
@@ -16,6 +16,7 @@ on:
|
|||||||
- "Tools/build/check_extension_modules.py"
|
- "Tools/build/check_extension_modules.py"
|
||||||
- "Tools/build/check_warnings.py"
|
- "Tools/build/check_warnings.py"
|
||||||
- "Tools/build/compute-changes.py"
|
- "Tools/build/compute-changes.py"
|
||||||
|
- "Tools/build/consts_getter.py"
|
||||||
- "Tools/build/deepfreeze.py"
|
- "Tools/build/deepfreeze.py"
|
||||||
- "Tools/build/generate-build-details.py"
|
- "Tools/build/generate-build-details.py"
|
||||||
- "Tools/build/generate_sbom.py"
|
- "Tools/build/generate_sbom.py"
|
||||||
|
|||||||
20
Tools/build/consts_getter.py
Normal file
20
Tools/build/consts_getter.py
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
ROOT = Path(__file__).resolve().parents[2]
|
||||||
|
INTERNAL = ROOT / "Include" / "internal"
|
||||||
|
|
||||||
|
def get_nsmallnegints_and_nsmallposints() -> tuple[int, int]:
|
||||||
|
nsmallposints = None
|
||||||
|
nsmallnegints = None
|
||||||
|
with open(INTERNAL / "pycore_runtime_structs.h") as infile:
|
||||||
|
for line in infile:
|
||||||
|
if line.startswith("#define _PY_NSMALLPOSINTS"):
|
||||||
|
nsmallposints = int(line.split()[-1])
|
||||||
|
elif line.startswith("#define _PY_NSMALLNEGINTS"):
|
||||||
|
nsmallnegints = int(line.split()[-1])
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
raise NotImplementedError
|
||||||
|
assert nsmallposints
|
||||||
|
assert nsmallnegints
|
||||||
|
return nsmallnegints, nsmallposints
|
||||||
@@ -17,6 +17,7 @@ import re
|
|||||||
import time
|
import time
|
||||||
import types
|
import types
|
||||||
|
|
||||||
|
import consts_getter
|
||||||
import umarshal
|
import umarshal
|
||||||
|
|
||||||
TYPE_CHECKING = False
|
TYPE_CHECKING = False
|
||||||
@@ -362,7 +363,9 @@ class Printer:
|
|||||||
self.write(f".ob_digit = {{ {ds} }},")
|
self.write(f".ob_digit = {{ {ds} }},")
|
||||||
|
|
||||||
def generate_int(self, name: str, i: int) -> str:
|
def generate_int(self, name: str, i: int) -> str:
|
||||||
if -5 <= i <= 256:
|
nsmallnegints, nsmallposints = consts_getter.get_nsmallnegints_and_nsmallposints()
|
||||||
|
|
||||||
|
if -nsmallnegints <= i <= nsmallposints:
|
||||||
return f"(PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + {i}]"
|
return f"(PyObject *)&_PyLong_SMALL_INTS[_PY_NSMALLNEGINTS + {i}]"
|
||||||
if i >= 0:
|
if i >= 0:
|
||||||
name = f"const_int_{i}"
|
name = f"const_int_{i}"
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import io
|
|||||||
import os.path
|
import os.path
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
import consts_getter
|
||||||
|
|
||||||
SCRIPT_NAME = 'Tools/build/generate_global_objects.py'
|
SCRIPT_NAME = 'Tools/build/generate_global_objects.py'
|
||||||
__file__ = os.path.abspath(__file__)
|
__file__ = os.path.abspath(__file__)
|
||||||
ROOT = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
ROOT = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
|
||||||
@@ -274,20 +276,7 @@ def generate_global_strings(identifiers, strings):
|
|||||||
|
|
||||||
|
|
||||||
def generate_runtime_init(identifiers, strings):
|
def generate_runtime_init(identifiers, strings):
|
||||||
# First get some info from the declarations.
|
nsmallnegints, nsmallposints = consts_getter.get_nsmallnegints_and_nsmallposints()
|
||||||
nsmallposints = None
|
|
||||||
nsmallnegints = None
|
|
||||||
with open(os.path.join(INTERNAL, 'pycore_runtime_structs.h')) as infile:
|
|
||||||
for line in infile:
|
|
||||||
if line.startswith('#define _PY_NSMALLPOSINTS'):
|
|
||||||
nsmallposints = int(line.split()[-1])
|
|
||||||
elif line.startswith('#define _PY_NSMALLNEGINTS'):
|
|
||||||
nsmallnegints = int(line.split()[-1])
|
|
||||||
break
|
|
||||||
else:
|
|
||||||
raise NotImplementedError
|
|
||||||
assert nsmallposints
|
|
||||||
assert nsmallnegints
|
|
||||||
|
|
||||||
# Then target the runtime initializer.
|
# Then target the runtime initializer.
|
||||||
filename = os.path.join(INTERNAL, 'pycore_runtime_init_generated.h')
|
filename = os.path.join(INTERNAL, 'pycore_runtime_init_generated.h')
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ files =
|
|||||||
Tools/build/check_extension_modules.py,
|
Tools/build/check_extension_modules.py,
|
||||||
Tools/build/check_warnings.py,
|
Tools/build/check_warnings.py,
|
||||||
Tools/build/compute-changes.py,
|
Tools/build/compute-changes.py,
|
||||||
|
Tools/build/consts_getter.py,
|
||||||
Tools/build/deepfreeze.py,
|
Tools/build/deepfreeze.py,
|
||||||
Tools/build/generate-build-details.py,
|
Tools/build/generate-build-details.py,
|
||||||
Tools/build/generate_sbom.py,
|
Tools/build/generate_sbom.py,
|
||||||
|
|||||||
Reference in New Issue
Block a user