mirror of
https://git.sr.ht/~kivikakk/niar
synced 2024-12-22 07:32:23 +00:00
cxxrtl: less traceback.
This commit is contained in:
parent
56234604d0
commit
6a0c97d1f5
|
@ -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__
|
||||
|
|
|
@ -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")
|
||||
cr.run()
|
||||
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)
|
||||
cr.run()
|
||||
try:
|
||||
cr.run()
|
||||
except CommandFailedError:
|
||||
logger.log(logging.INFO, "aborting on CommandFailedError")
|
||||
return
|
||||
|
||||
if not args.compile:
|
||||
cmd = [exe_o_path]
|
||||
|
|
Loading…
Reference in a new issue