import subprocess
import pathlib
import json
import os

root = pathlib.Path('/evidence')
result = {'conditions': [], 'network': 'none', 'input': 'synthetic', 'model_execution': False}
command = ['g++', '-std=c++14', '/evidence/mux_copy.cpp', '-o', '/evidence/mux_copy',
           '-I/opt/nvidia/deepstream/deepstream/sources/includes', '-I/usr/local/cuda/include',
           '-L/opt/nvidia/deepstream/deepstream/lib', '-L/usr/local/cuda/lib64',
           '-lnvdsgst_meta', '-lnvds_meta', '-lnvbufsurface', '-lcudart']
command += subprocess.check_output(['pkg-config', '--cflags', '--libs', 'gstreamer-app-1.0'], text=True).split()
with (root/'compile.log').open('w') as log:
    compile_result = subprocess.run(command, stdout=log, stderr=subprocess.STDOUT, timeout=45)
result['compile_returncode'] = compile_result.returncode
if compile_result.returncode == 0:
    for marker in (0, 1):
        with (root/f'marker-{marker}.log').open('w') as log:
            try:
                p = subprocess.run(['/evidence/mux_copy', str(marker)], stdout=log,
                                   stderr=subprocess.STDOUT, timeout=30)
                code = p.returncode
            except subprocess.TimeoutExpired:
                code = 'timeout'
        result['conditions'].append({'marker': bool(marker), 'returncode': code})
(root/'result.json').write_text(json.dumps(result, indent=2))
print(json.dumps(result))
