mirror of
https://github.com/YosysHQ/sby.git
synced 2025-04-12 16:28:17 +00:00
Add "sby -t", improve handling of stdin
This commit is contained in:
parent
bb5e134164
commit
20b8b8fe9f
|
@ -25,6 +25,7 @@ sbyfile = None
|
||||||
workdir = None
|
workdir = None
|
||||||
opt_force = False
|
opt_force = False
|
||||||
opt_backup = False
|
opt_backup = False
|
||||||
|
opt_tmpdir = False
|
||||||
exe_paths = dict()
|
exe_paths = dict()
|
||||||
|
|
||||||
def usage():
|
def usage():
|
||||||
|
@ -40,6 +41,9 @@ sby [options] [<jobname>.sby]
|
||||||
-b
|
-b
|
||||||
backup workdir if it already exists
|
backup workdir if it already exists
|
||||||
|
|
||||||
|
-t
|
||||||
|
run in a temporary workdir (remove when finished)
|
||||||
|
|
||||||
--yosys <path_to_executable>
|
--yosys <path_to_executable>
|
||||||
--abc <path_to_executable>
|
--abc <path_to_executable>
|
||||||
--smtbmc <path_to_executable>
|
--smtbmc <path_to_executable>
|
||||||
|
@ -51,7 +55,7 @@ sby [options] [<jobname>.sby]
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.getopt(sys.argv[1:], "d:bf", ["yosys=",
|
opts, args = getopt.getopt(sys.argv[1:], "d:btf", ["yosys=",
|
||||||
"abc=", "smtbmc=", "suprove=", "aigbmc=", "avy="])
|
"abc=", "smtbmc=", "suprove=", "aigbmc=", "avy="])
|
||||||
except:
|
except:
|
||||||
usage()
|
usage()
|
||||||
|
@ -63,6 +67,8 @@ for o, a in opts:
|
||||||
opt_force = True
|
opt_force = True
|
||||||
elif o == "-b":
|
elif o == "-b":
|
||||||
opt_backup = True
|
opt_backup = True
|
||||||
|
elif o == "-t":
|
||||||
|
opt_tmpdir = True
|
||||||
elif o == "--yosys":
|
elif o == "--yosys":
|
||||||
exe_paths["yosys"] = a
|
exe_paths["yosys"] = a
|
||||||
elif o == "--abc":
|
elif o == "--abc":
|
||||||
|
@ -91,27 +97,28 @@ def early_log(msg):
|
||||||
early_logmsgs.append("SBY [%s] %s" % (workdir, msg))
|
early_logmsgs.append("SBY [%s] %s" % (workdir, msg))
|
||||||
print(early_logmsgs[-1])
|
print(early_logmsgs[-1])
|
||||||
|
|
||||||
if workdir is None:
|
if workdir is None and sbyfile is not None and not opt_tmpdir:
|
||||||
if sbyfile:
|
workdir = sbyfile[:-4]
|
||||||
workdir = sbyfile[:-4]
|
|
||||||
else:
|
|
||||||
workdir = tempfile.mkdtemp()
|
|
||||||
|
|
||||||
if opt_backup:
|
if workdir is not None:
|
||||||
backup_idx = 0
|
if opt_backup:
|
||||||
while os.path.exists("%s.bak%03d" % (workdir, backup_idx)):
|
backup_idx = 0
|
||||||
backup_idx += 1
|
while os.path.exists("%s.bak%03d" % (workdir, backup_idx)):
|
||||||
early_log("Moving direcory '%s' to '%s'." % (workdir, "%s.bak%03d" % (workdir, backup_idx)))
|
backup_idx += 1
|
||||||
shutil.move(workdir, "%s.bak%03d" % (workdir, backup_idx))
|
early_log("Moving direcory '%s' to '%s'." % (workdir, "%s.bak%03d" % (workdir, backup_idx)))
|
||||||
|
shutil.move(workdir, "%s.bak%03d" % (workdir, backup_idx))
|
||||||
|
|
||||||
if opt_force:
|
if opt_force:
|
||||||
early_log("Removing direcory '%s'." % (workdir))
|
early_log("Removing direcory '%s'." % (workdir))
|
||||||
if sbyfile:
|
if sbyfile:
|
||||||
shutil.rmtree(workdir, ignore_errors=True)
|
shutil.rmtree(workdir, ignore_errors=True)
|
||||||
|
|
||||||
if sbyfile:
|
|
||||||
os.makedirs(workdir)
|
os.makedirs(workdir)
|
||||||
|
|
||||||
|
else:
|
||||||
|
opt_tmpdir = True
|
||||||
|
workdir = tempfile.mkdtemp()
|
||||||
|
|
||||||
job = SbyJob(sbyfile, workdir, early_logmsgs)
|
job = SbyJob(sbyfile, workdir, early_logmsgs)
|
||||||
|
|
||||||
for k, v in exe_paths.items():
|
for k, v in exe_paths.items():
|
||||||
|
@ -119,8 +126,10 @@ for k, v in exe_paths.items():
|
||||||
|
|
||||||
job.run()
|
job.run()
|
||||||
|
|
||||||
if not sbyfile:
|
if opt_tmpdir:
|
||||||
|
job.log("Removing direcory '%s'." % (workdir))
|
||||||
shutil.rmtree(workdir, ignore_errors=True)
|
shutil.rmtree(workdir, ignore_errors=True)
|
||||||
|
|
||||||
|
job.log("DONE (%s, rc=%d)" % (job.status, job.retcode))
|
||||||
sys.exit(job.retcode)
|
sys.exit(job.retcode)
|
||||||
|
|
||||||
|
|
|
@ -520,8 +520,6 @@ class SbyJob:
|
||||||
if self.status == "UNKNOWN": self.retcode = 4
|
if self.status == "UNKNOWN": self.retcode = 4
|
||||||
if self.status == "TIMEOUT": self.retcode = 5
|
if self.status == "TIMEOUT": self.retcode = 5
|
||||||
|
|
||||||
self.log("DONE (%s, rc=%d)" % (self.status, self.retcode))
|
|
||||||
|
|
||||||
with open("%s/%s" % (self.workdir, self.status), "w") as f:
|
with open("%s/%s" % (self.workdir, self.status), "w") as f:
|
||||||
for line in self.summary:
|
for line in self.summary:
|
||||||
print(line, file=f)
|
print(line, file=f)
|
||||||
|
|
Loading…
Reference in a new issue