hashobject / jarkeeper.com

Identify outdated dependencies for Clojure repo
https://jarkeeper.com
Eclipse Public License 1.0
20 stars 11 forks source link

Jarkeeper stopped seeing my project #15

Closed alexander-yakushev closed 9 years ago

alexander-yakushev commented 9 years ago

I used Jarkeeper to add a badge for http://jarkeeper.com/clojure-android/neko, and it certainly worked before. Now Jarkeeper just bounces me back to index when I try to visit the link, and the badge is not shown. OTOH, for example, http://jarkeeper.com/clojure-android/lein-droid works perfectly fine. What could it be?

podviaznikov commented 9 years ago

Thanks for the reporting. I'm going to investigate it. I think I saw one more valid project that had the same behavior.

podviaznikov commented 9 years ago

@alexander-yakushev for some reason clojure.edn/read couldn't read your project.clj. I'm getting No dispatch macro for: " error. Going to look more why that can be.

alexander-yakushev commented 9 years ago

Thank you! Tell me if I can be of any help.

podviaznikov commented 9 years ago

@alexander-yakushev so I looked more into your file. I noticed that if I remove this line https://github.com/clojure-android/neko/blob/master/project.clj#L32 and load your content into REPL it works. Otherwise it throws and error. See below:

(def x1 '(defproject neko "4.0.0-alpha5"
  :description "Neko is a toolkit designed to make Android development using Clojure easier and more fun."
  :url "https://github.com/clojure-android/neko"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}

  :dependencies [[org.clojure-android/clojure "1.7.0-r2"]
                 [com.android.support/multidex "1.0.0" :extension "aar"]]
  :plugins [[lein-droid "0.4.1-SNAPSHOT"]]

  :source-paths ["src/clojure"]
  :java-source-paths ["src/java"]

  :profiles {:default [:android-common]

             :robolectric
             [:android-common
              {:dependencies [[junit/junit "4.12"]
                              [org.robolectric/robolectric "3.0"]
                              [org.clojure-android/droid-test "0.1.1-SNAPSHOT"]
                              [org.clojure/tools.nrepl "0.2.10"]]}]

             :local-testing
             [:robolectric
              {:target-path "target/local-testing"
               :dependencies [[venantius/ultra "0.3.3"]]
               :android {:aot [#"neko.*\.t-.+" "ultra.test"]}}]

             :local-repl
             [:robolectric
              {:target-path "target/local-repl"}]

             :travis
             [:local-testing
              {:dependencies [[cloverage "1.0.6" :exclusions [org.clojure/tools.logging]]
                              [org.clojure-android/tools.logging "0.3.2-r1"]]
               :plugins [[lein-shell "0.4.0"]]
               :aliases {"coverage" ["do" ["droid" "local-test" "cloverage"]
                                     ["shell" "curl" "-F"
                                      "json_file=@target/coverage/coveralls.json"
                                      "https://coveralls.io/api/v1/jobs"]]}
               :android {:sdk-path "/usr/local/android-sdk/"
                         :aot ["cloverage.coverage"]
                         :cloverage-exclude-ns ["neko.tools.repl"]}}]}

  :android {:library true
            :target-version 18}))

this worked.

And this:

(def x1 '(defproject neko "4.0.0-alpha5"
  :description "Neko is a toolkit designed to make Android development using Clojure easier and more fun."
  :url "https://github.com/clojure-android/neko"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}

  :dependencies [[org.clojure-android/clojure "1.7.0-r2"]
                 [com.android.support/multidex "1.0.0" :extension "aar"]]
  :plugins [[lein-droid "0.4.1-SNAPSHOT"]]

  :source-paths ["src/clojure"]
  :java-source-paths ["src/java"]

  :profiles {:default [:android-common]

             :robolectric
             [:android-common
              {:dependencies [[junit/junit "4.12"]
                              [org.robolectric/robolectric "3.0"]
                              [org.clojure-android/droid-test "0.1.1-SNAPSHOT"]
                              [org.clojure/tools.nrepl "0.2.10"]]}]

             :local-testing
             [:robolectric
              {:target-path "target/local-testing"
               :dependencies [[venantius/ultra "0.3.3"]]
               :android {:aot [#"neko.*\.t-.+" "ultra.test"]}}]

             :local-repl
             [:robolectric
              {:target-path "target/local-repl"
               :android {:aot :all-with-unused}}]

             :travis
             [:local-testing
              {:dependencies [[cloverage "1.0.6" :exclusions [org.clojure/tools.logging]]
                              [org.clojure-android/tools.logging "0.3.2-r1"]]
               :plugins [[lein-shell "0.4.0"]]
               :aliases {"coverage" ["do" ["droid" "local-test" "cloverage"]
                                     ["shell" "curl" "-F"
                                      "json_file=@target/coverage/coveralls.json"
                                      "https://coveralls.io/api/v1/jobs"]]}
               :android {:sdk-path "/usr/local/android-sdk/"
                         :aot ["cloverage.coverage"]
                         :cloverage-exclude-ns ["neko.tools.repl"]}}]}

  :android {:library true
            :target-version 18}))

fails with

clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Invalid token: :
             java.lang.RuntimeException: Invalid token: :
                                                             ...
                                               clojure.core/read                core.clj: 3477
                                               clojure.core/read                core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn  interruptible_eval.clj:   63
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: }
             java.lang.RuntimeException: Unmatched delimiter: }
                                                             ...
                                               clojure.core/read                core.clj: 3477
                                               clojure.core/read                core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn  interruptible_eval.clj:   63
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: )
             java.lang.RuntimeException: Unmatched delimiter: )
                                                             ...
                                               clojure.core/read                core.clj: 3477
                                               clojure.core/read                core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn  interruptible_eval.clj:   63
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: )
             java.lang.RuntimeException: Unmatched delimiter: )
                                                             ...
                                               clojure.core/read                core.clj: 3477
                                               clojure.core/read                core.clj: 3475
clojure.tools.nrepl.middleware.interruptible-eval/evaluate/fn/fn  interruptible_eval.clj:   63
podviaznikov commented 9 years ago

I'm not sure exactly what is the problem with that line but in general it seems like clojure reader is failing on your file.

Deraen commented 9 years ago

This is probably because regex is not readable as EDN. I hit a similar problem with a project.clj which includes some code: https://github.com/metosin/schema-tools/blob/master/project.clj

Solution would be to use clojure.core/read for reading project.clj because it's possible that project.clj contains some non-edn forms.

alexander-yakushev commented 9 years ago

Good point @Deraen ! Indeed there appeared a few regular expressions in my project.clj.

podviaznikov commented 9 years ago

@Deraen thanks for the fix, it's live now. I was thinking myself that the problem was in edn reader but than I tried to paste content of this project into repl and it failed. See traces above. Do you know why I got that error in the repl?

alexander-yakushev commented 9 years ago

Thanks to both of you!

Deraen commented 9 years ago

No dispatch macro for: " is caused by edn reader not recognizing reader macros like # (regex) or #( (anon function).