{"action":"created","issue":{"url":"https://api.github.com/repos/haskell/cabal/issues/3662","repository_url":"https://api.github.com/repos/haskell/cabal","labels_url":"https://api.github.com/repos/haskell/cabal/issues/3662/labels{/name}","comments_url":"https://api.github.com/repos/haskell/cabal/issues/3662/comments","events_url":"https://api.github.com/repos/haskell/cabal/issues/3662/events","html_url":"https://github.com/haskell/cabal/pull/3662","id":168842970,"number":3662,"title":"Per-component new-build support (no Custom support yet)","user":{"login":"ezyang","id":13564,"avatar_url":"https://avatars.githubusercontent.com/u/13564?v=3","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":5,"created_at":"2016-08-02T09:47:12Z","updated_at":"2016-08-04T07:25:35Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/haskell/cabal/pulls/3662","html_url":"https://github.com/haskell/cabal/pull/3662","diff_url":"https://github.com/haskell/cabal/pull/3662.diff","patch_url":"https://github.com/haskell/cabal/pull/3662.patch"},"body":"A bit of a megapatch.  Here's what's in it:\r\n\r\n* First, a few miscellaneous utility functions and reexports\r\n  in Cabal.  I could have split these into a separate commit\r\n  but I was too lazy to.\r\n\r\n* Distribution.Client.Install got refactored:\r\n  instead of using PackageFixedDeps, it uses PackageInstalled\r\n  instead.  That's because the install plan was NOT using\r\n  ComponentDeps in any nontrivial way. And it shouldn't.\r\n  So use a more specific type-class.  I also removed the\r\n  invariant checking and error reporting because it was\r\n  being annoying (we check the invariants already in\r\n  SolverInstallPlan).\r\n\r\n* Look at Distribution.Client.ProjectPlanning.Types.\r\n  This contains the primary type change: ElaboratedConfiguredPackage\r\n  is now EITHER a monolithic ElaboratedPackage, or a per-component\r\n  ElaboratedComponent (it should get renamed but I didn't do that\r\n  in this patch.)  These are what we're going to store in our\r\n  plans: if a package we're building has a Setup script which supports\r\n  per-component builds, we'll explode it into a component.  Otherwise\r\n  we'll keep it as a package.  We'll see codepaths for both\r\n  throughout.\r\n\r\n* OK, so the expansion happens in ProjectPlanning, mostly in\r\n  'elaborateAndExpandSolverPackage'.  You should review the\r\n  package hash computation code closely.  When we can separate\r\n  components, we compute a hash for each INDEPENDENTLY.  This\r\n  is good: we get more sharing.\r\n\r\n* We need to adjust the target resolution and pruning code\r\n  in ProjectOrchestration and ProjectPlanning.  I did a dumb\r\n  but easy idea: if a user mentions 'packagename' in a\r\n  target name, I spray the PackageTarget on every\r\n  possibly relevant IPID in buildTargets', and then pare\r\n  it down later.\r\n\r\n* And of course there's code in ProjectBuilding to actual\r\n  do a configure and then build.\r\n\r\nCustom doesn't work yet because I need to give them their own\r\nseparate component, and teach Cabal how to build them specially."},"comment":{"url":"https://api.github.com/repos/haskell/cabal/issues/comments/237474147","html_url":"https://github.com/haskell/cabal/pull/3662#issuecomment-237474147","issue_url":"https://api.github.com/repos/haskell/cabal/issues/3662","id":237474147,"user":{"login":"ezyang","id":13564,"avatar_url":"https://avatars.githubusercontent.com/u/13564?v=3","gravatar_id":"","url":"https://api.github.com/users/ezyang","html_url":"https://github.com/ezyang","followers_url":"https://api.github.com/users/ezyang/followers","following_url":"https://api.github.com/users/ezyang/following{/other_user}","gists_url":"https://api.github.com/users/ezyang/gists{/gist_id}","starred_url":"https://api.github.com/users/ezyang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ezyang/subscriptions","organizations_url":"https://api.github.com/users/ezyang/orgs","repos_url":"https://api.github.com/users/ezyang/repos","events_url":"https://api.github.com/users/ezyang/events{/privacy}","received_events_url":"https://api.github.com/users/ezyang/received_events","type":"User","site_admin":false},"created_at":"2016-08-04T07:25:35Z","updated_at":"2016-08-04T07:25:35Z","body":"Although, it's hard to trigger, because most uses of `build-tools` induced ordering also require a Custom setup, at which point we turn off the feature."}}
{"actor":{"display_login":"ezyang"}}