import glob
import subprocess
import json
from pathlib import Path
assert not glob.glob('/dev/nvidia*')
r = Path('/evidence')
flags = subprocess.check_output(['pkg-config','--cflags','--libs','gstreamer-1.0'],text=True).split()
subprocess.run(['g++','-std=c++14','-O0','-g',str(r/'copy_probe.cpp'),
    '-I/opt/nvidia/deepstream/deepstream/sources/includes',
    '-L/opt/nvidia/deepstream/deepstream/lib','-lnvdsgst_meta','-lnvds_meta',
    *flags,'-o',str(r/'copy_probe')],check=True,timeout=30)
results = []
for mode in (0,1,2):
    try:
        p = subprocess.run([str(r/'copy_probe'),str(mode)],capture_output=True,text=True,timeout=5)
        results.append(dict(mode=mode,returncode=p.returncode,
                            stages=[l for l in p.stdout.splitlines() if l.startswith(('copy_','release_','frame_owner_'))]))
    except subprocess.TimeoutExpired:
        results.append(dict(mode=mode,status='timeout5'))
(r/'copy-probe.json').write_text(json.dumps(results,indent=2))
print(json.dumps(results))
