Skip to content

3D models unresolvable in CI: footprints reference ${TIS} / ${KISYS3DMOD} (blocks STEP + 3D renders) #53

Description

@ringof

Summary

The main-release CI cannot build the STEP model or 3D renders: almost every footprint references its 3D model through environment variables that don't exist in the CI image, so KiBot can't resolve the paths and crashes on the step output.

  • ${TIS} — Turn Island Systems' private 3D-model library: 193 model references (24 distinct files)
  • ${KISYS3DMOD} — deprecated KiCad env var: 19 references (test points)

Of 237 footprints: 215 reference an unresolvable model, 22 have no (model …) at all, and 3 use absolute/other paths.

Evidence

Reproduced from a failing dry-run build (historical, on the ringof fork — the error output is what matters):

ERROR: Unable to expand `TIS` in `${TIS}/TIS_3D/R-0603.step`
ERROR: Unable to expand `KISYS3DMOD` in `${KISYS3DMOD}/Pin_Headers.3dshapes/Pin_Header_Straight_1x01_Pitch2.54mm.wrl`
TypeError: expected str, bytes or os.PathLike object, not NoneType   (kibot out_step.py)

Inventory below parsed directly from TAPRX-888.kicad_pcb.

Impact

STEP + 3D renders are deferred from the release package (the step/render_* KiBot outputs remain defined but are not invoked). The 2D JLCPCB turnkey outputs — gerbers, drill, CPL, LCSC BOM — and the schematic/assembly PDFs are unaffected and build cleanly.

Two categories → two remediation paths

1. ${KISYS3DMOD} — 19 test points (quick win)

${KISYS3DMOD} is the deprecated KiCad 3D-model variable. The referenced model ships with KiCad's standard library, so these just need remapping to the current KiCad-10 variable (${KICAD10_3DMODEL_DIR}), after which they resolve with no external assets.

Model Footprints
Pin_Headers.3dshapes/Pin_Header_Straight_1x01_Pitch2.54mm.wrl TP1–TP19 (19)

2. ${TIS} — 193 refs across 24 files (needs a decision)

This is a private/local model library. Options:

  • (a) Provision TIS_3D/ into CI via a custom image layer on top of the public ghcr.io/inti-cmnb/kicad10_auto base, and set TIS — restores exactly what the designer sees; needs the files + redistribution rights.
  • (b) Remap to KiCad's standard 3D libraries where equivalents exist (0603 R/C, SOT-23/23-5/23-6, SOT-223, QFN/DFN, MSOP/TSSOP, BGA-121, USB, oscillator …). No external dependency; several map cleanly, but each needs verifying.
  • (c) Vendor the models into the repo (e.g. a 3d/ dir) and point TIS at it in CI — exact models, self-contained, at the cost of binary assets in-tree.

Suggested: do #1 now (trivial remap), and pick (a)/(b)/(c) for #2 separately.

Full ${TIS} inventory (model file → footprints)

24 model files, 193 references

Model file (${TIS}/…) Count Footprints
TIS_3D/R-0603.step 84 C4, C11–C14, C22, C25, C29, C41, C45, C47, C51, C52, C57, C60, C62, C65, C78, L1, L3–L7, L15–L17, R1–R8, R13–R61
TIS_3D/Capacitor_SMD.3dshapes/C_0603_1608Metric.step 59 C1–C3, C5–C10, C15–C21, C23, C24, C26–C28, C30–C32, C34–C40, C42–C44, C46, C48–C50, C53–C56, C58, C59, C61, C63, C64, C66–C77
TIS_3D/LQW15AN2N2G80D.STEP 7 L8–L14
TIS_3D/Package_TO_SOT_SMD.3dshapes/SOT-23.wrl 7 Q1, Q2, Q3, U12, U13, U15, U17
TIS_3D/Molex-SMA.stp 4 J1, J2, J3, J4
TIS_3D/Package_TO_SOT_SMD.3dshapes/SOT-223.step 4 U1, U2, U3, U5
TIS_3D/msop-and-tssop-packages-1.snapshot.1/MSOP-08 0.65p 3mm Pad.iges 4 R9, R10, R11, R12
TIS_3D/pin header 1x3 and jumper.stp 4 J6, J7, J8, J9
TIS_3D/Package_TO_SOT_SMD.3dshapes/SOT-23-5.wrl 3 U4, U14, U22
TIS_3D/sc70/LIB_AD8029AKSZ-R2/AD8029AKSZ-R2/3D/AD8029AKSZ-R2.stp 3 U18, U19, U21
TIS_3D/MBR120ESFT1.STEP 2 D1, D2
TIS_3D/ASTX-H12-10_000MHZ-T_ABR.step 1 X1
TIS_3D/BGA/Package_BGA.3dshapes/BGA-121_9.0x9.0mm_Layout11x11_P0.8mm.step 1 U11
TIS_3D/BUTTON-4p5X4p5.stp 1 B1
TIS_3D/Oscillator.3dshapes/Oscillator_SMD_Abracon_ASV-4Pin_7.0x5.1mm.step 1 U10
TIS_3D/Package_DFN_QFN.3dshapes/DFN-14-1EP_3x4mm_Pitch0.5mm.step 1 U7
TIS_3D/Package_DFN_QFN.3dshapes/QFN-64-1EP_9x9mm_P0.5mm_EP7.35x7.35mm.step 1 U8
TIS_3D/Package_TO_SOT_SMD.3dshapes/SOT-23-6.step 1 U16
TIS_3D/R-1206.STEP 1 C33
TIS_3D/SOIC16W.stp 1 U6
TIS_3D/connectors/USB-3.0.STEP 1 J5
TIS_3D/msop-and-tssop-packages-1.snapshot.1/MSOP-08 0.65p 3mm Pad.step 1 U9
TIS_3D/msop-and-tssop-packages-1.snapshot.1/MSOP-10 0.50p 3mm Pad.step 1 U20

${KISYS3DMOD}: Pin_Header_Straight_1x01_Pitch2.54mm.wrl → TP1–TP19 (19).

Notes for whoever picks this up

  • A few ${TIS} mappings look generic/reused and are worth a sanity check during any remap: R-0603.step is applied to resistors and capacitors and small inductors (L1, L3–L7, L15–L17); MSOP-08 …Pad.iges is applied to R9–R12 (likely a resistor-array package). These aren't wrong for a fab STEP, but a remap is a good moment to fix them.
  • The 22 footprints with no 3D model (test points/fiducials/mounting holes) are not blocking and can be left as-is.

Related: the provenance/release-CI work (provenance now delivered); STEP/renders remain the open piece here.


Migrated from ringof#45.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions