mirror of https://github.com/sbt/sbt.git
Update ExternalHooks to look up changed binaries
It was reported that in community builds, sometimes there was spurious over-compilation due to invalidation of the scala library jar (https://github.com/sbt/sbt/issues/4948). The reason for this was that the external hooks prefills the managed cache with all of the time stamps for the project dependencies but was not looking up any jars that weren't in the cache. I suspect I did this because I didn't realize that zinc also includes its own classpath in the binaries which is not a part of the dependencyClasspath. The fix is to just add the jar to the cache if it doesn't already exist by switching to getOrElseUpdate from get. I followed the steps in #4948 and published a version of sbt locally with this change and the spurious re-builds stopped.
This commit is contained in:
parent
c124bc1dcd
commit
32a6d0d5d7
|
|
@ -101,7 +101,7 @@ private[sbt] object ExternalHooks {
|
|||
override def changedBinaries(previousAnalysis: CompileAnalysis): Option[Set[File]] = {
|
||||
Some(previousAnalysis.readStamps.getAllBinaryStamps.asScala.flatMap {
|
||||
case (file, stamp) =>
|
||||
managedCache.get(file.toPath) match {
|
||||
managedCache.getOrElseUpdate(file.toPath, FileStamper.LastModified) match {
|
||||
case Some(cachedStamp) if equiv(cachedStamp.stamp, stamp) => None
|
||||
case _ =>
|
||||
javaHome match {
|
||||
|
|
|
|||
Loading…
Reference in New Issue