On Sat, Feb 18, 2017 at 6:40 PM, Troy Sankey <sankey...@gmail.com> wrote: > Quoting Federico Beffa (2017-02-18 04:43:51) >> On Fri, Feb 17, 2017 at 6:47 PM, Troy Sankey <sankey...@gmail.com> wrote: >> > Forgive me if my understanding of build systems in Guix is flawed, but >> > let me explain my idea with more detail: >> > >> > First, make a data-only package called "ghc-all-cabal-files" containing >> > the checkout of a specific commit of the all-cabal-files repository from >> > github. We can periodically update this package, but there is no >> > traditional "release"---we just keep pulling the HEAD of the hackage >> > branch. This package would then act as a helper package for the haskell >> > build system---every haskell package should implicitly use this package >> > as input. Then we can write a post-unpack phase for the >> > haskell-build-system which updates the unpacked .cabal file iff it finds >> > a newer .cabal file in ghc-all-cabal-files (we know how to determine if >> > the cabal file is newer: it will have a higher "x-revision" value, or >> > that key will merely exist). >> > >> > One problem I have not fully solved is the technical debt associated >> > with keeping the proposed ghc-all-cabal-files package up-to-date. I >> > believe updating it would require all haskell packages to be rebuilt. >> > We could create a build system argument called use-newest-cabal-file to >> > toggle the feature, in which case we would only switch it to #t if we >> > already know the .cabal file to be stale. Then only a small subset of >> > packages would need to be rebuilt, and there is less technical debt than >> > the current solution which involves monkey-patching every cabal file >> > that needs it. >> >> My worry with this approach is that every time that a single cabal >> file in 'ghc-all-cabal-files' is updated all packages will fail to >> build (the implicit input will fail). Given that there are several >> thousands of cabal files, I suspect that this could occur quite often. > > Can you elaborate on how all packages will fail to build?
I was thinking that the 'ghc-all-cabal-files' would come from a released tar file that would change and therefore the hash would not match. However, as you mentioned, the package would really come from a git checkout and would therefore not become unavailable. My bad, sorry. Fede