summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2018-12-19 19:04:55 +0800
committerLi Haoyi <haoyi.sg@gmail.com>2018-12-19 19:04:55 +0800
commit497f044545d8a8299c963e8e3dd5241882270362 (patch)
treed4e2fa124983377df9c2f8631ee4804a97cd74db
parentb44fe2753c62349b3b133d1da0e41a19178233a1 (diff)
parentde175e69977082e35539097a54d381e465dddf8e (diff)
downloadmill-497f044545d8a8299c963e8e3dd5241882270362.tar.gz
mill-497f044545d8a8299c963e8e3dd5241882270362.tar.bz2
mill-497f044545d8a8299c963e8e3dd5241882270362.zip
Merge branch 'master' into bump-zinc
-rwxr-xr-xbuild.sc4
-rw-r--r--ci/shared.sc2
-rw-r--r--contrib/buildinfo/src/BuildInfo.scala (renamed from contrib/buildinfo/src/mill/contrib/BuildInfo.scala)0
-rw-r--r--contrib/buildinfo/test/src/BuildInfoTests.scala (renamed from contrib/buildinfo/test/src/mill/contrib/BuildInfoTests.scala)0
-rw-r--r--contrib/scalapblib/src/ScalaPBModule.scala (renamed from contrib/scalapblib/src/mill/contrib/scalapblib/ScalaPBModule.scala)2
-rw-r--r--contrib/scalapblib/src/ScalaPBWorker.scala (renamed from contrib/scalapblib/src/mill/contrib/scalapblib/ScalaPBWorker.scala)0
-rw-r--r--contrib/scalapblib/test/src/TutorialTests.scala (renamed from contrib/scalapblib/test/src/mill/contrib/scalapblib/TutorialTests.scala)0
-rw-r--r--contrib/testng/src/ResultEvent.java (renamed from contrib/testng/src/mill/testng/ResultEvent.java)0
-rw-r--r--contrib/testng/src/TestNGFramework.java (renamed from contrib/testng/src/mill/testng/TestNGFramework.java)0
-rw-r--r--contrib/testng/src/TestNGInstance.java (renamed from contrib/testng/src/mill/testng/TestNGInstance.java)0
-rw-r--r--contrib/testng/src/TestNGRunner.java (renamed from contrib/testng/src/mill/testng/TestNGRunner.java)0
-rw-r--r--contrib/tut/src/TutModule.scala (renamed from contrib/tut/src/mill/contrib/tut/TutModule.scala)0
-rw-r--r--contrib/tut/test/src/TutTests.scala (renamed from contrib/tut/test/src/mill/contrib/tut/TutTests.scala)0
-rw-r--r--contrib/twirllib/src/TwirlModule.scala (renamed from contrib/twirllib/src/mill/twirllib/TwirlModule.scala)2
-rw-r--r--contrib/twirllib/src/TwirlWorker.scala (renamed from contrib/twirllib/src/mill/twirllib/TwirlWorker.scala)0
-rw-r--r--contrib/twirllib/test/src/HelloWorldTests.scala (renamed from contrib/twirllib/test/src/mill/twirllib/HelloWorldTests.scala)0
-rw-r--r--docs/example-1/foo/src/Example.scala (renamed from docs/example-1/foo/src/foo/Example.scala)0
-rw-r--r--docs/example-2/foo/src/Example.scala (renamed from docs/example-2/foo/src/foo/Example.scala)0
-rw-r--r--docs/pages/9 - Contrib Modules.md7
-rw-r--r--integration/test/resources/large-project/build.sc293
-rw-r--r--integration/test/resources/large-project/foo/common/one/src/main/scala/foo/common/one/Main.scala5
-rw-r--r--integration/test/src/AcyclicTests.scala (renamed from integration/test/src/mill/integration/AcyclicTests.scala)0
-rw-r--r--integration/test/src/AmmoniteTests.scala (renamed from integration/test/src/mill/integration/AmmoniteTests.scala)0
-rw-r--r--integration/test/src/BetterFilesTests.scala (renamed from integration/test/src/mill/integration/BetterFilesTests.scala)0
-rw-r--r--integration/test/src/CaffeineTests.scala (renamed from integration/test/src/mill/integration/CaffeineTests.scala)0
-rw-r--r--integration/test/src/DocAnnotationsTests.scala (renamed from integration/test/src/mill/integration/DocAnnotationsTests.scala)0
-rw-r--r--integration/test/src/IntegrationTestSuite.scala (renamed from integration/test/src/mill/integration/IntegrationTestSuite.scala)0
-rw-r--r--integration/test/src/JawnTests.scala (renamed from integration/test/src/mill/integration/JawnTests.scala)0
-rw-r--r--integration/test/src/LargeProjectTests.scala19
-rw-r--r--integration/test/src/PlayJsonTests.scala (renamed from integration/test/src/mill/integration/PlayJsonTests.scala)0
-rw-r--r--integration/test/src/UpickleTests.scala (renamed from integration/test/src/mill/integration/UpickleTests.scala)0
-rw-r--r--integration/test/src/forked/Tests.scala (renamed from integration/test/src/mill/integration/forked/Tests.scala)1
-rw-r--r--integration/test/src/local/Tests.scala (renamed from integration/test/src/mill/integration/local/Tests.scala)3
-rw-r--r--main/api/src/mill/api/KeyedLockedCache.scala44
-rw-r--r--main/client/src/InputPumper.java (renamed from main/client/src/mill/main/client/InputPumper.java)0
-rw-r--r--main/client/src/Lock.java (renamed from main/client/src/mill/main/client/Lock.java)0
-rw-r--r--main/client/src/Locked.java (renamed from main/client/src/mill/main/client/Locked.java)0
-rw-r--r--main/client/src/Locks.java (renamed from main/client/src/mill/main/client/Locks.java)0
-rw-r--r--main/client/src/MillClientMain.java (renamed from main/client/src/mill/main/client/MillClientMain.java)0
-rw-r--r--main/client/src/ProxyOutputStream.java (renamed from main/client/src/mill/main/client/ProxyOutputStream.java)0
-rw-r--r--main/client/src/ProxyStreamPumper.java (renamed from main/client/src/mill/main/client/ProxyStreamPumper.java)0
-rw-r--r--main/client/src/Util.java (renamed from main/client/src/mill/main/client/Util.java)0
-rw-r--r--main/client/test/src/ClientTests.java (renamed from main/client/test/src/mill/main/client/ClientTests.java)0
-rw-r--r--main/core/src/define/Applicative.scala (renamed from main/core/src/mill/define/Applicative.scala)0
-rw-r--r--main/core/src/define/BaseModule.scala (renamed from main/core/src/mill/define/BaseModule.scala)0
-rw-r--r--main/core/src/define/Caller.scala (renamed from main/core/src/mill/define/Caller.scala)0
-rw-r--r--main/core/src/define/Cross.scala (renamed from main/core/src/mill/define/Cross.scala)0
-rw-r--r--main/core/src/define/Ctx.scala (renamed from main/core/src/mill/define/Ctx.scala)0
-rw-r--r--main/core/src/define/Discover.scala (renamed from main/core/src/mill/define/Discover.scala)7
-rw-r--r--main/core/src/define/Graph.scala (renamed from main/core/src/mill/define/Graph.scala)2
-rw-r--r--main/core/src/define/Module.scala (renamed from main/core/src/mill/define/Module.scala)0
-rw-r--r--main/core/src/define/Task.scala (renamed from main/core/src/mill/define/Task.scala)0
-rw-r--r--main/core/src/eval/Evaluator.scala (renamed from main/core/src/mill/eval/Evaluator.scala)2
-rw-r--r--main/core/src/eval/Tarjans.scala (renamed from main/core/src/mill/eval/Tarjans.scala)0
-rw-r--r--main/core/src/eval/package.scala (renamed from main/core/src/mill/eval/package.scala)0
-rw-r--r--main/core/src/mill/util/AggWrapper.scala119
-rw-r--r--main/core/src/util/EitherOps.scala (renamed from main/core/src/mill/util/EitherOps.scala)0
-rw-r--r--main/core/src/util/EnclosingClass.scala (renamed from main/core/src/mill/util/EnclosingClass.scala)0
-rw-r--r--main/core/src/util/JsonFormatters.scala (renamed from main/core/src/mill/util/JsonFormatters.scala)0
-rw-r--r--main/core/src/util/Loggers.scala (renamed from main/core/src/mill/util/Loggers.scala)0
-rw-r--r--main/core/src/util/MultiBiMap.scala (renamed from main/core/src/mill/util/MultiBiMap.scala)2
-rw-r--r--main/core/src/util/ParseArgs.scala (renamed from main/core/src/mill/util/ParseArgs.scala)0
-rw-r--r--main/core/src/util/Router.scala (renamed from main/core/src/mill/util/Router.scala)0
-rw-r--r--main/core/src/util/Scripts.scala (renamed from main/core/src/mill/util/Scripts.scala)0
-rw-r--r--main/core/src/util/Watched.scala (renamed from main/core/src/mill/util/Watched.scala)0
-rw-r--r--main/core/src/util/package.scala (renamed from main/core/src/mill/util/package.scala)0
-rw-r--r--main/graphviz/src/GraphvizTools.scala (renamed from main/graphviz/src/mill/main/graphviz/GraphvizTools.scala)0
-rw-r--r--main/moduledefs/src/AutoOverridePlugin.scala (renamed from main/moduledefs/src/mill/moduledefs/AutoOverridePlugin.scala)0
-rw-r--r--main/moduledefs/src/Cacher.scala (renamed from main/moduledefs/src/mill/moduledefs/Cacher.scala)0
-rw-r--r--main/moduledefs/src/Scaladoc.java (renamed from main/moduledefs/src/mill/moduledefs/Scaladoc.java)0
-rw-r--r--main/src/MillMain.scala (renamed from main/src/mill/MillMain.scala)0
-rw-r--r--main/src/main/MainModule.scala (renamed from main/src/mill/main/MainModule.scala)4
-rw-r--r--main/src/main/MainRunner.scala (renamed from main/src/mill/main/MainRunner.scala)0
-rw-r--r--main/src/main/MainScopts.scala (renamed from main/src/mill/main/MainScopts.scala)0
-rw-r--r--main/src/main/MillServerMain.scala (renamed from main/src/mill/main/MillServerMain.scala)0
-rw-r--r--main/src/main/ReplApplyHandler.scala (renamed from main/src/mill/main/ReplApplyHandler.scala)2
-rw-r--r--main/src/main/Resolve.scala (renamed from main/src/mill/main/Resolve.scala)0
-rw-r--r--main/src/main/RunScript.scala (renamed from main/src/mill/main/RunScript.scala)2
-rw-r--r--main/src/main/VisualizeModule.scala (renamed from main/src/mill/main/VisualizeModule.scala)0
-rw-r--r--main/src/modules/Assembly.scala (renamed from main/src/mill/modules/Assembly.scala)0
-rw-r--r--main/src/modules/Jvm.scala (renamed from main/src/mill/modules/Jvm.scala)2
-rw-r--r--main/src/modules/Util.scala (renamed from main/src/mill/modules/Util.scala)5
-rw-r--r--main/src/package.scala (renamed from main/src/mill/package.scala)4
-rw-r--r--main/test/resources/examples/javac/build.sc2
-rw-r--r--main/test/src/TestMain.scala (renamed from main/test/src/mill/TestMain.scala)0
-rw-r--r--main/test/src/UTestFramework.scala (renamed from main/test/src/mill/UTestFramework.scala)0
-rw-r--r--main/test/src/define/ApplicativeTests.scala (renamed from main/test/src/mill/define/ApplicativeTests.scala)0
-rw-r--r--main/test/src/define/BasePathTests.scala (renamed from main/test/src/mill/define/BasePathTests.scala)0
-rw-r--r--main/test/src/define/CacherTests.scala (renamed from main/test/src/mill/define/CacherTests.scala)2
-rw-r--r--main/test/src/define/DiscoverTests.scala (renamed from main/test/src/mill/define/DiscoverTests.scala)0
-rw-r--r--main/test/src/define/GraphTests.scala (renamed from main/test/src/mill/define/GraphTests.scala)2
-rw-r--r--main/test/src/define/MacroErrorTests.scala (renamed from main/test/src/mill/define/MacroErrorTests.scala)0
-rw-r--r--main/test/src/eval/CrossTests.scala (renamed from main/test/src/mill/eval/CrossTests.scala)0
-rw-r--r--main/test/src/eval/EvaluationTests.scala (renamed from main/test/src/mill/eval/EvaluationTests.scala)2
-rw-r--r--main/test/src/eval/FailureTests.scala (renamed from main/test/src/mill/eval/FailureTests.scala)0
-rw-r--r--main/test/src/eval/JavaCompileJarTests.scala (renamed from main/test/src/mill/eval/JavaCompileJarTests.scala)7
-rw-r--r--main/test/src/eval/ModuleTests.scala (renamed from main/test/src/mill/eval/ModuleTests.scala)0
-rw-r--r--main/test/src/eval/TarjanTests.scala (renamed from main/test/src/mill/eval/TarjanTests.scala)0
-rw-r--r--main/test/src/eval/TaskTests.scala (renamed from main/test/src/mill/eval/TaskTests.scala)0
-rw-r--r--main/test/src/main/ClientServerTests.scala (renamed from main/test/src/mill/main/ClientServerTests.scala)0
-rw-r--r--main/test/src/main/ForeignBuildsTest.scala (renamed from main/test/src/mill/main/ForeignBuildsTest.scala)0
-rw-r--r--main/test/src/main/ForeignConflictTest.scala (renamed from main/test/src/mill/main/ForeignConflictTest.scala)0
-rw-r--r--main/test/src/main/JavaCompileJarTests.scala (renamed from main/test/src/mill/main/JavaCompileJarTests.scala)0
-rw-r--r--main/test/src/main/MainTests.scala (renamed from main/test/src/mill/main/MainTests.scala)0
-rw-r--r--main/test/src/util/ParseArgsTest.scala (renamed from main/test/src/mill/util/ParseArgsTest.scala)0
-rw-r--r--main/test/src/util/ScriptTestSuite.scala (renamed from main/test/src/mill/util/ScriptTestSuite.scala)0
-rw-r--r--main/test/src/util/TestEvaluator.scala (renamed from main/test/src/mill/util/TestEvaluator.scala)2
-rw-r--r--main/test/src/util/TestGraphs.scala (renamed from main/test/src/mill/util/TestGraphs.scala)0
-rw-r--r--main/test/src/util/TestUtil.scala (renamed from main/test/src/mill/util/TestUtil.scala)2
-rw-r--r--scalajslib/api/src/ScalaJSWorkerApi.scala (renamed from scalajslib/api/src/mill/scalajslib/api/ScalaJSWorkerApi.scala)0
-rw-r--r--scalajslib/src/ScalaJSModule.scala (renamed from scalajslib/src/mill/scalajslib/ScalaJSModule.scala)3
-rw-r--r--scalajslib/src/ScalaJSWorkerApi.scala (renamed from scalajslib/src/mill/scalajslib/ScalaJSWorkerApi.scala)0
-rw-r--r--scalajslib/test/resources/multi-module/shared/src/Utils.scala (renamed from scalajslib/test/resources/multi-module/shared/src/shared/Utils.scala)0
-rw-r--r--scalajslib/test/src/HelloJSWorldTests.scala (renamed from scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala)0
-rw-r--r--scalajslib/test/src/MultiModuleTests.scala (renamed from scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala)0
-rw-r--r--scalajslib/test/src/NodeJSConfigTests.scala (renamed from scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala)0
-rw-r--r--scalajslib/test/src/ScalaJsUtils.scala (renamed from scalajslib/test/src/mill/scalajslib/ScalaJsUtils.scala)0
-rw-r--r--scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala (renamed from scalajslib/worker/0.6/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala)0
-rw-r--r--scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala (renamed from scalajslib/worker/1.0/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala)0
-rw-r--r--scalalib/api/src/ZincWorkerApi.scala (renamed from scalalib/api/src/mill/scalalib/api/ZincWorkerApi.scala)16
-rw-r--r--scalalib/backgroundwrapper/src/BackgroundWrapper.java (renamed from scalalib/backgroundwrapper/src/mill/scalalib/backgroundwrapper/BackgroundWrapper.java)0
-rw-r--r--scalalib/src/Dep.scala (renamed from scalalib/src/mill/scalalib/Dep.scala)0
-rw-r--r--scalalib/src/Dependency.scala (renamed from scalalib/src/mill/scalalib/Dependency.scala)0
-rw-r--r--scalalib/src/GenIdeaImpl.scala (renamed from scalalib/src/mill/scalalib/GenIdeaImpl.scala)6
-rw-r--r--scalalib/src/JavaModule.scala (renamed from scalalib/src/mill/scalalib/JavaModule.scala)2
-rw-r--r--scalalib/src/Lib.scala (renamed from scalalib/src/mill/scalalib/Lib.scala)0
-rw-r--r--scalalib/src/MiscModule.scala (renamed from scalalib/src/mill/scalalib/MiscModule.scala)2
-rw-r--r--scalalib/src/PublishModule.scala (renamed from scalalib/src/mill/scalalib/PublishModule.scala)0
-rw-r--r--scalalib/src/ScalaModule.scala (renamed from scalalib/src/mill/scalalib/ScalaModule.scala)35
-rw-r--r--scalalib/src/TestRunner.scala (renamed from scalalib/src/mill/scalalib/TestRunner.scala)0
-rw-r--r--scalalib/src/Versions.scala (renamed from scalalib/src/mill/scalalib/Versions.scala)0
-rw-r--r--scalalib/src/ZincWorkerModule.scala109
-rw-r--r--scalalib/src/dependency/DependencyUpdatesImpl.scala (renamed from scalalib/src/mill/scalalib/dependency/DependencyUpdatesImpl.scala)0
-rw-r--r--scalalib/src/dependency/metadata/MavenMetadataLoader.scala (renamed from scalalib/src/mill/scalalib/dependency/metadata/MavenMetadataLoader.scala)0
-rw-r--r--scalalib/src/dependency/metadata/MetadataLoader.scala (renamed from scalalib/src/mill/scalalib/dependency/metadata/MetadataLoader.scala)0
-rw-r--r--scalalib/src/dependency/metadata/MetadataLoaderFactory.scala (renamed from scalalib/src/mill/scalalib/dependency/metadata/MetadataLoaderFactory.scala)0
-rw-r--r--scalalib/src/dependency/updates/ModuleDependenciesUpdates.scala (renamed from scalalib/src/mill/scalalib/dependency/updates/ModuleDependenciesUpdates.scala)0
-rw-r--r--scalalib/src/dependency/updates/UpdatesFinder.scala (renamed from scalalib/src/mill/scalalib/dependency/updates/UpdatesFinder.scala)0
-rw-r--r--scalalib/src/dependency/versions/ModuleDependenciesVersions.scala (renamed from scalalib/src/mill/scalalib/dependency/versions/ModuleDependenciesVersions.scala)0
-rw-r--r--scalalib/src/dependency/versions/Version.scala (renamed from scalalib/src/mill/scalalib/dependency/versions/Version.scala)0
-rw-r--r--scalalib/src/dependency/versions/VersionParser.scala (renamed from scalalib/src/mill/scalalib/dependency/versions/VersionParser.scala)0
-rw-r--r--scalalib/src/dependency/versions/VersionsFinder.scala (renamed from scalalib/src/mill/scalalib/dependency/versions/VersionsFinder.scala)2
-rw-r--r--scalalib/src/mill/scalalib/ZincWorkerModule.scala56
-rw-r--r--scalalib/src/package.scala (renamed from scalalib/src/mill/scalalib/package.scala)0
-rw-r--r--scalalib/src/publish/Ivy.scala (renamed from scalalib/src/mill/scalalib/publish/Ivy.scala)2
-rw-r--r--scalalib/src/publish/JsonFormatters.scala (renamed from scalalib/src/mill/scalalib/publish/JsonFormatters.scala)0
-rw-r--r--scalalib/src/publish/Licence.scala (renamed from scalalib/src/mill/scalalib/publish/Licence.scala)0
-rw-r--r--scalalib/src/publish/LocalPublisher.scala (renamed from scalalib/src/mill/scalalib/publish/LocalPublisher.scala)0
-rw-r--r--scalalib/src/publish/Pom.scala (renamed from scalalib/src/mill/scalalib/publish/Pom.scala)2
-rw-r--r--scalalib/src/publish/SonatypeHttpApi.scala (renamed from scalalib/src/mill/scalalib/publish/SonatypeHttpApi.scala)0
-rw-r--r--scalalib/src/publish/SonatypePublisher.scala (renamed from scalalib/src/mill/scalalib/publish/SonatypePublisher.scala)0
-rw-r--r--scalalib/src/publish/VersionControl.scala (renamed from scalalib/src/mill/scalalib/publish/VersionControl.scala)0
-rw-r--r--scalalib/src/publish/package.scala (renamed from scalalib/src/mill/scalalib/publish/package.scala)0
-rw-r--r--scalalib/src/publish/settings.scala (renamed from scalalib/src/mill/scalalib/publish/settings.scala)0
-rw-r--r--scalalib/src/scalafmt/ScalafmtModule.scala (renamed from scalalib/src/mill/scalalib/scalafmt/ScalafmtModule.scala)0
-rw-r--r--scalalib/src/scalafmt/ScalafmtWorker.scala (renamed from scalalib/src/mill/scalalib/scalafmt/ScalafmtWorker.scala)0
-rw-r--r--scalalib/test/resources/hello-java/app/src/Main.java (renamed from scalalib/test/resources/hello-java/app/src/hello/Main.java)0
-rw-r--r--scalalib/test/resources/hello-java/app/test/src/MyAppTests.java (renamed from scalalib/test/resources/hello-java/app/test/src/hello/MyAppTests.java)0
-rw-r--r--scalalib/test/resources/hello-java/core/src/Core.java (renamed from scalalib/test/resources/hello-java/core/src/hello/Core.java)0
-rw-r--r--scalalib/test/resources/hello-java/core/test/src/MyCoreTests.java (renamed from scalalib/test/resources/hello-java/core/test/src/hello/MyCoreTests.java)0
-rw-r--r--scalalib/test/src/GenIdeaTests.scala (renamed from scalalib/test/src/mill/scalalib/GenIdeaTests.scala)0
-rw-r--r--scalalib/test/src/HelloJavaTests.scala (renamed from scalalib/test/src/mill/scalalib/HelloJavaTests.scala)4
-rw-r--r--scalalib/test/src/HelloWorldTests.scala (renamed from scalalib/test/src/mill/scalalib/HelloWorldTests.scala)0
-rw-r--r--scalalib/test/src/ResolveDepsTests.scala (renamed from scalalib/test/src/mill/scalalib/ResolveDepsTests.scala)2
-rw-r--r--scalalib/test/src/VersionControlTests.scala (renamed from scalalib/test/src/mill/scalalib/VersionControlTests.scala)0
-rw-r--r--scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala (renamed from scalalib/test/src/mill/scalalib/dependency/metadata/MetadataLoaderFactoryTests.scala)0
-rw-r--r--scalalib/test/src/dependency/updates/UpdatesFinderTests.scala (renamed from scalalib/test/src/mill/scalalib/dependency/updates/UpdatesFinderTests.scala)0
-rw-r--r--scalalib/test/src/dependency/versions/VersionTests.scala (renamed from scalalib/test/src/mill/scalalib/dependency/versions/VersionTests.scala)0
-rw-r--r--scalalib/test/src/publish/IvyTests.scala (renamed from scalalib/test/src/mill/scalalib/publish/IvyTests.scala)0
-rw-r--r--scalalib/test/src/publish/PomTests.scala (renamed from scalalib/test/src/mill/scalalib/publish/PomTests.scala)0
-rw-r--r--scalalib/test/src/scalafmt/ScalafmtTests.scala (renamed from scalalib/test/src/mill/scalalib/scalafmt/ScalafmtTests.scala)0
-rw-r--r--scalalib/worker/src/ZincWorkerImpl.scala (renamed from scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala)199
-rw-r--r--scalanativelib/api/src/ScalaNativeWorkerApi.scala (renamed from scalanativelib/api/src/mill/scalanativelib/api/ScalaNativeWorkerApi.scala)0
-rw-r--r--scalanativelib/src/ScalaNativeModule.scala (renamed from scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala)2
-rw-r--r--scalanativelib/src/ScalaNativeWorkerApi.scala (renamed from scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala)0
-rw-r--r--scalanativelib/test/resources/hello-native-world/src/ArgsParser.scala (renamed from scalanativelib/test/resources/hello-native-world/src/hello/ArgsParser.scala)0
-rw-r--r--scalanativelib/test/resources/hello-native-world/src/Main.scala (renamed from scalanativelib/test/resources/hello-native-world/src/hello/Main.scala)0
-rw-r--r--scalanativelib/test/src/HelloNativeWorldTests.scala (renamed from scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala)0
-rw-r--r--scalanativelib/worker/0.3/src/ScalaNativeWorkerImpl.scala (renamed from scalanativelib/worker/0.3/src/mill/scalanativelib/worker/ScalaNativeWorkerImpl.scala)0
179 files changed, 640 insertions, 354 deletions
diff --git a/build.sc b/build.sc
index bffec005..f11a3caf 100755
--- a/build.sc
+++ b/build.sc
@@ -27,7 +27,7 @@ trait MillPublishModule extends PublishModule{
def javacOptions = Seq("-source", "1.8", "-target", "1.8")
}
trait MillApiModule extends MillPublishModule with ScalaModule{
- def scalaVersion = T{ "2.12.6" }
+ def scalaVersion = T{ "2.12.8" }
def compileIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7")
def scalacOptions = Seq("-P:acyclic:force")
def scalacPluginIvyDeps = Agg(ivy"com.lihaoyi::acyclic:0.1.7")
@@ -105,7 +105,7 @@ object main extends MillModule {
}
object moduledefs extends MillPublishModule with ScalaModule{
- def scalaVersion = T{ "2.12.6" }
+ def scalaVersion = T{ "2.12.8" }
def ivyDeps = Agg(
ivy"org.scala-lang:scala-compiler:${scalaVersion()}",
ivy"com.lihaoyi::sourcecode:0.1.4",
diff --git a/ci/shared.sc b/ci/shared.sc
index 2f133486..a496fd1f 100644
--- a/ci/shared.sc
+++ b/ci/shared.sc
@@ -74,7 +74,7 @@ def generateEval(dir: Path) = {
s"""package mill.main
|import mill.eval.Evaluator
|import mill.define.Task
- |import mill.util.Strict.Agg
+ |import mill.api.Strict.Agg
|class EvalGenerated(evaluator: Evaluator) {
| type TT[+X] = Task[X]
| ${(1 to 22).map(generate).mkString("\n")}
diff --git a/contrib/buildinfo/src/mill/contrib/BuildInfo.scala b/contrib/buildinfo/src/BuildInfo.scala
index 1c8d9d9e..1c8d9d9e 100644
--- a/contrib/buildinfo/src/mill/contrib/BuildInfo.scala
+++ b/contrib/buildinfo/src/BuildInfo.scala
diff --git a/contrib/buildinfo/test/src/mill/contrib/BuildInfoTests.scala b/contrib/buildinfo/test/src/BuildInfoTests.scala
index 4293bba7..4293bba7 100644
--- a/contrib/buildinfo/test/src/mill/contrib/BuildInfoTests.scala
+++ b/contrib/buildinfo/test/src/BuildInfoTests.scala
diff --git a/contrib/scalapblib/src/mill/contrib/scalapblib/ScalaPBModule.scala b/contrib/scalapblib/src/ScalaPBModule.scala
index db5c5c8b..57bfdd40 100644
--- a/contrib/scalapblib/src/mill/contrib/scalapblib/ScalaPBModule.scala
+++ b/contrib/scalapblib/src/ScalaPBModule.scala
@@ -7,7 +7,7 @@ import mill.define.Sources
import mill.api.PathRef
import mill.scalalib.Lib.resolveDependencies
import mill.scalalib._
-import mill.util.Loose
+import mill.api.Loose
trait ScalaPBModule extends ScalaModule {
diff --git a/contrib/scalapblib/src/mill/contrib/scalapblib/ScalaPBWorker.scala b/contrib/scalapblib/src/ScalaPBWorker.scala
index 125cd3fd..125cd3fd 100644
--- a/contrib/scalapblib/src/mill/contrib/scalapblib/ScalaPBWorker.scala
+++ b/contrib/scalapblib/src/ScalaPBWorker.scala
diff --git a/contrib/scalapblib/test/src/mill/contrib/scalapblib/TutorialTests.scala b/contrib/scalapblib/test/src/TutorialTests.scala
index fe0ce8d5..fe0ce8d5 100644
--- a/contrib/scalapblib/test/src/mill/contrib/scalapblib/TutorialTests.scala
+++ b/contrib/scalapblib/test/src/TutorialTests.scala
diff --git a/contrib/testng/src/mill/testng/ResultEvent.java b/contrib/testng/src/ResultEvent.java
index 6e2a50d6..6e2a50d6 100644
--- a/contrib/testng/src/mill/testng/ResultEvent.java
+++ b/contrib/testng/src/ResultEvent.java
diff --git a/contrib/testng/src/mill/testng/TestNGFramework.java b/contrib/testng/src/TestNGFramework.java
index 6e993fcc..6e993fcc 100644
--- a/contrib/testng/src/mill/testng/TestNGFramework.java
+++ b/contrib/testng/src/TestNGFramework.java
diff --git a/contrib/testng/src/mill/testng/TestNGInstance.java b/contrib/testng/src/TestNGInstance.java
index 4cf274d3..4cf274d3 100644
--- a/contrib/testng/src/mill/testng/TestNGInstance.java
+++ b/contrib/testng/src/TestNGInstance.java
diff --git a/contrib/testng/src/mill/testng/TestNGRunner.java b/contrib/testng/src/TestNGRunner.java
index 0ad05f76..0ad05f76 100644
--- a/contrib/testng/src/mill/testng/TestNGRunner.java
+++ b/contrib/testng/src/TestNGRunner.java
diff --git a/contrib/tut/src/mill/contrib/tut/TutModule.scala b/contrib/tut/src/TutModule.scala
index e51a8d7b..e51a8d7b 100644
--- a/contrib/tut/src/mill/contrib/tut/TutModule.scala
+++ b/contrib/tut/src/TutModule.scala
diff --git a/contrib/tut/test/src/mill/contrib/tut/TutTests.scala b/contrib/tut/test/src/TutTests.scala
index 468654bb..468654bb 100644
--- a/contrib/tut/test/src/mill/contrib/tut/TutTests.scala
+++ b/contrib/tut/test/src/TutTests.scala
diff --git a/contrib/twirllib/src/mill/twirllib/TwirlModule.scala b/contrib/twirllib/src/TwirlModule.scala
index 328afc47..985765fc 100644
--- a/contrib/twirllib/src/mill/twirllib/TwirlModule.scala
+++ b/contrib/twirllib/src/TwirlModule.scala
@@ -6,7 +6,7 @@ import mill.define.Sources
import mill.api.PathRef
import mill.scalalib.Lib.resolveDependencies
import mill.scalalib._
-import mill.util.Loose
+import mill.api.Loose
import scala.io.Codec
import scala.util.Properties
diff --git a/contrib/twirllib/src/mill/twirllib/TwirlWorker.scala b/contrib/twirllib/src/TwirlWorker.scala
index 09376a6f..09376a6f 100644
--- a/contrib/twirllib/src/mill/twirllib/TwirlWorker.scala
+++ b/contrib/twirllib/src/TwirlWorker.scala
diff --git a/contrib/twirllib/test/src/mill/twirllib/HelloWorldTests.scala b/contrib/twirllib/test/src/HelloWorldTests.scala
index 71f25ff4..71f25ff4 100644
--- a/contrib/twirllib/test/src/mill/twirllib/HelloWorldTests.scala
+++ b/contrib/twirllib/test/src/HelloWorldTests.scala
diff --git a/docs/example-1/foo/src/foo/Example.scala b/docs/example-1/foo/src/Example.scala
index f84f91f9..f84f91f9 100644
--- a/docs/example-1/foo/src/foo/Example.scala
+++ b/docs/example-1/foo/src/Example.scala
diff --git a/docs/example-2/foo/src/foo/Example.scala b/docs/example-2/foo/src/Example.scala
index f84f91f9..f84f91f9 100644
--- a/docs/example-2/foo/src/foo/Example.scala
+++ b/docs/example-2/foo/src/Example.scala
diff --git a/docs/pages/9 - Contrib Modules.md b/docs/pages/9 - Contrib Modules.md
index 4d811cde..cf63039a 100644
--- a/docs/pages/9 - Contrib Modules.md
+++ b/docs/pages/9 - Contrib Modules.md
@@ -276,18 +276,21 @@ Project home: https://github.com/lefou/mill-osgi
#### Quickstart
```scala
-import $ivy.`de.tototec::de.tobiasroeser.mill.osgi:0.0.2`
+import mill._, mill.scalalib._
+import $ivy.`de.tototec::de.tobiasroeser.mill.osgi:0.0.5`
import de.tobiasroeser.mill.osgi._
object project extends ScalaModule with OsgiBundleModule {
def bundleSymbolicName = "com.example.project"
- def osgiHeaders = T{ osgiHeaders().copy(
+ def osgiHeaders = T{ super.osgiHeaders().copy(
`Export-Package` = Seq("com.example.api"),
`Bundle-Activator` = Some("com.example.internal.Activator")
)}
+ // other settings ...
+
}
```
diff --git a/integration/test/resources/large-project/build.sc b/integration/test/resources/large-project/build.sc
new file mode 100644
index 00000000..27844c90
--- /dev/null
+++ b/integration/test/resources/large-project/build.sc
@@ -0,0 +1,293 @@
+import mill._, scalalib._
+
+trait TModule extends SbtModule {
+ def scalaVersion = "2.12.7"
+}
+
+object foo extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(foo.common.one)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(foo.common.two)
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq(foo.common.one)
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(foo.domain.one)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(foo.domain.two)
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq(foo.domain.three)
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(foo.server.one)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(foo.server.two)
+ }
+ }
+}
+
+object bar extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq(foo.common.three)
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(bar.common.one)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(bar.common.two)
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq(foo.domain.three)
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(bar.domain.one)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(bar.domain.two)
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq(foo.server.one)
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(bar.server.one)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(bar.server.two)
+ }
+ }
+}
+
+object ham extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq(bar.common.one)
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(bar.common.two)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(bar.common.three)
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq(bar.domain.three)
+ }
+ object two extends TModule {
+ def moduleDeps = Seq(bar.domain.two, ham.common.three)
+ }
+ object three extends TModule {
+ def moduleDeps = Seq(bar.domain.two)
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+}
+
+object eggs extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+}
+
+object salt extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+}
+
+object pepper extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+}
+
+object oregano extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+}
+
+object rosmarin extends Module {
+ object common extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object domain extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+ object server extends Module {
+ object one extends TModule {
+ def moduleDeps = Seq()
+ }
+ object two extends TModule {
+ def moduleDeps = Seq()
+ }
+ object three extends TModule {
+ def moduleDeps = Seq()
+ }
+ }
+}
diff --git a/integration/test/resources/large-project/foo/common/one/src/main/scala/foo/common/one/Main.scala b/integration/test/resources/large-project/foo/common/one/src/main/scala/foo/common/one/Main.scala
new file mode 100644
index 00000000..4fd74836
--- /dev/null
+++ b/integration/test/resources/large-project/foo/common/one/src/main/scala/foo/common/one/Main.scala
@@ -0,0 +1,5 @@
+package foo.common.one
+
+object Main extends App {
+ println("large-project")
+}
diff --git a/integration/test/src/mill/integration/AcyclicTests.scala b/integration/test/src/AcyclicTests.scala
index 145c106d..145c106d 100644
--- a/integration/test/src/mill/integration/AcyclicTests.scala
+++ b/integration/test/src/AcyclicTests.scala
diff --git a/integration/test/src/mill/integration/AmmoniteTests.scala b/integration/test/src/AmmoniteTests.scala
index 5851a393..5851a393 100644
--- a/integration/test/src/mill/integration/AmmoniteTests.scala
+++ b/integration/test/src/AmmoniteTests.scala
diff --git a/integration/test/src/mill/integration/BetterFilesTests.scala b/integration/test/src/BetterFilesTests.scala
index bdbaa2e3..bdbaa2e3 100644
--- a/integration/test/src/mill/integration/BetterFilesTests.scala
+++ b/integration/test/src/BetterFilesTests.scala
diff --git a/integration/test/src/mill/integration/CaffeineTests.scala b/integration/test/src/CaffeineTests.scala
index 56c66b21..56c66b21 100644
--- a/integration/test/src/mill/integration/CaffeineTests.scala
+++ b/integration/test/src/CaffeineTests.scala
diff --git a/integration/test/src/mill/integration/DocAnnotationsTests.scala b/integration/test/src/DocAnnotationsTests.scala
index 4d7ef11b..4d7ef11b 100644
--- a/integration/test/src/mill/integration/DocAnnotationsTests.scala
+++ b/integration/test/src/DocAnnotationsTests.scala
diff --git a/integration/test/src/mill/integration/IntegrationTestSuite.scala b/integration/test/src/IntegrationTestSuite.scala
index ca041eea..ca041eea 100644
--- a/integration/test/src/mill/integration/IntegrationTestSuite.scala
+++ b/integration/test/src/IntegrationTestSuite.scala
diff --git a/integration/test/src/mill/integration/JawnTests.scala b/integration/test/src/JawnTests.scala
index eafd1009..eafd1009 100644
--- a/integration/test/src/mill/integration/JawnTests.scala
+++ b/integration/test/src/JawnTests.scala
diff --git a/integration/test/src/LargeProjectTests.scala b/integration/test/src/LargeProjectTests.scala
new file mode 100644
index 00000000..e20bc932
--- /dev/null
+++ b/integration/test/src/LargeProjectTests.scala
@@ -0,0 +1,19 @@
+package mill.integration
+
+import mill.util.ScriptTestSuite
+import utest._
+
+class LargeProjectTests(fork: Boolean)
+ extends ScriptTestSuite(fork) {
+ def workspaceSlug: String = "large-project"
+ def scriptSourcePath: os.Path = os.pwd / 'integration / 'test / 'resources / workspaceSlug
+
+ val tests = Tests{
+ initWorkspace()
+ 'test - {
+
+ assert(eval("foo.common.one.compile"))
+ }
+
+ }
+}
diff --git a/integration/test/src/mill/integration/PlayJsonTests.scala b/integration/test/src/PlayJsonTests.scala
index 262dcb36..262dcb36 100644
--- a/integration/test/src/mill/integration/PlayJsonTests.scala
+++ b/integration/test/src/PlayJsonTests.scala
diff --git a/integration/test/src/mill/integration/UpickleTests.scala b/integration/test/src/UpickleTests.scala
index 133188d3..133188d3 100644
--- a/integration/test/src/mill/integration/UpickleTests.scala
+++ b/integration/test/src/UpickleTests.scala
diff --git a/integration/test/src/mill/integration/forked/Tests.scala b/integration/test/src/forked/Tests.scala
index 41844b58..b31042bb 100644
--- a/integration/test/src/mill/integration/forked/Tests.scala
+++ b/integration/test/src/forked/Tests.scala
@@ -3,6 +3,7 @@ package mill.integration.forked
object AcyclicTests extends mill.integration.AcyclicTests(fork = true)
object AmmoniteTests extends mill.integration.AmmoniteTests(fork = true)
object BetterFilesTests extends mill.integration.BetterFilesTests(fork = true)
+object LargeProjectTests extends mill.integration.LargeProjectTests(fork = true)
object JawnTests extends mill.integration.JawnTests(fork = true)
object UpickleTests extends mill.integration.UpickleTests(fork = true)
object PlayJsonTests extends mill.integration.PlayJsonTests(fork = true)
diff --git a/integration/test/src/mill/integration/local/Tests.scala b/integration/test/src/local/Tests.scala
index e95aac54..efc45b94 100644
--- a/integration/test/src/mill/integration/local/Tests.scala
+++ b/integration/test/src/local/Tests.scala
@@ -3,8 +3,9 @@ package mill.integration.local
object AcyclicTests extends mill.integration.AcyclicTests(fork = false)
object AmmoniteTests extends mill.integration.AmmoniteTests(fork = false)
object BetterFilesTests extends mill.integration.BetterFilesTests(fork = false)
+object LargeProjectTests extends mill.integration.LargeProjectTests(fork = false)
object JawnTests extends mill.integration.JawnTests(fork = false)
object UpickleTests extends mill.integration.UpickleTests(fork = false)
object PlayJsonTests extends mill.integration.PlayJsonTests(fork = false)
object CaffeineTests extends mill.integration.CaffeineTests(fork = false)
-object DocAnnotationsTests extends mill.integration.DocAnnotationsTests(fork = false) \ No newline at end of file
+object DocAnnotationsTests extends mill.integration.DocAnnotationsTests(fork = false)
diff --git a/main/api/src/mill/api/KeyedLockedCache.scala b/main/api/src/mill/api/KeyedLockedCache.scala
new file mode 100644
index 00000000..47fdd888
--- /dev/null
+++ b/main/api/src/mill/api/KeyedLockedCache.scala
@@ -0,0 +1,44 @@
+package mill.api
+
+/**
+ * A combination lock & cache; users provide a key, value-factory, and a
+ * body function to be called with the value. [[KeyedLockedCache]] ensures that
+ * the body function is called with the computed/cached value sequentially.
+ */
+trait KeyedLockedCache[T]{
+ def withCachedValue[V](key: Long)(f: => T)(f2: T => V): V
+}
+
+object KeyedLockedCache{
+ class RandomBoundedCache[T](hotParallelism: Int, coldCacheSize: Int) extends KeyedLockedCache[T]{
+ private[this] val random = new scala.util.Random(313373)
+ val available = new java.util.concurrent.Semaphore(hotParallelism)
+
+ // Awful asymptotic complexity, but our caches are tiny n < 10 so it doesn't matter
+ var cache = Array.fill[Option[(Long, T)]](coldCacheSize)(None)
+
+ def withCachedValue[V](key: Long)(f: => T)(f2: T => V): V = {
+ available.acquire()
+ val pickedValue = synchronized{
+ cache.indexWhere(_.exists(_._1 == key)) match {
+ case -1 => f
+ case i =>
+ val (k, v) = cache(i).get
+ cache(i) = None
+ v
+ }
+ }
+ val result = f2(pickedValue)
+ synchronized{
+ cache.indexWhere(_.isEmpty) match{
+ // Random eviction #YOLO
+ case -1 => cache(random.nextInt(cache.length)) = Some((key, pickedValue))
+ case i => cache(i) = Some((key, pickedValue))
+ }
+ }
+
+ available.release()
+ result
+ }
+ }
+}
diff --git a/main/client/src/mill/main/client/InputPumper.java b/main/client/src/InputPumper.java
index 5205be0b..5205be0b 100644
--- a/main/client/src/mill/main/client/InputPumper.java
+++ b/main/client/src/InputPumper.java
diff --git a/main/client/src/mill/main/client/Lock.java b/main/client/src/Lock.java
index 6e5f18b0..6e5f18b0 100644
--- a/main/client/src/mill/main/client/Lock.java
+++ b/main/client/src/Lock.java
diff --git a/main/client/src/mill/main/client/Locked.java b/main/client/src/Locked.java
index e6ad3d63..e6ad3d63 100644
--- a/main/client/src/mill/main/client/Locked.java
+++ b/main/client/src/Locked.java
diff --git a/main/client/src/mill/main/client/Locks.java b/main/client/src/Locks.java
index 64259293..64259293 100644
--- a/main/client/src/mill/main/client/Locks.java
+++ b/main/client/src/Locks.java
diff --git a/main/client/src/mill/main/client/MillClientMain.java b/main/client/src/MillClientMain.java
index 3857caff..3857caff 100644
--- a/main/client/src/mill/main/client/MillClientMain.java
+++ b/main/client/src/MillClientMain.java
diff --git a/main/client/src/mill/main/client/ProxyOutputStream.java b/main/client/src/ProxyOutputStream.java
index 339e0150..339e0150 100644
--- a/main/client/src/mill/main/client/ProxyOutputStream.java
+++ b/main/client/src/ProxyOutputStream.java
diff --git a/main/client/src/mill/main/client/ProxyStreamPumper.java b/main/client/src/ProxyStreamPumper.java
index 977323f3..977323f3 100644
--- a/main/client/src/mill/main/client/ProxyStreamPumper.java
+++ b/main/client/src/ProxyStreamPumper.java
diff --git a/main/client/src/mill/main/client/Util.java b/main/client/src/Util.java
index 54361734..54361734 100644
--- a/main/client/src/mill/main/client/Util.java
+++ b/main/client/src/Util.java
diff --git a/main/client/test/src/mill/main/client/ClientTests.java b/main/client/test/src/ClientTests.java
index f3fcf154..f3fcf154 100644
--- a/main/client/test/src/mill/main/client/ClientTests.java
+++ b/main/client/test/src/ClientTests.java
diff --git a/main/core/src/mill/define/Applicative.scala b/main/core/src/define/Applicative.scala
index 5e63b1cc..5e63b1cc 100644
--- a/main/core/src/mill/define/Applicative.scala
+++ b/main/core/src/define/Applicative.scala
diff --git a/main/core/src/mill/define/BaseModule.scala b/main/core/src/define/BaseModule.scala
index cd79f73e..cd79f73e 100644
--- a/main/core/src/mill/define/BaseModule.scala
+++ b/main/core/src/define/BaseModule.scala
diff --git a/main/core/src/mill/define/Caller.scala b/main/core/src/define/Caller.scala
index 6d2d4d1d..6d2d4d1d 100644
--- a/main/core/src/mill/define/Caller.scala
+++ b/main/core/src/define/Caller.scala
diff --git a/main/core/src/mill/define/Cross.scala b/main/core/src/define/Cross.scala
index aa730e0d..aa730e0d 100644
--- a/main/core/src/mill/define/Cross.scala
+++ b/main/core/src/define/Cross.scala
diff --git a/main/core/src/mill/define/Ctx.scala b/main/core/src/define/Ctx.scala
index c21e53b4..c21e53b4 100644
--- a/main/core/src/mill/define/Ctx.scala
+++ b/main/core/src/define/Ctx.scala
diff --git a/main/core/src/mill/define/Discover.scala b/main/core/src/define/Discover.scala
index f0c668e6..c7dab54c 100644
--- a/main/core/src/mill/define/Discover.scala
+++ b/main/core/src/define/Discover.scala
@@ -79,9 +79,12 @@ object Discover {
}
if overridesRoutes.nonEmpty
} yield {
+ // by wrapping the `overridesRoutes` in a lambda function we kind of work around
+ // the problem of generating a *huge* macro method body that finally exceeds the
+ // JVM's maximum allowed method size
+ val overridesLambda = q"(() => $overridesRoutes)()"
val lhs = q"classOf[${discoveredModuleType.typeSymbol.asClass}]"
- val rhs = q"scala.Seq[(Int, mill.util.Router.EntryPoint[_])](..$overridesRoutes)"
- q"$lhs -> $rhs"
+ q"$lhs -> $overridesLambda"
}
c.Expr[Discover[T]](q"mill.define.Discover(scala.collection.immutable.Map(..$mapping))")
diff --git a/main/core/src/mill/define/Graph.scala b/main/core/src/define/Graph.scala
index 3119f2fb..5b29bd7b 100644
--- a/main/core/src/mill/define/Graph.scala
+++ b/main/core/src/define/Graph.scala
@@ -2,7 +2,7 @@ package mill.define
import mill.eval.Tarjans
import mill.util.MultiBiMap
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
object Graph {
diff --git a/main/core/src/mill/define/Module.scala b/main/core/src/define/Module.scala
index a8fc5be7..a8fc5be7 100644
--- a/main/core/src/mill/define/Module.scala
+++ b/main/core/src/define/Module.scala
diff --git a/main/core/src/mill/define/Task.scala b/main/core/src/define/Task.scala
index a464bf18..a464bf18 100644
--- a/main/core/src/mill/define/Task.scala
+++ b/main/core/src/define/Task.scala
diff --git a/main/core/src/mill/eval/Evaluator.scala b/main/core/src/eval/Evaluator.scala
index 8709064e..dbaf9433 100644
--- a/main/core/src/mill/eval/Evaluator.scala
+++ b/main/core/src/eval/Evaluator.scala
@@ -10,7 +10,7 @@ import mill.define.{Ctx => _, _}
import mill.api.Result.OuterStack
import mill.util
import mill.util._
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
import scala.collection.mutable
import scala.util.control.NonFatal
diff --git a/main/core/src/mill/eval/Tarjans.scala b/main/core/src/eval/Tarjans.scala
index ade335a9..ade335a9 100644
--- a/main/core/src/mill/eval/Tarjans.scala
+++ b/main/core/src/eval/Tarjans.scala
diff --git a/main/core/src/mill/eval/package.scala b/main/core/src/eval/package.scala
index 433f9074..433f9074 100644
--- a/main/core/src/mill/eval/package.scala
+++ b/main/core/src/eval/package.scala
diff --git a/main/core/src/mill/util/AggWrapper.scala b/main/core/src/mill/util/AggWrapper.scala
deleted file mode 100644
index 6c107875..00000000
--- a/main/core/src/mill/util/AggWrapper.scala
+++ /dev/null
@@ -1,119 +0,0 @@
-package mill.util
-
-
-
-import scala.collection.mutable
-object Strict extends AggWrapper(true)
-object Loose extends AggWrapper(false)
-sealed class AggWrapper(strictUniqueness: Boolean){
- /**
- * A collection with enforced uniqueness, fast contains and deterministic
- * ordering. Raises an exception if a duplicate is found; call
- * `toSeq.distinct` if you explicitly want to make it swallow duplicates
- */
- trait Agg[V] extends TraversableOnce[V]{
- def contains(v: V): Boolean
- def items: Iterator[V]
- def indexed: IndexedSeq[V]
- def flatMap[T](f: V => TraversableOnce[T]): Agg[T]
- def map[T](f: V => T): Agg[T]
- def filter(f: V => Boolean): Agg[V]
- def withFilter(f: V => Boolean): Agg[V]
- def collect[T](f: PartialFunction[V, T]): Agg[T]
- def zipWithIndex: Agg[(V, Int)]
- def reverse: Agg[V]
- def zip[T](other: Agg[T]): Agg[(V, T)]
- def ++[T >: V](other: TraversableOnce[T]): Agg[T]
- def length: Int
- }
-
- object Agg{
- def empty[V]: Agg[V] = new Agg.Mutable[V]
- implicit def jsonFormat[T: upickle.default.ReadWriter]: upickle.default.ReadWriter[Agg[T]] =
- upickle.default.readwriter[Seq[T]].bimap[Agg[T]](
- _.toList,
- Agg.from(_)
- )
-
- def apply[V](items: V*) = from(items)
-
- implicit def from[V](items: TraversableOnce[V]): Agg[V] = {
- val set = new Agg.Mutable[V]()
- items.foreach(set.append)
- set
- }
-
-
- class Mutable[V]() extends Agg[V]{
-
- private[this] val set0 = mutable.LinkedHashSet.empty[V]
- def contains(v: V) = set0.contains(v)
- def append(v: V) = if (!contains(v)){
- set0.add(v)
-
- }else if (strictUniqueness){
- throw new Exception("Duplicated item inserted into OrderedSet: " + v)
- }
- def appendAll(vs: Seq[V]) = vs.foreach(append)
- def items = set0.iterator
- def indexed: IndexedSeq[V] = items.toIndexedSeq
- def set: collection.Set[V] = set0
-
- def map[T](f: V => T): Agg[T] = {
- val output = new Agg.Mutable[T]
- for(i <- items) output.append(f(i))
- output
- }
- def flatMap[T](f: V => TraversableOnce[T]): Agg[T] = {
- val output = new Agg.Mutable[T]
- for(i <- items) for(i0 <- f(i)) output.append(i0)
- output
- }
- def filter(f: V => Boolean): Agg[V] = {
- val output = new Agg.Mutable[V]
- for(i <- items) if (f(i)) output.append(i)
- output
- }
- def withFilter(f: V => Boolean): Agg[V] = filter(f)
-
- def collect[T](f: PartialFunction[V, T]) = this.filter(f.isDefinedAt).map(x => f(x))
-
- def zipWithIndex = {
- var i = 0
- this.map{ x =>
- i += 1
- (x, i-1)
- }
- }
-
- def reverse = Agg.from(indexed.reverseIterator)
-
- def zip[T](other: Agg[T]) = Agg.from(items.zip(other.items))
- def ++[T >: V](other: TraversableOnce[T]) = Agg.from(items ++ other)
- def length: Int = set0.size
-
- // Members declared in scala.collection.GenTraversableOnce
- def isTraversableAgain: Boolean = items.isTraversableAgain
- def toIterator: Iterator[V] = items.toIterator
- def toStream: Stream[V] = items.toStream
-
- // Members declared in scala.collection.TraversableOnce
- def copyToArray[B >: V](xs: Array[B], start: Int,len: Int): Unit = items.copyToArray(xs, start, len)
- def exists(p: V => Boolean): Boolean = items.exists(p)
- def find(p: V => Boolean): Option[V] = items.find(p)
- def forall(p: V => Boolean): Boolean = items.forall(p)
- def foreach[U](f: V => U): Unit = items.foreach(f)
- def hasDefiniteSize: Boolean = items.hasDefiniteSize
- def isEmpty: Boolean = items.isEmpty
- def seq: scala.collection.TraversableOnce[V] = items
- def toTraversable: Traversable[V] = items.toTraversable
-
- override def hashCode() = items.map(_.hashCode()).sum
- override def equals(other: Any) = other match{
- case s: Agg[_] => items.sameElements(s.items)
- case _ => super.equals(other)
- }
- override def toString = items.mkString("Agg(", ", ", ")")
- }
- }
-}
diff --git a/main/core/src/mill/util/EitherOps.scala b/main/core/src/util/EitherOps.scala
index da2552c8..da2552c8 100644
--- a/main/core/src/mill/util/EitherOps.scala
+++ b/main/core/src/util/EitherOps.scala
diff --git a/main/core/src/mill/util/EnclosingClass.scala b/main/core/src/util/EnclosingClass.scala
index a69cc525..a69cc525 100644
--- a/main/core/src/mill/util/EnclosingClass.scala
+++ b/main/core/src/util/EnclosingClass.scala
diff --git a/main/core/src/mill/util/JsonFormatters.scala b/main/core/src/util/JsonFormatters.scala
index 830782c6..830782c6 100644
--- a/main/core/src/mill/util/JsonFormatters.scala
+++ b/main/core/src/util/JsonFormatters.scala
diff --git a/main/core/src/mill/util/Loggers.scala b/main/core/src/util/Loggers.scala
index aab1a324..aab1a324 100644
--- a/main/core/src/mill/util/Loggers.scala
+++ b/main/core/src/util/Loggers.scala
diff --git a/main/core/src/mill/util/MultiBiMap.scala b/main/core/src/util/MultiBiMap.scala
index 73bb42c4..51ea63f2 100644
--- a/main/core/src/mill/util/MultiBiMap.scala
+++ b/main/core/src/util/MultiBiMap.scala
@@ -1,7 +1,7 @@
package mill.util
import scala.collection.mutable
-import Strict.Agg
+import mill.api.Strict.Agg
/**
* A map from keys to collections of values: you can assign multiple values
diff --git a/main/core/src/mill/util/ParseArgs.scala b/main/core/src/util/ParseArgs.scala
index fc1a8ab3..fc1a8ab3 100644
--- a/main/core/src/mill/util/ParseArgs.scala
+++ b/main/core/src/util/ParseArgs.scala
diff --git a/main/core/src/mill/util/Router.scala b/main/core/src/util/Router.scala
index 5dd3c947..5dd3c947 100644
--- a/main/core/src/mill/util/Router.scala
+++ b/main/core/src/util/Router.scala
diff --git a/main/core/src/mill/util/Scripts.scala b/main/core/src/util/Scripts.scala
index 65eb6b2b..65eb6b2b 100644
--- a/main/core/src/mill/util/Scripts.scala
+++ b/main/core/src/util/Scripts.scala
diff --git a/main/core/src/mill/util/Watched.scala b/main/core/src/util/Watched.scala
index 29be53c3..29be53c3 100644
--- a/main/core/src/mill/util/Watched.scala
+++ b/main/core/src/util/Watched.scala
diff --git a/main/core/src/mill/util/package.scala b/main/core/src/util/package.scala
index ec5d2efc..ec5d2efc 100644
--- a/main/core/src/mill/util/package.scala
+++ b/main/core/src/util/package.scala
diff --git a/main/graphviz/src/mill/main/graphviz/GraphvizTools.scala b/main/graphviz/src/GraphvizTools.scala
index 9812c81f..9812c81f 100644
--- a/main/graphviz/src/mill/main/graphviz/GraphvizTools.scala
+++ b/main/graphviz/src/GraphvizTools.scala
diff --git a/main/moduledefs/src/mill/moduledefs/AutoOverridePlugin.scala b/main/moduledefs/src/AutoOverridePlugin.scala
index a870e7ec..a870e7ec 100644
--- a/main/moduledefs/src/mill/moduledefs/AutoOverridePlugin.scala
+++ b/main/moduledefs/src/AutoOverridePlugin.scala
diff --git a/main/moduledefs/src/mill/moduledefs/Cacher.scala b/main/moduledefs/src/Cacher.scala
index 023f03be..023f03be 100644
--- a/main/moduledefs/src/mill/moduledefs/Cacher.scala
+++ b/main/moduledefs/src/Cacher.scala
diff --git a/main/moduledefs/src/mill/moduledefs/Scaladoc.java b/main/moduledefs/src/Scaladoc.java
index 7a7d700b..7a7d700b 100644
--- a/main/moduledefs/src/mill/moduledefs/Scaladoc.java
+++ b/main/moduledefs/src/Scaladoc.java
diff --git a/main/src/mill/MillMain.scala b/main/src/MillMain.scala
index e953e65d..e953e65d 100644
--- a/main/src/mill/MillMain.scala
+++ b/main/src/MillMain.scala
diff --git a/main/src/mill/main/MainModule.scala b/main/src/main/MainModule.scala
index 34145668..dbe92cc2 100644
--- a/main/src/mill/main/MainModule.scala
+++ b/main/src/main/MainModule.scala
@@ -32,6 +32,10 @@ trait MainModule extends mill.Module{
implicit def millDiscover: mill.define.Discover[_]
implicit def millScoptTasksReads[T] = new mill.main.Tasks.Scopt[T]()
implicit def millScoptEvaluatorReads[T] = new mill.main.EvaluatorScopt[T]()
+
+ /**
+ * Show the mill version.
+ */
def version() = mill.T.command {
val res = System.getProperty("MILL_VERSION")
println(res)
diff --git a/main/src/mill/main/MainRunner.scala b/main/src/main/MainRunner.scala
index e50ed370..e50ed370 100644
--- a/main/src/mill/main/MainRunner.scala
+++ b/main/src/main/MainRunner.scala
diff --git a/main/src/mill/main/MainScopts.scala b/main/src/main/MainScopts.scala
index 718a30e6..718a30e6 100644
--- a/main/src/mill/main/MainScopts.scala
+++ b/main/src/main/MainScopts.scala
diff --git a/main/src/mill/main/MillServerMain.scala b/main/src/main/MillServerMain.scala
index 26ca99e6..26ca99e6 100644
--- a/main/src/mill/main/MillServerMain.scala
+++ b/main/src/main/MillServerMain.scala
diff --git a/main/src/mill/main/ReplApplyHandler.scala b/main/src/main/ReplApplyHandler.scala
index a8e467d4..786a1409 100644
--- a/main/src/mill/main/ReplApplyHandler.scala
+++ b/main/src/main/ReplApplyHandler.scala
@@ -6,7 +6,7 @@ import mill.define.Segment.Label
import mill.define._
import mill.eval.{Evaluator, Result}
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
import scala.collection.mutable
object ReplApplyHandler{
diff --git a/main/src/mill/main/Resolve.scala b/main/src/main/Resolve.scala
index a2c186ed..a2c186ed 100644
--- a/main/src/mill/main/Resolve.scala
+++ b/main/src/main/Resolve.scala
diff --git a/main/src/mill/main/RunScript.scala b/main/src/main/RunScript.scala
index 47526631..b858c8b9 100644
--- a/main/src/mill/main/RunScript.scala
+++ b/main/src/main/RunScript.scala
@@ -11,7 +11,7 @@ import mill.define._
import mill.eval.{Evaluator, PathRef, Result}
import mill.util.{EitherOps, ParseArgs, Watched}
import mill.api.Logger
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
import scala.collection.mutable
import scala.reflect.ClassTag
diff --git a/main/src/mill/main/VisualizeModule.scala b/main/src/main/VisualizeModule.scala
index e950973f..e950973f 100644
--- a/main/src/mill/main/VisualizeModule.scala
+++ b/main/src/main/VisualizeModule.scala
diff --git a/main/src/mill/modules/Assembly.scala b/main/src/modules/Assembly.scala
index 141bc226..141bc226 100644
--- a/main/src/mill/modules/Assembly.scala
+++ b/main/src/modules/Assembly.scala
diff --git a/main/src/mill/modules/Jvm.scala b/main/src/modules/Jvm.scala
index 1a51ed8b..e17631e3 100644
--- a/main/src/mill/modules/Jvm.scala
+++ b/main/src/modules/Jvm.scala
@@ -15,7 +15,7 @@ import mill.main.client.InputPumper
import mill.eval.{PathRef, Result}
import mill.util.Ctx
import mill.api.IO
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
import scala.collection.mutable
import scala.collection.JavaConverters._
diff --git a/main/src/mill/modules/Util.scala b/main/src/modules/Util.scala
index 2b98a304..029626fe 100644
--- a/main/src/mill/modules/Util.scala
+++ b/main/src/modules/Util.scala
@@ -3,7 +3,8 @@ package mill.modules
import coursier.Repository
import mill.api.{PathRef, IO}
-import mill.util.{Ctx, Loose}
+import mill.util.Ctx
+import mill.api.Loose
object Util {
@@ -55,7 +56,7 @@ object Util {
val localPath = sys.props(key)
if (localPath != null) {
mill.api.Result.Success(
- Loose.Agg.from(localPath.split(',').map(p => PathRef(os.Path(p), quick = true)))
+ mill.api.Loose.Agg.from(localPath.split(',').map(p => PathRef(os.Path(p), quick = true)))
)
} else {
mill.modules.Jvm.resolveDependencies(
diff --git a/main/src/mill/package.scala b/main/src/package.scala
index 0ccd094f..6bcb1bdf 100644
--- a/main/src/mill/package.scala
+++ b/main/src/package.scala
@@ -7,6 +7,6 @@ package object mill extends JsonFormatters{
type PathRef = mill.api.PathRef
type Module = define.Module
type Cross[T] = define.Cross[T]
- type Agg[T] = util.Loose.Agg[T]
- val Agg = util.Loose.Agg
+ type Agg[T] = mill.api.Loose.Agg[T]
+ val Agg = mill.api.Loose.Agg
}
diff --git a/main/test/resources/examples/javac/build.sc b/main/test/resources/examples/javac/build.sc
index 2ed9f915..17366219 100644
--- a/main/test/resources/examples/javac/build.sc
+++ b/main/test/resources/examples/javac/build.sc
@@ -2,7 +2,7 @@ import mill.T
import mill.eval.JavaCompileJarTests.compileAll
import mill.api.PathRef
import mill.modules.Jvm
-import mill.util.Loose
+import mill.api.Loose
def sourceRootPath = millSourcePath / 'src
def resourceRootPath = millSourcePath / 'resources
diff --git a/main/test/src/mill/TestMain.scala b/main/test/src/TestMain.scala
index 80e7e627..80e7e627 100644
--- a/main/test/src/mill/TestMain.scala
+++ b/main/test/src/TestMain.scala
diff --git a/main/test/src/mill/UTestFramework.scala b/main/test/src/UTestFramework.scala
index c234151b..c234151b 100644
--- a/main/test/src/mill/UTestFramework.scala
+++ b/main/test/src/UTestFramework.scala
diff --git a/main/test/src/mill/define/ApplicativeTests.scala b/main/test/src/define/ApplicativeTests.scala
index 9dd2132f..9dd2132f 100644
--- a/main/test/src/mill/define/ApplicativeTests.scala
+++ b/main/test/src/define/ApplicativeTests.scala
diff --git a/main/test/src/mill/define/BasePathTests.scala b/main/test/src/define/BasePathTests.scala
index b8a653c8..b8a653c8 100644
--- a/main/test/src/mill/define/BasePathTests.scala
+++ b/main/test/src/define/BasePathTests.scala
diff --git a/main/test/src/mill/define/CacherTests.scala b/main/test/src/define/CacherTests.scala
index 59ebf3f6..1524e5c1 100644
--- a/main/test/src/mill/define/CacherTests.scala
+++ b/main/test/src/define/CacherTests.scala
@@ -1,7 +1,7 @@
package mill.define
import mill.util.{DummyLogger, TestEvaluator, TestUtil}
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
import mill.T
import mill.api.Result.Success
import utest._
diff --git a/main/test/src/mill/define/DiscoverTests.scala b/main/test/src/define/DiscoverTests.scala
index 248d6afe..248d6afe 100644
--- a/main/test/src/mill/define/DiscoverTests.scala
+++ b/main/test/src/define/DiscoverTests.scala
diff --git a/main/test/src/mill/define/GraphTests.scala b/main/test/src/define/GraphTests.scala
index 224ce59f..b36dbf95 100644
--- a/main/test/src/mill/define/GraphTests.scala
+++ b/main/test/src/define/GraphTests.scala
@@ -4,7 +4,7 @@ package mill.define
import mill.eval.Evaluator
import mill.util.{TestGraphs, TestUtil}
import utest._
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
object GraphTests extends TestSuite{
val tests = Tests{
diff --git a/main/test/src/mill/define/MacroErrorTests.scala b/main/test/src/define/MacroErrorTests.scala
index c8b140fa..c8b140fa 100644
--- a/main/test/src/mill/define/MacroErrorTests.scala
+++ b/main/test/src/define/MacroErrorTests.scala
diff --git a/main/test/src/mill/eval/CrossTests.scala b/main/test/src/eval/CrossTests.scala
index f194924e..f194924e 100644
--- a/main/test/src/mill/eval/CrossTests.scala
+++ b/main/test/src/eval/CrossTests.scala
diff --git a/main/test/src/mill/eval/EvaluationTests.scala b/main/test/src/eval/EvaluationTests.scala
index 74f9088c..7f924db2 100644
--- a/main/test/src/mill/eval/EvaluationTests.scala
+++ b/main/test/src/eval/EvaluationTests.scala
@@ -5,7 +5,7 @@ import mill.util.TestUtil.{Test, test}
import mill.define.{Discover, Graph, Target, Task}
import mill.{Module, T}
import mill.util.{DummyLogger, TestEvaluator, TestGraphs, TestUtil}
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
import utest._
import utest.framework.TestPath
diff --git a/main/test/src/mill/eval/FailureTests.scala b/main/test/src/eval/FailureTests.scala
index dcfbcb60..dcfbcb60 100644
--- a/main/test/src/mill/eval/FailureTests.scala
+++ b/main/test/src/eval/FailureTests.scala
diff --git a/main/test/src/mill/eval/JavaCompileJarTests.scala b/main/test/src/eval/JavaCompileJarTests.scala
index 426c6ea6..0f9002df 100644
--- a/main/test/src/mill/eval/JavaCompileJarTests.scala
+++ b/main/test/src/eval/JavaCompileJarTests.scala
@@ -4,12 +4,13 @@ import mill.define.{Discover, Input, Target, Task}
import mill.modules.Jvm
import mill.api.Ctx.Dest
import mill.{Module, T}
-import mill.util.{DummyLogger, Loose, TestEvaluator, TestUtil}
-import mill.util.Strict.Agg
+import mill.util.{DummyLogger, TestEvaluator, TestUtil}
+import mill.api.Strict.Agg
+import mill.api.Loose
import utest._
import mill._
object JavaCompileJarTests extends TestSuite{
- def compileAll(sources: mill.util.Loose.Agg[PathRef])(implicit ctx: Dest) = {
+ def compileAll(sources: mill.api.Loose.Agg[PathRef])(implicit ctx: Dest) = {
os.makeDir.all(ctx.dest)
os.proc("javac", sources.map(_.path.toString()).toSeq, "-d", ctx.dest).call(ctx.dest)
diff --git a/main/test/src/mill/eval/ModuleTests.scala b/main/test/src/eval/ModuleTests.scala
index f28fc9b6..f28fc9b6 100644
--- a/main/test/src/mill/eval/ModuleTests.scala
+++ b/main/test/src/eval/ModuleTests.scala
diff --git a/main/test/src/mill/eval/TarjanTests.scala b/main/test/src/eval/TarjanTests.scala
index 2f9d0a4d..2f9d0a4d 100644
--- a/main/test/src/mill/eval/TarjanTests.scala
+++ b/main/test/src/eval/TarjanTests.scala
diff --git a/main/test/src/mill/eval/TaskTests.scala b/main/test/src/eval/TaskTests.scala
index 0bfd8efc..0bfd8efc 100644
--- a/main/test/src/mill/eval/TaskTests.scala
+++ b/main/test/src/eval/TaskTests.scala
diff --git a/main/test/src/mill/main/ClientServerTests.scala b/main/test/src/main/ClientServerTests.scala
index 05238a5f..05238a5f 100644
--- a/main/test/src/mill/main/ClientServerTests.scala
+++ b/main/test/src/main/ClientServerTests.scala
diff --git a/main/test/src/mill/main/ForeignBuildsTest.scala b/main/test/src/main/ForeignBuildsTest.scala
index cfc8d00c..cfc8d00c 100644
--- a/main/test/src/mill/main/ForeignBuildsTest.scala
+++ b/main/test/src/main/ForeignBuildsTest.scala
diff --git a/main/test/src/mill/main/ForeignConflictTest.scala b/main/test/src/main/ForeignConflictTest.scala
index a4352bb6..a4352bb6 100644
--- a/main/test/src/mill/main/ForeignConflictTest.scala
+++ b/main/test/src/main/ForeignConflictTest.scala
diff --git a/main/test/src/mill/main/JavaCompileJarTests.scala b/main/test/src/main/JavaCompileJarTests.scala
index 37c64b05..37c64b05 100644
--- a/main/test/src/mill/main/JavaCompileJarTests.scala
+++ b/main/test/src/main/JavaCompileJarTests.scala
diff --git a/main/test/src/mill/main/MainTests.scala b/main/test/src/main/MainTests.scala
index e836099c..e836099c 100644
--- a/main/test/src/mill/main/MainTests.scala
+++ b/main/test/src/main/MainTests.scala
diff --git a/main/test/src/mill/util/ParseArgsTest.scala b/main/test/src/util/ParseArgsTest.scala
index e31baf4f..e31baf4f 100644
--- a/main/test/src/mill/util/ParseArgsTest.scala
+++ b/main/test/src/util/ParseArgsTest.scala
diff --git a/main/test/src/mill/util/ScriptTestSuite.scala b/main/test/src/util/ScriptTestSuite.scala
index f448aaaf..f448aaaf 100644
--- a/main/test/src/mill/util/ScriptTestSuite.scala
+++ b/main/test/src/util/ScriptTestSuite.scala
diff --git a/main/test/src/mill/util/TestEvaluator.scala b/main/test/src/util/TestEvaluator.scala
index 9a235679..81c8fe12 100644
--- a/main/test/src/mill/util/TestEvaluator.scala
+++ b/main/test/src/util/TestEvaluator.scala
@@ -3,7 +3,7 @@ package mill.util
import mill.define.{Input, Target, Task}
import mill.api.Result.OuterStack
import mill.eval.{Evaluator, Result}
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
import utest.assert
import utest.framework.TestPath
diff --git a/main/test/src/mill/util/TestGraphs.scala b/main/test/src/util/TestGraphs.scala
index d3b35ddc..d3b35ddc 100644
--- a/main/test/src/mill/util/TestGraphs.scala
+++ b/main/test/src/util/TestGraphs.scala
diff --git a/main/test/src/mill/util/TestUtil.scala b/main/test/src/util/TestUtil.scala
index baab2992..462b7f5c 100644
--- a/main/test/src/mill/util/TestUtil.scala
+++ b/main/test/src/util/TestUtil.scala
@@ -5,7 +5,7 @@ import mill.define._
import mill.api.Result
import mill.api.Result.OuterStack
import utest.assert
-import mill.util.Strict.Agg
+import mill.api.Strict.Agg
import utest.framework.TestPath
import scala.collection.mutable
diff --git a/scalajslib/api/src/mill/scalajslib/api/ScalaJSWorkerApi.scala b/scalajslib/api/src/ScalaJSWorkerApi.scala
index 4e44a8df..4e44a8df 100644
--- a/scalajslib/api/src/mill/scalajslib/api/ScalaJSWorkerApi.scala
+++ b/scalajslib/api/src/ScalaJSWorkerApi.scala
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala b/scalajslib/src/ScalaJSModule.scala
index 8568c39b..137e8ee2 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSModule.scala
+++ b/scalajslib/src/ScalaJSModule.scala
@@ -7,7 +7,8 @@ import mill.eval.{PathRef, Result}
import mill.api.Result.Success
import mill.scalalib.Lib.resolveDependencies
import mill.scalalib.{DepSyntax, Lib, TestModule, TestRunner}
-import mill.util.{Ctx, Loose}
+import mill.util.Ctx
+import mill.api.Loose
import mill.scalajslib.api._
trait ScalaJSModule extends scalalib.ScalaModule { outer =>
diff --git a/scalajslib/src/mill/scalajslib/ScalaJSWorkerApi.scala b/scalajslib/src/ScalaJSWorkerApi.scala
index bcaeb2d3..bcaeb2d3 100644
--- a/scalajslib/src/mill/scalajslib/ScalaJSWorkerApi.scala
+++ b/scalajslib/src/ScalaJSWorkerApi.scala
diff --git a/scalajslib/test/resources/multi-module/shared/src/shared/Utils.scala b/scalajslib/test/resources/multi-module/shared/src/Utils.scala
index fad61a31..fad61a31 100644
--- a/scalajslib/test/resources/multi-module/shared/src/shared/Utils.scala
+++ b/scalajslib/test/resources/multi-module/shared/src/Utils.scala
diff --git a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala b/scalajslib/test/src/HelloJSWorldTests.scala
index 1b3e9bb3..1b3e9bb3 100644
--- a/scalajslib/test/src/mill/scalajslib/HelloJSWorldTests.scala
+++ b/scalajslib/test/src/HelloJSWorldTests.scala
diff --git a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala b/scalajslib/test/src/MultiModuleTests.scala
index 2ffea2cf..2ffea2cf 100644
--- a/scalajslib/test/src/mill/scalajslib/MultiModuleTests.scala
+++ b/scalajslib/test/src/MultiModuleTests.scala
diff --git a/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala b/scalajslib/test/src/NodeJSConfigTests.scala
index d9e6b45b..d9e6b45b 100644
--- a/scalajslib/test/src/mill/scalajslib/NodeJSConfigTests.scala
+++ b/scalajslib/test/src/NodeJSConfigTests.scala
diff --git a/scalajslib/test/src/mill/scalajslib/ScalaJsUtils.scala b/scalajslib/test/src/ScalaJsUtils.scala
index 68f2f7ee..68f2f7ee 100644
--- a/scalajslib/test/src/mill/scalajslib/ScalaJsUtils.scala
+++ b/scalajslib/test/src/ScalaJsUtils.scala
diff --git a/scalajslib/worker/0.6/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala b/scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala
index 64b668e5..64b668e5 100644
--- a/scalajslib/worker/0.6/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala
+++ b/scalajslib/worker/0.6/src/ScalaJSWorkerImpl.scala
diff --git a/scalajslib/worker/1.0/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala b/scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala
index f40f7a6b..f40f7a6b 100644
--- a/scalajslib/worker/1.0/src/mill/scalajslib/worker/ScalaJSWorkerImpl.scala
+++ b/scalajslib/worker/1.0/src/ScalaJSWorkerImpl.scala
diff --git a/scalalib/api/src/mill/scalalib/api/ZincWorkerApi.scala b/scalalib/api/src/ZincWorkerApi.scala
index c5230ec5..d42be9f3 100644
--- a/scalalib/api/src/mill/scalalib/api/ZincWorkerApi.scala
+++ b/scalalib/api/src/ZincWorkerApi.scala
@@ -3,14 +3,16 @@ package mill.scalalib.api
import mill.api.Loose.Agg
import mill.api.PathRef
import mill.api.JsonFormatters._
-
+object ZincWorkerApi{
+ type Ctx = mill.api.Ctx.Dest with mill.api.Ctx.Log with mill.api.Ctx.Home
+}
trait ZincWorkerApi {
/** Compile a Java-only project */
def compileJava(upstreamCompileOutput: Seq[CompilationResult],
sources: Agg[os.Path],
compileClasspath: Agg[os.Path],
javacOptions: Seq[String])
- (implicit ctx: mill.api.Ctx): mill.api.Result[CompilationResult]
+ (implicit ctx: ZincWorkerApi.Ctx): mill.api.Result[CompilationResult]
/** Compile a mixed Scala/Java or Scala-only project */
def compileMixed(upstreamCompileOutput: Seq[CompilationResult],
@@ -18,21 +20,21 @@ trait ZincWorkerApi {
compileClasspath: Agg[os.Path],
javacOptions: Seq[String],
scalaVersion: String,
+ scalaOrganization: String,
scalacOptions: Seq[String],
- compilerBridgeSources: os.Path,
compilerClasspath: Agg[os.Path],
scalacPluginClasspath: Agg[os.Path])
- (implicit ctx: mill.api.Ctx): mill.api.Result[CompilationResult]
+ (implicit ctx: ZincWorkerApi.Ctx): mill.api.Result[CompilationResult]
def discoverMainClasses(compilationResult: CompilationResult)
- (implicit ctx: mill.api.Ctx): Seq[String]
+ (implicit ctx: ZincWorkerApi.Ctx): Seq[String]
def docJar(scalaVersion: String,
- compilerBridgeSources: os.Path,
+ scalaOrganization: String,
compilerClasspath: Agg[os.Path],
scalacPluginClasspath: Agg[os.Path],
args: Seq[String])
- (implicit ctx: mill.api.Ctx): Boolean
+ (implicit ctx: ZincWorkerApi.Ctx): Boolean
}
diff --git a/scalalib/backgroundwrapper/src/mill/scalalib/backgroundwrapper/BackgroundWrapper.java b/scalalib/backgroundwrapper/src/BackgroundWrapper.java
index 02ee23eb..02ee23eb 100644
--- a/scalalib/backgroundwrapper/src/mill/scalalib/backgroundwrapper/BackgroundWrapper.java
+++ b/scalalib/backgroundwrapper/src/BackgroundWrapper.java
diff --git a/scalalib/src/mill/scalalib/Dep.scala b/scalalib/src/Dep.scala
index 714fa21e..714fa21e 100644
--- a/scalalib/src/mill/scalalib/Dep.scala
+++ b/scalalib/src/Dep.scala
diff --git a/scalalib/src/mill/scalalib/Dependency.scala b/scalalib/src/Dependency.scala
index 0c589663..0c589663 100644
--- a/scalalib/src/mill/scalalib/Dependency.scala
+++ b/scalalib/src/Dependency.scala
diff --git a/scalalib/src/mill/scalalib/GenIdeaImpl.scala b/scalalib/src/GenIdeaImpl.scala
index 2d76d804..b8f9d35e 100644
--- a/scalalib/src/mill/scalalib/GenIdeaImpl.scala
+++ b/scalalib/src/GenIdeaImpl.scala
@@ -5,8 +5,8 @@ import coursier.{Cache, CoursierPaths, Repository}
import mill.define._
import mill.eval.{Evaluator, PathRef, Result}
import mill.api.Ctx.{Home, Log}
-import mill.util.Strict.Agg
-import mill.util.{Loose, Strict}
+import mill.api.Strict.Agg
+import mill.api.{Loose, Strict}
import mill.{T, scalalib}
import scala.util.Try
@@ -43,7 +43,7 @@ object GenIdeaImpl {
val evaluator = new Evaluator(ctx.home, os.pwd / 'out, os.pwd / 'out, rootModule, ctx.log)
for((relPath, xml) <- xmlFileLayout(evaluator, rootModule, jdkInfo)){
- os.write.over(os.pwd/relPath, pp.format(xml))
+ os.write.over(os.pwd/relPath, pp.format(xml), createFolders = true)
}
}
diff --git a/scalalib/src/mill/scalalib/JavaModule.scala b/scalalib/src/JavaModule.scala
index 78be8893..72c0a5a6 100644
--- a/scalalib/src/mill/scalalib/JavaModule.scala
+++ b/scalalib/src/JavaModule.scala
@@ -9,7 +9,7 @@ import mill.modules.{Assembly, Jvm}
import mill.modules.Jvm.{createAssembly, createJar}
import Lib._
import mill.scalalib.publish.{Artifact, Scope}
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
/**
* Core configuration required to compile a single Scala compilation target
diff --git a/scalalib/src/mill/scalalib/Lib.scala b/scalalib/src/Lib.scala
index b8b253bd..b8b253bd 100644
--- a/scalalib/src/mill/scalalib/Lib.scala
+++ b/scalalib/src/Lib.scala
diff --git a/scalalib/src/mill/scalalib/MiscModule.scala b/scalalib/src/MiscModule.scala
index c6449d6e..bf64f1f3 100644
--- a/scalalib/src/mill/scalalib/MiscModule.scala
+++ b/scalalib/src/MiscModule.scala
@@ -4,7 +4,7 @@ package scalalib
import mill.define.Cross.Resolver
import mill.define.{Cross, Task}
import mill.eval.{PathRef, Result}
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
object CrossModuleBase{
def scalaVersionPaths(scalaVersion: String, f: String => os.Path) = {
for(segments <- scalaVersion.split('.').inits.filter(_.nonEmpty))
diff --git a/scalalib/src/mill/scalalib/PublishModule.scala b/scalalib/src/PublishModule.scala
index 588781f4..588781f4 100644
--- a/scalalib/src/mill/scalalib/PublishModule.scala
+++ b/scalalib/src/PublishModule.scala
diff --git a/scalalib/src/mill/scalalib/ScalaModule.scala b/scalalib/src/ScalaModule.scala
index 9d669bf4..5fad1664 100644
--- a/scalalib/src/mill/scalalib/ScalaModule.scala
+++ b/scalalib/src/ScalaModule.scala
@@ -8,7 +8,7 @@ import mill.modules.Jvm
import mill.modules.Jvm.createJar
import mill.scalalib.api.Util.isDotty
import Lib._
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
import mill.api.DummyInputStream
/**
@@ -79,36 +79,7 @@ trait ScalaModule extends JavaModule { outer =>
def scalaDocOptions = T{ scalacOptions() }
- private val Milestone213 = raw"""2.13.(\d+)-M(\d+)""".r
- def scalaCompilerBridgeSources = T {
- val (scalaVersion0, scalaBinaryVersion0) = scalaVersion() match {
- case Milestone213(_, _) => ("2.13.0-M2", "2.13.0-M2")
- case _ => (scalaVersion(), mill.scalalib.api.Util.scalaBinaryVersion(scalaVersion()))
- }
-
- val (bridgeDep, bridgeName, bridgeVersion) =
- if (isDotty(scalaVersion0)) {
- val org = scalaOrganization()
- val name = "dotty-sbt-bridge"
- val version = scalaVersion()
- (ivy"$org:$name:$version", name, version)
- } else {
- val org = "org.scala-sbt"
- val name = "compiler-bridge"
- val version = Versions.zinc
- (ivy"$org::$name:$version", s"${name}_$scalaBinaryVersion0", version)
- }
-
- resolveDependencies(
- repositories,
- Lib.depToDependency(_, scalaVersion0, platformSuffix()),
- Seq(bridgeDep),
- sources = true
- ).map(deps =>
- mill.scalalib.api.Util.grepJar(deps.map(_.path), bridgeName, bridgeVersion, sources = true)
- )
- }
/**
* The local classpath of Scala compiler plugins on-disk; you can add
@@ -159,8 +130,8 @@ trait ScalaModule extends JavaModule { outer =>
compileClasspath().map(_.path),
javacOptions(),
scalaVersion(),
+ scalaOrganization(),
scalacOptions(),
- scalaCompilerBridgeSources(),
scalaCompilerClasspath().map(_.path),
scalacPluginClasspath().map(_.path),
)
@@ -187,7 +158,7 @@ trait ScalaModule extends JavaModule { outer =>
else {
zincWorker.worker().docJar(
scalaVersion(),
- scalaCompilerBridgeSources(),
+ scalaOrganization(),
scalaCompilerClasspath().map(_.path),
scalacPluginClasspath().map(_.path),
files ++ options
diff --git a/scalalib/src/mill/scalalib/TestRunner.scala b/scalalib/src/TestRunner.scala
index 42e65d63..42e65d63 100644
--- a/scalalib/src/mill/scalalib/TestRunner.scala
+++ b/scalalib/src/TestRunner.scala
diff --git a/scalalib/src/mill/scalalib/Versions.scala b/scalalib/src/Versions.scala
index e3697abb..e3697abb 100644
--- a/scalalib/src/mill/scalalib/Versions.scala
+++ b/scalalib/src/Versions.scala
diff --git a/scalalib/src/ZincWorkerModule.scala b/scalalib/src/ZincWorkerModule.scala
new file mode 100644
index 00000000..97d84aaf
--- /dev/null
+++ b/scalalib/src/ZincWorkerModule.scala
@@ -0,0 +1,109 @@
+package mill.scalalib
+
+import coursier.Cache
+import coursier.maven.MavenRepository
+import mill.Agg
+import mill.T
+import mill.api.KeyedLockedCache
+import mill.define.{Discover, Worker}
+import mill.scalalib.Lib.resolveDependencies
+import mill.scalalib.api.Util.isDotty
+import mill.scalalib.api.ZincWorkerApi
+import mill.api.Loose
+import mill.util.JsonFormatters._
+
+object ZincWorkerModule extends mill.define.ExternalModule with ZincWorkerModule{
+ lazy val millDiscover = Discover[this.type]
+}
+trait ZincWorkerModule extends mill.Module{
+ def repositories = Seq(
+ Cache.ivy2Local,
+ MavenRepository("https://repo1.maven.org/maven2"),
+ MavenRepository("https://oss.sonatype.org/content/repositories/releases")
+ )
+
+ def classpath = T{
+ mill.modules.Util.millProjectModule("MILL_SCALA_WORKER", "mill-scalalib-worker", repositories)
+ }
+
+ def scalalibClasspath = T{
+ mill.modules.Util.millProjectModule("MILL_SCALA_LIB", "mill-scalalib", repositories)
+ }
+
+ def backgroundWrapperClasspath = T{
+ mill.modules.Util.millProjectModule(
+ "MILL_BACKGROUNDWRAPPER", "mill-scalalib-backgroundwrapper",
+ repositories, artifactSuffix = ""
+ )
+ }
+
+ def worker: Worker[mill.scalalib.api.ZincWorkerApi] = T.worker{
+ val cl = mill.api.ClassLoader.create(
+ classpath().map(_.path.toNIO.toUri.toURL).toVector,
+ getClass.getClassLoader
+ )
+ val cls = cl.loadClass("mill.scalalib.worker.ZincWorkerImpl")
+ val instance = cls.getConstructor(
+ classOf[
+ Either[
+ (ZincWorkerApi.Ctx, Array[os.Path], (String, String) => os.Path),
+ String => os.Path
+ ]
+ ],
+ classOf[(Agg[os.Path], String) => os.Path],
+ classOf[(Agg[os.Path], String) => os.Path],
+ classOf[KeyedLockedCache[_]]
+ )
+ .newInstance(
+ Left((
+ T.ctx(),
+ compilerInterfaceClasspath().map(_.path).toArray,
+ (x: String, y: String) => scalaCompilerBridgeSourceJar(x, y).asSuccess.get.value
+ )),
+ mill.scalalib.api.Util.grepJar(_, "scala-library", _, sources = false),
+ mill.scalalib.api.Util.grepJar(_, "scala-compiler", _, sources = false),
+ new KeyedLockedCache.RandomBoundedCache(1, 1)
+ )
+ instance.asInstanceOf[mill.scalalib.api.ZincWorkerApi]
+ }
+
+ private val Milestone213 = raw"""2.13.(\d+)-M(\d+)""".r
+ def scalaCompilerBridgeSourceJar(scalaVersion: String,
+ scalaOrganization: String) = {
+ val (scalaVersion0, scalaBinaryVersion0) = scalaVersion match {
+ case Milestone213(_, _) => ("2.13.0-M2", "2.13.0-M2")
+ case _ => (scalaVersion, mill.scalalib.api.Util.scalaBinaryVersion(scalaVersion))
+ }
+
+ val (bridgeDep, bridgeName, bridgeVersion) =
+ if (isDotty(scalaVersion0)) {
+ val org = scalaOrganization
+ val name = "dotty-sbt-bridge"
+ val version = scalaVersion
+ (ivy"$org:$name:$version", name, version)
+ } else {
+ val org = "org.scala-sbt"
+ val name = "compiler-bridge"
+ val version = Versions.zinc
+ (ivy"$org::$name:$version", s"${name}_$scalaBinaryVersion0", version)
+ }
+
+ resolveDependencies(
+ repositories,
+ Lib.depToDependency(_, scalaVersion0, ""),
+ Seq(bridgeDep),
+ sources = true
+ ).map(deps =>
+ mill.scalalib.api.Util.grepJar(deps.map(_.path), bridgeName, bridgeVersion, sources = true)
+ )
+ }
+
+ def compilerInterfaceClasspath = T{
+ resolveDependencies(
+ repositories,
+ Lib.depToDependency(_, "2.12.4", ""),
+ Seq(ivy"org.scala-sbt:compiler-interface:${Versions.zinc}")
+ )
+ }
+
+}
diff --git a/scalalib/src/mill/scalalib/dependency/DependencyUpdatesImpl.scala b/scalalib/src/dependency/DependencyUpdatesImpl.scala
index 3bb94202..3bb94202 100644
--- a/scalalib/src/mill/scalalib/dependency/DependencyUpdatesImpl.scala
+++ b/scalalib/src/dependency/DependencyUpdatesImpl.scala
diff --git a/scalalib/src/mill/scalalib/dependency/metadata/MavenMetadataLoader.scala b/scalalib/src/dependency/metadata/MavenMetadataLoader.scala
index 491911bf..491911bf 100644
--- a/scalalib/src/mill/scalalib/dependency/metadata/MavenMetadataLoader.scala
+++ b/scalalib/src/dependency/metadata/MavenMetadataLoader.scala
diff --git a/scalalib/src/mill/scalalib/dependency/metadata/MetadataLoader.scala b/scalalib/src/dependency/metadata/MetadataLoader.scala
index 20271f0e..20271f0e 100644
--- a/scalalib/src/mill/scalalib/dependency/metadata/MetadataLoader.scala
+++ b/scalalib/src/dependency/metadata/MetadataLoader.scala
diff --git a/scalalib/src/mill/scalalib/dependency/metadata/MetadataLoaderFactory.scala b/scalalib/src/dependency/metadata/MetadataLoaderFactory.scala
index 4495d6b0..4495d6b0 100644
--- a/scalalib/src/mill/scalalib/dependency/metadata/MetadataLoaderFactory.scala
+++ b/scalalib/src/dependency/metadata/MetadataLoaderFactory.scala
diff --git a/scalalib/src/mill/scalalib/dependency/updates/ModuleDependenciesUpdates.scala b/scalalib/src/dependency/updates/ModuleDependenciesUpdates.scala
index a989cd31..a989cd31 100644
--- a/scalalib/src/mill/scalalib/dependency/updates/ModuleDependenciesUpdates.scala
+++ b/scalalib/src/dependency/updates/ModuleDependenciesUpdates.scala
diff --git a/scalalib/src/mill/scalalib/dependency/updates/UpdatesFinder.scala b/scalalib/src/dependency/updates/UpdatesFinder.scala
index 3430592f..3430592f 100644
--- a/scalalib/src/mill/scalalib/dependency/updates/UpdatesFinder.scala
+++ b/scalalib/src/dependency/updates/UpdatesFinder.scala
diff --git a/scalalib/src/mill/scalalib/dependency/versions/ModuleDependenciesVersions.scala b/scalalib/src/dependency/versions/ModuleDependenciesVersions.scala
index 12d57059..12d57059 100644
--- a/scalalib/src/mill/scalalib/dependency/versions/ModuleDependenciesVersions.scala
+++ b/scalalib/src/dependency/versions/ModuleDependenciesVersions.scala
diff --git a/scalalib/src/mill/scalalib/dependency/versions/Version.scala b/scalalib/src/dependency/versions/Version.scala
index a2719023..a2719023 100644
--- a/scalalib/src/mill/scalalib/dependency/versions/Version.scala
+++ b/scalalib/src/dependency/versions/Version.scala
diff --git a/scalalib/src/mill/scalalib/dependency/versions/VersionParser.scala b/scalalib/src/dependency/versions/VersionParser.scala
index 10aebd73..10aebd73 100644
--- a/scalalib/src/mill/scalalib/dependency/versions/VersionParser.scala
+++ b/scalalib/src/dependency/versions/VersionParser.scala
diff --git a/scalalib/src/mill/scalalib/dependency/versions/VersionsFinder.scala b/scalalib/src/dependency/versions/VersionsFinder.scala
index a831ffc3..a9ecc763 100644
--- a/scalalib/src/mill/scalalib/dependency/versions/VersionsFinder.scala
+++ b/scalalib/src/dependency/versions/VersionsFinder.scala
@@ -5,7 +5,7 @@ import mill.eval.Evaluator
import mill.scalalib.dependency.metadata.MetadataLoaderFactory
import mill.scalalib.{Dep, JavaModule, Lib}
import mill.api.Ctx.{Home, Log}
-import mill.util.{Loose, Strict}
+import mill.api.{Loose, Strict}
private[dependency] object VersionsFinder {
diff --git a/scalalib/src/mill/scalalib/ZincWorkerModule.scala b/scalalib/src/mill/scalalib/ZincWorkerModule.scala
deleted file mode 100644
index 5ca824ce..00000000
--- a/scalalib/src/mill/scalalib/ZincWorkerModule.scala
+++ /dev/null
@@ -1,56 +0,0 @@
-package mill.scalalib
-
-import coursier.Cache
-import coursier.maven.MavenRepository
-import mill.Agg
-import mill.T
-import mill.define.{Discover, Worker}
-import mill.scalalib.Lib.resolveDependencies
-import mill.util.Loose
-import mill.util.JsonFormatters._
-
-object ZincWorkerModule extends mill.define.ExternalModule with ZincWorkerModule{
- lazy val millDiscover = Discover[this.type]
-}
-trait ZincWorkerModule extends mill.Module{
- def repositories = Seq(
- Cache.ivy2Local,
- MavenRepository("https://repo1.maven.org/maven2"),
- MavenRepository("https://oss.sonatype.org/content/repositories/releases")
- )
-
- def classpath = T{
- mill.modules.Util.millProjectModule("MILL_SCALA_WORKER", "mill-scalalib-worker", repositories)
- }
-
- def scalalibClasspath = T{
- mill.modules.Util.millProjectModule("MILL_SCALA_LIB", "mill-scalalib", repositories)
- }
-
- def backgroundWrapperClasspath = T{
- mill.modules.Util.millProjectModule(
- "MILL_BACKGROUNDWRAPPER", "mill-scalalib-backgroundwrapper",
- repositories, artifactSuffix = ""
- )
- }
-
- def worker: Worker[mill.scalalib.api.ZincWorkerApi] = T.worker{
- val cl = mill.api.ClassLoader.create(
- classpath().map(_.path.toNIO.toUri.toURL).toVector,
- getClass.getClassLoader
- )
- val cls = cl.loadClass("mill.scalalib.worker.ZincWorkerImpl")
- val instance = cls.getConstructor(classOf[mill.api.Ctx], classOf[Array[String]])
- .newInstance(T.ctx(), compilerInterfaceClasspath().map(_.path.toString).toArray[String])
- instance.asInstanceOf[mill.scalalib.api.ZincWorkerApi]
- }
-
- def compilerInterfaceClasspath = T{
- resolveDependencies(
- repositories,
- Lib.depToDependency(_, "2.12.4", ""),
- Seq(ivy"org.scala-sbt:compiler-interface:${Versions.zinc}")
- )
- }
-
-}
diff --git a/scalalib/src/mill/scalalib/package.scala b/scalalib/src/package.scala
index 5a282e82..5a282e82 100644
--- a/scalalib/src/mill/scalalib/package.scala
+++ b/scalalib/src/package.scala
diff --git a/scalalib/src/mill/scalalib/publish/Ivy.scala b/scalalib/src/publish/Ivy.scala
index 22e26ff6..e06efadd 100644
--- a/scalalib/src/mill/scalalib/publish/Ivy.scala
+++ b/scalalib/src/publish/Ivy.scala
@@ -1,6 +1,6 @@
package mill.scalalib.publish
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
import scala.xml.PrettyPrinter
diff --git a/scalalib/src/mill/scalalib/publish/JsonFormatters.scala b/scalalib/src/publish/JsonFormatters.scala
index 8fc90632..8fc90632 100644
--- a/scalalib/src/mill/scalalib/publish/JsonFormatters.scala
+++ b/scalalib/src/publish/JsonFormatters.scala
diff --git a/scalalib/src/mill/scalalib/publish/Licence.scala b/scalalib/src/publish/Licence.scala
index 8838ef69..8838ef69 100644
--- a/scalalib/src/mill/scalalib/publish/Licence.scala
+++ b/scalalib/src/publish/Licence.scala
diff --git a/scalalib/src/mill/scalalib/publish/LocalPublisher.scala b/scalalib/src/publish/LocalPublisher.scala
index d9839831..d9839831 100644
--- a/scalalib/src/mill/scalalib/publish/LocalPublisher.scala
+++ b/scalalib/src/publish/LocalPublisher.scala
diff --git a/scalalib/src/mill/scalalib/publish/Pom.scala b/scalalib/src/publish/Pom.scala
index 57a0e196..a7f1f6fc 100644
--- a/scalalib/src/mill/scalalib/publish/Pom.scala
+++ b/scalalib/src/publish/Pom.scala
@@ -1,6 +1,6 @@
package mill.scalalib.publish
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
import scala.xml.{Atom, Elem, NodeSeq, PrettyPrinter}
diff --git a/scalalib/src/mill/scalalib/publish/SonatypeHttpApi.scala b/scalalib/src/publish/SonatypeHttpApi.scala
index 12defa93..12defa93 100644
--- a/scalalib/src/mill/scalalib/publish/SonatypeHttpApi.scala
+++ b/scalalib/src/publish/SonatypeHttpApi.scala
diff --git a/scalalib/src/mill/scalalib/publish/SonatypePublisher.scala b/scalalib/src/publish/SonatypePublisher.scala
index 1843943b..1843943b 100644
--- a/scalalib/src/mill/scalalib/publish/SonatypePublisher.scala
+++ b/scalalib/src/publish/SonatypePublisher.scala
diff --git a/scalalib/src/mill/scalalib/publish/VersionControl.scala b/scalalib/src/publish/VersionControl.scala
index aad38ac3..aad38ac3 100644
--- a/scalalib/src/mill/scalalib/publish/VersionControl.scala
+++ b/scalalib/src/publish/VersionControl.scala
diff --git a/scalalib/src/mill/scalalib/publish/package.scala b/scalalib/src/publish/package.scala
index 99eeec14..99eeec14 100644
--- a/scalalib/src/mill/scalalib/publish/package.scala
+++ b/scalalib/src/publish/package.scala
diff --git a/scalalib/src/mill/scalalib/publish/settings.scala b/scalalib/src/publish/settings.scala
index bca81cf0..bca81cf0 100644
--- a/scalalib/src/mill/scalalib/publish/settings.scala
+++ b/scalalib/src/publish/settings.scala
diff --git a/scalalib/src/mill/scalalib/scalafmt/ScalafmtModule.scala b/scalalib/src/scalafmt/ScalafmtModule.scala
index 6a81d975..6a81d975 100644
--- a/scalalib/src/mill/scalalib/scalafmt/ScalafmtModule.scala
+++ b/scalalib/src/scalafmt/ScalafmtModule.scala
diff --git a/scalalib/src/mill/scalalib/scalafmt/ScalafmtWorker.scala b/scalalib/src/scalafmt/ScalafmtWorker.scala
index 47d8375f..47d8375f 100644
--- a/scalalib/src/mill/scalalib/scalafmt/ScalafmtWorker.scala
+++ b/scalalib/src/scalafmt/ScalafmtWorker.scala
diff --git a/scalalib/test/resources/hello-java/app/src/hello/Main.java b/scalalib/test/resources/hello-java/app/src/Main.java
index 23ddd679..23ddd679 100644
--- a/scalalib/test/resources/hello-java/app/src/hello/Main.java
+++ b/scalalib/test/resources/hello-java/app/src/Main.java
diff --git a/scalalib/test/resources/hello-java/app/test/src/hello/MyAppTests.java b/scalalib/test/resources/hello-java/app/test/src/MyAppTests.java
index df0d0351..df0d0351 100644
--- a/scalalib/test/resources/hello-java/app/test/src/hello/MyAppTests.java
+++ b/scalalib/test/resources/hello-java/app/test/src/MyAppTests.java
diff --git a/scalalib/test/resources/hello-java/core/src/hello/Core.java b/scalalib/test/resources/hello-java/core/src/Core.java
index 3ecb1f61..3ecb1f61 100644
--- a/scalalib/test/resources/hello-java/core/src/hello/Core.java
+++ b/scalalib/test/resources/hello-java/core/src/Core.java
diff --git a/scalalib/test/resources/hello-java/core/test/src/hello/MyCoreTests.java b/scalalib/test/resources/hello-java/core/test/src/MyCoreTests.java
index 38bebaeb..38bebaeb 100644
--- a/scalalib/test/resources/hello-java/core/test/src/hello/MyCoreTests.java
+++ b/scalalib/test/resources/hello-java/core/test/src/MyCoreTests.java
diff --git a/scalalib/test/src/mill/scalalib/GenIdeaTests.scala b/scalalib/test/src/GenIdeaTests.scala
index 50db95c0..50db95c0 100644
--- a/scalalib/test/src/mill/scalalib/GenIdeaTests.scala
+++ b/scalalib/test/src/GenIdeaTests.scala
diff --git a/scalalib/test/src/mill/scalalib/HelloJavaTests.scala b/scalalib/test/src/HelloJavaTests.scala
index 5b7b93b2..02c2567f 100644
--- a/scalalib/test/src/mill/scalalib/HelloJavaTests.scala
+++ b/scalalib/test/src/HelloJavaTests.scala
@@ -88,8 +88,8 @@ object HelloJavaTests extends TestSuite {
'failures - {
val eval = init()
- val mainJava = HelloJava.millSourcePath / 'app / 'src / 'hello / "Main.java"
- val coreJava = HelloJava.millSourcePath / 'core / 'src / 'hello / "Core.java"
+ val mainJava = HelloJava.millSourcePath / 'app / 'src / "Main.java"
+ val coreJava = HelloJava.millSourcePath / 'core / 'src / "Core.java"
val Right(_) = eval.apply(HelloJava.core.compile)
val Right(_) = eval.apply(HelloJava.app.compile)
diff --git a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala b/scalalib/test/src/HelloWorldTests.scala
index da08f056..da08f056 100644
--- a/scalalib/test/src/mill/scalalib/HelloWorldTests.scala
+++ b/scalalib/test/src/HelloWorldTests.scala
diff --git a/scalalib/test/src/mill/scalalib/ResolveDepsTests.scala b/scalalib/test/src/ResolveDepsTests.scala
index 78361625..ce905907 100644
--- a/scalalib/test/src/mill/scalalib/ResolveDepsTests.scala
+++ b/scalalib/test/src/ResolveDepsTests.scala
@@ -4,7 +4,7 @@ import coursier.Cache
import coursier.maven.MavenRepository
import mill.api.Result.{Failure, Success}
import mill.eval.{PathRef, Result}
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
import utest._
object ResolveDepsTests extends TestSuite {
diff --git a/scalalib/test/src/mill/scalalib/VersionControlTests.scala b/scalalib/test/src/VersionControlTests.scala
index fafdca2d..fafdca2d 100644
--- a/scalalib/test/src/mill/scalalib/VersionControlTests.scala
+++ b/scalalib/test/src/VersionControlTests.scala
diff --git a/scalalib/test/src/mill/scalalib/dependency/metadata/MetadataLoaderFactoryTests.scala b/scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala
index 4c2206b8..4c2206b8 100644
--- a/scalalib/test/src/mill/scalalib/dependency/metadata/MetadataLoaderFactoryTests.scala
+++ b/scalalib/test/src/dependency/metadata/MetadataLoaderFactoryTests.scala
diff --git a/scalalib/test/src/mill/scalalib/dependency/updates/UpdatesFinderTests.scala b/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala
index 7b6e6e36..7b6e6e36 100644
--- a/scalalib/test/src/mill/scalalib/dependency/updates/UpdatesFinderTests.scala
+++ b/scalalib/test/src/dependency/updates/UpdatesFinderTests.scala
diff --git a/scalalib/test/src/mill/scalalib/dependency/versions/VersionTests.scala b/scalalib/test/src/dependency/versions/VersionTests.scala
index b916c86f..b916c86f 100644
--- a/scalalib/test/src/mill/scalalib/dependency/versions/VersionTests.scala
+++ b/scalalib/test/src/dependency/versions/VersionTests.scala
diff --git a/scalalib/test/src/mill/scalalib/publish/IvyTests.scala b/scalalib/test/src/publish/IvyTests.scala
index d187f969..d187f969 100644
--- a/scalalib/test/src/mill/scalalib/publish/IvyTests.scala
+++ b/scalalib/test/src/publish/IvyTests.scala
diff --git a/scalalib/test/src/mill/scalalib/publish/PomTests.scala b/scalalib/test/src/publish/PomTests.scala
index 307ae379..307ae379 100644
--- a/scalalib/test/src/mill/scalalib/publish/PomTests.scala
+++ b/scalalib/test/src/publish/PomTests.scala
diff --git a/scalalib/test/src/mill/scalalib/scalafmt/ScalafmtTests.scala b/scalalib/test/src/scalafmt/ScalafmtTests.scala
index dcbdb769..dcbdb769 100644
--- a/scalalib/test/src/mill/scalalib/scalafmt/ScalafmtTests.scala
+++ b/scalalib/test/src/scalafmt/ScalafmtTests.scala
diff --git a/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala b/scalalib/worker/src/ZincWorkerImpl.scala
index 705d4682..c37ef162 100644
--- a/scalalib/worker/src/mill/scalalib/worker/ZincWorkerImpl.scala
+++ b/scalalib/worker/src/ZincWorkerImpl.scala
@@ -4,13 +4,13 @@ import java.io.File
import java.util.Optional
import mill.api.Loose.Agg
-import mill.api.PathRef
+import mill.api.{KeyedLockedCache, PathRef}
import xsbti.compile.{CompilerCache => _, FileAnalysisStore => _, ScalaInstance => _, _}
-import mill.scalalib.api.Util.{isDotty, grepJar, scalaBinaryVersion}
+import mill.scalalib.api.Util.{grepJar, isDotty, scalaBinaryVersion}
import sbt.internal.inc._
import sbt.internal.util.{ConsoleOut, MainAppender}
import sbt.util.LogExchange
-import mill.scalalib.api.CompilationResult
+import mill.scalalib.api.{CompilationResult, ZincWorkerApi}
case class MockedLookup(am: File => Optional[CompileAnalysis]) extends PerClasspathEntryLookup {
override def analysis(classpathEntry: File): Optional[CompileAnalysis] =
am(classpathEntry)
@@ -19,10 +19,16 @@ case class MockedLookup(am: File => Optional[CompileAnalysis]) extends PerClassp
Locate.definesClass(classpathEntry)
}
-class ZincWorkerImpl(ctx0: mill.api.Ctx,
- compilerBridgeClasspath: Array[String]) extends mill.scalalib.api.ZincWorkerApi{
+class ZincWorkerImpl(compilerBridge: Either[
+ (ZincWorkerApi.Ctx, Array[os.Path], (String, String) => os.Path),
+ String => os.Path
+ ],
+ libraryJarNameGrep: (Agg[os.Path], String) => os.Path,
+ compilerJarNameGrep: (Agg[os.Path], String) => os.Path,
+ compilerCache: KeyedLockedCache[Compilers])
+ extends ZincWorkerApi{
private val ic = new sbt.internal.inc.IncrementalCompilerImpl()
- val javaOnlyCompilers = {
+ lazy val javaOnlyCompilers = {
// Keep the classpath as written by the user
val classpathOptions = ClasspathOptions.of(false, false, false, false, false)
@@ -42,68 +48,68 @@ class ZincWorkerImpl(ctx0: mill.api.Ctx,
)
}
- @volatile var mixedCompilersCache = Option.empty[(Long, Compilers)]
-
def docJar(scalaVersion: String,
- compilerBridgeSources: os.Path,
+ scalaOrganization: String,
compilerClasspath: Agg[os.Path],
scalacPluginClasspath: Agg[os.Path],
args: Seq[String])
- (implicit ctx: mill.api.Ctx): Boolean = {
- val compilers: Compilers = prepareCompilers(
+ (implicit ctx: ZincWorkerApi.Ctx): Boolean = {
+ withCompilers(
scalaVersion,
- compilerBridgeSources,
+ scalaOrganization,
compilerClasspath,
- scalacPluginClasspath
- )
- val scaladocClass = compilers.scalac().scalaInstance().loader().loadClass("scala.tools.nsc.ScalaDoc")
- val scaladocMethod = scaladocClass.getMethod("process", classOf[Array[String]])
- scaladocMethod.invoke(scaladocClass.newInstance(), args.toArray).asInstanceOf[Boolean]
+ scalacPluginClasspath,
+ ) { compilers: Compilers =>
+ val scaladocClass = compilers.scalac().scalaInstance().loader().loadClass("scala.tools.nsc.ScalaDoc")
+ val scaladocMethod = scaladocClass.getMethod("process", classOf[Array[String]])
+ scaladocMethod.invoke(scaladocClass.newInstance(), args.toArray).asInstanceOf[Boolean]
+ }
}
/** Compile the bridge if it doesn't exist yet and return the output directory.
- * TODO: Proper invalidation, see #389
- */
- def compileZincBridgeIfNeeded(scalaVersion: String,
- sourcesJar: os.Path,
- compilerJars: Array[File]): os.Path = {
- val workingDir = ctx0.dest / scalaVersion
- val compiledDest = workingDir / 'compiled
- if (!os.exists(workingDir)) {
-
- ctx0.log.info("Compiling compiler interface...")
-
- os.makeDir.all(workingDir)
- os.makeDir.all(compiledDest)
-
- val sourceFolder = mill.api.IO.unpackZip(sourcesJar)(workingDir)
- val classloader = mill.api.ClassLoader.create(compilerJars.map(_.toURI.toURL), null)(ctx0)
- val compilerMain = classloader.loadClass(
- if (isDotty(scalaVersion))
- "dotty.tools.dotc.Main"
- else
- "scala.tools.nsc.Main"
- )
- val argsArray = Array[String](
- "-d", compiledDest.toString,
- "-classpath", (compilerJars ++ compilerBridgeClasspath).mkString(File.pathSeparator)
- ) ++ os.walk(sourceFolder.path).filter(_.ext == "scala").map(_.toString)
-
- compilerMain.getMethod("process", classOf[Array[String]])
- .invoke(null, argsArray)
+ * TODO: Proper invalidation, see #389
+ */
+ def compileZincBridgeIfNeeded(scalaVersion: String, scalaOrganization: String, compilerJars: Array[File]): os.Path = {
+ compilerBridge match{
+ case Right(compiled) => compiled(scalaVersion)
+ case Left((ctx0, compilerBridgeClasspath, srcJars)) =>
+ val workingDir = ctx0.dest / scalaVersion
+ val compiledDest = workingDir / 'compiled
+ if (!os.exists(workingDir)) {
+ ctx0.log.info("Compiling compiler interface...")
+
+ os.makeDir.all(workingDir)
+ os.makeDir.all(compiledDest)
+
+ val sourceFolder = mill.api.IO.unpackZip(srcJars(scalaVersion, scalaOrganization))(workingDir)
+ val classloader = mill.api.ClassLoader.create(compilerJars.map(_.toURI.toURL), null)(ctx0)
+ val compilerMain = classloader.loadClass(
+ if (isDotty(scalaVersion)) "dotty.tools.dotc.Main"
+ else "scala.tools.nsc.Main"
+ )
+ val argsArray = Array[String](
+ "-d", compiledDest.toString,
+ "-classpath", (compilerJars ++ compilerBridgeClasspath).mkString(File.pathSeparator)
+ ) ++ os.walk(sourceFolder.path).filter(_.ext == "scala").map(_.toString)
+
+ compilerMain.getMethod("process", classOf[Array[String]])
+ .invoke(null, argsArray)
+ }
+ compiledDest
}
- compiledDest
+
}
- def discoverMainClasses(compilationResult: CompilationResult)(implicit ctx: mill.api.Ctx): Seq[String] = {
+ def discoverMainClasses(compilationResult: CompilationResult)
+ (implicit ctx: ZincWorkerApi.Ctx): Seq[String] = {
def toScala[A](o: Optional[A]): Option[A] = if (o.isPresent) Some(o.get) else None
toScala(FileAnalysisStore.binary(compilationResult.analysisFile.toIO).get())
.map(_.getAnalysis)
.flatMap{
case analysis: Analysis =>
- Some(analysis.infos.allInfos.values.map(_.getMainClasses).flatten.toSeq.sorted)
+ Some(analysis.infos.allInfos.values.flatMap(_.getMainClasses).toSeq.sorted)
case _ =>
None
}
@@ -114,7 +120,7 @@ class ZincWorkerImpl(ctx0: mill.api.Ctx,
sources: Agg[os.Path],
compileClasspath: Agg[os.Path],
javacOptions: Seq[String])
- (implicit ctx: mill.api.Ctx): mill.api.Result[CompilationResult] = {
+ (implicit ctx: ZincWorkerApi.Ctx): mill.api.Result[CompilationResult] = {
compileInternal(
upstreamCompileOutput,
sources,
@@ -130,73 +136,70 @@ class ZincWorkerImpl(ctx0: mill.api.Ctx,
compileClasspath: Agg[os.Path],
javacOptions: Seq[String],
scalaVersion: String,
+ scalaOrganization: String,
scalacOptions: Seq[String],
- compilerBridgeSources: os.Path,
compilerClasspath: Agg[os.Path],
scalacPluginClasspath: Agg[os.Path])
- (implicit ctx: mill.api.Ctx): mill.api.Result[CompilationResult] = {
- val compilers: Compilers = prepareCompilers(
+ (implicit ctx: ZincWorkerApi.Ctx): mill.api.Result[CompilationResult] = {
+ withCompilers(
scalaVersion,
- compilerBridgeSources,
+ scalaOrganization,
compilerClasspath,
- scalacPluginClasspath
- )
-
- compileInternal(
- upstreamCompileOutput,
- sources,
- compileClasspath,
- javacOptions,
- scalacOptions = scalacPluginClasspath.map(jar => s"-Xplugin:${jar}").toSeq ++ scalacOptions,
- compilers
- )
+ scalacPluginClasspath,
+ ) {compilers: Compilers =>
+ compileInternal(
+ upstreamCompileOutput,
+ sources,
+ compileClasspath,
+ javacOptions,
+ scalacOptions = scalacPluginClasspath.map(jar => s"-Xplugin:$jar").toSeq ++ scalacOptions,
+ compilers
+ )
+ }
}
- private def prepareCompilers(scalaVersion: String,
- compilerBridgeSources: os.Path,
+ private def withCompilers[T](scalaVersion: String,
+ scalaOrganization: String,
compilerClasspath: Agg[os.Path],
scalacPluginClasspath: Agg[os.Path])
- (implicit ctx: mill.api.Ctx)= {
+ (f: Compilers => T)
+ (implicit ctx: ZincWorkerApi.Ctx)= {
val combinedCompilerClasspath = compilerClasspath ++ scalacPluginClasspath
val combinedCompilerJars = combinedCompilerClasspath.toArray.map(_.toIO)
- val compilerBridge = compileZincBridgeIfNeeded(
+ val compiledCompilerBridge = compileZincBridgeIfNeeded(
scalaVersion,
- compilerBridgeSources,
+ scalaOrganization,
compilerClasspath.toArray.map(_.toIO)
)
- val compilerBridgeSig = os.mtime(compilerBridge)
+
+ val compilerBridgeSig = os.mtime(compiledCompilerBridge)
val compilersSig =
compilerBridgeSig +
combinedCompilerClasspath.map(p => p.toString().hashCode + os.mtime(p)).sum
- val compilers = mixedCompilersCache match {
- case Some((k, v)) if k == compilersSig => v
- case _ =>
- val compilerName =
- if (isDotty(scalaVersion))
- s"dotty-compiler_${scalaBinaryVersion(scalaVersion)}"
- else
- "scala-compiler"
- val scalaInstance = new ScalaInstance(
- version = scalaVersion,
- loader = mill.api.ClassLoader.create(combinedCompilerJars.map(_.toURI.toURL), null),
- libraryJar = grepJar(compilerClasspath, "scala-library", scalaVersion).toIO,
- compilerJar = grepJar(compilerClasspath, compilerName, scalaVersion).toIO,
- allJars = combinedCompilerJars,
- explicitActual = None
- )
- val compilers = ic.compilers(
- scalaInstance,
- ClasspathOptionsUtil.boot,
- None,
- ZincUtil.scalaCompiler(scalaInstance, compilerBridge.toIO)
- )
- mixedCompilersCache = Some((compilersSig, compilers))
- compilers
- }
- compilers
+ compilerCache.withCachedValue(compilersSig){
+ val compilerJar =
+ if (isDotty(scalaVersion))
+ grepJar(compilerClasspath, s"dotty-compiler_${scalaBinaryVersion(scalaVersion)}", scalaVersion)
+ else
+ compilerJarNameGrep(compilerClasspath, scalaVersion)
+ val scalaInstance = new ScalaInstance(
+ version = scalaVersion,
+ loader = mill.api.ClassLoader.create(combinedCompilerJars.map(_.toURI.toURL), null),
+ libraryJar = libraryJarNameGrep(compilerClasspath, scalaVersion).toIO,
+ compilerJar = compilerJar.toIO,
+ allJars = combinedCompilerJars,
+ explicitActual = None
+ )
+ ic.compilers(
+ scalaInstance,
+ ClasspathOptionsUtil.boot,
+ None,
+ ZincUtil.scalaCompiler(scalaInstance, compiledCompilerBridge.toIO)
+ )
+ }(f)
}
private def compileInternal(upstreamCompileOutput: Seq[CompilationResult],
@@ -205,7 +208,7 @@ class ZincWorkerImpl(ctx0: mill.api.Ctx,
javacOptions: Seq[String],
scalacOptions: Seq[String],
compilers: Compilers)
- (implicit ctx: mill.api.Ctx): mill.api.Result[CompilationResult] = {
+ (implicit ctx: ZincWorkerApi.Ctx): mill.api.Result[CompilationResult] = {
os.makeDir.all(ctx.dest)
val logger = {
diff --git a/scalanativelib/api/src/mill/scalanativelib/api/ScalaNativeWorkerApi.scala b/scalanativelib/api/src/ScalaNativeWorkerApi.scala
index e1fee0da..e1fee0da 100644
--- a/scalanativelib/api/src/mill/scalanativelib/api/ScalaNativeWorkerApi.scala
+++ b/scalanativelib/api/src/ScalaNativeWorkerApi.scala
diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala b/scalanativelib/src/ScalaNativeModule.scala
index a7a2b96b..289ba759 100644
--- a/scalanativelib/src/mill/scalanativelib/ScalaNativeModule.scala
+++ b/scalanativelib/src/ScalaNativeModule.scala
@@ -9,7 +9,7 @@ import mill.define.{Target, Task}
import mill.api.Result
import mill.modules.Jvm
import mill.scalalib.{Dep, DepSyntax, Lib, SbtModule, ScalaModule, TestModule, TestRunner}
-import mill.util.Loose.Agg
+import mill.api.Loose.Agg
import sbt.testing.{AnnotatedFingerprint, SubclassFingerprint}
import sbt.testing.Fingerprint
import upickle.default.{ReadWriter => RW, macroRW}
diff --git a/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala b/scalanativelib/src/ScalaNativeWorkerApi.scala
index 80325f1e..80325f1e 100644
--- a/scalanativelib/src/mill/scalanativelib/ScalaNativeWorkerApi.scala
+++ b/scalanativelib/src/ScalaNativeWorkerApi.scala
diff --git a/scalanativelib/test/resources/hello-native-world/src/hello/ArgsParser.scala b/scalanativelib/test/resources/hello-native-world/src/ArgsParser.scala
index 8ad93598..8ad93598 100644
--- a/scalanativelib/test/resources/hello-native-world/src/hello/ArgsParser.scala
+++ b/scalanativelib/test/resources/hello-native-world/src/ArgsParser.scala
diff --git a/scalanativelib/test/resources/hello-native-world/src/hello/Main.scala b/scalanativelib/test/resources/hello-native-world/src/Main.scala
index 5e04dbb3..5e04dbb3 100644
--- a/scalanativelib/test/resources/hello-native-world/src/hello/Main.scala
+++ b/scalanativelib/test/resources/hello-native-world/src/Main.scala
diff --git a/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala b/scalanativelib/test/src/HelloNativeWorldTests.scala
index 74d4238a..74d4238a 100644
--- a/scalanativelib/test/src/mill/scalanativelib/HelloNativeWorldTests.scala
+++ b/scalanativelib/test/src/HelloNativeWorldTests.scala
diff --git a/scalanativelib/worker/0.3/src/mill/scalanativelib/worker/ScalaNativeWorkerImpl.scala b/scalanativelib/worker/0.3/src/ScalaNativeWorkerImpl.scala
index b32e84ff..b32e84ff 100644
--- a/scalanativelib/worker/0.3/src/mill/scalanativelib/worker/ScalaNativeWorkerImpl.scala
+++ b/scalanativelib/worker/0.3/src/ScalaNativeWorkerImpl.scala