For the missing data.json, you probably need to run "./script/bootstrap".
I tend to just run "lein install" but the version which gets installed is [org.clojure/clojurescript "0.0-SNAPSHOT"] so you have to adjust the version in your project as well. Or edit the clojurescript/project.clj to set a specific version. Alternatively you can run "./script/build" which generates a proper version off the number of git commits but that script touches some files so extra take must be taken those changes don't end up in any git commit later. On Friday, January 30, 2015 at 2:16:42 AM UTC+1, Crispin Wellington wrote: > > I got to the bottom of it. It's almost embarrassing to say. But the path > to the w3c_audio.js extern file was wrong. Unfortunately, lein doesn't give > any sort of warning or error if any of the externs files don't exist. I'm > not sure if it's a cljsbuild issue, or a clojurescript issue, or a google > closure compiler issue. > > So I am thinking I'll give adding this warning (or error?) to > clojurescript a go. I notice in clojurescript source that closure.clj deals > with running the closure compiler. I can see exactly where I want to add > the warning (or tweak the calling of google closure compiler). I could do > this, but I'm having trouble now running a locally built clojurescript. > > I've checked it out. Added some debug. Then I build a jar with 'lein jar'. > I upload it to a local maven repository. I add that repository to my > project-with-the-missing-extern's project.clj. I lein deps. It grabs the > new jar. I lein cljsbuild, and the build begins, but then the build > explodes with: > > Exception in thread "main" java.io.FileNotFoundException: Could not locate > clojure/data/json__init.class or clojure/data/json.clj on classpath: , > compiling:(cljs/source_map.clj:1:1) > ... > Caused by: java.io.FileNotFoundException: Could not locate > clojure/data/json__init.class or clojure/data/json.clj on classpath: > > So this is now off the original topic, but how do you work on > clojurescript itself? What step am I missing thats leading to the missing > clojre/data/json.clj class on the classpath? What's the best workflow for > hacking clojurescript itself? > > Regards > > Crispin > > On Wednesday, January 28, 2015 at 11:29:25 PM UTC+8, David Nolen wrote: >> >> Run a `lein deps :tree` to compare the version of the Google Closure >> Compiler you are getting. >> >> David >> >> On Wed, Jan 28, 2015 at 9:58 AM, Crispin Wellington <retrogr...@gmail.com >> > wrote: >> >>> OK something very strange is going on. I tried the let block, and it was >>> the same in my project. >>> >>> So I created a new minimal project, lein new mies test-sound, and made a >>> minimal test: https://github.com/retrogradeorbit/test-sound >>> >>> And here it works! >>> >>> Go back to my old project, and it doesn't. >>> >>> So now I have to go and gradually work through the project differences >>> to see what's causing this. If I find anything, I'll post it. >>> >>> Thanks for your help >>> >>> Crispin >>> >>> On Wednesday, January 28, 2015 at 10:06:52 PM UTC+8, David Nolen wrote: >>>> >>>> I mentioned trying this in a `let` binding instead. What happens when >>>> you try that? >>>> >>>> David >>>> >>>> On Wed, Jan 28, 2015 at 9:04 AM, Crispin Wellington < >>>> retrogr...@gmail.com> wrote: >>>> >>>>> No, that's not it. So I tried: >>>>> >>>>> (def audio-context (js/AudioContext.)) >>>>> (.decodeAudioData audio-context (js/ArrayBuffer. 256) #(println "ok" >>>>> %) #(println "error" %)) >>>>> >>>>> and it compiled to: >>>>> >>>>> ;var zv = new AudioContext; >>>>> zv.Rd(new ArrayBuffer(256), function(a) { >>>>> return fo.c(mh(["ok", a], 0)); >>>>> }, function(a) { >>>>> return fo.c(mh(["error", a], 0)); >>>>> }); >>>>> >>>>> This has really got me stumped. >>>>> >>>>> Crispin >>>>> >>>>> >>>>> On Wednesday, January 28, 2015 at 6:23:29 PM UTC+8, Thomas Heller >>>>> wrote: >>>>>> >>>>>> I just have a guess for you. >>>>>> >>>>>> AudioContext.decodeAudioData parameters are declared as ArrayBuffer, >>>>>> Function, Function but you are passing "data" which is a String not an >>>>>> ArrayBuffer. Maybe the type inference thinks you are calling a method >>>>>> that >>>>>> is not defined in the externs? >>>>>> >>>>>> Maybe it will work if you pass an ArrayBuffer? Other than that I see >>>>>> no reason why it would munge the name. >>>>>> >>>>>> /thomas >>>>>> >>>>>> On Wednesday, January 28, 2015 at 2:14:31 AM UTC+1, Crispin >>>>>> Wellington wrote: >>>>>>> >>>>>>> Hi there, >>>>>>> >>>>>>> I have been trying to compile some audio code in clojurescript in >>>>>>> advanced mode. I have setup the w3c_audio.js extern (from: >>>>>>> http://closureplease.com/externs/) into my extern list. When I >>>>>>> compile, it prevents the munging of "AudioContext" (without the extern, >>>>>>> this is being munged, so the extern is 'working'). But it doesn't >>>>>>> prevent >>>>>>> the munging of methods on AudioContext object. >>>>>>> >>>>>>> A super minimal example (but not working code): >>>>>>> >>>>>>> (def audio-context (js/AudioContext.)) >>>>>>> (.decodeAudioData audio-context "data" #(println "ok" %) #(println >>>>>>> "error" %)) >>>>>>> >>>>>>> compiles with advanced to: >>>>>>> >>>>>>> ;var zv = new AudioContext; >>>>>>> zv.Rd("data", function(a) { >>>>>>> return fo.c(mh([a], 0)); >>>>>>> }, function() { >>>>>>> return(0).call(null); >>>>>>> }); >>>>>>> >>>>>>> zv.Rd is wrong. It should be zv.decodeAudioData. >>>>>>> >>>>>>> The externs file does indeed have this function prototype. here are >>>>>>> the excerpts: >>>>>>> >>>>>>> /** >>>>>>> * @constructor >>>>>>> */ >>>>>>> var AudioContext = function() {}; >>>>>>> >>>>>>> .... >>>>>>> >>>>>>> /** >>>>>>> * @param {ArrayBuffer} audioData >>>>>>> * @param {Function} successCallback >>>>>>> * @param {Function=} errorCallback >>>>>>> */ >>>>>>> AudioContext.prototype.decodeAudioData = function(audioData, >>>>>>> successCallback, >>>>>>> errorCallback) {}; >>>>>>> >>>>>>> Why would closure compiler protect the AudioContext name, but munge >>>>>>> the decodeAudioData name? What am I doing wrong? >>>>>>> >>>>>>> Regards >>>>>>> >>>>>>> Crispin Wellington >>>>>>> >>>>>>> >>>>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Clojure" group. >>>>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@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+u...@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+u...@googlegroups.com. >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> -- 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/d/optout.