Install is broken with Capstone >= 5.0
With capstone==5.0.0.post1
, running the install script for Pipedream fails:
$ ./tools/capstone/generate_capstone_map.py --arch ARMv8a --format=python --output -
Traceback (most recent call last):
File "/home/tobast/src/palmed/pipedream/./tools/capstone/generate_capstone_map.py", line 220, in <module>
sys.exit(main())
^^^^^^
File "/home/tobast/src/palmed/pipedream/./tools/capstone/generate_capstone_map.py", line 155, in main
disassembled = disassemble_file(args, o_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/./tools/capstone/generate_capstone_map.py", line 78, in disassemble_file
disassembled = Disassembler(arch).get_binary_dis(func.binary, skip=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/src/pipedream/disasm/capstone/disassembler.py", line 76, in get_binary_dis
return [op for op in self.gen_binary_dis(binary, skip)]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/src/pipedream/disasm/capstone/disassembler.py", line 76, in <listcomp>
return [op for op in self.gen_binary_dis(binary, skip)]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/src/pipedream/disasm/capstone/disassembler.py", line 67, in gen_binary_dis
insn_class = cs_insn_class(inst)
^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/src/pipedream/disasm/capstone/utils.py", line 123, in cs_insn_class
ops_classes = cs_insn_ops_classes(insn)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/src/pipedream/disasm/capstone/utils.py", line 113, in cs_insn_ops_classes
ops_classes = _insn_ops_classes_arm64(insn)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/src/pipedream/disasm/capstone/utils.py", line 68, in _insn_ops_classes_arm64
ops_classes += _op_class_arm64(insn, cs_op)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/tobast/src/palmed/pipedream/src/pipedream/disasm/capstone/utils.py", line 42, in _op_class_arm64
vess_str = {0: "", 1: "b", 2: "h", 3: "s", 4: "d"}[op.vess]
^^^^^^^
AttributeError: 'Arm64Op' object has no attribute 'vess'
A quick solution to get it working is pip install "capstone<5.0"
, although it is only a temporary fix.
Edited by Théophile BASTIAN