composewell / streamly

High performance, concurrent functional programming abstractions
https://streamly.composewell.com
Other
849 stars 63 forks source link

0.10.1 fails to build with transformers 0.5.6.2 #2738

Open hasufell opened 2 months ago

hasufell commented 2 months ago
  1. cabal unpack streamly-0.10.1
  2. cd streamly-0.10.1
  3. cabal build -w ghc-9.6.5 --constraint='transformers == 0.5.6.2'
[36 of 72] Compiling Streamly.Internal.Data.Stream.Serial ( src/Streamly/Internal/Data/Stream/Serial.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/streamly-0.10.1/build/Streamly/Internal/Data/Stream/Serial.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/streamly-0.10.1/build/Streamly/Internal/Data/Stream/Serial.dyn_o ) [Control.Monad.Base changed]

src/Streamly/Internal/Data/Stream/Serial.hs:56:1: error:
    Could not load module ‘Control.Monad.Base’
    It is a member of the hidden package ‘transformers-base-0.4.6’.
    Perhaps you need to add ‘transformers-base’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘transformers-base-0.4.6’.
    Perhaps you need to add ‘transformers-base’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘transformers-base-0.4.6’.
    Perhaps you need to add ‘transformers-base’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘transformers-base-0.4.6’.
    Perhaps you need to add ‘transformers-base’ to the build-depends in your .cabal file.
    It is a member of the hidden package ‘transformers-base-0.4.6’.
    Perhaps you need to add ‘transformers-base’ to the build-depends in your .cabal file.
    Use -v (or `:set -v` in ghci) to see a list of the files searched for.
   |
56 | import Control.Monad.Base (MonadBase(..), liftBaseDefault)
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
harendra-kumar commented 2 months ago

GHC 9.6 does not support transformers < 0.6 - https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history .

hasufell commented 2 months ago

GHC 9.6 does not support transformers < 0.6 - https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history .

That is incorrect.

$ cabal unpack transformers-0.5.6.2
Unpacking to transformers-0.5.6.2/
$ cd transformers-0.5.6.2/
$ cabal build -w ghc-9.6.5
Resolving dependencies...
Build profile: -w ghc-9.6.5 -O1
In order, the following will be built (use -v for more details):
 - transformers-0.5.6.2 (lib:transformers) (first run)
Warning: transformers.cabal:43:30: version operators used. To use version
operators the package needs to specify at least 'cabal-version: >= 1.8'.
Configuring transformers-0.5.6.2...
Preprocessing library for transformers-0.5.6.2...
Building library for transformers-0.5.6.2...

Control/Applicative/Backwards.hs:9:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
9 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Applicative/Lift.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Accum.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Class.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Cont.hs:9:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
9 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Except.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Error.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Identity.hs:9:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
9 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/List.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Maybe.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Reader.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/RWS/CPS.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/RWS/Lazy.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/RWS/Strict.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Select.hs:9:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
9 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/State/Lazy.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/State/Strict.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Writer/CPS.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Writer/Lazy.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Control/Monad/Trans/Writer/Strict.hs:6:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
6 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Data/Functor/Constant.hs:9:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
9 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^

Data/Functor/Reverse.hs:9:14: warning: [-Wdeprecated-flags]
    -XAutoDeriveTypeable is deprecated: Typeable instances are created automatically for all types since GHC 8.2.
  |
9 | {-# LANGUAGE AutoDeriveTypeable #-}
  |              ^^^^^^^^^^^^^^^^^^
[ 1 of 26] Compiling Control.Applicative.Backwards ( Control/Applicative/Backwards.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Applicative/Backwards.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Applicative/Backwards.dyn_o )
[ 2 of 26] Compiling Control.Monad.Signatures ( Control/Monad/Signatures.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Signatures.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Signatures.dyn_o )
[ 3 of 26] Compiling Control.Monad.Trans.Class ( Control/Monad/Trans/Class.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Class.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Class.dyn_o )
[ 4 of 26] Compiling Control.Monad.Trans.Cont ( Control/Monad/Trans/Cont.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Cont.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Cont.dyn_o )
[ 5 of 26] Compiling Control.Monad.Trans.Error ( Control/Monad/Trans/Error.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Error.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Error.dyn_o )
[ 6 of 26] Compiling Control.Monad.Trans.Except ( Control/Monad/Trans/Except.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Except.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Except.dyn_o )
[ 7 of 26] Compiling Control.Monad.Trans.Identity ( Control/Monad/Trans/Identity.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Identity.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Identity.dyn_o )
[ 8 of 26] Compiling Control.Monad.Trans.List ( Control/Monad/Trans/List.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/List.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/List.dyn_o )
[ 9 of 26] Compiling Control.Monad.Trans.Maybe ( Control/Monad/Trans/Maybe.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Maybe.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Maybe.dyn_o )
[10 of 26] Compiling Control.Monad.Trans.RWS.CPS ( Control/Monad/Trans/RWS/CPS.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS/CPS.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS/CPS.dyn_o )
[11 of 26] Compiling Control.Monad.Trans.RWS.Lazy ( Control/Monad/Trans/RWS/Lazy.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS/Lazy.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS/Lazy.dyn_o )
[12 of 26] Compiling Control.Monad.Trans.RWS ( Control/Monad/Trans/RWS.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS.dyn_o )
[13 of 26] Compiling Control.Monad.Trans.RWS.Strict ( Control/Monad/Trans/RWS/Strict.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS/Strict.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/RWS/Strict.dyn_o )
[14 of 26] Compiling Control.Monad.Trans.Reader ( Control/Monad/Trans/Reader.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Reader.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Reader.dyn_o )
[15 of 26] Compiling Control.Monad.Trans.Select ( Control/Monad/Trans/Select.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Select.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Select.dyn_o )
[16 of 26] Compiling Control.Monad.Trans.State.Lazy ( Control/Monad/Trans/State/Lazy.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/State/Lazy.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/State/Lazy.dyn_o )
[17 of 26] Compiling Control.Monad.Trans.State ( Control/Monad/Trans/State.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/State.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/State.dyn_o )
[18 of 26] Compiling Control.Monad.Trans.State.Strict ( Control/Monad/Trans/State/Strict.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/State/Strict.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/State/Strict.dyn_o )
[19 of 26] Compiling Control.Monad.Trans.Writer.CPS ( Control/Monad/Trans/Writer/CPS.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer/CPS.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer/CPS.dyn_o )
[20 of 26] Compiling Control.Monad.Trans.Writer.Lazy ( Control/Monad/Trans/Writer/Lazy.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer/Lazy.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer/Lazy.dyn_o )
[21 of 26] Compiling Control.Monad.Trans.Writer ( Control/Monad/Trans/Writer.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer.dyn_o )
[22 of 26] Compiling Control.Monad.Trans.Accum ( Control/Monad/Trans/Accum.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Accum.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Accum.dyn_o )
[23 of 26] Compiling Control.Monad.Trans.Writer.Strict ( Control/Monad/Trans/Writer/Strict.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer/Strict.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Monad/Trans/Writer/Strict.dyn_o )
[24 of 26] Compiling Data.Functor.Constant ( Data/Functor/Constant.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Data/Functor/Constant.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Data/Functor/Constant.dyn_o )
[25 of 26] Compiling Control.Applicative.Lift ( Control/Applicative/Lift.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Applicative/Lift.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Control/Applicative/Lift.dyn_o )
[26 of 26] Compiling Data.Functor.Reverse ( Data/Functor/Reverse.hs, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Data/Functor/Reverse.o, dist-newstyle/build/x86_64-linux/ghc-9.6.5/transformers-0.5.6.2/build/Data/Functor/Reverse.dyn_o )
hasufell commented 2 months ago

Also see: https://github.com/haskell/cabal/issues/9669

It is mostly irrelevant with what boot packages GHC ships.

harendra-kumar commented 2 months ago

We have had trouble in the past because of multiple boot library versions and for that reason we made a convention to use lower bound of boot libraries match with GHC. If it helps your use case we can try to make it work with the older version of transformers and release a 0.10.2 with that. Though, I am not sure if that might create some other problem.

harendra-kumar commented 2 months ago

The constraints are up to transformers-0.5.5:

                     , transformers      >= 0.5.5 && < 0.7

Let's see if a small fix can make it work.

harendra-kumar commented 2 months ago

I fixed the issue (https://github.com/composewell/streamly/pull/2741) we can make a revision on hackage.

Is there a way to have a dependency in cabal file conditional on the version on another package? In this case we need to depend on transformers-base only if transformers version is less than 0.6 .

hasufell commented 2 months ago

Is there a way to have a dependency in cabal file conditional on the version on another package?

No. That is what automatic cabal flags are for.

But these don't mix well with --allow-newer.