Atlassian uses cookies to improve your browsing experience, perform analytics and research, and conduct advertising. Accept all cookies to indicate that you agree to our use of cookies on your device. Atlassian cookies and tracking notice, (opens new window)
Stacktrace when compiling with --compile-opts that includes a space specified via deps.edn alias
Key details
Description
Compiling some cljs code using a deps.edn alias with :main-opts to pass the --compile-opts to cljs compiler causes a stracktrace when the --compile-opts EDN string contains a space.
$ clj -Abuild
Exception in thread "main" java.lang.RuntimeException: EOF while reading
at clojure.lang.Util.runtimeException(Util.java:221)
at clojure.lang.EdnReader.readDelimitedList(EdnReader.java:746)
at clojure.lang.EdnReader$MapReader.invoke(EdnReader.java:680)
at clojure.lang.EdnReader.read(EdnReader.java:145)
at clojure.lang.EdnReader.read(EdnReader.java:111)
at clojure.lang.EdnReader.readString(EdnReader.java:67)
at clojure.edn$read_string.invokeStatic(edn.clj:46)
at clojure.edn$read_string.invokeStatic(edn.clj:37)
at clojure.edn$read_string.invoke(edn.clj:37)
at cljs.cli$compile_opts_opt.invokeStatic(cli.clj:235)
at cljs.cli$compile_opts_opt.invoke(cli.clj:231)
at cljs.cli$initialize$fn__6704.invoke(cli.clj:277)
at clojure.lang.PersistentVector.reduce(PersistentVector.java:341)
at clojure.core$reduce.invokeStatic(core.clj:6747)
at clojure.core$reduce.invoke(core.clj:6730)
at cljs.cli$initialize.invokeStatic(cli.clj:275)
at cljs.cli$initialize.invoke(cli.clj:272)
at cljs.cli$main.invokeStatic(cli.clj:635)
at cljs.cli$main.doInvoke(cli.clj:623)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$apply.invoke(core.clj:652)
at cljs.main$_main.invokeStatic(main.clj:61)
at cljs.main$_main.doInvoke(main.clj:52)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.main$main_opt.invokeStatic(main.clj:317)
at clojure.main$main_opt.invoke(main.clj:313)
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)
Compiling some cljs code using a deps.edn alias with :main-opts to pass the --compile-opts to cljs compiler causes a stracktrace when the --compile-opts EDN string contains a space.
{:deps {org.clojure/clojurescript {:mvn/version "1.10.287"}} :aliases {:build {:main-opts ["-m" "cljs.main" "--compile-opts" "{:optimizations :advanced}" "--compile" "hello-world.core"]}}}Replacing the spaces with commas makes it work.
{:deps {org.clojure/clojurescript {:mvn/version "1.10.287"}} :aliases {:build {:main-opts ["-m" "cljs.main" "--compile-opts" "{:optimizations,:advanced}" "--compile" "hello-world.core"]}}}See this git repo for a minimal reproduction of the problem https://github.com/grahamcarlyle/deps.edn-compile-opts-bug
Produces this stack trace
$ clj -Abuild Exception in thread "main" java.lang.RuntimeException: EOF while reading at clojure.lang.Util.runtimeException(Util.java:221) at clojure.lang.EdnReader.readDelimitedList(EdnReader.java:746) at clojure.lang.EdnReader$MapReader.invoke(EdnReader.java:680) at clojure.lang.EdnReader.read(EdnReader.java:145) at clojure.lang.EdnReader.read(EdnReader.java:111) at clojure.lang.EdnReader.readString(EdnReader.java:67) at clojure.edn$read_string.invokeStatic(edn.clj:46) at clojure.edn$read_string.invokeStatic(edn.clj:37) at clojure.edn$read_string.invoke(edn.clj:37) at cljs.cli$compile_opts_opt.invokeStatic(cli.clj:235) at cljs.cli$compile_opts_opt.invoke(cli.clj:231) at cljs.cli$initialize$fn__6704.invoke(cli.clj:277) at clojure.lang.PersistentVector.reduce(PersistentVector.java:341) at clojure.core$reduce.invokeStatic(core.clj:6747) at clojure.core$reduce.invoke(core.clj:6730) at cljs.cli$initialize.invokeStatic(cli.clj:275) at cljs.cli$initialize.invoke(cli.clj:272) at cljs.cli$main.invokeStatic(cli.clj:635) at cljs.cli$main.doInvoke(cli.clj:623) at clojure.lang.RestFn.applyTo(RestFn.java:139) at clojure.core$apply.invokeStatic(core.clj:659) at clojure.core$apply.invoke(core.clj:652) at cljs.main$_main.invokeStatic(main.clj:61) at cljs.main$_main.doInvoke(main.clj:52) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.lang.Var.applyTo(Var.java:702) at clojure.core$apply.invokeStatic(core.clj:657) at clojure.main$main_opt.invokeStatic(main.clj:317) at clojure.main$main_opt.invoke(main.clj:313) 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)