cbt icon indicating copy to clipboard operation
cbt copied to clipboard

cbt eval throws NPE when defaultScalaVersion is overridden

Open bbarker opened this issue 8 years ago • 1 comments
trafficstars

To reproduce:

brandon@beb82dell0:~/workspace/ProjectGists/Scala$ mkdir CBT_eval_with_override
brandon@beb82dell0:~/workspace/ProjectGists/Scala$ cd CBT_eval_with_override/
brandon@beb82dell0:~/workspace/ProjectGists/Scala/CBT_eval_with_override$ cbt tools createMain
(Note: nailgun not found. It makes CBT faster! Try 'brew install nailgun' or 'apt-get install nailgun'.)
Created Main.scala
()
brandon@beb82dell0:~/workspace/ProjectGists/Scala/CBT_eval_with_override$ cbt tools createBuild
(Note: nailgun not found. It makes CBT faster! Try 'brew install nailgun' or 'apt-get install nailgun'.)
Created build/build.scala
()
brandon@beb82dell0:~/workspace/ProjectGists/Scala/CBT_eval_with_override$ emacs build/build.scala 
  1. add with CommandLineOverrides to Build class definition
  2. add override val defaultScalaVersion = "2.12.4" (exact version doesn't matter)
brandon@beb82dell0:~/workspace/ProjectGists/Scala/CBT_eval_with_override$ cbt eval scalaVersion
(Note: nailgun not found. It makes CBT faster! Try 'brew install nailgun' or 'apt-get install nailgun'.)
Compiling to /home/brandon/workspace/ProjectGists/Scala/CBT_eval_with_override/build/target/scala-2.11/classes
[warn] Pruning sources from previous analysis, due to incompatible CompileSetup.
[info] Compiling 1 Scala source to /home/brandon/workspace/ProjectGists/Scala/CBT_eval_with_override/build/target/scala-2.11/classes...
[info] Compile success at Nov 17, 2017 1:51:06 PM [2.114s]
Exception in thread "main" java.lang.NullPointerException
	at cbt.Stage1Lib.libMajorVersion(Stage1Lib.scala:22)
	at cbt.BaseBuild$class.scalaMajorVersion(BasicBuild.scala:56)
	at cbt_eval_with_override_build.Build.scalaMajorVersion(build.scala:3)
	at cbt.BaseBuild$class.scalaTarget(BasicBuild.scala:83)
	at cbt_eval_with_override_build.Build.scalaTarget(build.scala:3)
	at cbt.BaseBuild$class.moduleKey(BasicBuild.scala:20)
	at cbt_eval_with_override_build.Build.moduleKey$lzycompute(build.scala:3)
	at cbt_eval_with_override_build.Build.moduleKey(build.scala:3)
	at cbt.DependencyImplementation$class.taskCache(resolver.scala:20)
	at cbt_eval_with_override_build.Build.taskCache$lzycompute(build.scala:3)
	at cbt_eval_with_override_build.Build.taskCache(build.scala:3)
	at cbt.DynamicOverrides$class.$init$(DynamicOverrides.scala:5)
	at cbt_eval_with_override_build.Build.<init>(build.scala:3)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at cbt.DirectoryDependency$$anonfun$cbt$DirectoryDependency$$loadCustomBuild$1$3.apply(DirectoryDependency.scala:104)
	at cbt.DirectoryDependency$$anonfun$cbt$DirectoryDependency$$loadCustomBuild$1$3.apply(DirectoryDependency.scala:104)
	at scala.Option.map(Option.scala:146)
	at cbt.DirectoryDependency$.cbt$DirectoryDependency$$loadCustomBuild$1(DirectoryDependency.scala:103)
	at cbt.DirectoryDependency$$anonfun$cbt$DirectoryDependency$$loadBuild$1$1.apply(DirectoryDependency.scala:39)
	at scala.Option.getOrElse(Option.scala:121)
	at cbt.DirectoryDependency$.cbt$DirectoryDependency$$loadBuild$1(DirectoryDependency.scala:39)
	at cbt.DirectoryDependency$$anonfun$apply$4.apply(DirectoryDependency.scala:119)
	at cbt.DirectoryDependency$$anonfun$apply$4.apply(DirectoryDependency.scala:118)
	at cbt.LazyDependency.dependency$lzycompute(LazyDependency.scala:3)
	at cbt.LazyDependency.dependency(LazyDependency.scala:3)
	at cbt.Lib$$anonfun$3.cbt$Lib$$anonfun$$g$1(Lib.scala:102)
	at cbt.Lib$$anonfun$3$$anonfun$apply$5.apply(Lib.scala:105)
	at cbt.Lib.cbt$Lib$$callInternal(Lib.scala:175)
	at cbt.Lib.getReflective(Lib.scala:143)
	at cbt.Lib.callReflective(Lib.scala:106)
	at cbt.Stage2$.run(Stage2.scala:35)
	at cbt.Stage2.run(Stage2.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cbt.Stage1$.run(Stage1.scala:209)
	at cbt.Stage1.run(Stage1.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at cbt.NailgunLauncher.main(NailgunLauncher.java:120)
brandon@beb82dell0:~/workspace/ProjectGists/Scala/CBT_eval_with_override$ 


I'll also note it doesn't seem to matter what the argument to cbt eval is - it could be some other member as well with the same result.

If this doesn't help to repro, maybe it is linux specific - I'm using Ubuntu 16.04. Can throw together a docker container if necessary. Here is the code.

bbarker avatar Nov 17 '17 18:11 bbarker

I have the same exact problem... Pulled on this repo: https://github.com/lolgab/full-stack-scala

lolgab avatar Nov 20 '17 16:11 lolgab