diff options
author | Li Haoyi <haoyi.sg@gmail.com> | 2018-12-19 19:04:55 +0800 |
---|---|---|
committer | Li Haoyi <haoyi.sg@gmail.com> | 2018-12-19 19:04:55 +0800 |
commit | 497f044545d8a8299c963e8e3dd5241882270362 (patch) | |
tree | d4e2fa124983377df9c2f8631ee4804a97cd74db | |
parent | b44fe2753c62349b3b133d1da0e41a19178233a1 (diff) | |
parent | de175e69977082e35539097a54d381e465dddf8e (diff) | |
download | mill-497f044545d8a8299c963e8e3dd5241882270362.tar.gz mill-497f044545d8a8299c963e8e3dd5241882270362.tar.bz2 mill-497f044545d8a8299c963e8e3dd5241882270362.zip |
Merge branch 'master' into bump-zinc
-rwxr-xr-x | build.sc | 4 | ||||
-rw-r--r-- | ci/shared.sc | 2 | ||||
-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.md | 7 | ||||
-rw-r--r-- | integration/test/resources/large-project/build.sc | 293 | ||||
-rw-r--r-- | integration/test/resources/large-project/foo/common/one/src/main/scala/foo/common/one/Main.scala | 5 | ||||
-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.scala | 19 | ||||
-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.scala | 44 | ||||
-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.scala | 119 | ||||
-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.sc | 2 | ||||
-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.scala | 109 | ||||
-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.scala | 56 | ||||
-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
@@ -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 |