Ah, I didn't grok that you were reporting two separate breakages (one in swank, 
one in your app).

I think the problem is in how the lein-swank plugin sets up dependencies (or, 
how Leiningen itself applies :exclusions).  If you don't have an 
org.clojure/clojure dependency in your project, then lein-swank will add one, 
its default (v1.2.1).  In this case, I found I did have two clojure jars; my 
1.5.0-SNAPSHOT, and [org.clojure/clojure "1.2.1"].  This explains the bizarre 
message of "No
matching ctor found for class clojure.lang.Compiler$CompilerException".  In my 
verification of swank, I ended up just temporarily swapping the 
com.cemerick/clojure build in where the official RC4 sits in ~/.m2/repository; 
once I did that, swank was happy.

I haven't yet been able to duplicate the other fault you saw.  If it was really 
due to namespace metadata, then `lein repl` wouldn't ever start, given 
clojure.tools.nrepl.server's namespace metadata 
(https://github.com/clojure/tools.nrepl/blob/master/src/main/clojure/clojure/tools/nrepl/server.clj).
  I wonder if you could produce a cut-down example that exhibits the issue 
repeatably?

Thanks,

- Chas

On Feb 2, 2013, at 9:22 AM, Baishampayan Ghose wrote:

> I put the canonical clojure artefact in a global exclusions vector in
> my project.clj. The classpath doesn't have any duplicate clojure jar
> in it. I was testing it out with `lein repl`, since swank-clojure is
> broken in different ways.
> 
> Regards,
> BG
> 
> On Sat, Feb 2, 2013 at 7:43 PM, Chas Emerick <c...@cemerick.com> wrote:
>> Hi Baishampayan,
>> 
>> I got such errors when I first started working on the patch; they were 
>> caused by the compiler using print-dup'd strings to create namespaces 
>> instead of emitting bytecode (which the patched build includes).  Is it 
>> possible that you have both an org.clojure/clojure jar and the patched 
>> com.cemerick/clojure jar on your classpath?
>> 
>> FWIW, such metadata happens to exist in some nREPL namespaces, and some of 
>> my projects as well, so I presume that that's not the actual problem.
>> 
>> Just out of curiosity, do things work well if you use e.g. inferior-lisp or 
>> ritz?
>> 
>> Thanks for testing!
>> 
>> - Chas
>> 
>> On Feb 1, 2013, at 11:10 PM, Baishampayan Ghose wrote:
>> 
>>> Just did some testing with our code-base and Clojure 1.5.0-RC4 (with
>>> and without Chas' read-eval patch).
>>> 
>>> There is definitely something strange going on. Things worked just
>>> fine with 1.5.0-RC4 but with the read-eval patch `lein swank` is
>>> completely broken but more than that, our code is failing to compile
>>> with this weird error -
>>> 
>>> eval-reader: (clojure.lang.PersistentArrayMap/create {:author "Joe Dev
>>> <j...@helpshift.com>", :doc "Some doc here."})
>>> RuntimeException EvalReader not allowed when *read-eval* is false.
>>> clojure.lang.Util.runtimeException (Util.java:219)
>>> 
>>> Almost all our namespaces have documentation attached via metadata like 
>>> this -
>>> 
>>> (ns ^{:doc "Some doc here."
>>>     :author "Joe Dev <j...@helpshift.com>"}
>>> com.helpshift.some.ns
>>> (:require [com.helpshift.other.ns :as chon])
>>> (:use clojure.test
>>>       midje.sweet))
>>> 
>>> FWIW, the file that will fail to compile is random and I couldn't
>>> reproduce this error on a fresh project with just a couple of files.
>>> 
>>> It's quite clear that the eval-reader is getting used from inside
>>> Clojure and we need to test out the edge cases a bit more.
>>> 
>>> This is clearly not a low-impact fix, but IMHO we should take the time
>>> and get it right before 1.5.0
>>> 
>>> Regards,
>>> BG
>>> 
>>> 
>>> On Sat, Feb 2, 2013 at 4:01 AM, Chas Emerick <c...@cemerick.com> wrote:
>>>> I have added a patch to CLJ-1153 that appears to address the *read-eval* 
>>>> problem:
>>>> 
>>>> http://dev.clojure.org/jira/browse/CLJ-1153?focusedCommentId=30523#comment-30523
>>>> 
>>>> code on github: 
>>>> https://github.com/cemerick/clojure/commit/1f5c19c07443d2535ede4ff71d23b40c195d617f
>>>> 
>>>> artifact on Clojars: [com.cemerick/clojure "1.5.0-SNAPSHOT"]
>>>> 
>>>> The Leiningen dependency above is 1.5.0-RC4 + the patch on the ticket.  
>>>> Note that you'll need to set your project's global :exclusions to 
>>>> [org.clojure/clojure] in order for the com.cemerick/clojure artifact to 
>>>> supersede it.
>>>> 
>>>> It tests well for me, but needs to be exercised as much as possible.  Some 
>>>> have already done so (there's an ongoing discussion on the clojure-dev ML 
>>>> with some initial test experiences: 
>>>> http://groups.google.com/group/clojure-dev/browse_frm/thread/cc6f747919db6c94),
>>>>  but I'm hoping that we can get as many eyes as possible on this — doing 
>>>> both testing as well as code/patch examination — so as to ensure 
>>>> correctness and maximize the chances of 1.5.0 final going out with this 
>>>> vulnerability buttoned up.
>>>> 
>>>> Thanks,
>>>> 
>>>> - Chas
>>>> 
>>>> --
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Clojure" group.
>>>> To post to this group, send email to clojure@googlegroups.com
>>>> Note that posts from new members are moderated - please be patient with 
>>>> your first post.
>>>> To unsubscribe from this group, send email to
>>>> clojure+unsubscr...@googlegroups.com
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/clojure?hl=en
>>>> ---
>>>> You received this message because you are subscribed to the Google Groups 
>>>> "Clojure" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>>> email to clojure+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>> 
>>>> 
>>> 
>>> 
>>> 
>>> --
>>> Baishampayan Ghose
>>> b.ghose at gmail.com
>>> 
>>> --
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Clojure" group.
>>> To post to this group, send email to clojure@googlegroups.com
>>> Note that posts from new members are moderated - please be patient with 
>>> your first post.
>>> To unsubscribe from this group, send email to
>>> clojure+unsubscr...@googlegroups.com
>>> For more options, visit this group at
>>> http://groups.google.com/group/clojure?hl=en
>>> ---
>>> You received this message because you are subscribed to the Google Groups 
>>> "Clojure" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an 
>>> email to clojure+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>> 
>>> 
>> 
>> --
>> --
>> You received this message because you are subscribed to the Google
>> Groups "Clojure" group.
>> To post to this group, send email to clojure@googlegroups.com
>> Note that posts from new members are moderated - please be patient with your 
>> first post.
>> To unsubscribe from this group, send email to
>> clojure+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/clojure?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups 
>> "Clojure" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to clojure+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/groups/opt_out.
>> 
>> 
> 
> 
> 
> -- 
> Baishampayan Ghose
> b.ghose at gmail.com
> 
> -- 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with your 
> first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
> 
> 

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to