Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.1k
Open
Description
Feature or enhancement
Windows developers need a way to invokeTools/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 withmake regen-all
that depends on theregen-cases
target:
Lines 1490 to 1503 ina679c3d
regen-cases: | |
# Regenerate Python/generated_cases.c.h | |
# and Python/opcode_metadata.h | |
# from Python/bytecodes.c | |
# using Tools/cases_generator/generate_cases.py | |
PYTHONPATH=$(srcdir)/Tools/cases_generator \ | |
$(PYTHON_FOR_REGEN) \ | |
$(srcdir)/Tools/cases_generator/generate_cases.py \ | |
--emit-line-directives \ | |
-o $(srcdir)/Python/generated_cases.c.h.new \ | |
-m $(srcdir)/Python/opcode_metadata.h.new \ | |
$(srcdir)/Python/bytecodes.c | |
$(UPDATE_FILE) $(srcdir)/Python/generated_cases.c.h $(srcdir)/Python/generated_cases.c.h.new | |
$(UPDATE_FILE) $(srcdir)/Python/opcode_metadata.h $(srcdir)/Python/opcode_metadata.h.new |
By analogy,PCBuild\regen.targets
could do the same for MSBuild.
Pitch
When I tried to resolve aPython/generated_cases.c.h
conflict ingh-103976, I found out that I cannot do it easily. An attempt to port theregen-cases
target was unsuccessfull:
D:\Oleg\cpython>set PYTHONPATH=D:\Oleg\cpython\Tools\cases_generatorD:\Oleg\cpython>python Tools/cases_generator/generate_cases.py --emit-line-directives Python/generated_cases.c.h.new Python/opcode_metadata.h.newRunning 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.hRunning 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 timePython/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