Commit Graph

623 Commits

Author SHA1 Message Date
eugene yokota e54d4ed8fd Merge pull request #2921 from eed3si9n/fport/2784
[fport] Show deprecations in build.sbt
2017-01-15 23:19:19 -05:00
eugene yokota 9044d6c07a Merge pull request #2910 from eed3si9n/wip/212
[sbt 1.0] Use Scala 2.12.1
2017-01-15 22:24:33 -05:00
eugene yokota 84ab6bf5e4 Merge pull request #2920 from eed3si9n/fport/2754
[fport] SD-232 Recycle classloaders to be anti-hostile to JIT
2017-01-15 21:01:48 -05:00
Eugene Yokota 7ddbd69e53 Use Scala 2.12.1
Bump up the Scala version used by sbt to 2.12.1.
Most changes are migration of the integration tests.
2017-01-15 20:49:14 -05:00
Eugene Yokota 00dda2a5f1 Add "-deprecattion" flag to metabuild
Fixes #2783
Ref #2716

`build.sbt` is treated a Scala source of metabuild, so to enable
deprecation flag on build.sbt we set the option here.
2017-01-15 08:53:04 -05:00
Dale Wijnand 1822d3f67b Replace var/set with withClassLoaderCache 2017-01-15 06:54:52 -05:00
Jason Zaugg 3c508ce52d SD-232 Recycle classloaders to be anti-hostile to JIT.
The compiler interface subclasses `scala.tools.nsc.Global`,
and loading this new subclass before each `compile` task forces
HotSpot JIT to deoptimize larges swathes of compiled code. It's
a bit like SBT has rigged the dice to always descend the longest
ladder in a game of Snakes and Ladders.

The slowdown seems to be larger with Scala 2.12. There are a number
of variables at play, but I think the main factor here is that
we now rely on JIT to devirtualize calls to final methods in traits
whereas we used to emit static calls. JIT does a good job at this,
so long as classloading doesn't undo that good work.

This commit extends the existing `ClassLoaderCache` to encompass
the classloader that includes the compiler interface JAR. I've
resorted to adding a var to `AnalyzingCompiler` to inject the
dependency to get the cache to the spot I need it without binary
incompatible changes to the intervening method signatures.
2017-01-15 06:42:29 -05:00
Dale Wijnand d58f89af5f Add back addPluginResolvers
See https://github.com/sbt/sbt/pull/2715/files#r79729382
2017-01-15 06:28:10 -05:00
eugene yokota 69385029ed Merge pull request #2914 from eed3si9n/fport/2681
[fport] Fix #2677: Tags.ForkedTestGroup doesn't work
2017-01-14 23:08:44 -05:00
Paul Draper f836ba0c63 Fix #2677: Tags.ForkedTestGroup doesn't work
Move tag to correct task
2017-01-14 21:58:37 -05:00
eugene yokota 28825d4eb5 Merge pull request #2912 from eed3si9n/fport/2630
[fport] Loading performance
2017-01-14 21:56:44 -05:00
eugene yokota 355b724bf2 Merge pull request #2915 from eed3si9n/wip/2692
[fport] Fixes #2686 by resetting scalaVersion for updateSbtClassifiers
2017-01-14 09:08:02 -05:00
eugene yokota fd36a20183 Merge pull request #2907 from eed3si9n/topic/logging
Split log output per channel
2017-01-14 08:34:44 -05:00
Eugene Yokota e0e9f8d1fc Fix patch error 2017-01-14 07:54:25 -05:00
Eugene Yokota f3817ad64f Fixes #2686 by resetting scalaVersion for updateSbtClassifiers
Ref #2634

updateSbtClassifiers uses an artificially created dependency graph set
in classifiersModule. The problem is that ivyScala instance is reused
from the outer scope that has the user project's scalaVersion as
demonstrated as follows:

    scala> val is = (ivyScala in updateSbtClassifiers).eval
    is: Option[sbt.IvyScala] =
Some(IvyScala(2.9.3,2.9.3,List(),true,false,true,org.scala-lang))

This change fixes #2686 by redefining ivyScala with scalaVersion and
scalaBinaryVersion scoped to updateSbtClassifiers task. The existing
scripted test was modified to reproduce the bug.
2017-01-14 07:37:32 -05:00
Anatoly Fayngelerin 6dc2cf4210 dependsOn can now be used inside a .sbt file for a subproject 2017-01-14 07:18:10 -05:00
Eugene Yokota 88a644eb4d Use parent's toString 2017-01-14 06:35:27 -05:00
Eugene Yokota dc71b171da Cache now takes in account of the parent of the classloader 2017-01-14 06:35:07 -05:00
Eugene Yokota 0cfde91a4b Remove unnecessary val 2017-01-14 06:31:20 -05:00
Eugene Yokota 700017be91 Cache based on the underlying URLs of the ClassLoader per review 2017-01-14 06:31:04 -05:00
Eugene Yokota 7a00ba3925 Display log when sbt loading is going to pause
Def.make could take 10099ms for 100 subprojects. This would display
logs probably for projects with more than 10 subprojects, which might
pause for a few seconds during load.
2017-01-14 06:30:45 -05:00
Eugene Yokota 843f79ffd9 Improve structureIndex call by using Vector
This call takes around 8035ms for 100 subprojects. I don't think using
Vector here had any noticeable effect.
2017-01-14 06:30:16 -05:00
Eugene Yokota 3e29a48b56 Cache global user settings 2017-01-14 06:28:00 -05:00
Eugene Yokota f523b9da0d Add perf logs 2017-01-14 06:25:07 -05:00
Eugene Yokota 9a33550c79 Fix the scripted actions/set 2017-01-14 02:26:23 -05:00
Eugene Yokota b34e182d21 Bump util, lm, and zinc 2017-01-14 00:57:46 -05:00
Eugene Yokota 8c9dfda089 Split log output per channel
LogManager implementation is modified to use ManagedLogger, which can swap out backing Appenders without re-creating the log instance.

The State was also changed to track `currentCommand: Option[Exec]`. `Exec` knows the origin of the command invocation, and using that we can now send the network-originated events only to the network clients.

Combined together, this implements log splitting between the sbt clients (channels).
2017-01-13 03:00:02 -05:00
Eugene Yokota 9ee69e5dd4 Fix test 2017-01-06 11:27:41 -05:00
Eugene Yokota 1bf50e10c8 Use Exec in State 2017-01-06 11:27:41 -05:00
Eugene Yokota d96ef58605 Unifying towards using events 2017-01-06 11:27:06 -05:00
Eugene Yokota fa7253ece3 Start lightweight client
This is the beginning of a lightweight client, which talks to the
server over Contraband-generated JSON API. Given that the server is
started on port 5173:

```
$ cd /tmp/bogus
$ sbt client localhost:5173
> compile
StatusEvent(Processing, Vector(compile, server))
StatusEvent(Ready, Vector())
StatusEvent(Processing, Vector(, server))
StatusEvent(Ready, Vector())
```
2017-01-06 11:27:06 -05:00
Dale Wijnand 7fcfec8b8e
-sbinary/+sjson-new, -datatype/+contraband & upgrades
* start to replace sbinary with sjson-new
* upgrade from sbt/datatype to sbt/contraband
* upgrade and migrate to new sbt modules APIs
2017-01-05 21:59:00 +00:00
Dale Wijnand 43821667bf
Upgrade scalariform version 2016-12-11 12:13:11 +00:00
Eugene Yokota fe1a24cf7c Adjust to 1.0.x 2016-10-27 02:42:12 -04:00
Eugene Yokota 3359163636 Adds serverPort attribute key 2016-10-27 02:42:12 -04:00
Eugene Yokota 3381f59ae8 Implement ConsoleListener 2016-10-27 02:42:12 -04:00
Eugene Yokota 649dc0ce3c This is where we can multiplex commands 2016-10-27 02:42:12 -04:00
Johan Andrén 9557107c97 First sloppy stab at an embedded server in sbt 2016-10-27 02:42:12 -04:00
Dale Wijnand 84052b2717
Remove an unused import 2016-10-05 11:12:25 -05:00
Dale Wijnand 2f84e05282
Migrate to blackbox.Context 2016-10-05 11:12:24 -05:00
eugene yokota 87ef5287f6 Merge pull request #2662 from dwijnand/publishTo-TaskKey
[sbt 1.0] Make publishTo & otherResolvers TaskKey's
2016-09-29 01:43:36 -04:00
eugene yokota 8dab60eb92 Merge pull request #2760 from dwijnand/AutoPlugin-extraProjects-1.0
FPORT: Add extraProjects adn derivedProjects. Fixes #2532
2016-09-29 00:46:06 -04:00
Eugene Yokota 0321f0cd48
Add extraProjects adn derivedProjects. Fixes #2532
This adds support to generate synthetic subprojects from an auto plugin.

In addition, a method called `projectOrigin` is added to distinguish
Organic, BuildExtra, ProjectExtra, and GenericRoot.

Forward-port of #2717 and #2738
2016-09-29 01:46:17 +01:00
Dale Wijnand befb0925e3
Make publishTo & otherResolvers TaskKey's
Fixes #2059
2016-09-29 01:35:51 +01:00
eugene yokota bd1b3cfe00 Improve `show` when key returns a `Seq` (#2752)
This changes the output to:

```
> show externalDependencyClasspath
[info] Updating {file:/xxx/hello/}root...
[info] Resolving jline#jline;2.12.1 ...
[info] Done updating.
[info] *
Attributed(/Users/xxx/.sbt/boot/scala-2.11.8/lib/scala-library.jar)
[info] *
Attributed(/Users/xxx/.ivy2/cache/commons-io/commons-io/jars/commons-io-
2.4.jar)
```
2016-09-23 02:12:44 +01:00
Eugene Yokota 15c078ab0b Quieter ivyLoggingLevel for CI
`ivyLoggingLevel` is dropped to `UpdateLogging.Quiet` when Jenkins or
Travis is detected.
2016-09-15 22:57:07 -04:00
Eugene Yokota 357a146460 Silent startup for scalas
Fixes #840
2016-09-15 03:42:23 -04:00
eugene yokota 26d0b25a12 Merge pull request #2721 from eed3si9n/wip/zinc_x2
bumping to zinc 1.0.0-X3
2016-09-07 00:45:31 -04:00
Eugene Yokota f4400ed171 zinc 1.0.0-X3 2016-09-06 23:39:34 -04:00
Dale Wijnand 1ba7bb0fb9 Merge pull request #2712 from Duhemm/fport/key-selection-build-level
Forward port #2469 & #2708
2016-09-01 09:23:01 +01:00
Martin Duhem faf6120c93 Unspecified project axis means current project or its build 2016-08-31 10:42:32 +02:00
Eugene Yokota 9655f50c55 bumping to zinc 1.0.0-X2 2016-08-30 21:37:20 -04:00
kenji yoshida 27fe8eb6f7 remove unused imports (#2719) 2016-08-30 07:29:17 +01:00
Eugene Yokota 829ec4dd3a Update Defaults and scripted to := style 2016-08-29 23:02:10 -04:00
xuwei-k 857fc0f5da use JavaConverters instead of JavaConversions
- https://issues.scala-lang.org/browse/SI-9684
- 0c5b42d974
2016-08-30 01:31:04 +09:00
Martin Duhem 3da38b14db Fix key selection for build level keys
PR #2469 added build keys to tab completion, with the side effect of
considering as available candidate in key selection, thus making sbt
think that some inputs were ambiguous (e.g. `baseDirectory`): should it
apply to the current project or to the build level key?

This commit fixes this issue by improving the key selection:
 - If there's no candidate, we return the default key
 - If there's a single possible project level key, and zero or more
   build level keys, then we select the project level key.
 - If there are zero project level key, and a single build level key,
   then we select the build level key
 - If there are multiple candidates, sbt says that the input is
   ambiguous.

Fixes #2707
2016-08-26 08:14:28 +02:00
Martin Duhem 3c9d2ff57a Completion for build-level keys
sbt's shell provided completion only for keys that were relative to a
defined project, but didn't provide completion for keys that belong to
the build definition only.

This commit fixes this issue by defining a new kind of `Parser` (from
which completions are generated) which runs its input simultaneously on
distinct parsers. We now define a parser for project-level keys and
another parser for build-level keys. These two parsers are eventually
combined, and we get the completions of both parsers.

Fixes sbt/sbt#2460
2016-08-26 08:14:28 +02:00
kenji yoshida 0c086a7761 `aggregate` can now be used inside a .sbt file (#2683)
(cherry picked from commit b92e5773f7)
2016-07-27 23:35:16 +09:00
Dale Wijnand c5f59d4406 Check formatting with TravisCI
Fixes #2657
2016-07-18 12:58:30 -04:00
eugene yokota f221d0ab28 Merge pull request #2667 from OlegYch/fix-project-macro-error-message
Better error message from project macro
2016-07-18 11:29:26 -04:00
eugene yokota 4b0ccd2dab Merge pull request #2670 from dwijnand/remove-404-resolvers
Remove resolvers to repositories that don't exist
2016-07-18 11:10:18 -04:00
Dale Wijnand b245cf5f58 Remove resolvers to repositories that don't exist
Fixes #2195
2016-07-15 08:16:40 +01:00
eugene yokota 5abccaedd2 Merge pull request #2673 from dwijnand/leave-update-options-alone
Don't redefine updateOptions to ignore ThisBuild
2016-07-14 22:35:28 -04:00
Dale Wijnand 84c611af36 Remove unused vals/defs 2016-07-12 14:31:35 +01:00
Dale Wijnand 886d95c0e5 Don't redefine updateOptions to ignore ThisBuild
Fixes #2671
2016-07-12 13:24:14 +01:00
Dale Wijnand deea82542c Remove unused imports 2016-07-12 11:55:10 +01:00
OlegYch caba7e145c Better error message from project macro 2016-07-12 01:29:24 +03:00
Dale Wijnand 96e086b1a1 AutoPlugin should require JvmPlugin by default
Fixes #2082
2016-07-08 10:57:55 +01:00
Dale Wijnand 12c2734052 Pattern match some if/else's 2016-07-07 18:21:25 +01:00
Dale Wijnand 4c75d778b9 Group imports 2016-07-07 18:21:25 +01:00
Dale Wijnand 32760bed55 Remove some fatal exception catching 2016-07-07 18:21:25 +01:00
Dale Wijnand 387674a451 Remove some heads and tails 2016-07-07 18:21:25 +01:00
Eugene Yokota 246ec58e35 Adapting to Zinc changes 2016-06-26 03:55:37 +02:00
Grzegorz Kossakowski 824b59a3ef Adapt to changes to DefinesClass in zinc
The definition of `DefinesClass` has changed from being a function
`File => String => Boolean` to just a function `String => Boolean`. The
changes in this commit reflect that fact.

Also, this commit implements a newly introduced PerClasspathEntryLookup.
2016-06-26 03:49:55 +02:00
Grzegorz Kossakowski e8c5ff0ffe Remove use of `DefinesClass` in Load.scala
It turns out that `DefinesClass` was a dead data: it was passed around
but not used anywhere.
2016-06-26 03:49:55 +02:00
Dale Wijnand 01a7a00915 Remove old sbt parser 2016-06-21 13:15:10 +01:00
Dale Wijnand a0193d28ea Cleanup mainProj 2016-06-21 13:15:10 +01:00
Dale Wijnand ffafdc2e03 Remove OldPlugin 2016-06-21 08:09:30 +01:00
Dale Wijnand bf8c5d2135 Drop use of AttributeKey#rawLabel 2016-06-21 08:09:30 +01:00
Miles Sabin 1e9bb93285 Override scala organization and version transitively at the Ivy level 2016-06-05 09:46:00 +01:00
Pedro Larroy f5e8c8736f Fix typo: paralleism -> parallelism 2016-05-26 07:38:27 +00:00
James Roper e21c871d71 Replaced cross building support with sbt-doge 2016-05-17 09:49:16 +10:00
ekrich d383c2f306 Add Windows script support and native file extensions on Unix platforms
When running a sbt script, this change lets the user on UNIX and
Windows platforms to use native file extensions like none/.sh or
.bat/.cmd. The code copies the file to the sbt boot/hash/src_managed
directory with a .scala extension.
2016-05-13 12:01:14 -07:00
Eugene Yokota d437e8299e Typo fix 2016-05-07 20:31:19 -04:00
Eugene Yokota 420679df10 Address Codacy issues 2016-05-07 15:46:22 -04:00
Eugene Yokota 0cc9488632 Bring BuildStructure and others into internal 2016-05-06 19:21:13 -04:00
Eugene Yokota ce3926fbed Bring EvaluateConfigurations and DslEntry to internal 2016-05-06 17:32:26 -04:00
eugene yokota 6a9ced8eb6 Merge pull request #2589 from eed3si9n/wip/bumptozinc
[sbt 1.0] Bumping up to Zinc 1.0.0-M1
2016-05-06 05:40:58 -04:00
Eugene Yokota f8ef449789 Fix test quick 2016-05-06 01:30:35 -04:00
Eugene Yokota 738e8fb2f3 Adjust discovery code to new Zinc 2016-05-05 16:11:57 -04:00
Eugene Yokota fd7c162ea8 Bumping up dependencies 2016-05-05 14:38:24 -04:00
Martin Duhem c70c9989e5 Upgrade to latest zinc 2016-05-04 16:44:31 +02:00
Eugene Yokota e3d2af9e40 We shouldn't cross publish sbt for backward compatibility
By keeping sbt artifact to be called sbt, the user can try by just
changing the build properties.
2016-05-04 00:09:02 -04:00
Eugene Yokota 89a17c79d6 Adjust to changes 2016-05-02 01:37:16 -04:00
Eugene Yokota 296758e159 Fix #2519. Fixes Maven Central getting included even with repo override 2016-05-01 03:19:34 -04:00
Eugene Yokota 78ea2932a4 Fixes #2427 inter-project dependency interference with sbt-web
sbt-web uses exportedProducts key as an extension point.
This removes exportedProductsAlways from 0.13.10-RC1,
and uses exportedProducts instead.
2016-05-01 02:59:06 -04:00
Eugene Yokota 447e2f7f8c Inter-project dependency tracking. Fixes #2266
Adds `trackInternalDependencies` and `exportToInternal` settings. These
can be used to control whether to trigger compilation of a dependent
subprojects when you call `compile`. Both keys will take one of three
values: `TrackLevel.NoTracking`, `TrackLevel.TrackIfMissing`, and
`TrackLevel.TrackAlways`. By default they are both set to
`TrackLevel.TrackAlways`.

When `trackInternalDependencies` is set to `TrackLevel.TrackIfMissing`,
sbt will no longer try to compile internal (inter-project) dependencies
automatically, unless there are no `*.class` files (or JAR file when
`exportJars` is `true`) in the output directory. When the setting is
set to `TrackLevel.NoTracking`, the compilation of internal
dependencies will be skipped. Note that the classpath will still be
appended, and dependency graph will still show them as dependencies.
The motivation is to save the I/O overhead of checking for the changes
on a build with many subprojects during development. Here's how to set
all subprojects to `TrackIfMissing`.

    lazy val root = (project in file(".")).
      aggregate(....).
      settings(
        inThisBuild(Seq(
          trackInternalDependencies := TrackLevel.TrackIfMissing,
          exportJars := true
        ))
      )

The `exportToInternal` setting allows the dependee subprojects to opt
out of the internal tracking, which might be useful if you want to
track most subprojects except for a few. The intersection of the
`trackInternalDependencies` and `exportToInternal` settings will be
used to determine the actual track level. Here's an example to opt-out
one project:

    lazy val dontTrackMe = (project in file("dontTrackMe")).
      settings(
        exportToInternal := TrackLevel.NoTracking
      )
2016-05-01 02:57:03 -04:00
Martin Duhem b086360046 Update bridge retrieval in `consoleProject`
Fixes sbt/sbt#2428
2016-05-01 02:49:11 -04:00
xuwei-k a6e31a0dc7 exclude directories from unmanagedSources
fix #2552
2016-04-30 11:13:02 +09:00
Eugene Yokota e4ee409cd5 Some changes due to cross publishing 2016-04-29 16:18:40 -04:00