{"action":"created","issue":{"url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/18","labels_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/18/labels{/name}","comments_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/18/comments","events_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/18/events","html_url":"https://github.com/snowleopard/shaking-up-ghc/issues/18","id":123348516,"number":18,"title":"Get rid of ghc-cabal and package-data.mk","user":{"login":"snowleopard","id":675286,"avatar_url":"https://avatars.githubusercontent.com/u/675286?v=3","gravatar_id":"","url":"https://api.github.com/users/snowleopard","html_url":"https://github.com/snowleopard","followers_url":"https://api.github.com/users/snowleopard/followers","following_url":"https://api.github.com/users/snowleopard/following{/other_user}","gists_url":"https://api.github.com/users/snowleopard/gists{/gist_id}","starred_url":"https://api.github.com/users/snowleopard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snowleopard/subscriptions","organizations_url":"https://api.github.com/users/snowleopard/orgs","repos_url":"https://api.github.com/users/snowleopard/repos","events_url":"https://api.github.com/users/snowleopard/events{/privacy}","received_events_url":"https://api.github.com/users/snowleopard/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":{"login":"angerman","id":40449,"avatar_url":"https://avatars.githubusercontent.com/u/40449?v=3","gravatar_id":"","url":"https://api.github.com/users/angerman","html_url":"https://github.com/angerman","followers_url":"https://api.github.com/users/angerman/followers","following_url":"https://api.github.com/users/angerman/following{/other_user}","gists_url":"https://api.github.com/users/angerman/gists{/gist_id}","starred_url":"https://api.github.com/users/angerman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/angerman/subscriptions","organizations_url":"https://api.github.com/users/angerman/orgs","repos_url":"https://api.github.com/users/angerman/repos","events_url":"https://api.github.com/users/angerman/events{/privacy}","received_events_url":"https://api.github.com/users/angerman/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/milestones/1","html_url":"https://github.com/snowleopard/shaking-up-ghc/milestones/first-shake","labels_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/milestones/1/labels","id":1498601,"number":1,"title":"first-shake","description":"The first Shaking up GHC release.","creator":{"login":"snowleopard","id":675286,"avatar_url":"https://avatars.githubusercontent.com/u/675286?v=3","gravatar_id":"","url":"https://api.github.com/users/snowleopard","html_url":"https://github.com/snowleopard","followers_url":"https://api.github.com/users/snowleopard/followers","following_url":"https://api.github.com/users/snowleopard/following{/other_user}","gists_url":"https://api.github.com/users/snowleopard/gists{/gist_id}","starred_url":"https://api.github.com/users/snowleopard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snowleopard/subscriptions","organizations_url":"https://api.github.com/users/snowleopard/orgs","repos_url":"https://api.github.com/users/snowleopard/repos","events_url":"https://api.github.com/users/snowleopard/events{/privacy}","received_events_url":"https://api.github.com/users/snowleopard/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":2,"state":"open","created_at":"2016-01-12T00:31:53Z","updated_at":"2016-01-14T14:25:26Z","due_on":null,"closed_at":null},"comments":50,"created_at":"2015-12-21T20:07:54Z","updated_at":"2016-01-15T10:58:27Z","closed_at":null,"body":"A large part of the build system is dedicated to dancing around `package-data.mk` files containing package-related data (such as package name, version, dependencies, etc.). These files are generated by `utils/ghc-cabal` program, which also needs to be built in a non-trivial way. See `Rules/Data.hs` and `Oracles/PackageData.hs` in particular.\r\n\r\nOur long term plan is to eliminate this and get rid of `ghc-cabal` and `package-data.mk` files altogether. See `Rules/Cabal.hs` where `Distribution.Package` is used instead of `ghc-cabal` to extract package dependencies directly from `.cabal` files.\r\n\r\nA potential solution will need to be carefully thought through and discussed. This is the thread to do this.\r\n\r\nLet me formulate the rationale behind this more clearly:\r\n* _Separation of build artefacts from sources_: `ghc-cabal` creates `package-data.mk` files in a fixed location inside a package directory. This prevents us from moving build artefacts outside the source tree #113.\r\n* _Performance_: `ghc-cabal` always runs expensive configure scripts, significantly affecting performance of the whole build system. On top of that, parallel invocations of `ghc-cabal` are currently broken.\r\n* _Complexity_: Having a standalone `ghc-cabal` program built in a non-trivial way and `package-data.mk` files that need to be parsed significantly adds to the complexity of the build system and hence makes it more difficult to understand and maintain. Right now this is undoubtedly the most complicated and unreliable part of the build system."},"comment":{"url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/comments/171933229","html_url":"https://github.com/snowleopard/shaking-up-ghc/issues/18#issuecomment-171933229","issue_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/18","id":171933229,"user":{"login":"snowleopard","id":675286,"avatar_url":"https://avatars.githubusercontent.com/u/675286?v=3","gravatar_id":"","url":"https://api.github.com/users/snowleopard","html_url":"https://github.com/snowleopard","followers_url":"https://api.github.com/users/snowleopard/followers","following_url":"https://api.github.com/users/snowleopard/following{/other_user}","gists_url":"https://api.github.com/users/snowleopard/gists{/gist_id}","starred_url":"https://api.github.com/users/snowleopard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snowleopard/subscriptions","organizations_url":"https://api.github.com/users/snowleopard/orgs","repos_url":"https://api.github.com/users/snowleopard/repos","events_url":"https://api.github.com/users/snowleopard/events{/privacy}","received_events_url":"https://api.github.com/users/snowleopard/received_events","type":"User","site_admin":false},"created_at":"2016-01-15T10:58:27Z","updated_at":"2016-01-15T10:58:27Z","body":"@ndmitchell I agree. At the same time I think we can say that we already did the conversion step successfully: we copied the exact process with `ghc-cabal` and `package-data.mk` files from the old build system and it works. But now users are demanding the next step, refactoring, as several other issues are converging onto this one."}}