diff options
Diffstat (limited to 'src/ee/tools/ninja.py')
-rw-r--r-- | src/ee/tools/ninja.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/ee/tools/ninja.py b/src/ee/tools/ninja.py index 3df8796..c669ad1 100644 --- a/src/ee/tools/ninja.py +++ b/src/ee/tools/ninja.py @@ -13,8 +13,9 @@ from ee.project import Project, SupplierDescriptor class NinjaSupplier(object): - def __init__(self, project: Project, supplier: SupplierDescriptor): + def __init__(self, project: Project, souffle_ee_src: Path, supplier: SupplierDescriptor): self.project = project + self.souffle_ee_src = souffle_ee_src self.supplier = supplier self.key = supplier.key @@ -31,6 +32,13 @@ class NinjaSupplier(object): # This needs to be configurable per supplier return "$public_dir/{}/bom.csv".format(self.key) + @property + def souffle_script(self): + build_it = self.souffle_ee_src / (self.key + ".dl") + custom = self.project.public_dir / "custom" / (self.key + "-souffle.dl") + + return custom if custom.is_file() else build_it + def ninja_path_filter(s: Union[Path, str, List[str]]) -> str: if isinstance(s, Path): @@ -75,10 +83,11 @@ def generate(project: Project): e.filters["noext"] = noext_filter return e + souffle_ee_src = Path(__file__).parent.parent / "souffle" params = { "ee": "{} -m ee".format(os.path.relpath(sys.executable, Path("."))), "project": project, - "souffle_ee_src": str(Path(__file__).parent.parent / "souffle"), + "souffle_ee_src": str(souffle_ee_src), "is_file": lambda p: os.path.isfile(str(p)), } @@ -103,7 +112,7 @@ def generate(project: Project): params["pcb"] = Path(project.cfg["kicad-project"]["pcb"]) gerber_zip = "prod/gerber.zip" - params["suppliers"] = [NinjaSupplier(project, s) for s in project.suppliers] + params["suppliers"] = [NinjaSupplier(project, souffle_ee_src, s) for s in project.suppliers] if gerber_zip is not None: params["gerber_zip"] = gerber_zip |