veikman / dactyl-keyboard

Programmatic keyboard CAD
GNU Affero General Public License v3.0
270 stars 31 forks source link

`Divide by zero` and other errors out of the box #31

Closed tgecho closed 2 years ago

tgecho commented 2 years ago

I'm on MacOS with these installed via homebrew:

I get the following exception when I start following through the tutorial:

$ lein run
Exception in thread "main" java.lang.ArithmeticException: Divide by zero, compiling:(/private/var/folders/rd/wv69_b9162zd60yfpdxb3kpm0000gn/T/form-init773116273006867215.clj:1:124)
    at clojure.lang.Compiler.load(Compiler.java:7526)
    at clojure.lang.Compiler.loadFile(Compiler.java:7452)
    at clojure.main$load_script.invokeStatic(main.clj:278)
    at clojure.main$init_opt.invokeStatic(main.clj:280)
    at clojure.main$init_opt.invoke(main.clj:280)
    at clojure.main$initialize.invokeStatic(main.clj:311)
    at clojure.main$null_opt.invokeStatic(main.clj:345)
    at clojure.main$null_opt.invoke(main.clj:342)
    at clojure.main$main.invokeStatic(main.clj:424)
    at clojure.main$main.doInvoke(main.clj:387)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.lang.Var.applyTo(Var.java:702)
    at clojure.main.main(main.java:37)
Caused by: java.lang.ArithmeticException: Divide by zero
    at clojure.lang.Numbers.divide(Numbers.java:163)
    at scad_tarmi.dfm$ratio.invokeStatic(dfm.clj:40)
    at scad_tarmi.dfm$ratio.invoke(dfm.clj:40)
    at scad_tarmi.dfm$error_fn$compensator__4233.doInvoke(dfm.clj:62)
    at clojure.lang.RestFn.invoke(RestFn.java:425)
    at scad_tarmi.dfm$error_fn$compensator__4233.invoke(dfm.clj:55)
    at dactyl_keyboard.cad.key.switch$cap_channel_negative$step__1713.invoke(switch.clj:52)
    at dactyl_keyboard.cad.key.switch$cap_channel_negative.invokeStatic(switch.clj:68)
    at dactyl_keyboard.cad.key.switch$cap_channel_negative.invoke(switch.clj:46)
    at dactyl_keyboard.cad.key$cluster_channels$modeller__2299.invoke(key.clj:285)
    at dactyl_keyboard.cad.key$cluster_channels$fn__2303.invoke(key.clj:290)
    at clojure.core$map$fn__5587.invoke(core.clj:2745)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.RT.seq(RT.java:528)
    at clojure.core$seq__5124.invokeStatic(core.clj:137)
    at clojure.core$apply.invokeStatic(core.clj:652)
    at clojure.core$apply.invoke(core.clj:652)
    at dactyl_keyboard.cad.key$cluster_channels.invokeStatic(key.clj:289)
    at dactyl_keyboard.cad.key$cluster_channels.invoke(key.clj:282)
    at dactyl_keyboard.cad.key$metacluster$fn__2311.invoke(key.clj:302)
    at clojure.core$map$fn__5587.invoke(core.clj:2747)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.RT.seq(RT.java:528)
    at clojure.core$seq__5124.invokeStatic(core.clj:137)
    at clojure.core$apply.invokeStatic(core.clj:652)
    at clojure.core$apply.invoke(core.clj:652)
    at dactyl_keyboard.cad.key$metacluster.invokeStatic(key.clj:302)
    at dactyl_keyboard.cad.key$metacluster.invoke(key.clj:299)
    at dactyl_keyboard.cad.body.assembly$main_body_right.invokeStatic(assembly.clj:215)
    at dactyl_keyboard.cad.body.assembly$main_body_right.invoke(assembly.clj:205)
    at dactyl_keyboard.core$finalize_asset.invokeStatic(core.clj:298)
    at dactyl_keyboard.core$finalize_asset.invoke(core.clj:286)
    at clojure.core$partial$fn__5563.invoke(core.clj:2624)
    at clojure.core$partial$fn__5561.invoke(core.clj:2616)
    at clojure.core$map$fn__5587.invoke(core.clj:2745)
    at clojure.lang.LazySeq.sval(LazySeq.java:40)
    at clojure.lang.LazySeq.seq(LazySeq.java:49)
    at clojure.lang.RT.seq(RT.java:528)
    at clojure.core$seq__5124.invokeStatic(core.clj:137)
    at clojure.core$apply.invokeStatic(core.clj:652)
    at clojure.core$mapcat.invokeStatic(core.clj:2775)
    at clojure.core$mapcat.doInvoke(core.clj:2775)
    at clojure.lang.RestFn.invoke(RestFn.java:423)
    at scad_app.core$refine_all.invokeStatic(core.clj:265)
    at scad_app.core$refine_all.invoke(core.clj:260)
    at dactyl_keyboard.core$builtin_assets.invokeStatic(core.clj:306)
    at dactyl_keyboard.core$builtin_assets.invoke(core.clj:303)
    at dactyl_keyboard.core$run.invokeStatic(core.clj:360)
    at dactyl_keyboard.core$run.invoke(core.clj:355)
    at dactyl_keyboard.core$execute_mode.invokeStatic(core.clj:389)
    at dactyl_keyboard.core$execute_mode.invoke(core.clj:378)
    at dactyl_keyboard.core$_main.invokeStatic(core.clj:412)
    at dactyl_keyboard.core$_main.doInvoke(core.clj:408)
    at clojure.lang.RestFn.invoke(RestFn.java:397)
    at clojure.lang.Var.invoke(Var.java:377)
    at user$eval149.invokeStatic(form-init773116273006867215.clj:1)
    at user$eval149.invoke(form-init773116273006867215.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:7062)
    at clojure.lang.Compiler.eval(Compiler.java:7052)
    at clojure.lang.Compiler.load(Compiler.java:7514)
    ... 12 more

It only succeeds when I jump to the step where I run lein run -c config/base.yaml -c butty.yaml

Trying to build lein run -c config/dactyl_manuform/base.yaml also fails with this exception.

This happens on the latest commit (651532cd5bb400666ec5d70ba4dd1cb0dada34a1) as well as the dmote-v0.7.0 tag. I tried going to even earlier tags but started getting dependency errors.

tgecho commented 2 years ago

I realized later that I needed to lein run -c config/base.yaml -c config/dactyl_manuform/base.yaml (as per the docs), but it still stands that the first step of the intro will trigger this exception.

veikman commented 2 years ago

Thank you for reporting this. I have traced the problem to scad-tarmi and will release a fix tomorrow.