build_gcov_files.py
49 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
/ libgcov / build_gcov_files.py
r387 | #!/usr/bin/env python3 | |||
__author__ = "Alexis Jeandet" | ||||
__copyright__ = "Copyright 2018, Laboratory of Plasma Physics" | ||||
__credits__ = [] | ||||
__license__ = "GPLv2" | ||||
__version__ = "1.0.0" | ||||
__maintainer__ = "Alexis Jeandet" | ||||
__email__ = "alexis.jeandet@member.fsf.org" | ||||
__status__ = "Development" | ||||
import time | ||||
import sys | ||||
import os | ||||
import serial | ||||
import argparse | ||||
from datetime import datetime | ||||
r398 | import pathlib | |||
from shutil import copyfile | ||||
r387 | ||||
parser = argparse.ArgumentParser() | ||||
r398 | parser.add_argument("-r", "--remove-prefix", help="Will remove given prefix path", default="") | |||
parser.add_argument("-o", "--output-folder", help="Will prepend given path to gcda files", default="") | ||||
parser.add_argument("file", help="Gcov output file generated by record_lfr_console.py") | ||||
r387 | args = parser.parse_args() | |||
def main(): | ||||
r398 | with open(args.file, 'r') as gcov: | |||
r388 | files = [] | |||
r387 | for line in gcov.readlines(): | |||
r398 | head, dest_file,data = line.split(',') | |||
r388 | if dest_file not in files: | |||
files.append(dest_file) | ||||
if head == '_GCOV_': | ||||
r398 | gcno_file = dest_file.replace(".gcda",".gcno") | |||
dest_file = dest_file.replace(args.remove_prefix, args.output_folder) | ||||
pathlib.Path(os.path.dirname(dest_file)).mkdir(parents=True, exist_ok=True) | ||||
copyfile(gcno_file, gcno_file.replace(args.remove_prefix, args.output_folder)) | ||||
r388 | print(f"Writing {dest_file}\n") | |||
with open(dest_file,'wb') as gcda_file: | ||||
gcda_file.write(bytes([int(''.join(value),16) for value in zip(data[::2],data[1::2]) ])) | ||||
else: | ||||
raise | ||||
r387 | ||||
if __name__ == "__main__": | ||||
main() | ||||