aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ee/souffle/digikey.dl29
-rw-r--r--src/ee/tools/part_validate_parts.py6
-rw-r--r--src/ee/tools/templates/build.ninja.j22
3 files changed, 32 insertions, 5 deletions
diff --git a/src/ee/souffle/digikey.dl b/src/ee/souffle/digikey.dl
index 06123ea..940e31d 100644
--- a/src/ee/souffle/digikey.dl
+++ b/src/ee/souffle/digikey.dl
@@ -2,5 +2,30 @@
.output fact
-fact(part, "http://purl.org/ee/fact-type/footprint", "1005") :-
- fact(part, "http://purl.org/ee/digikey-fact-key#16", "0402 (1005 Metric)").
+#define RESISTANCE "http://purl.org/ee/digikey-fact-key#2085"
+#define CAPACITANCE "http://purl.org/ee/digikey-fact-key#2049"
+#define SURFACE_MOUNT_LAND_SIZE "http://purl.org/ee/digikey-fact-key#884"
+#define PACKAGE "http://purl.org/ee/digikey-fact-key#16"
+#define MOUNTING_TYPE "http://purl.org/ee/digikey-fact-key#69"
+
+/*
+I though this rule would be good enough, but I keep on getting errors like this:
+
+warning: wrong index position provided by substr("DO-21",6,5) functor.
+
+fact(part, "http://purl.org/ee/fact-type/footprint", res) :-
+ fact(part, PACKAGE, package),
+ match(".*\([0-9][0-9][0-9][0-9] Metric\)", package),
+ res_ = substr(package, 0, strlen(package)-8),
+ res = substr(res_, 6, strlen(res_))
+ .
+*/
+
+.decl dk_to_ipc(dk:symbol, ipc:symbol)
+
+dk_to_ipc("0402 (1005 Metric)", "1005").
+dk_to_ipc("0805 (2012 Metric)", "2012").
+
+fact(part, "http://purl.org/ee/fact-type/footprint", ipc) :-
+ fact(part, "http://purl.org/ee/digikey-fact-key#16", dk),
+ dk_to_ipc(dk, ipc).
diff --git a/src/ee/tools/part_validate_parts.py b/src/ee/tools/part_validate_parts.py
index a9c5ba7..65477e5 100644
--- a/src/ee/tools/part_validate_parts.py
+++ b/src/ee/tools/part_validate_parts.py
@@ -80,7 +80,7 @@ def check_has_footprint(ctx: Context, bom: Part, sch: Part):
return ms.warning("Part has footprint in schematic and a BOM part but their footprints do not match. "
f"Footprints: part: {fp}, BOM: {supplier_fp}.")
- ms.info("Part has footprint and BOM part. Their footprints matches.")
+ return ms.info("Part has footprint and BOM part. Their footprints matches.")
def validate(f, ctx: Context, bom_part: Part, sch_part: Part):
@@ -144,7 +144,7 @@ def work(bom_path: Path, sch_path: Path, report_path: Path, part_dbs: List[Path]
print("Message index", file=f)
print("=============", file=f)
print("", file=f)
- for message, messages_ in groupby(messages.messages, lambda m: m[2]):
+ for message, messages_ in groupby(sorted(messages.messages, key=lambda m: m[2]), lambda m: m[2]):
messages = list(messages_)
print(message, file=f)
print("{}".format("-" * len(message)), file=f)
@@ -152,6 +152,8 @@ def work(bom_path: Path, sch_path: Path, report_path: Path, part_dbs: List[Path]
for m in messages:
print(" * {}".format(m[0].printable_reference), file=f)
+ print("", file=f)
+
parser = argparse.ArgumentParser()
ee.tools.add_default_argparse_group(parser)
diff --git a/src/ee/tools/templates/build.ninja.j2 b/src/ee/tools/templates/build.ninja.j2
index 206a487..e8ce404 100644
--- a/src/ee/tools/templates/build.ninja.j2
+++ b/src/ee/tools/templates/build.ninja.j2
@@ -138,7 +138,7 @@ build ee/{{ s }}/souffle/facts.dl: part-apply-souffle-pre ee/{{ s }}/downloaded.
{%- set main=souffle_ee_src + "/" + s + ".dl" %}
{%- set alt="ee/custom/" + s + "-souffle.dl" %}
-build ee/{{ s }}/souffle/out/fact.csv: souffle {{ alt if is_file(alt) else main }} | ee/{{ s }}/souffle/facts.dl
+build ee/{{ s }}/souffle/out/fact.csv: souffle {{ alt if is_file(alt) else main }} | {{ main }} ee/{{ s }}/souffle/facts.dl
work = ee/{{ s }}/souffle
build ee/{{ s }}/parts.xml: part-apply-souffle-post ee/{{ s }}/souffle/out/fact.csv