sbt, the interactive build tool
Go to file
Adriaan Moors cb0e723923 Fix #610: represent refinement typerefs stably
goal:

a representation of a type reference to a refinement class that's stable
across compilation runs (and thus insensitive to typing from source or
unpickling from bytecode)

problem:

the current representation, which corresponds to the owner chain of the
refinement:

  1. is affected by pickling, so typing from source or using unpickled
  symbols give different results (because the unpickler "localizes"
  owners -- this could be fixed in the compiler in the long term)

  2. can't distinguish multiple refinements in the same owner (this is
  a limitation of SBT's internal representation and cannot be fixed in
  the compiler)

solution:

expand the reference to the corresponding refinement type: doing that
recursively may not terminate, but we can deal with that by
approximating recursive references (all we care about is being sound for
recompilation: recompile iff a dependency changes, and this will happen
as long as we have one unrolling of the reference to the refinement)
2012-12-06 19:11:12 -05:00
cache lazy InputCache for recursive caches 2011-06-20 15:25:23 -04:00
compile Fix #610: represent refinement typerefs stably 2012-12-06 19:11:12 -05:00
interface API extraction: handle any type that is annotated, not just the spec'd simple type. Fixes #559. 2012-10-05 09:06:35 -04:00
ivy add scala-tool configuration and dependencies when configuring via pom.xml/ivy.xml 2012-12-06 07:25:41 -05:00
launch fix scoping issue in launcher tests 2012-12-04 21:08:38 -05:00
licenses move remaining pieces of sbt subproject to sbt_pending and fix notices 2010-09-21 21:55:50 -04:00
main Tab completion of right side of setting in 'set' command no longer necessary with the new task syntax. 2012-12-06 19:11:07 -05:00
project use latest, renamed proguard-base artifact 2012-12-06 07:25:40 -05:00
run Prevent 'radio silence' for ForkRun.run(). 2011-11-10 15:47:25 +05:30
sbt fix scripted tests/* 2012-12-06 12:15:34 -05:00
sbt_pending drop more migrated pending items 2011-04-20 18:31:37 -04:00
scripted InputTask macro 2012-11-17 20:23:07 -05:00
src Docs: more cleanup for 0.13 2012-12-06 19:11:07 -05:00
tasks Use and methods instead of mapR,mapFailure,flatFailure,flatMapR 2012-12-02 03:17:19 -05:00
testing Only make one call to test frameworks per test name. Fixes #520. 2012-12-06 12:15:34 -05:00
util Bumped the Scalatest/Specs versions for 2.10.0-RC3 2012-12-04 13:10:09 -05:00
.gitignore doc updates, conversions, howto extension, theme from akka 2012-09-30 20:36:38 -04:00
LICENSE * move Environment classes to util/env module 2010-07-14 19:24:50 -04:00
NOTICE * move Environment classes to util/env module 2010-07-14 19:24:50 -04:00
README.md update links in README to point to scala-sbt.org. Fixes #567. 2012-10-10 08:30:40 -04:00
api.specification Macro def aware recompilation. 2012-03-04 17:35:51 +01:00
launch.specification XSBT-5: maven-style ivy repo support in the launcher config 2012-10-29 09:04:42 -04:00
scripted.specification New scripted test framework 2009-11-09 09:34:52 -05:00

README.md

sbt 0.13

This is the 0.13.x series of sbt.

  • Setup: Describes getting started with the latest binary release. See below to build from source.
  • FAQ: Explains how to get help, how to report an issue, and how to contribute.
  • There is a video of a demo given at Scala Days 2011 based on sbt 0.10.0 that gives an introduction to the configuration system in sbt 0.10.0 and later. See the documentation for current information.
  • Google Code: hosts sbt 0.7.7 and earlier versions

Build from source

  1. Install the current stable binary release of sbt (see Setup), which will be used to build sbt from source.

  2. Get the source code.

     $ git clone git://github.com/harrah/xsbt.git
     $ cd xsbt
    
  3. The initial branch is the development branch 0.13, which contains the latest code for the next major sbt release. To build a specific release or commit, switch to the associated tag. The tag for the latest stable release is v0.12.1:

     $ git checkout v0.12.1
    

    Note that sbt is always built with the previous stable release. For example, the 0.13 branch is built with 0.12.1, the v0.11.2 tag is built with 0.11.1, and the v0.11.0 tag is built with 0.10.1.

  4. To build the launcher, publish all components locally, and build API and SXR documentation:

     $ sbt build-all
    

    Alternatively, the individual commands run by build-all may be executed directly:

     $ sbt publish-local proguard sxr doc
    
  5. To use this locally built version of sbt, copy your stable ~/bin/sbt script to ~/bin/xsbt and change it to use the launcher jar in <xsbt>/target/. For the v0.12.1 tag, the full location is:

     <xsbt>/target/sbt-launch-0.12.1.jar
    

    If using the 0.13 development branch, the launcher is at:

     <xsbt>/target/sbt-launch-0.13.0-SNAPSHOT.jar
    

Modifying sbt

  1. New development takes place on the 0.13 branch. Fixes and improvements that are binary compatible with 0.12 can be backported to the 0.12 branch at the time of the next release.

  2. When developing sbt itself, there is no need to run build-all, since this generates documentation as well. For the fastest turnaround time for checking compilation only, run compile.

  3. To use your modified version of sbt in a project locally, run publish-local. If you have modified the launcher, also run proguard.

  4. After each publish-local, clean the ~/.sbt/boot/ directory. Alternatively, if sbt is running and the launcher hasn't changed, run reboot full to have sbt do this for you.

  5. If a project has project/build.properties defined, either delete the file or change sbt.version to 0.13.0-SNAPSHOT.

Building Documentation

Documentation is built using sphinx and requires some external programs and libraries to be manually installed first:

$ pip install pygments
$ pip install sphinx
$ pip install sphinxcontrib-issuetracker

To build the full site, run the make-site task, which will generate the manual, API, SXR, and other site pages in target/site/. To only work on the site and not API or SXR, run sphinx:mappings.