{"action":"created","issue":{"url":"https://api.github.com/repos/mietek/halcyon/issues/40","labels_url":"https://api.github.com/repos/mietek/halcyon/issues/40/labels{/name}","comments_url":"https://api.github.com/repos/mietek/halcyon/issues/40/comments","events_url":"https://api.github.com/repos/mietek/halcyon/issues/40/events","html_url":"https://github.com/mietek/halcyon/issues/40","id":57685727,"number":40,"title":"Improve Cabal version and remote-repo handling","user":{"login":"mietek","id":166207,"avatar_url":"https://avatars.githubusercontent.com/u/166207?v=3","gravatar_id":"","url":"https://api.github.com/users/mietek","html_url":"https://github.com/mietek","followers_url":"https://api.github.com/users/mietek/followers","following_url":"https://api.github.com/users/mietek/following{/other_user}","gists_url":"https://api.github.com/users/mietek/gists{/gist_id}","starred_url":"https://api.github.com/users/mietek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mietek/subscriptions","organizations_url":"https://api.github.com/users/mietek/orgs","repos_url":"https://api.github.com/users/mietek/repos","events_url":"https://api.github.com/users/mietek/events{/privacy}","received_events_url":"https://api.github.com/users/mietek/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mietek/halcyon/labels/major%20enhancement","name":"major enhancement","color":"0052cc"}],"state":"open","locked":false,"assignee":{"login":"mietek","id":166207,"avatar_url":"https://avatars.githubusercontent.com/u/166207?v=3","gravatar_id":"","url":"https://api.github.com/users/mietek","html_url":"https://github.com/mietek","followers_url":"https://api.github.com/users/mietek/followers","following_url":"https://api.github.com/users/mietek/following{/other_user}","gists_url":"https://api.github.com/users/mietek/gists{/gist_id}","starred_url":"https://api.github.com/users/mietek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mietek/subscriptions","organizations_url":"https://api.github.com/users/mietek/orgs","repos_url":"https://api.github.com/users/mietek/repos","events_url":"https://api.github.com/users/mietek/events{/privacy}","received_events_url":"https://api.github.com/users/mietek/received_events","type":"User","site_admin":false},"milestone":null,"comments":5,"created_at":"2015-02-14T08:00:48Z","updated_at":"2015-02-19T14:42:25Z","closed_at":null,"body":"Halcyon was originally built with the assumption that the version number of _cabal-install_ and the contents of its package database don’t need to be treated as app dependencies.\r\n\r\nUnfortunately, build directories created with _cabal-install_ 1.20.0.3 are not usable with _cabal-install_ 1.22.0.0 (https://github.com/haskell/cabal/issues/2320).  Additionally, recent Hackage issues (https://github.com/haskell/hackage-server/issues/305) and the slow adoption of constraints files put the original assumption further into question.  Therefore, I propose to:\r\n\r\n- [x] Ensure that sandbox directories, build directories, and install directories are built with the right version of _cabal-install_, and that changes to Cabal magic files are reflected in the magic hash.\r\n\r\n- [x] Allow setting [`HALCYON_CABAL_REMOTE_REPO`](https://halcyon.sh/reference/#halcyon_cabal_remote_repo) with a `.halcyon/cabal-remote-repo` magic file.\r\n\r\n- [x] Avoid needless warnings and `cabal update` runs when using Stackage as the Cabal `remote-repo`.\r\n\r\nThis will have the interesting benefit of making it practical for install archives of popular Haskell apps to be included in Halcyon public storage, built using Stackage and not explicit version constraints, and for Halcyon to be suggested as a simple installation method for these apps.\r\n\r\nThe work is [already done](https://github.com/mietek/halcyon/compare/dev) and awaits further testing.   The remaining questions are:\r\n\r\n- Should changing the Cabal `remote-repo` trigger a sandbox rebuild, just like changing the Cabal version?  If yes, all Halcyon public archives would have to be built using the default Halcyon Cabal `remote-repo`.\r\n\r\n- Therefore, should Stackage LTS be the default Cabal repository for Halcyon?\r\n\r\nCC @begriffs @dbp @jspahrsummers @ozataman @pbrisbin @rehno-lindeque @snoyberg"},"comment":{"url":"https://api.github.com/repos/mietek/halcyon/issues/comments/75062435","html_url":"https://github.com/mietek/halcyon/issues/40#issuecomment-75062435","issue_url":"https://api.github.com/repos/mietek/halcyon/issues/40","id":75062435,"user":{"login":"pbrisbin","id":50812,"avatar_url":"https://avatars.githubusercontent.com/u/50812?v=3","gravatar_id":"","url":"https://api.github.com/users/pbrisbin","html_url":"https://github.com/pbrisbin","followers_url":"https://api.github.com/users/pbrisbin/followers","following_url":"https://api.github.com/users/pbrisbin/following{/other_user}","gists_url":"https://api.github.com/users/pbrisbin/gists{/gist_id}","starred_url":"https://api.github.com/users/pbrisbin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pbrisbin/subscriptions","organizations_url":"https://api.github.com/users/pbrisbin/orgs","repos_url":"https://api.github.com/users/pbrisbin/repos","events_url":"https://api.github.com/users/pbrisbin/events{/privacy}","received_events_url":"https://api.github.com/users/pbrisbin/received_events","type":"User","site_admin":false},"created_at":"2015-02-19T14:42:25Z","updated_at":"2015-02-19T14:42:25Z","body":"> Halcyon expects constraints files ... which don’t include any extraneous constraints\r\n\r\nIs this something to do with cabal or is Halcyon enforcing that itself? I don't see the benefit to this extra restriction, and (as in this case) it is limiting some possible use-cases."}}