clojure-android / lein-droid

A Leiningen plugin for building Clojure/Android projects
Eclipse Public License 1.0
645 stars 56 forks source link

Release build fails with `Cyclic load dependency` on generated new project on lein-droid 0.3.0-beta4 #115

Closed sakuraiyuta closed 9 years ago

sakuraiyuta commented 9 years ago

Using lein-droid 0.3.0-beta4 and create new project with lein droid new, cannot build release version. Anything there my mistakes?

$ lein droid new sample sample.app
$ cd sample/
$ vi project.clj # only fix was uncomment `[:android-common]` element.
$ lein clean && lein droid doall # debug build works well.
$ lein clean && DEBUG=1 lein with-profile release droid doall 2>&1 | tee release.log
# Exception "Cyclic load dependency" occured.

I found out that works when fixes :aot :all to :aot :all-with-unused in project.clj :release section. It seems something bad occured on AOT.

My ${HOME}/.lein/profiles.clj:

{:user {:plugins [[lein-pprint "1.1.1"]
                  [lein-droid "0.3.0-beta4"]]
        :dev {:android {:sdk-path "/opt/android-sdk"}}}
 :android-common {:android {:sdk-path "/opt/android-sdk"
                            :keypass "android"
                            :storepass "android"}}}

release-build log:

Leiningen's classpath: /home/yuta/.lein/self-installs/leiningen-2.5.0-standalone.jar
(Warning: profile :android-user not found.)
Applying task with-profile to [release droid doall]
Applying task droid to (doall)
Generating manifest...
Generating R.java...
/opt/android-sdk/build-tools/21.1.1/aapt package --auto-add-overlay -f -m -M /home/yuta/temp/sample/target/release/AndroidManifest.xml -S /home/yuta/temp/sample/target/release/res -S /home/yuta/temp/sample/res -I /opt/android-sdk/platforms/android-15/android.jar -J /home/yuta/temp/sample/target/release/gen --generate-dependencies
Applying task javac to nil
Running javac with [-target 1.6 -source 1.6 -Xlint:-options @/tmp/.leiningen-cmdline494388223114043654.tmp]
Compiling 2 source files to /home/yuta/temp/sample/target/release/classes
Applying task compile to nil
All namespaces already AOT compiled.
Running javac with [-target 1.6 -source 1.6 -Xlint:-options @/tmp/.leiningen-cmdline6934353825400067764.tmp]
Compiling Clojure files...
Project classpath: (/opt/android-sdk/tools/support/annotations.jar /opt/android-sdk/platforms/android-15/android.jar /home/yuta/temp/sample/test /home/yuta/temp/sample/src/clojure /home/yuta/temp/sample/src /home/yuta/temp/sample/resources /home/yuta/temp/sample/target/release/classes /home/yuta/.m2/repository/org/clojure-android/clojure/1.7.0-alpha3/clojure-1.7.0-alpha3.jar /home/yuta/.m2/repository/neko/neko/3.1.0-preview2/neko-3.1.0-preview2.jar)
Build type: release, dynamic compilation: disabled, remote REPL: disabled.
Applying task javac to nil
Running javac with [-target 1.6 -source 1.6 -Xlint:-options @/tmp/.leiningen-cmdline613994407569364963.tmp]
Compiling neko.init
Compiling sample.app.main
Exception in thread "main" java.lang.Exception: Cyclic load dependency: [ /neko/activity ]->/neko/ui/traits->/neko/ui->[ /neko/activity ]->/sample/app/main, compiling:(neko/ui/traits.clj:163:1)
    at clojure.core$throw_if.doInvoke(core.clj:5576)
    at clojure.lang.RestFn.invoke(RestFn.java:442)
    at clojure.core$check_cyclic_dependency.invoke(core.clj:5712)
    at clojure.core$load.doInvoke(core.clj:5809)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5617)
    at clojure.core$load_lib$fn__5354.invoke(core.clj:5657)
    at clojure.core$load_lib.doInvoke(core.clj:5656)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:628)
    at clojure.core$load_libs.doInvoke(core.clj:5695)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:628)
    at clojure.core$require.doInvoke(core.clj:5778)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3597)
    at clojure.lang.Compiler.compile1(Compiler.java:7290)
    at clojure.lang.Compiler.compile(Compiler.java:7356)
    at clojure.lang.RT.compile(RT.java:423)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:436)
    at clojure.core$load$fn__5405.invoke(core.clj:5812)
    at clojure.core$load.doInvoke(core.clj:5811)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5617)
    at clojure.core$load_lib$fn__5354.invoke(core.clj:5657)
    at clojure.core$load_lib.doInvoke(core.clj:5656)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:628)
    at clojure.core$load_libs.doInvoke(core.clj:5695)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:630)
    at clojure.core$use.doInvoke(core.clj:5789)
    at clojure.lang.RestFn.invoke(RestFn.java:436)
    at neko.ui$loading__5297__auto____217.invoke(ui.clj:1)
    at clojure.lang.AFn.applyToHelper(AFn.java:152)
    at clojure.lang.AFn.applyTo(AFn.java:144)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3597)
    at clojure.lang.Compiler.compile1(Compiler.java:7290)
    at clojure.lang.Compiler.compile1(Compiler.java:7280)
    at clojure.lang.Compiler.compile(Compiler.java:7356)
    at clojure.lang.RT.compile(RT.java:423)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:436)
    at clojure.core$load$fn__5405.invoke(core.clj:5812)
    at clojure.core$load.doInvoke(core.clj:5811)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5617)
    at clojure.core$load_lib$fn__5354.invoke(core.clj:5657)
    at clojure.core$load_lib.doInvoke(core.clj:5656)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:628)
    at clojure.core$load_libs.doInvoke(core.clj:5695)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:628)
    at clojure.core$require.doInvoke(core.clj:5778)
    at clojure.lang.RestFn.invoke(RestFn.java:436)
    at neko.activity$loading__5297__auto____215.invoke(activity.clj:12)
    at clojure.lang.AFn.applyToHelper(AFn.java:152)
    at clojure.lang.AFn.applyTo(AFn.java:144)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3597)
    at clojure.lang.Compiler.compile1(Compiler.java:7290)
    at clojure.lang.Compiler.compile1(Compiler.java:7280)
    at clojure.lang.Compiler.compile(Compiler.java:7356)
    at clojure.lang.RT.compile(RT.java:423)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:436)
    at clojure.core$load$fn__5405.invoke(core.clj:5812)
    at clojure.core$load.doInvoke(core.clj:5811)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5617)
    at clojure.core$load_lib$fn__5354.invoke(core.clj:5657)
    at clojure.core$load_lib.doInvoke(core.clj:5656)
    at clojure.lang.RestFn.applyTo(RestFn.java:142)
    at clojure.core$apply.invoke(core.clj:628)
    at clojure.core$load_libs.doInvoke(core.clj:5695)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:630)
    at clojure.core$use.doInvoke(core.clj:5789)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at sample.app.main$loading__5297__auto____213.invoke(main.clj:1)
    at clojure.lang.AFn.applyToHelper(AFn.java:152)
    at clojure.lang.AFn.applyTo(AFn.java:144)
    at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3597)
    at clojure.lang.Compiler.compile1(Compiler.java:7290)
    at clojure.lang.Compiler.compile1(Compiler.java:7280)
    at clojure.lang.Compiler.compile(Compiler.java:7356)
    at clojure.lang.RT.compile(RT.java:423)
    at clojure.lang.RT.load(RT.java:463)
    at clojure.lang.RT.load(RT.java:436)
    at clojure.core$load$fn__5405.invoke(core.clj:5812)
    at clojure.core$load.doInvoke(core.clj:5811)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at clojure.core$load_one.invoke(core.clj:5617)
    at clojure.core$compile$fn__5410.invoke(core.clj:5823)
    at clojure.core$compile.invoke(core.clj:5822)
    at user$eval7.invoke(form-init2090634687110948953.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:6767)
    at clojure.lang.Compiler.eval(Compiler.java:6757)
    at clojure.lang.Compiler.load(Compiler.java:7194)
    at clojure.lang.Compiler.loadFile(Compiler.java:7150)
    at clojure.main$load_script.invoke(main.clj:279)
    at clojure.main$init_opt.invoke(main.clj:284)
    at clojure.main$initialize.invoke(main.clj:312)
    at clojure.main$null_opt.invoke(main.clj:347)
    at clojure.main$main.doInvoke(main.clj:425)
    at clojure.lang.RestFn.invoke(RestFn.java:421)
    at clojure.lang.Var.invoke(Var.java:383)
    at clojure.lang.AFn.applyToHelper(AFn.java:156)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.main.main(main.java:37)
Caused by: java.lang.Exception: Cyclic load dependency: [ /neko/activity ]->/neko/ui/traits->/neko/ui->[ /neko/activity ]->/sample/app/main
    ... 109 more
Compilation failed.
Error encountered performing task 'droid' with profile(s): 'release'
clojure.lang.ExceptionInfo: Compilation failed. {:exit-code 1, :suppress-msg false}
    at clojure.core$ex_info.invoke(core.clj:4403)
    at leiningen.core.main$exit.doInvoke(main.clj:152)
    at clojure.lang.RestFn.applyTo(RestFn.java:139)
    at clojure.core$apply.invoke(core.clj:626)
    at leiningen.core.main$abort.doInvoke(main.clj:162)
    at clojure.lang.RestFn.invoke(RestFn.java:408)
    at leiningen.droid.compile$compile_clojure.invoke(compile.clj:140)
    at leiningen.droid.compile$compile.doInvoke(compile.clj:151)
    at clojure.lang.RestFn.invoke(RestFn.java:410)
    at leiningen.droid.build$build.invoke(build.clj:161)
    at leiningen.droid$execute_subtask.invoke(droid.clj:101)
    at leiningen.droid$doall.doInvoke(droid.clj:47)
    at clojure.lang.RestFn.invoke(RestFn.java:410)
    at clojure.lang.AFn.applyToHelper(AFn.java:154)
    at clojure.lang.RestFn.applyTo(RestFn.java:132)
    at clojure.core$apply.invoke(core.clj:626)
    at leiningen.droid$execute_subtask.invoke(droid.clj:104)
    at leiningen.droid$droid.doInvoke(droid.clj:71)
    at clojure.lang.RestFn.invoke(RestFn.java:423)
    at clojure.lang.Var.invoke(Var.java:383)
    at clojure.lang.AFn.applyToHelper(AFn.java:156)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.core$apply.invoke(core.clj:626)
    at leiningen.core.main$partial_task$fn__6071.doInvoke(main.clj:253)
    at clojure.lang.RestFn.applyTo(RestFn.java:139)
    at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:626)
    at leiningen.core.main$apply_task.invoke(main.clj:303)
    at leiningen.with_profile$with_profiles_STAR_.invoke(with_profile.clj:15)
    at leiningen.with_profile$with_profile$fn__11755.invoke(with_profile.clj:71)
    at leiningen.with_profile$with_profile.doInvoke(with_profile.clj:69)
    at clojure.lang.RestFn.invoke(RestFn.java:467)
    at clojure.lang.Var.invoke(Var.java:394)
    at clojure.lang.AFn.applyToHelper(AFn.java:165)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.core$apply.invoke(core.clj:626)
    at leiningen.core.main$partial_task$fn__6071.doInvoke(main.clj:253)
    at clojure.lang.RestFn.applyTo(RestFn.java:139)
    at clojure.lang.AFunction$1.doInvoke(AFunction.java:29)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.core$apply.invoke(core.clj:626)
    at leiningen.core.main$apply_task.invoke(main.clj:303)
    at leiningen.core.main$resolve_and_apply.invoke(main.clj:309)
    at leiningen.core.main$_main$fn__6136.invoke(main.clj:377)
    at leiningen.core.main$_main.doInvoke(main.clj:366)
    at clojure.lang.RestFn.invoke(RestFn.java:457)
    at clojure.lang.Var.invoke(Var.java:394)
    at clojure.lang.AFn.applyToHelper(AFn.java:165)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.core$apply.invoke(core.clj:624)
    at clojure.main$main_opt.invoke(main.clj:315)
    at clojure.main$main.doInvoke(main.clj:420)
    at clojure.lang.RestFn.invoke(RestFn.java:512)
    at clojure.lang.Var.invoke(Var.java:409)
    at clojure.lang.AFn.applyToHelper(AFn.java:178)
    at clojure.lang.Var.applyTo(Var.java:700)
    at clojure.main.main(main.java:37)
alexander-yakushev commented 9 years ago

Wow, there was one incredibly stupid bug in Neko. Please try latest neko 3.1.0-SNAPSHOT version and see if it helps.

sakuraiyuta commented 9 years ago

Thanks! I tested latest version and it worked perfectly.