djinni
djinni copied to clipboard
Please add a section to the README explaining how to install djinni
The README doesn't indicate how to obtain, install, or build djinni from source. I recommend you include a section in the README that describes the best way to install djinni, including any prerequisites such as a Java runtime. This will reduce the friction for potential new users.
For example, I have not been successful in using it. I poked around using guesswork, but ran into issues.
- I cloned the repository, created a simple
.djinnifile, and tried to usesrc/run:$ src/run --idl test.djinni src/run: line 17: /Users/john/Development/djinni/src /Users/john/Development/djinni/src/build: No such file or directory - Okay, I guess I need to build it first? Let's try make:
$ make djinni cd src && ./build /Users/john/Development/djinni/src Building Djinni... No Java runtime present, requesting install. make: *** [djinni] Error 1 - Okay, I need a Java runtime. I ran
brew install caskroom/cask/java. - Try make again:
$ make djinni cd src && ./build /Users/john/Development/djinni/src Building Djinni... Getting org.scala-sbt sbt 0.13.5 ... WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.ivy.util.url.IvyAuthenticator (file:/Users/john/Development/djinni/src/support/sbt-launch.jar) to field java.net.Authenticator.theAuthenticator WARNING: Please consider reporting this to the maintainers of org.apache.ivy.util.url.IvyAuthenticator WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations WARNING: All illegal access operations will be denied in a future release downloading https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt/0.13.5/jars/sbt.jar ... [snip] :: retrieving :: org.scala-sbt#boot-scala confs: [default] 5 artifacts copied, 0 already retrieved (24459kB/34ms) error: error while loading package, Missing dependency 'object java.lang.Object in compiler mirror', required by /Users/john/.sbt/boot/scala-2.10.4/lib/scala-library.jar(scala/package.class) error: error while loading package, Missing dependency 'object java.lang.Object in compiler mirror', required by /Users/john/.sbt/boot/scala-2.10.4/lib/scala-library.jar(scala/runtime/package.class) scala.reflect.internal.MissingRequirementError: object java.lang.Object in compiler mirror not found. at scala.reflect.internal.MissingRequirementError$.signal(MissingRequirementError.scala:16) at scala.reflect.internal.MissingRequirementError$.notFound(MissingRequirementError.scala:17) at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:48) at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40) at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:40) at scala.reflect.internal.Mirrors$RootsBase.getModuleOrClass(Mirrors.scala:61) at scala.reflect.internal.Mirrors$RootsBase.getClassByName(Mirrors.scala:99) at scala.reflect.internal.Mirrors$RootsBase.getRequiredClass(Mirrors.scala:102) at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass$lzycompute(Definitions.scala:264) at scala.reflect.internal.Definitions$DefinitionsClass.ObjectClass(Definitions.scala:264) at scala.reflect.internal.Definitions$DefinitionsClass.AnyRefClass$lzycompute(Definitions.scala:263) at scala.reflect.internal.Definitions$DefinitionsClass.AnyRefClass(Definitions.scala:263) at scala.reflect.internal.Definitions$DefinitionsClass.specialPolyClass(Definitions.scala:1120) at scala.reflect.internal.Definitions$DefinitionsClass.RepeatedParamClass$lzycompute(Definitions.scala:407) at scala.reflect.internal.Definitions$DefinitionsClass.RepeatedParamClass(Definitions.scala:407) at scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreClasses$lzycompute(Definitions.scala:1154) at scala.reflect.internal.Definitions$DefinitionsClass.syntheticCoreClasses(Definitions.scala:1152) at scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode$lzycompute(Definitions.scala:1196) at scala.reflect.internal.Definitions$DefinitionsClass.symbolsNotPresentInBytecode(Definitions.scala:1196) at scala.reflect.internal.Definitions$DefinitionsClass.init(Definitions.scala:1261) at scala.tools.nsc.Global$Run.<init>(Global.scala:1290) at sbt.compiler.Eval$$anon$1.<init>(Eval.scala:124) at sbt.compiler.Eval.run$lzycompute$1(Eval.scala:124) at sbt.compiler.Eval.run$1(Eval.scala:124) at sbt.compiler.Eval.unlinkAll$1(Eval.scala:127) at sbt.compiler.Eval.evalCommon(Eval.scala:136) at sbt.compiler.Eval.eval(Eval.scala:86) at sbt.EvaluateConfigurations$.evaluateSetting(EvaluateConfigurations.scala:144) at sbt.EvaluateConfigurations$$anonfun$9.apply(EvaluateConfigurations.scala:106) at sbt.EvaluateConfigurations$$anonfun$9.apply(EvaluateConfigurations.scala:105) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.immutable.List.foreach(List.scala:318) at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) at scala.collection.AbstractTraversable.map(Traversable.scala:105) at sbt.EvaluateConfigurations$.evaluateSbtFile(EvaluateConfigurations.scala:105) at sbt.Load$.sbt$Load$$loadSettingsFile$1(Load.scala:507) at sbt.Load$$anonfun$sbt$Load$$memoLoadSettingsFile$1$1.apply(Load.scala:502) at sbt.Load$$anonfun$sbt$Load$$memoLoadSettingsFile$1$1.apply(Load.scala:501) at scala.Option.getOrElse(Option.scala:120) at sbt.Load$.sbt$Load$$memoLoadSettingsFile$1(Load.scala:501) at sbt.Load$$anonfun$loadSettings$1$2.apply(Load.scala:500) at sbt.Load$$anonfun$loadSettings$1$2.apply(Load.scala:500) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47) at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) at scala.collection.AbstractTraversable.map(Traversable.scala:105) at sbt.Load$.loadSettings$1(Load.scala:500) at sbt.Load$.sbt$Load$$expand$1(Load.scala:523) at sbt.Load$.loadSettings(Load.scala:528) at sbt.Load$.sbt$Load$$loadSbtFiles$1(Load.scala:464) at sbt.Load$.defaultLoad$1(Load.scala:475) at sbt.Load$.loadTransitive(Load.scala:478) at sbt.Load$.loadProjects$1(Load.scala:418) at sbt.Load$.loadUnit(Load.scala:419) at sbt.Load$$anonfun$15$$anonfun$apply$11.apply(Load.scala:256) at sbt.Load$$anonfun$15$$anonfun$apply$11.apply(Load.scala:256) at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:93) at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:92) at sbt.BuildLoader.apply(BuildLoader.scala:143) at sbt.Load$.loadAll(Load.scala:312) at sbt.Load$.loadURI(Load.scala:264) at sbt.Load$.load(Load.scala:260) at sbt.Load$.load(Load.scala:251) at sbt.Load$.apply(Load.scala:134) at sbt.Load$.buildPluginDefinition(Load.scala:613) at sbt.Load$.buildPlugins(Load.scala:579) at sbt.Load$.plugins(Load.scala:567) at sbt.Load$.loadUnit(Load.scala:411) at sbt.Load$$anonfun$15$$anonfun$apply$11.apply(Load.scala:256) at sbt.Load$$anonfun$15$$anonfun$apply$11.apply(Load.scala:256) at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:93) at sbt.BuildLoader$$anonfun$componentLoader$1$$anonfun$apply$4$$anonfun$apply$5$$anonfun$apply$6.apply(BuildLoader.scala:92) at sbt.BuildLoader.apply(BuildLoader.scala:143) at sbt.Load$.loadAll(Load.scala:312) at sbt.Load$.loadURI(Load.scala:264) at sbt.Load$.load(Load.scala:260) at sbt.Load$.load(Load.scala:251) at sbt.Load$.apply(Load.scala:134) at sbt.Load$.defaultLoad(Load.scala:37) at sbt.BuiltinCommands$.doLoadProject(Main.scala:473) at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:467) at sbt.BuiltinCommands$$anonfun$loadProjectImpl$2.apply(Main.scala:467) at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:60) at sbt.Command$$anonfun$applyEffect$1$$anonfun$apply$2.apply(Command.scala:60) at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:62) at sbt.Command$$anonfun$applyEffect$2$$anonfun$apply$3.apply(Command.scala:62) at sbt.Command$.process(Command.scala:95) at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:100) at sbt.MainLoop$$anonfun$1$$anonfun$apply$1.apply(MainLoop.scala:100) at sbt.State$$anon$1.process(State.scala:179) at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:100) at sbt.MainLoop$$anonfun$1.apply(MainLoop.scala:100) at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18) at sbt.MainLoop$.next(MainLoop.scala:100) at sbt.MainLoop$.run(MainLoop.scala:93) at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:71) at sbt.MainLoop$$anonfun$runWithNewLog$1.apply(MainLoop.scala:66) at sbt.Using.apply(Using.scala:25) at sbt.MainLoop$.runWithNewLog(MainLoop.scala:66) at sbt.MainLoop$.runAndClearLast(MainLoop.scala:49) at sbt.MainLoop$.runLoggedLoop(MainLoop.scala:33) at sbt.MainLoop$.runLogged(MainLoop.scala:25) at sbt.StandardMain$.runManaged(Main.scala:57) at sbt.xMain.run(Main.scala:29) at xsbt.boot.Launch$$anonfun$run$1.apply(Launch.scala:57) at xsbt.boot.Launch$.withContextLoader(Launch.scala:77) at xsbt.boot.Launch$.run(Launch.scala:57) at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:45) at xsbt.boot.Launch$.launch(Launch.scala:65) at xsbt.boot.Launch$.apply(Launch.scala:16) at xsbt.boot.Boot$.runImpl(Boot.scala:32) at xsbt.boot.Boot$.main(Boot.scala:21) at xsbt.boot.Boot.main(Boot.scala) [error] scala.reflect.internal.MissingRequirementError: object java.lang.Object in compiler mirror not found. [error] Use 'last' for the full log. Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? r
If you have any specific suggestions for resolving the error I ran into, those are very welcome as well. Thank you!
I think the issue I'm running into is that:
brew install caskroom/cask/javainstalls JDK 9make djinniinstalls sbt 0.13.5- JDK 9 in sbt requires 0.13.17 or later
Sorry, SBT has always been a bit of black magic, which pre-dates my time as maintainer, so I've always done my best not to mess with it. Now that you've debugged the issue I wouldn't mind a PR to update the SBT version. Looks like JDK 9 compatibility might require upgrading the Scala version too, based on the link you shared.
Yeah, I got it working eventually and can submit a PR once Mapbox legal signs off on the CLA.
Great, thanks.