Commit Graph

509 Commits

Author SHA1 Message Date
Eugene Yokota 6f3e756871 bump to sbt-giter8-resolver 0.1.3 2017-03-11 01:12:54 -05:00
eugene yokota cc19d51f1d Merge pull request #2961 from ekrich/wip13/fix-2551
Fix #2551: scripted mode ignores quotation
2017-03-09 14:44:59 -05:00
Haochi Chen f2ff94f0f3 Backport #2941 to 0.13.x 2017-02-23 02:24:22 -03:00
Eric K Richardson 8a78de1ff3 Merge branch '0.13' into wip13/fix-2551 2017-02-14 10:05:15 -05:00
ekrich d74b24db42 Fix #2551: scripted mode ignores quotation 2017-02-14 09:55:27 -05:00
Eugene Yokota 70a2878dbc Adds an Append instance that extracts taskValue
This adds a macro-level hack to support += op for sourceGenerators and resourceGenerators using RHS of Initialize[Task[Seq[File]]].
When the types match up, the macro now calls `.taskValue` automatically.
2017-01-22 23:44:48 -05:00
Guillaume Martres 3c6db1ce5d Automatically choose proper compiler bridge for dotty
Before this commit, using dotty in your sbt project required to add:
  scalaCompilerBridgeSource := ("ch.epfl.lamp" % "dotty-sbt-bridge" %
    scalaVersion.value % "component").sources()
in your build.sbt. We might as well automatically do this, this reduces
the boilerplate for using dotty in your project to:
  scalaOrganization := "ch.epfl.lamp"
  scalaVersion := "0.1.1-SNAPSHOT"
  scalaBinaryVersion := "2.11" // dotty itself is only published as a
                               // 2.11 artefact currently
2017-01-11 16:06:45 +01:00
Eugene Yokota 00bab7b743 Add build-level keys to the tab completion
Fixes #2460
Fixes #2851
Ref #2707, #2708, #2469

Unlike the previous attempts at fixing the handling of build-level
keys, this change does not change the main parsing logic, which uses
`getKey` to retrieve the key from the key map.
The fact that shell worked pre-0.13.11 means that the parsing was ok.

What this changes is just the "example" keys supplied to the parser so
the tab completion works.
2016-11-30 02:33:05 -05:00
Eugene Yokota 49809056fc Revert "Completion for build-level keys"
This reverts commit e35f9bb11e.
2016-11-29 05:59:33 -05:00
Eugene Yokota 612d9555d0 Revert "Unspecified project axis means current project or its build"
This reverts commit 4fea604759.
2016-11-29 05:59:18 -05:00
Eugene Yokota 3e653f73b3 Revert "Fix key selection for build level keys"
This reverts commit 60bcc58852.
2016-11-29 05:57:43 -05:00
Petro Verkhogliad 08951436f0
Use sbt-giter8-resolver 0.1.2 2016-11-08 15:31:29 -05:00
Petro Verkhogliad 29a524e18d
Use sbt-giter8-resolver 0.1.1 2016-11-06 17:25:56 -05:00
Eugene Yokota cfac453c07 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.
2016-10-14 14:19:53 -04:00
Eugene Yokota 81284081e2 Use non-deprecated constructor 2016-10-14 14:15:05 -04:00
Eugene Yokota f1055c79df Remove unused match 2016-10-13 18:15:54 -04:00
Eugene Yokota 4e09e9ef68 Refactoring per review 2016-10-13 18:12:40 -04:00
Eugene Yokota 6f3bbed47e Safer template resolver
Fixes #2761

With sbt 0.13.13-RC1 rediscovered that the dependency pulled in from
Giter8 was affecting the plugins. To avoid this, this change splits up
the template resolver implementation to another module called
sbt-giter8-resolver, and it will be downloaded using Ivy into
`~/.sbt/0.13/templates/`, and then launched reflectively using Java as
the interface.
2016-10-12 20:06:10 -04:00
Eugene Yokota 272ada1e74
Improve `show` when key returns a `Seq`
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-27 14:23:53 +01:00
Dale Wijnand 06cdefebb9 Replace var/set with withClassLoaderCache 2016-09-26 19:32:11 +10:00
Jason Zaugg 5005abfef2 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.
2016-09-26 14:49:47 +10:00
Dale Wijnand 86670caf37 Add back addPluginResolvers (#2749)
See https://github.com/sbt/sbt/pull/2715/files#r79729382
2016-09-22 13:35:03 +01:00
Eugene Yokota d945925d0e
Silent startup for scalas
Fixes #840
2016-09-15 22:08:56 +01:00
Eugene Yokota 675f70fd85 Rename to extraProjects/derivedProjects
Ref #2717
2016-09-14 20:09:16 -04:00
eugene yokota cd216a2758 Backport style changes in scripted tests and Defaults.scala (#2715)
* Backport style changes in tests and Defaults.scala

This backports the scripted tests and Defaults.scala style changes to
use `build.sbt` and `:=`.
2016-08-29 21:14:39 +02:00
Eugene Yokota 0fab1181c4 Add buildExtras and projectExtras. 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.
2016-08-27 07:31:51 -04:00
Martin Duhem 60bcc58852 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-24 11:13:08 +02:00
Eugene Yokota 954e744408 Adds templateResolvers and `new` command
This adds `new` command, which helps create a new build definition. The
`new` command is extensible via a mechanism called the template
resolver,
which evaluates the arbitrary arguments passed to the command to find
and run a template.

As a reference implementation [Giter8][g8] is provided as follows:

    sbt new eed3si9n/hello.g8

This will run eed3si9n/hello.g8 using Giter8.

  [g8]: http://www.foundweekends.org/giter8/
2016-08-22 02:38:46 -04:00
Eugene Yokota ca12418eb8 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.
2016-08-05 01:21:06 -04:00
eugene yokota 6c8555c5f1 Merge pull request #2681 from pauldraper/pauldraper-forked-test-group
Fix #2677: Tags.ForkedTestGroup doesn't work
2016-07-25 03:30:07 -04:00
xuwei-k b92e5773f7 `aggregate` can now be used inside a .sbt file 2016-07-25 12:07:49 +09:00
Paul Draper 0c9182a4b9 Fix #2677: Tags.ForkedTestGroup doesn't work
Move tag to correct task
2016-07-22 10:17:24 -06:00
Anatoly Fayngelerin fcedd17270 dependsOn can now be used inside a .sbt file for a subproject 2016-06-29 17:20:28 -04:00
Miles Sabin e98b2363c2 Override scala organization and version transitively at the Ivy level. Fixes #2286. 2016-06-02 12:07:30 +01:00
Eugene Yokota 6a0f5dd471 Use parent's toString 2016-05-25 12:57:38 -04:00
Eugene Yokota 4900c71ff9 Cache now takes in account of the parent of the classloader 2016-05-25 12:21:35 -04:00
Eugene Yokota 84f8cc447d Remove unnecessary val 2016-05-25 03:51:53 -04:00
Eugene Yokota f9b1583251 Cache based on the underlying URLs of the ClassLoader per review 2016-05-25 03:51:12 -04:00
Eugene Yokota c67b3881de 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.
2016-05-25 01:51:07 -04:00
Eugene Yokota 0f43d21e72 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.
2016-05-25 01:49:23 -04:00
Eugene Yokota ed0c82de7f Cache global user settings 2016-05-25 01:12:49 -04:00
Eugene Yokota 511737c828 Add perf logs 2016-05-25 01:11:47 -04:00
ekrich fd5f87e7b4 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-10 12:32:32 -07:00
Eugene Yokota 84e7244e4e Fix #2519. Fixes Maven Central getting included even with repo override 2016-04-24 14:24:05 -04:00
eugene yokota b10414da73 Merge pull request #2564 from Duhemm/wip/fix-2518
Off-the-grid installation of sbt
2016-04-20 16:53:19 -04:00
Martin Duhem 175ece4238 Remove `CompilerBridgeProvider` and `ResourceBridgeProvider`
It turns out that we can leverage the`FakeResolver` that has been
implemented to use with the static launcher, and resolve a "fake
compiler bridge" using it, rather than copying it from the resources.

This also has the advantage of not requiring to change the build
definition.
2016-04-15 08:35:27 +02:00
Martin Duhem b8472668ff Static launcher, get bridge sources from resources
This commit introduces a new "static" launcher that does not use Ivy to
gather all the artifacts that it requires, but rather expect them to be
immediately available.

To be able to use sbt without Internet access, we add a new
`ComponentCompiler` that is able to retrieve the bridge sources from the
resources on classpath and compile it.
2016-04-06 12:01:34 +02:00
Dale Wijnand f2f12022a5 Deprecate the Build trait 2016-03-31 16:47:12 +01:00
Martin Duhem 4fea604759 Unspecified project axis means current project or its build 2016-02-23 15:11:16 +01:00
Martin Duhem e35f9bb11e 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-02-23 15:11:15 +01:00