Open
Description
Feature or enhancement
Windows developers need a way to invoke Tools/cases_generator/generate_cases.py
with all necessary flags (and, probably, environment variables) skipping the challenge of manual typing.
On non-Windows platforms it's achieved with make regen-all
that depends on the regen-cases
target:
Lines 1490 to 1503 in a679c3d
By analogy, PCBuild\regen.targets
could do the same for MSBuild.
Pitch
When I tried to resolve a Python/generated_cases.c.h
conflict in gh-103976, I found out that I cannot do it easily. An attempt to port the regen-cases
target was unsuccessfull:
D:\Oleg\cpython>set PYTHONPATH=D:\Oleg\cpython\Tools\cases_generator D:\Oleg\cpython>python Tools/cases_generator/generate_cases.py --emit-line-directives Python/generated_cases.c.h.new Python/opcode_metadata.h.new Running Release|x64 interpreter... Traceback (most recent call last): File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 1259, in main() File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 1250, in main a.parse() # Raises SyntaxError on failure ^^^^^^^^^ File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 557, in parse self.parse_file(filename, instrs_idx) File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 568, in parse_file with open(filename) as file: ^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'Python/generated_cases.c.h.new' D:\Oleg\cpython>python Tools/cases_generator/generate_cases.py --emit-line-directives Python/generated_cases.c.h Python/opcode_metadata.h Running Release|x64 interpreter... Traceback (most recent call last): File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 1259, in main() File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 1250, in main a.parse() # Raises SyntaxError on failure ^^^^^^^^^ File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 557, in parse self.parse_file(filename, instrs_idx) File "D:\Oleg\cpython\Tools\cases_generator\generate_cases.py", line 583, in parse_file raise psr.make_syntax_error( File "Python/generated_cases.c.h", line 4658 } ^ SyntaxError: Couldn't find '// BEGIN BYTECODES //' in Python/generated_cases.c.h
Autogenegeration would lift off a need to write a private batch-file, debug it, and use it each time Python/bytecodes.c
is touched.
Your environment
- CPython versions tested on:
Python 3.12.0a7+ (heads/main:5078eedc5b, May 1 2023, 23:20:56) [MSC v.1929 64 bit (AMD64)] on win32