-
Notifications
You must be signed in to change notification settings - Fork 122
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Forward port sbt/sbt#3701, JDK9/Scala 2.{10,11} overcompilation #450
Conversation
} binaryDependency(classFile, binaryClassName) | ||
jarFile <- Option(zip.file) | ||
if !jarFile.isDirectory // workaround for JDK9 and Scala 2.10/2.11, see https://github.com/sbt/sbt/pull/3701 | ||
} binaryDependency(jarFile, binaryClassName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the only change that fixes an observable bug. I didn't figure out why the bug in SBT 0.13 fixed by -Dscala.ext.dirs
was not necessary here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you elaborate why Scalac reports the underlying source to be a directory under JDK9? I'm curious.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To integrate the JEP-220 support into Scala 2.10/2.11, I made the jrt://
virtual file system appear as a ZipFile
. This was done by subclassing, but the superclass had inadvertently overriden override val underlyingSource = Some(jarFile)
. I could not override this to return None
without making a binary compatible change to the method I was overriding (widening to Option
).
So I return Some($JAVA_HOME)
instead, but that messed up Zinc.
Rocks and hard places, all around. Filtering here in Zinc seemed the least bad option for now, but we might need to revisit it to make Zinc properly invalidate after the JDK is upgraded.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great to know this, thanks for the explanation.
152a6c3
to
5812284
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM! Just have a few questions and a suggestion.
@@ -13,6 +13,7 @@ import xsbti.ArtifactInfo | |||
import scala.util | |||
import java.io.File | |||
import CompilerArguments.{ absString, BootClasspathOption } | |||
import sbt.IO |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is causing a compilation error and can be removed.
def findBoot: String = { | ||
import scala.collection.JavaConverters._ | ||
System.getProperties.asScala.iterator.collectFirst { | ||
case (k, v) if k.endsWith(".boot.class.path") => v |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have you done this to avoid making it specific to scala.boot.class.path
? Is there any other valuable system variable that users .boot.class.path
as the suffix?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The code is from scalac. I believe the intent is to support non OpenJDK based JVMs that don't use sun.boot.classpath
.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=188648#c6
http://mail.openjdk.java.net/pipermail/build-dev/2013-November/011103.html
} binaryDependency(classFile, binaryClassName) | ||
jarFile <- Option(zip.file) | ||
if !jarFile.isDirectory // workaround for JDK9 and Scala 2.10/2.11, see https://github.com/sbt/sbt/pull/3701 | ||
} binaryDependency(jarFile, binaryClassName) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you elaborate why Scalac reports the underlying source to be a directory under JDK9? I'm curious.
5812284
to
1c8eefb
Compare
1c8eefb
to
641a491
Compare
This is good to go on my side. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm happy with this. And given @eed3si9n merged the 0.13 PR sbt/sbt#3701 my guess is he's cool with this too.
No description provided.