Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 67d8dc1

Browse files
committed
Fix Tools/scripts/generate_opcode_h.py from issue #17861 to work correctly
when building in a separate object tree. More people should build this way. This may still fail if the source is unwritable, I haven't tested that yet.
1 parent 68290f4 commit 67d8dc1

2 files changed

Lines changed: 13 additions & 14 deletions

File tree

Makefile.pre.in

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -324,10 +324,10 @@ PGENOBJS= $(POBJS) $(PGOBJS)
324324

325325
##########################################################################
326326
# opcode.h generation
327-
OPCODE_H_DIR= Include
328-
OPCODE_H_SCRIPT= Tools/scripts/generate_opcode_h.py
329-
OPCODE_H= $(srcdir)/$(OPCODE_H_DIR)/opcode.h
330-
OPCODE_H_GEN= @OPCODEHGEN@ $(OPCODE_H_SCRIPT) Lib/ $(OPCODE_H)
327+
OPCODE_H_DIR= $(srcdir)/Include
328+
OPCODE_H_SCRIPT= $(srcdir)/Tools/scripts/generate_opcode_h.py
329+
OPCODE_H= $(OPCODE_H_DIR)/opcode.h
330+
OPCODE_H_GEN= @OPCODEHGEN@ $(OPCODE_H_SCRIPT) $(srcdir)/Lib/opcode.py $(OPCODE_H)
331331
#
332332
##########################################################################
333333
# AST

Tools/scripts/generate_opcode_h.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
# This script generates the opcode.h header file.
22

33
import sys
4-
if len(sys.argv) > 0:
5-
sys.path.insert(0, sys.argv[1])
6-
# Importing module from our given src directory.
7-
import opcode
84
header = """/* Auto-generated by Tools/scripts/generate_opcode_h.py */
95
#ifndef Py_OPCODE_H
106
#define Py_OPCODE_H
@@ -37,17 +33,20 @@
3733
"""
3834

3935

40-
def main(outfile='Include/opcode.h'):
36+
def main(opcode_py, outfile='Include/opcode.h'):
37+
opcode = {}
38+
exec(open(opcode_py).read(), opcode)
39+
opmap = opcode['opmap']
4140
with open(outfile, 'w') as fobj:
4241
fobj.write(header)
43-
for name in opcode.opname:
44-
if name in opcode.opmap:
45-
fobj.write("#define %-20s\t%-3s\n" % (name, opcode.opmap[name]))
42+
for name in opcode['opname']:
43+
if name in opmap:
44+
fobj.write("#define %-20s\t%-3s\n" % (name, opmap[name]))
4645
if name == 'POP_EXCEPT': # Special entry for HAVE_ARGUMENT
4746
fobj.write("#define %-20s\t%-3d\n" %
48-
('HAVE_ARGUMENT', opcode.HAVE_ARGUMENT))
47+
('HAVE_ARGUMENT', opcode['HAVE_ARGUMENT']))
4948
fobj.write(footer)
5049

5150

5251
if __name__ == '__main__':
53-
main(sys.argv[2])
52+
main(sys.argv[1], sys.argv[2])

0 commit comments

Comments
 (0)