Construction of Scala providers was already properly synchronized jvm and machine-wide.
The cache on top of construction was not. This could cause the same Scala version to
be loaded in multiple class loaders.
Ivy still seems to remember the resolver that found the metadata
and records that as the resolver to use for the artifact. Previous
fixes have attempted to ignore or blank this resolver. The issue
this fix addresses comes from inter-project not being ignored/blanked.
inter-project can't provide artifacts because it is only for projects
in the current build under development and not for modules in a repository.
The symptom is that compiling a build definition fails because the
sbt jars aren't on the classpath, but it is ultimately due to the
inter-project resolver incorrectly being used to resolve artifacts.
In summary this commit:
* drops type normalization in api phase but keeps dealiasing
* fixes#736 and marks corresponding test as passing
I discussed type normalization with @adriaanm and according to him
sbt shouldn't call that method. The purpose of this method to
convert to a form that subtyping algorithm expects. Sbt doesn't need
to call it and it's fairly expensive in some cases.
Dropping type normalization also fixes#726 by not running into
stale cache in Scala compiler problem described in SI-7361.
The infrastructure for resident compilation still exists,
but the actual scalac-side code that was backported is removed.
Future work on using a resident scalac will use that invalidation
code directly from scalac anyway.
according to this
http://www.scala-sbt.org/sbt-pgp/usage.html#publishing_artifacts
"The PGP plugin NO LONGER wires into the default publish and publish-local tasks of sbt. If you want to published signed artifacts, you must use the new publish-signed and publish-local-signed tasks."
This bit me when i tried to do this today, should update the docs to refer to the proper command `publish-signed` so the next guy who tries this doesn't get bitten.