Skip to content
This repository has been archived by the owner on Mar 26, 2020. It is now read-only.

Please add a section to the README explaining how to install djinni #356

Open
jfirebaugh opened this issue Mar 8, 2018 · 4 comments
Open
Labels

Comments

@jfirebaugh
Copy link
Contributor

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.

  1. I cloned the repository, created a simple .djinni file, and tried to use src/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
    
  2. 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
    
  3. Okay, I need a Java runtime. I ran brew install caskroom/cask/java.
  4. 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!

@jfirebaugh
Copy link
Contributor Author

I think the issue I'm running into is that:

@artwyman
Copy link
Contributor

artwyman commented Mar 8, 2018

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.

@artwyman artwyman added the bug label Mar 8, 2018
@jfirebaugh
Copy link
Contributor Author

Yeah, I got it working eventually and can submit a PR once Mapbox legal signs off on the CLA.

@artwyman
Copy link
Contributor

artwyman commented Mar 8, 2018

Great, thanks.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

No branches or pull requests

2 participants