On Thu, May 30, 2019 at 06:37:50PM -0400, Daniel Moerner wrote: > Thanks a lot for your work on this. I just built some of ghc 8.6.4 on > a machine running -current using your patches. > > Unfortunately, devel/hs-async doesn't build with this version of ghc > and base (4.12): > > Configuring async-2.2.1... > [...] > Setup: Encountered missing dependencies: > base >=4.3 && <4.12, hashable >=1.1.1.0 && <1.3, stm >=2.2 && <2.5 > > Looking into this a bit, hackage says that async 2.2.1 supports base > (>=4.3 && <4.13) (https://hackage.haskell.org/package/async), but this > just seems to be a mistake in hackage. At present async supports base > 4.12 only in git (and there's a fairly old issue request for a new > release https://github.com/simonmar/async/issues/89).
The cabal / hackage / library people are clueless if it comes to version limits in dependencies and when which part of a library should be bumped. Instead of correcting this, they invented a mechanism to publish "revised" meta data for a package via hackage. For async-2.2.1, the "revised" package description can be found at http://hackage.haskell.org/package/async-2.2.1/async.cabal If you compare this against the package description contained in the distfile (or at http://hackage.haskell.org/package/async-2.2.1/src/async.cabal), you'll see that the revised onealready as less strict dependencies (but of course, this will fail again with the next update of ghc): --- async.cabal-dist Fri May 31 11:09:12 2019 +++ async.cabal-hackage Fri May 31 11:10:12 2019 @@ -1,5 +1,6 @@ name: async version: 2.2.1 +x-revision: 2 -- don't forget to update ./changelog.md! synopsis: Run IO operations asynchronously and wait for their results @@ -50,14 +51,14 @@ if impl(ghc>=7.1) other-extensions: Trustworthy exposed-modules: Control.Concurrent.Async - build-depends: base >= 4.3 && < 4.12, hashable >= 1.1.1.0 && < 1.3, stm >= 2.2 && < 2.5 + build-depends: base >= 4.3 && < 4.13, hashable >= 1.1.1.0 && < 1.4, stm >= 2.2 && < 2.6 test-suite test-async default-language: Haskell2010 type: exitcode-stdio-1.0 hs-source-dirs: test main-is: test-async.hs - build-depends: base >= 4.3 && < 4.12, + build-depends: base >= 4.3 && < 4.13, async, stm, test-framework, See http://hackage.haskell.org/package/async-2.2.1/revisions/ for that concept of 'revised' package descriptions. In other words: when doing operating system distribution packages (like our ports), you have to fetch the distfile *and* also watch for revised package descriptions, and if there are differences, patch the package description contained in the distfile. An example of this ist devel/hs-echo/patches/patch-echo_cabal in our ports tree. The haskell eco system is extremely hostile to people who try to provide operating system distribution packages -- they think everyone just uses cabal-install. That's the reason I try to keep the number of hs-ports as low as possible (but to still provide some more or less useful tools like darcs or xmonad). Ciao, Kili