python: specify python2 as .py interpreter
On some distro the default python interpreter is Python 3,
which results in such errors:
> Running zdtm/static/socket-tcp-closed.hook(--post-start)
> make[1]: Nothing to be done for default.
> ./socket-tcp-closed --pidfile=socket-tcp-closed.pid --outfile=socket-tcp-closed.out
> File "zdtm/static/socket-tcp-closed.hook", line 16
> except OSError, e:
> ^
> SyntaxError: invalid syntax
> ######### Test zdtm/static/socket-tcp-closed FAIL at hook --post-start #########
> Running zdtm/static/socket-tcp-closed.hook(--clean)
> File "zdtm/static/socket-tcp-closed.hook", line 16
> except OSError, e:
> ^
> SyntaxError: invalid syntax
> Traceback (most recent call last):
> File "zdtm.py", line 1921, in <module>
> do_run_test(tinfo[0], tinfo[1], tinfo[2], tinfo[3])
> File "zdtm.py", line 1388, in do_run_test
> try_run_hook(t, ["--clean"])
> File "zdtm.py", line 1053, in try_run_hook
> raise test_fail_exc("hook " + " ".join(args))
> __main__.test_fail_exc: <__main__.test_fail_exc instance at 0x76294468>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: Dmitry Safonov <dsafonov@virtuozzo.com>
Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
2017-04-10 22:41:52 +03:00
|
|
|
#!/bin/env python2
|
2018-09-23 15:31:51 +01:00
|
|
|
import sys
|
2014-12-31 14:06:47 +02:00
|
|
|
|
|
|
|
# This program parses criu magic.h file and produces
|
|
|
|
# magic.py with all *_MAGIC constants except RAW and V1.
|
|
|
|
def main(argv):
|
|
|
|
if len(argv) != 3:
|
|
|
|
print("Usage: magic-gen.py path/to/image.h path/to/magic.py")
|
|
|
|
exit(1)
|
|
|
|
|
|
|
|
magic_c_header = argv[1]
|
|
|
|
magic_py = argv[2]
|
|
|
|
|
|
|
|
out = open(magic_py, 'w+')
|
|
|
|
|
|
|
|
# all_magic is used to parse constructions like:
|
|
|
|
# #define PAGEMAP_MAGIC 0x56084025
|
|
|
|
# #define SHMEM_PAGEMAP_MAGIC PAGEMAP_MAGIC
|
|
|
|
all_magic = {}
|
|
|
|
# and magic is used to store only unique magic.
|
|
|
|
magic = {}
|
|
|
|
|
|
|
|
f = open(magic_c_header, 'r')
|
|
|
|
for line in f:
|
|
|
|
split = line.split()
|
|
|
|
|
|
|
|
if len(split) < 3:
|
|
|
|
continue
|
|
|
|
|
|
|
|
if not '#define' in split[0]:
|
|
|
|
continue
|
|
|
|
|
|
|
|
key = split[1]
|
|
|
|
value = split[2]
|
|
|
|
|
|
|
|
if value in all_magic:
|
|
|
|
value = all_magic[value]
|
|
|
|
else:
|
|
|
|
magic[key] = value
|
|
|
|
|
|
|
|
all_magic[key] = value
|
|
|
|
|
|
|
|
out.write('#Autogenerated. Do not edit!\n')
|
|
|
|
out.write('by_name = {}\n')
|
|
|
|
out.write('by_val = {}\n')
|
2018-05-16 06:20:22 +00:00
|
|
|
for k,v in list(magic.items()):
|
2014-12-31 14:06:47 +02:00
|
|
|
# We don't need RAW or V1 magic, because
|
|
|
|
# they can't be used to identify images.
|
|
|
|
if v == '0x0' or v == '1' or k == '0x0' or v == '1':
|
|
|
|
continue
|
|
|
|
if k.endswith("_MAGIC"):
|
|
|
|
# Just cutting _MAGIC suffix
|
|
|
|
k = k[:-6]
|
|
|
|
v = int(v, 16)
|
|
|
|
out.write("by_name['"+ k +"'] = "+ str(v) +"\n")
|
|
|
|
out.write("by_val["+ str(v) +"] = '"+ k +"'\n")
|
|
|
|
f.close()
|
|
|
|
out.close()
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main(sys.argv)
|