{"action":"created","issue":{"url":"https://api.github.com/repos/gkossakowski/scala/issues/2","labels_url":"https://api.github.com/repos/gkossakowski/scala/issues/2/labels{/name}","comments_url":"https://api.github.com/repos/gkossakowski/scala/issues/2/comments","events_url":"https://api.github.com/repos/gkossakowski/scala/issues/2/events","html_url":"https://github.com/gkossakowski/scala/pull/2","id":57455507,"number":2,"title":"Sbt build for Scala","user":{"login":"gkossakowski","id":4217,"avatar_url":"https://avatars.githubusercontent.com/u/4217?v=3","gravatar_id":"","url":"https://api.github.com/users/gkossakowski","html_url":"https://github.com/gkossakowski","followers_url":"https://api.github.com/users/gkossakowski/followers","following_url":"https://api.github.com/users/gkossakowski/following{/other_user}","gists_url":"https://api.github.com/users/gkossakowski/gists{/gist_id}","starred_url":"https://api.github.com/users/gkossakowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gkossakowski/subscriptions","organizations_url":"https://api.github.com/users/gkossakowski/orgs","repos_url":"https://api.github.com/users/gkossakowski/repos","events_url":"https://api.github.com/users/gkossakowski/events{/privacy}","received_events_url":"https://api.github.com/users/gkossakowski/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":24,"created_at":"2015-02-12T12:44:42Z","updated_at":"2015-03-09T22:48:21Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/gkossakowski/scala/pulls/2","html_url":"https://github.com/gkossakowski/scala/pull/2","diff_url":"https://github.com/gkossakowski/scala/pull/2.diff","patch_url":"https://github.com/gkossakowski/scala/pull/2.patch"},"body":"## The new, sbt-based build definition for Scala\r\n\r\n_This is a PR submitted against my own fork. I'll move it over to scala/scala when it matures a bit._\r\n\r\nWhat you see here is very much work-in-progress. Basics like compiling and packaging jars (into the right location) work. Everything else is missing.\r\n\r\n### Tasks up for grabs\r\n\r\n  - [x] building docs (`doc` task produces errors at the moment)\r\n  - [ ] placing shell scripts in `build/pack/bin` (so you can run the compiler or repl easily) (@dumpstate)\r\n  - [ ] running partest tests (@michaelpigg)\r\n  - [ ] compiling and running JUnit tests\r\n  - [ ] add Eclipse support (see this [comment](https://github.com/gkossakowski/scala/pull/2#discussion_r24580746))\r\n  - [ ] check if this project imports into IntelliJ (@retronym)\r\n  - [x] disable docs generation for `asm` and `forkjoin`\r\n  - [x] figure out what's the role of `library-aux` and how to plug it into sbt build\r\n  - [x] generate `.properties` files that are placed in jars (see for example [`library.properties`](https://scala-webapps.epfl.ch/jenkins/view/2.11.x/job/scala-nightly-main-2.11.x/ws/build/quick/classes/library/library.properties/*view*/)) (@dumpstate, #3)\r\n  - [ ] generate OSGi bundle information for all subprojects we publish\r\n  - [ ] implement [OSGi testing](https://github.com/scala/scala/blob/2.11.x/build.xml#L1378)\r\n  - [ ] add sbt compiler interface [testing](https://github.com/scala/scala/blob/2.11.x/build.xml#L1417) (checking if we are not breaking sbt's incremental compilation with changes to the Scala compiler)\r\n  - [ ] integrate MiMa for binary compatibility [checking](https://github.com/scala/scala/blob/2.11.x/build.xml#L1571)\r\n\r\nIf you would like to grab any of those tasks just drop a comment below. I'll update the list with your github id.\r\n\r\n---\r\n\r\nYou'll notice that this build definition is much more complicated than your typical sbt build. The main reason is that we are not benefiting from sbt's conventions when it comes project layout. For that reason we have to configure a lot more explicitly. I've tried explain in comments the less obvious settings.\r\n\r\nThis nicely leads me to explaning goal and non-goals of this build definition. \r\n\r\n### Goals\r\n\r\n  - to be easy to tweak it in case a bug or small inconsistency is found\r\n  - to mimic Ant's behavior as closely as possible\r\n  - to be super explicit about any departure from standard sbt settings\r\n  - to achieve functional parity with Ant build as quickly as possible\r\n  - to be readable and not necessarily succint\r\n  - to provide the nicest development experience for people hacking on Scala\r\n\r\n### Non-goals\r\n\r\n  - to have the shortest sbt build definition possible; we'll beat Ant definition easily and that will thrill us already\r\n  - to remove irregularities from our build process right away\r\n  - to modularize the Scala compiler or library further\r\n\r\nIt boils down to \r\n\r\n### Simple rules\r\n\r\n  - project laytout is set in stone for now\r\n  - if you need to work on convincing sbt to follow non-standard layout then explain everything you did in comments\r\n  - constantly check where Ant build produces class files, artifacts, what kind of other files generates and port all of that to here\r\n\r\n### Note on bootstrapping\r\n\r\nLet's start with reminder what bootstrapping means in our context. It's an answer to this question: which version of Scala are using to compile Scala? The fact that the question sounds circular suggests trickiness. Indeed, bootstrapping Scala compiler is a tricky process.\r\n\r\nThe Ant build used to have involved system of bootstrapping Scala. It would consist of three layers: starr, locker and quick. The sbt build for Scala ditches layering and strives to be as standard sbt project as possible. This means that we are simply building Scala with latest stable release of Scala.  See [this](https://groups.google.com/d/topic/scala-internals/gp5JsM1E0Fo/discussion) discussion for more details behind this decision."},"comment":{"url":"https://api.github.com/repos/gkossakowski/scala/issues/comments/77961294","html_url":"https://github.com/gkossakowski/scala/pull/2#issuecomment-77961294","issue_url":"https://api.github.com/repos/gkossakowski/scala/issues/2","id":77961294,"user":{"login":"gkossakowski","id":4217,"avatar_url":"https://avatars.githubusercontent.com/u/4217?v=3","gravatar_id":"","url":"https://api.github.com/users/gkossakowski","html_url":"https://github.com/gkossakowski","followers_url":"https://api.github.com/users/gkossakowski/followers","following_url":"https://api.github.com/users/gkossakowski/following{/other_user}","gists_url":"https://api.github.com/users/gkossakowski/gists{/gist_id}","starred_url":"https://api.github.com/users/gkossakowski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gkossakowski/subscriptions","organizations_url":"https://api.github.com/users/gkossakowski/orgs","repos_url":"https://api.github.com/users/gkossakowski/repos","events_url":"https://api.github.com/users/gkossakowski/events{/privacy}","received_events_url":"https://api.github.com/users/gkossakowski/received_events","type":"User","site_admin":false},"created_at":"2015-03-09T22:48:21Z","updated_at":"2015-03-09T22:48:21Z","body":"Hi @michaelpigg! Are you still looking into integrating partest into sbt build def?"}}