Support new Cabal library in Setup.hs (3.12, 3.14, 3.16)#82
Support new Cabal library in Setup.hs (3.12, 3.14, 3.16)#82tomsmeding merged 3 commits intotmcdonell:masterfrom
Conversation
tmcdonell
left a comment
There was a problem hiding this comment.
LGTM. I agree the shim approach is the way to go.
Supporting old Cabal == supporting old ghc => old OS => existing GPU cluster, which is the thing we would ideally retain access to. That also implies keeping support for old CUDA versions as well. Maybe good context to add to the “if you want to remove support for old Cabal” section.
|
Yep, good point, added. Worth noting is that getting Accelerate to run on very old GPU clusters may be some work in any case; we require clang > 15 for the gpu backend (because clang 15 tries to send PTX assembly to the system assembler for some reason, resulting in hilarity) and we're not testing old cuda versions, so we wouldn't notice if things break there. (We did drop support for compute capability < 3.0, but that seems reasonable.) |
Cabalis a dependency of Setup.hs.No work was needed for 3.12 and 3.16 (just up the version bound). The interesting part is Cabal 3.14, which re-did the typing for paths in Cabal (haskell/cabal#9718) and as a result, since our Setup.hs does a bunch of stuff with paths, required quite a few changes.
I tried to localise the version differences in an API shim at the bottom of Setup.hs, to avoid introducing a very large number of CPP conditionals throughout the file. I'm open to other approaches.
Tested with Cabal 3.10, 3.12, 3.14, 3.16. @tmcdonell If you don't have time to review I'm also happy to merge as-is, but I wanted to give you the opportunity to have a look.