Commit Graph

1154 Commits

Author SHA1 Message Date
Grzegorz Kossakowski a7fb54e4df Add debug logging in ClassfileManager
Add logging of various operations the transactional class file manager is
doing. You can pass logger to be used by the transactional class file
manager by using overloaded definition of `ClassfileManager.transactional`
method. The old overload has been deprecated.

The factory methods for class file manager in IncOptions companion object
has been deprecated in favor of using ClassfileManager companion object
directly. The code in Defaults.scala has been updated to use non-deprecated
methods. The logging is turned off by default.

The canonical way of enabling transactional class file manager in sbt
project is:

```
incOptions := incOptions.value.withNewClassfileManager(
  sbt.inc.ClassfileManager.transactional(
    crossTarget.value / "classes.bak",
    (streams in (compile, Compile)).value.log
  )
)
```

It's a bit verbose which shows that the api for this is not the best.
However, I don't expect sbt users to need this code very often.

This patch should help debug the problem described in #1184
2014-04-11 13:42:21 +02:00
Josh Suereth 10afd46785 Merge pull request #1252 from gkossakowski/hang-in-loading-global-plugins
Pick the right overload in EvaluateTask.runTask
2014-04-10 09:28:51 -04:00
Grzegorz Kossakowski 7fead66244 Pick the right overload in EvaluateTask.runTask
The deprecated method should forward to the other overloaded alternative
but it recursed instead.

This kind of mistake would be easily caught by linter warning about
unused `newConfig` local variable. I hope we'll get there some day.

Fixes #1251
2014-04-10 15:24:07 +02:00
Indrajit Raychaudhuri 7179912387 `DefaultOptions` for resolvers should not resets existing values.
`DefaultOptions.addResolvers` and `DefaultOptions.addPluginResolvers`
should not reset the existing value while adding the new ones. The
names are prefixed with _add_ afterall.
2014-04-10 03:25:54 -05:00
eugene yokota 59b834c679 Merge pull request #1225 from japgolly/shhh_tests
Added setting 'testResultLogger' which allows customisation of test reporting.
2014-04-09 10:37:44 -07:00
Josh Suereth 43c25beeed Fix infinite loop of death. 2014-04-09 10:11:21 -04:00
David Barri 195129a3e7 Added TestResultLogger for customising test feedback.
1) When `test` is run and there are no tests available, omit logging output.
   Especially useful for aggregate modules. `test-only` et al unaffected. (#1185)

2) Added a new setting `testResultLogger` to allow customisation of logging of test results.
2014-04-09 19:14:29 +10:00
Josh Suereth 3890c98115 Remove mutability from the task cancel api.
* Rename TaskCancel to RunningTaskEngine for clarity
* Explicitly pass a state value in TaskCancellationStrategy
* Update hooks to be immutable/safe.
2014-04-08 20:59:50 -04:00
Josh Suereth f42dee8090 Naming fixes to TaskCancellationStrategy to be clearer. 2014-04-08 12:08:30 -04:00
Josh Suereth 8f1ef5395d Improve scaladoc comments for the task cancellation api. 2014-04-08 11:09:23 -04:00
Josh Suereth 171eb19b96 Part #2 of task cancellation hooks.
* Expose new EvaluateTaskConfig throughout all the APIs
* Create a key for cancellation configuration
* Add default values for cancellation in GlobalPlugin
* Create a test to ensure that cancellation can cancel tasks.
* Deprecate all the existing mechanisms of evaluating tasks which
  use the EvaluateConfig API.
2014-04-08 09:23:49 -04:00
Josh Suereth 6e480fc2b6 Fix deprecated 'since' clauses to reflect our actual release versions. 2014-04-07 16:54:32 -04:00
Josh Suereth 2686acd993 Part #1 of cancel-task-hooks - Hooks EvaluateTask.
* Create a new EvaluateTaskConfig which gives us a bit more freedom
  over changign config options to EvaluateTask in the future.
* Create adapted from old EvaluateTask to new EvaluateTask
* Add hooks into signals class to register/remote  a signal listener
  directly, rather than in an "arm" block.
* Create TaskEvaluationCancelHandler to control the strategy of
  who/whom can cancel (sbt-server vs. sbt-terminal).
* Create a null-object for the "can't cancel" scenario so the
  code path is exactly the same.

This commit does not wire settings into the build yet, nor does it
fix the config extractio methods.
2014-04-07 16:42:08 -04:00
Josh Suereth d8e2f594d1 Merge pull request #1065 from jaceklaskowski/string-interpolation-follow-deprecation
Use string interpolation and replace deprecated methods
2014-04-07 11:22:19 -04:00
Eugene Yokota 5f7e68c7dd Auto plugin names are imported with or without autoImport. Fixes #1217 2014-03-27 17:36:40 -04:00
eugene yokota 9dde1ac46e Merge pull request #1215 from eed3si9n/topic/renameaddsettings
Deprecate autoSettings, Rename ProjectSettings => BuildScalaFiles
2014-03-26 14:36:46 -04:00
Eugene Yokota 4f969491d0 Deprecate autoSettings, Rename ProjectSettings => BuildScalaFiles
* autoSettings is renamed to settingSets. Since this was part of 0.13.0
we need to deprecate it first.
2014-03-26 11:35:50 -04:00
Eugene Yokota 1debc48568 Rename GlobalModule -> CorePlugin 2014-03-25 15:49:07 -04:00
Eugene Yokota 3f2f12f5bb Fix PluginsTest 2014-03-25 01:49:08 -04:00
Eugene Yokota 575e657962 Default AutoPlugin to an empty root plugin 2014-03-25 00:20:11 -04:00
Eugene Yokota ff77d0b0f2 Remove def autoImport: Any from AutoPlugin. 2014-03-24 23:04:22 -04:00
Eugene Yokota cc80d216ab Adjusting to 0.13 changes 2014-03-24 20:03:01 -04:00
Eugene Yokota 2c654b2d90 Unifies AutoPlugin and AutoImport. Fixes #1188
* AutoImport trait is subsumed by def autoImport method under
AutoPlugin class.
* When def autoImport is overridden by a lazy val or a val, *.sbt
automatically imports autoImport._.
2014-03-24 19:10:35 -04:00
eugene yokota 4315049337 Merge pull request #1203 from eed3si9n/topic/requiredAutoPlugin
Unifies AutoPlugin and RootPlugin
2014-03-24 19:02:00 -04:00
Eugene Yokota d697c10950 Hide unary_! operator from API 2014-03-24 18:59:14 -04:00
Josh Suereth d03e2380b2 Merge pull request #1197 from sandreev/t_1196_empty_tests
fixes #1196
2014-03-24 16:19:11 -04:00
Eugene Yokota 5b1c33dd6e Added conflict report and unit tests 2014-03-22 02:47:11 -04:00
Eugene Yokota e95935a7db Adds conflict check at the end to enforce exclusion requirements. 2014-03-21 01:06:00 -04:00
Eugene Yokota c7dc499fe4 Updated comments. Typo fix per @jozic 2014-03-20 21:47:49 -04:00
Sergey Andreev 910d39f3a9 fixes #1196 2014-03-20 17:46:42 -07:00
Eugene Yokota f8bedf4012 Unifies AutoPlugin and RootPlugin
* Separates def select into def trigger and def requires.
* Setting trigger = noTrigger and requires = empty makes a plugin a
root.
2014-03-20 07:08:33 -04:00
James Roper 9f20f04e16 Allow end users to add Plugins, not just AutoPlugins
This allows plugins to define a Plugins instance that captures both the
plugin and its required dependencies.

Also fixed up some scaladocs that were wrong.
2014-03-18 19:49:38 +11:00
Josh Suereth 7c15eb01f3 When fragmenting Defaults, we mixed back settings in the wrong order.
* packageArtifacts is not cleared by defautlSettings
* Added a test for this behavior (this one test should ensure the ordering for most settings is correct.)

Fixes #1176
2014-03-12 08:50:37 -04:00
Josh Suereth c2f61460c6 Merge pull request #1169 from sbt/wip/fix-override-default
Fix overwrite default to true in deprecated method calls.
2014-03-10 17:17:49 -04:00
Josh Suereth 7413fbe9c0 Doc fix ups from review.
* Fix plugin mispellings
* Clarify `select` behavior.
2014-03-10 16:12:05 -04:00
Josh Suereth 893794a8ba Fix overwrite default to true in deprecated method calls.
We cannot break existing users, but we can deprecate the improper usage.
This is part #2 of the workaround for #1156.  This ensures that
users will stop using the legacy methods after 0.13.2 is out.
2014-03-10 10:44:38 -04:00
Josh Suereth 548b38c7f8 Add note about not exposing fine-grained autoplugin inclusion controlls.
AddSettings should only expose coarse-grained features of AutoPlugins
or else the Logic we use to ensure safe addition completely breaks
down.  Leaving it in the code as an escape hatch if we get desparate,
but we need an alternative for controlling ordering later.
2014-03-10 09:45:25 -04:00
Josh Suereth 3576baa76c Split Defaults.scala into three plugins: Global,Ivy,Jvm.
* GlobalPlugin has defaults for controlling parallelism on tasks, basic command stuff.
* IvyModule has the configuration for resolving/publishing modules to ivy, assuming
  each project is a single module.
* JvmModule has the configuration for compiling/running/testing/packaging Java/Scala
  projects.
2014-03-10 09:45:25 -04:00
Josh Suereth a44a14f2c8 AutoPlugins appropriately participate in AddSettings.
* Add new AutoPlugins type to AddSettings.
* Ensure any Plugins filter doesn't just automatically always add
  autoplugins every time.
* Load.scala can now adjust AutoPlugins ordering

Note: Adjusting autoplugin ordering is dangerous BUT doing a glob
      of "put autoplugin settings here" is generally ok.
2014-03-10 09:45:25 -04:00
Josh Suereth ac9391066b Allow Build.scala project settings to be ordered via AddSettings.
* Create new AddSettings.ProjectSettings that can be used in the Addsettings order.
* Update Load.scala to correctly abide by AddSettings orderings.
2014-03-10 09:45:25 -04:00
Josh Suereth 7f8d21c2f1 Remove Natures from AutoPlugins feature.
* remove the notion of Natures from Autoplugins.
* Update tests to use AutoPlugins with no selection for inclusion.
* Rename exisitng Natures code to Plugins/PluginsDebug.
2014-03-10 09:45:25 -04:00
Josh Suereth dbb47b3ce8 Updates `last` and `export` commands to read from correct key.
Fixes #1155.

It seems that somehow during the 0.13.{1 -> 2 } transition, we
stopped pointing at the correct key for TaskKeys (either that or
task streams are now all associated with the `streams` key).  I
think this may have been inadvertently caused from several
refactorings to enable greater control over the execution of tasks.

This points the `last*` methods at the correct key for tasks,
fixing both `last <key>` and `export <key>` commands.
2014-03-08 14:09:44 -05:00
Josh Suereth a8ab2f3db9 Merge pull request #1115 from metasim/Structure-docs
Added basic documentation for DefinableSetting, inferring behavior from implementation.
2014-03-03 14:16:21 -05:00
Jason Zaugg 8c4527317f SI-7788 Adapt to renamed implict Predef.conforms
In 2.11, the implicit version is named `$conforms` so as to avoid
accidental shadowing by user code, which renders methods using
views and subtype bounds inexplicable unusable.

But, SBT intentionally needs to hide it to make the implicits
in this file line up.

This commit opts-in the the required identifiers from Predef,
rather than opting out of conforms. This makes the same code
source compatible with 2.10 and 2.11.
2014-02-21 22:14:13 +01:00
Josh Suereth c9f83dde47 Merge pull request #1127 from retronym/topic/2.11-2.10-source-compat
using compat._ to plug source compatibility breakages
2014-02-20 16:09:48 -05:00
Josh Suereth a8acc11fb5 Merge pull request #1130 from sbt/wip/auto-plugins
AUTO PLUGIN FEATURE!!!!
2014-02-20 16:08:01 -05:00
Mark Harrah 90134b3af0 'plugins' and 'plugin <name>' commands to inspect plugins
* 'plugins' displays the list of plugins available for each build along with the project IDs each is enabled on
* 'plugin <name>' displays information about a specific plugin in the context of the current project
 - if the plugin is activated on the current project and if so, information about the keys/configurations it provides
 - how the plugin could be activated if possible
* tries to detect when it is run on an aggregating project and adjusts accordingly
 - indicates if an aggregated project has the plugin activated
 - indicates to change to the specific project to get the right context

This is a rough implementation and needs lots of polishing and deduplicating.
The help for the commands needs to be added/expanded.
2014-02-20 13:56:50 -05:00
Mark Harrah 2bf127aaf6 Make BuildDependencies construction a proper function outside of the settings sytem. 2014-02-20 13:28:02 -05:00
Mark Harrah a3d89dc865 Infrastructure for debugging natures and plugins.
* Can provide suggestions for how to define a plugin given a context (a loaded Project in practice).
* When a user requests an undefined key at the command line, can indicate whether any (deactivated) plugins provide the key.

TODO:
* Hook up to the key parser
* Implement 'help <plugin>'
* Determine how to best provide the context (the current project is often an aggregating root, which is not typically a useful context)
2014-02-19 23:04:10 -05:00
Jason Zaugg bd943b8e83 using compat._ to plug source compatibility breakages
This commit makes the code source compatible across Scala 2.10.3
and https://github.com/scala/scala/pull/3452, which is proposed
for inclusion in Scala 2.11.0-RC1.

We only strictly need the incremental compiler to build on Scala
2.11, as that is integrated into the IDE. But we gain valuable
insight into compiler regressions by building *all* of SBT with
2.11.

We only got there recently (the 0.13 branch of SBT now fully cross
compiles with 2.10.3 and 2.11.0-SNAPSHOT), and this aims to keep
things that way.

Once 2.10 support is dropped, SBT macros will be able to exploit
the new reflection APIs in 2.11 to avoid the need for casting
to compiler internals, which aren't governed by binary compatibility.
This has been prototyped by @xeno-by: https://github.com/sbt/sbt/pull/1121
2014-02-17 14:53:59 +01:00