import os, hashlib, time, numpy, sys, datetime
name = 'cat'
allowed_chars = 'abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def hashid(n):
m = hashlib.sha1()
m.update(str(n).encode('utf-8'))
name = ''
for i in m.digest()[:24]:
name += allowed_chars[i % len(allowed_chars)]
return name+('_%d' % n)
def hash_integer(n):
m = hashlib.sha1()
m.update(str(n))
name = 0
for i in m.digest()[:8]:
name = name*256 + ord(i)
return name
def open_and_gitadd(fname):
f = open(fname, 'w')
assert(not os.system('git add '+fname))
return f
def create_bench(n):
sconsf = open_and_gitadd('SConstruct')
facf = open_and_gitadd('top.fac')
open_and_gitadd('Tupfile.ini')
sconsf.write("""
env = Environment()
""")
facf.write("""
| cat %s.txt > final.txt
> final.txt
< %s.txt
""" % (hashid(n), hashid(n)))
f = open_and_gitadd('%s.txt' % hashid(0))
f.write("Hello world\n")
for i in range(1,n+1):
sconsf.write("""
env.Command('%s.txt', '%s.txt', 'cat $SOURCE > $TARGET')
""" % (hashid(i), hashid(i-1)))
facf.write("""
| cat %s.txt > %s.txt
< %s.txt
> %s.txt
""" % (hashid(i-1), hashid(i), hashid(i-1), hashid(i)))
verbs = ['building', 'rebuilding', 'doing-nothing']
def prepare():
return {'rebuilding': 'sleep 1 && echo silly > %s.txt' % hashid(0)}
if __name__ == "__main__":
import sys
size = 10
if len(sys.argv) > 1:
size = int(sys.argv[1])
create_bench(size)
with open("rebuilding.sh", "w") as f:
f.write(prepare()["rebuilding"])