Commit Graph

179 Commits

Author SHA1 Message Date
William Benton 2a3462ac12 Additional options for Ivy resolvers.
Specify an Ivy resolver with ", descriptorOptional" to make Ivy
descriptor files optional for that repository or with
", skipConsistencyCheck" to disable Ivy consistency checks for
that repository.
2013-08-26 14:06:21 -04:00
William Benton e3ee1a9ac4 refactored case-match in ConfigurationParser.getRepositories 2013-08-26 14:06:21 -04:00
Mark Harrah c127461ea1 set jline.esc.timeout=0 to prevent it from creating a Thread 2013-07-18 15:41:45 -04:00
Marko Elezovic ebb6b2cf70 Whitespace OCD 2013-07-02 08:21:32 -04:00
Mark Harrah 1048976844 jline/jansi fixes for windows. Fixes #763, fixes #562.
The startup script should set sbt.cygwin=true if running from cygwin.
This will set the terminal type properly for JLine if not already set.
If sbt.cygwin=false or unset and os.name includes "windows", JAnsi is
downloaded by the launcher and installed on standard out/err.

The value for jline.terminal is transformed from explicit jline.X to
the basic types "windows", "unix", or "none".  Now that sbt uses JLine
2.0, these types are understood by both sbt's JLine and Scala's.
Older Scala versions shaded the classes but not the terminal property
so both couldn't be configured with a class name at the same time.
2013-06-26 13:40:33 -04:00
Grzegorz Kossakowski ad718587bb Configure additional classpath through `sbt.extraClasspath`
Modify the default launcher configuration for sbt so extra classpath
entries for sbt can be configured through `sbt.extraClasspath` system
property.
2013-06-24 15:04:57 -07:00
Grzegorz Kossakowski f426f8ba7f Allow an empty string as a default in variable substitution.
Lanucher configuration parser would previously require a default
value in variable substitution pattern to be non-empty string.
This is an unnecessary restriction as empty value is sometimes
useful as in this example:

  resources: ${sbt.extraClasspath-}

This commit lifts this restriction so empty default values are
allowed. The change has been discussed with @harrah.
2013-06-24 15:04:57 -07:00
Mark Harrah 1a3ea6fb8b JLine 2.0 loads the -Djline.terminal=<class> option from the context loader, so set that in the launcher 2013-06-20 16:55:42 -04:00
Mark Harrah 5dc671c7f8 Synchronize ClassLoaderCache and the Scala provider cache.
Construction of Scala providers was already properly synchronized jvm and machine-wide.
The cache on top of construction was not and neither was the newer ClassLoaderCache.
This could cause the same Scala version to be loaded in multiple class loaders, taking
up more permgen space and possibly decreasing performance due to less effective jit.

The issue is very rare in practice for 0.13 because of the low probability of contention
on ClassLoaderCache.  This is because the work for a cache miss is mainly the construction
of a URLClassLoader.  In 0.12, however, the work potentially involved network access and
class loading (not just class loader construction), thus greatly increasing the probability
of contention and thus duplicate work (i.e. class loader construction).

When there is contention, multiple class loaders are constructed and then preserved by the
scalaInstance task in each project throughout the first task execution.  Only when multiple
scalaInstance tasks execute simultaneously and only during the first execution does this occur.
(Technically, it could still happen later, but it doesn't in practice.)

This means that the number of duplicate class loaders should quickly saturate instead of growing
linearly with the number of projects.  It also means that the impact depends on the exact
tree structure of projects.  A linear chain of dependencies will be unaffected, but a build with
independent leaves may be limited by the number of cores.  The number of cores affects
the number of threads typically used by the task engine, which limits the number of concurrently
executing scalaInstance tasks.

In summary, this might affect the first, cold compilation of a multi-module project with
independent leaves on a multi-core machine with Scala version different from the version used
for sbt.  It might increase the maximum permgen requirements as well as slow the jit compilation
by up to one task execution.  Subsequent compilations should be unaffected and the permgen
utilization return to be as expected.
2013-06-19 21:38:06 -04:00
Mark Harrah 2b5a088911 sbt.log.format should not be set by sbt, since that will not respect noformat 2013-05-27 19:12:39 -04:00
Mark Harrah 81babda6f6 work around URI problems with encoding and resolving. Fixes #725 2013-04-12 12:47:44 -04:00
Mark Harrah 28b12465df fix regex character filter in VersionParts 2013-03-18 09:52:57 -04:00
Josh Suereth f414214d6e Fixes #706 - Binary Compatibility lost in Launcher.
This checks to see if the new `crossVersionedValue` is actually implemented
by an AppID and delegates to the deprecated `crossVersioned` method if
there are any issues.   This preserves the binary compatibility from
folks using Launcher interface pre-0.13 and post-0.13.
2013-03-12 13:04:24 -04:00
Mark Harrah 56b85522b7 ivy cache: ignore the original resolver in more places. Fixes #704 2013-03-08 14:23:31 -05:00
Mark Harrah b8c11678d9 launcher: put ivy resolution cache in boot and clear each run, ignore original resolver 2013-03-08 14:23:31 -05:00
Mark Harrah 8c4ebabe19 remove JLine from the launcher
It is no longer necessary for it to be loaded in a stable class loader
and line reading in the launcher does not require anything more advanced
than java.io.Console.readLine(String).
Scala versions 2.8 and later use the version that goes through JAnsi
and for that it is sufficient to have JNA in a stable loader.
2013-02-26 09:27:56 -05:00
Alex Dupre 92e99cfef0 Switch from JLine 1.0 to 2.10. 2013-02-26 07:39:33 -05:00
Mark Harrah c815f57a79 Workaround for os deadlock detection at the process level. Fixes #650. 2013-02-05 10:27:19 -05:00
Mark Harrah 437c805f3d Fix ScalaProviderTest to work with new CrossValue type 2013-01-29 17:47:29 -05:00
Eugene Yokota 125727ba83 support binary version in launcher 2013-01-29 16:55:13 -05:00
Mark Harrah 824000009d Right precedence of sbt.boot.properties lookup, handle qualifier correctly. Fixes #651. 2013-01-23 12:48:54 -05:00
Paolo G. Giarrusso 236143be8d Silence boring Eclipse warnings: catching all exceptions
Here I make explicit where catching all exceptions is intended.
Mark Harrah corrected one decision during review.
2013-01-22 09:05:15 -05:00
Mark Harrah 1d18532bf0 mark Typesafe repositories as bootOnly, remove Sonatype snapshots now that Scala is resolved by the project 2012-12-09 20:40:41 -05:00
Grzegorz Kossakowski ef39aeb9c1 Follow source layout convention supported by Eclipse.
Moved source files so directory structure follow package
structure. That makes it possible to use Scala Eclipse plugin
with sbt's source code.
2012-12-07 10:27:08 -08:00
Mark Harrah b7084ffa1f fix scoping issue in launcher tests 2012-12-04 21:08:38 -05:00
Josh Suereth 4210936163 Adding app-repositories feature to Launcher.
* Added appRepositories method to Launcher interface
* Added 'bootOnly' configuration, such that repositories can be used only for boot and not applications.
* Added tests to ensure 'bootOnly' and 'mavenCompatible' behave well
* Updated documentation on launcher to reflect new options.
2012-12-04 13:10:10 -05:00
Josh Suereth 0c08c1169e Bumped the Scalatest/Specs versions for 2.10.0-RC3
* Modified tests to use mutable Specs API
* Fixed a few minor specs issues.
2012-12-04 13:10:09 -05:00
Mark Harrah 8d6dd10798 2.10.0-M5, different arity generalization
1. KList[M[_]] now instead of KList[HL <: HList, M[_]]
  a. head, tail work properly in this variant
  b. disadvantage is that full type not easily transformed to new type constructor
2. AList abstracts on K[L[x]], a higher order type constructor.
 A. Instances written for:
  a. KList
  b. Seq[M[T]] for a fixed T
  c. TupleN
  d. single values
  e. operate on one type constructor when nested
 B. Main disadvantage is type inference.  It just doesn't happen for K[L[x]].
    This is mitigated by AList being used internally and rarely needing to construct a K.
2012-11-17 20:19:24 -05:00
Mark Harrah 113fdbaff1 fix launcher tests 2012-07-01 15:16:41 -04:00
Mark Harrah d8f5c39465 remove most occurrences of ScalaObject 2012-07-01 15:16:41 -04:00
Mark Harrah d9a8ec0c22 system property name: resolver->repository 2012-06-02 19:03:57 -04:00
Josh Suereth 76d24091fa Fixes from mark's suggestions.
* Puppies may rest easy from the removal of Option.get calls.
* better names for config values
* Added a helper method to avoid any possible code duplication, besides repeated def, val, match and for keywords.
  Looking for ways to remove this duplciation ASAP.
* Moved from pattern match to ._1, my most hated member.
2012-05-30 21:42:45 -04:00
Josh Suereth 52307d27a4 Adding ability to override resolvers from launcher. * Added key which pulls the repositories used by the launcher, if the API allows. * Added which configures whether or not should just use . * Added parsing to launcher so java property is used by default for override setting. 2012-05-30 21:42:45 -04:00
Mark Harrah f39af0bab3 a more universal launcher
when a properties file is not otherwise explicitly specified,
the sbt.version from project/build.properties is used to select
the default properties file to use.  This launcher should be able
to launch:

 0.7.x
 0.10.{0,1}
 0.11.{0,1,2,3}
 0.12.x

Note that it can only launch the release versions of 0.10 and 0.11
listed above and in particular cannot launch snapshot versions.  All
0.12.x versions and 0.7.x versions should be supported, although only
0.7.7 was tested.
2012-05-24 21:50:25 -04:00
Mark Harrah fa725ef9c9 replace scala-tools-snapshots with sonatype oss 2012-04-14 19:13:24 -04:00
Mark Harrah 13d3e7dde3 update to Scala 2.9.2 2012-04-13 17:47:12 -04:00
Mark Harrah 111dfba6a3 support setting sbt.version from system property, which overrides setting in a properties file
fixes #354
2012-02-07 21:52:37 -05:00
Mark Harrah 5bdd55b751 keep scala-tools.org snapshots around a little longer 2012-02-04 21:10:30 -05:00
Mark Harrah dd4efec03c auto detect Scala version for non-cross-versioned launcher app 2012-02-04 21:10:30 -05:00
Mark Harrah 7b31db4171 no cross versioning for sbt 2012-02-04 21:10:30 -05:00
Mark Harrah 2255bd5a62 org.scala-tools.sbt -> org.scala-sbt and dropping scala-tools.org from defaults 2012-01-22 22:06:52 -05:00
Mark Harrah b16d4a36ad Remove local Maven repository from launcher's list of repositories
This is motivated by the high likelihood that it is causing the
 various problems some users have with the launcher not finding
 some dependencies. ref #217.
2011-11-09 18:30:35 -05:00
Mark Harrah 8e9e4b22cd checksums configurable in [ivy] section. fixes #235 2011-11-04 13:40:59 -04:00
Mark Harrah 02f666ec0e miscellaneous fixes 2011-08-31 20:59:40 -04:00
Mark Harrah a2fe069fb0 default to shared boot directory 2011-08-31 08:25:11 -04:00
Mark Harrah 112f58db28 fix ScalaProviderTest 2011-08-14 10:53:37 -04:00
Mark Harrah 5f8a73cc21 extra component for supporting dynamic changes to sbt's classpath. fixes #83 2011-07-01 23:38:03 -04:00
Mark Harrah eb6a59bdd3 move locks test back to a normal unit test 2011-06-27 22:29:48 -04:00
Mark Harrah c7885ce1ff build work 2011-06-26 12:27:07 -04:00
Mark Harrah 1a4646b7f5 move locks test to scripted tests 2011-06-26 12:27:06 -04:00
Mark Harrah 13adcfb28c fix some tests 2011-06-10 08:08:51 -04:00
Mark Harrah b7c20a1149 bump versions 2011-06-03 00:43:40 -04:00
Mark Harrah f38f599157 0.10.0 2011-06-02 23:32:48 -04:00
Mark Harrah fa62e889da bump versions 2011-06-01 03:04:58 -04:00
Mark Harrah ed5bb1a2d4 0.9.10 2011-06-01 02:37:05 -04:00
Mark Harrah f786060883 Revert to using 2.8.1 2011-05-30 17:49:39 -04:00
Mark Harrah 349b510c93 bump versions 2011-05-29 19:17:31 -04:00
Mark Harrah 9002720933 move to 2.9.0-1, bump to 0.9.9 2011-05-29 00:22:08 -04:00
Mark Harrah 04a3f090f6 version bump 2011-05-23 22:39:20 -04:00
Mark Harrah 41162b2484 0.9.8 2011-05-23 22:38:53 -04:00
Mark Harrah c534b8c289 bump version 2011-05-17 21:07:55 -04:00
Mark Harrah 63acaca0a6 0.9.7 2011-05-17 20:46:58 -04:00
Mark Harrah c427c3e503 use shorter name for repository 2011-05-16 22:56:07 -04:00
Mark Harrah aa0824584c version bumps 2011-05-12 22:46:49 -04:00
Mark Harrah ffc3d9b496 0.9.6 2011-05-12 22:45:59 -04:00
Mark Harrah 3acac34b97 bump versions 2011-05-12 09:27:29 -04:00
Mark Harrah 081f296d55 0.9.5 2011-05-12 09:26:40 -04:00
Mark Harrah d35d76d204 version bumps 2011-04-23 19:29:58 -04:00
Mark Harrah 6db4650035 0.9.4 2011-04-23 19:29:50 -04:00
Mark Harrah 6d36b3902f trying a command line configurable default boot.properties 2011-04-18 22:49:52 -04:00
Mark Harrah fe75bade98 continuations test for compiler plugin support 2011-04-12 22:58:32 -04:00
Mark Harrah 14c6ee4b2a updating tests to use newer Scala versions 2011-04-08 19:34:23 -04:00
Mark Harrah 186895d27d bump versions 2011-04-06 22:00:00 -04:00
Mark Harrah 14d2adb4bc versions for 0.9.3 2011-04-06 21:57:21 -04:00
Mark Harrah 68dfe723e7 versions to 0.9.3-SNAPSHOT 2011-03-16 22:30:50 -04:00
Mark Harrah e212756828 versions for 0.9.2 2011-03-16 22:24:23 -04:00
Mark Harrah d371ff9314 more consistent configuration of the Ivy user directory 2011-03-12 10:28:53 -05:00
Mark Harrah 24e30f14c8 version bump 2011-03-06 15:32:26 -05:00
Mark Harrah 3ce0e5dd2d versions for 0.9.1 2011-03-06 15:32:26 -05:00
Mark Harrah d4e641e115 delayed version bump 2011-03-04 06:17:56 -05:00
Mark Harrah 8b63751c8a drop properties fill 2011-02-13 19:02:01 -05:00
Mark Harrah 171cbeb9ce bump to 2.8.1 2010-11-13 19:07:32 -05:00
Mark Harrah 7a36bb2498 use 2.8.1.RC4 2010-10-26 17:58:08 -04:00
Mark Harrah 5ed8f3c042 improving incremental compilation
support lazy arguments in data type generator
SafeLazy implementation that explicitly clears the reference to the thunk
in API representation, drop synthetic modifier and merge deferred into abstract
handle cyclic structures in API generation, display, comparison, persistence
gzip compile cache file
bump to 2.8.1.RC3, project definition cleanup
fix main method detection to check for the right name
properly view inherited definitions
exclude constructors of ancestors
2010-10-22 21:55:16 -04:00
Mark Harrah b6ff9d8661 2.8.1.RC2 2010-09-30 07:21:07 -04:00
Mark Harrah a630aed777 update to Scala 2.8.1.RC1, Ivy 2.2.0-rc1
use dependencies compiled against Scala 2.8.0
2010-09-21 22:09:08 -04:00
Mark Harrah 1a8f4a9874 fix launch test 2010-08-21 22:47:26 -04:00
Mark Harrah dff30c036e sbt and Scala classifiers can be configured in build.properties
The sbt.classifiers property sets the classifiers for sbt and
scala.classifiers sets it for Scala.  Note that when creating a
project, Scala and sbt are retrieved right after project setup.

Changes to *.classifiers will only apply if project/boot is
removed or a new version of Scala is retrieved.
2010-08-11 18:50:44 -04:00
Mark Harrah d7b66458f2 first shot at general command/definition model 2010-07-17 12:07:41 -04:00
Mark Harrah c1ca823214 extend Iterable instead of Traversable because of toStream looping 2010-06-21 21:24:25 -04:00
Mark Harrah b2077ce60c more 2.8 updates, launcher compiles and runs with 2.8 2010-06-15 20:38:18 -04:00
Mark Harrah 0fa71dc9af bump default sbt version used for new projects 2010-05-16 14:43:07 -04:00
Mark Harrah f70442c5c7 * new [ivy] section with 'cache-directory' label in launcher configuration to specify the cache directory used by the launcher for Scala and sbt
* new label 'classifiers' accepted under [app] section to retrieve other artifacts for the application
2010-05-13 18:38:55 -04:00
Mark Harrah cb2c01c866 versions, notes for 0.7.3 2010-04-06 19:30:03 -04:00
Mark Harrah 0bcc65f0c8 version bumps for 0.7.2 2010-03-23 20:38:04 -04:00
Mark Harrah 54bc694081 * cleaned up build
* made Launcher usable outside of official jar
2010-03-19 19:29:57 -04:00
Mark Harrah 0f3aa56295 Fix scala version used to load sbt to be 2.7.7 2010-03-03 22:04:04 -05:00
Mark Harrah 42cefd37be 0.7.1 2010-02-21 20:21:18 -05:00
Mark Harrah 9f524cbf83 convenience method on ScalaInstance to get both library and compiler jars 2010-02-14 20:23:56 -05:00
Mark Harrah 9ed643cff5 Versions for 0.6.13 2010-02-07 14:13:09 -05:00