xref: /qemu/scripts/qemu-stamp.py (revision b0b4323e)
1b0b4323eSPaolo Bonzini#! /usr/bin/env python3
2b0b4323eSPaolo Bonzini
3b0b4323eSPaolo Bonzini# Usage: scripts/qemu-stamp.py STRING1 STRING2... -- FILE1 FILE2...
4b0b4323eSPaolo Bonziniimport hashlib
5b0b4323eSPaolo Bonziniimport os
6b0b4323eSPaolo Bonziniimport sys
7b0b4323eSPaolo Bonzini
8b0b4323eSPaolo Bonzinisha = hashlib.sha1()
9b0b4323eSPaolo Bonziniis_file = False
10b0b4323eSPaolo Bonzinifor arg in sys.argv[1:]:
11b0b4323eSPaolo Bonzini    if arg == '--':
12b0b4323eSPaolo Bonzini        is_file = True
13b0b4323eSPaolo Bonzini        continue
14b0b4323eSPaolo Bonzini    if is_file:
15b0b4323eSPaolo Bonzini        with open(arg, 'rb') as f:
16b0b4323eSPaolo Bonzini            for chunk in iter(lambda: f.read(65536), b''):
17b0b4323eSPaolo Bonzini                sha.update(chunk)
18b0b4323eSPaolo Bonzini    else:
19b0b4323eSPaolo Bonzini        sha.update(os.fsencode(arg))
20b0b4323eSPaolo Bonzini        sha.update(b'\n')
21b0b4323eSPaolo Bonzini
22b0b4323eSPaolo Bonzini# The hash can start with a digit, which the compiler doesn't
23b0b4323eSPaolo Bonzini# like as an symbol. So prefix it with an underscore
24b0b4323eSPaolo Bonziniprint("_" + sha.hexdigest())
25