#!/usr/bin/env python3 import os import sys import shutil import random import subprocess def bench(algo_dir): print(algo_dir) build_dir = None while build_dir is None: r = "%09d" % random.randint(0, 999999999) d = os.path.join("build", r) if not os.path.isdir(d): build_dir = d shutil.copytree(algo_dir, build_dir) assets_dir = "assets" hs = os.path.join(assets_dir, "crypto_aead.h") h = os.path.join(build_dir, "crypto_aead.h") shutil.copy(hs, h) ms = os.path.join(assets_dir, "main.c") m = os.path.join(build_dir, "main.c") shutil.copy(ms, m) c = os.path.join(build_dir, "genkat_aead.c") if os.path.exists(c): os.remove(c) wd = os.getcwd() try: os.chdir(build_dir) cfiles = [] for r, d, f in os.walk("."): for file in f: if file.endswith(".c"): cfiles.append(file) pargs = ['gcc'] pargs.extend(cfiles) pargs.extend(["-o", "test"]) p = subprocess.Popen(pargs) compout, comperr = p.communicate() print(compout) print("---") print(comperr) finally: os.chdir(wd) # shutil.rmtree(build_dir) #exit(0) # stop immediately for now def main(*argv): submissions_dir = "all-lwc-submission-files" subs = os.listdir(submissions_dir) files = set() for submission in subs: implementations_dir = os.path.join(submissions_dir, submission, "Implementations", "crypto_aead") # r=root, d=directories, f = files for r, d, f in os.walk(implementations_dir): for file in f: if file == "encrypt.c": f = os.path.join(r, file) d = os.path.split(f)[0] bench(d) assert os.path.isdir(d) files.add(d) print() if __name__ == "__main__": sys.exit(main(sys.argv))