1
0
Fork 0
mirror of https://git.sr.ht/~kivikakk/niar synced 2024-12-22 13:32:24 +00:00

cxxrtl: less traceback.

This commit is contained in:
Asherah Connor 2024-09-27 17:32:55 +10:00
parent 56234604d0
commit 6a0c97d1f5
2 changed files with 19 additions and 5 deletions

View file

@ -5,7 +5,7 @@ import subprocess
from .logging import logger
__all__ = ["CompilationUnit", "CommandRunner"]
__all__ = ["CompilationUnit", "CommandRunner", "CommandFailedError"]
class CompilationUnit:
@ -76,6 +76,8 @@ class CompilationUnit:
with open(inf, "rb") as f:
r[str(inf)] = f.read()
return r
class CommandRunner:
cus: list[CompilationUnit]
@ -128,7 +130,7 @@ class CommandRunner:
logger.error("the following process(es) failed:")
for cu in failed:
logger.error(f" {formatted(cu)}")
raise RuntimeError(f"failed {step} step")
raise CommandFailedError(f"failed {step} step")
for cu, _ in runnables:
cu.mark_up_to_date()
@ -144,6 +146,10 @@ class CommandRunner:
logger.info(f"{action} {formatted(cu)}")
class CommandFailedError(RuntimeError):
pass
def formatted(cu):
if inspect.isfunction(cu.cmd):
return cu.cmd.__name__

View file

@ -12,7 +12,7 @@ from amaranth._toolchain.yosys import find_yosys
from amaranth.back import rtlil
from .build import construct_top
from .cmdrunner import CommandRunner
from .cmdrunner import CommandRunner, CommandFailedError
from .logging import logtime, logger
from .project import Project
@ -251,7 +251,11 @@ def main(np: Project, args):
infs=cc_o_paths + list(np.path("cxxrtl").glob("**/*.zig")),
outf=outf,
chdir="cxxrtl")
try:
cr.run()
except CommandFailedError:
logger.log(logging.INFO, "aborting on CommandFailedError")
return
shutil.copy(outf, exe_o_path)
else:
cmd = [
@ -266,7 +270,11 @@ def main(np: Project, args):
cr.add_process(cmd,
infs=cc_o_paths,
outf=exe_o_path)
try:
cr.run()
except CommandFailedError:
logger.log(logging.INFO, "aborting on CommandFailedError")
return
if not args.compile:
cmd = [exe_o_path]