aivika icon indicating copy to clipboard operation
aivika copied to clipboard

Inaccurate version bounds in cabal file / compile failure

Open hvr opened this issue 9 years ago • 9 comments

I'm currently working on the next generation of http://matrix.hackage.haskell.org/ (which is not yet reachable publicly, hence the screenshot & pasted error messages) when alvika caught my eye...

The build-dependencies have inaccurate versions bounds. Please be aware that accurate version bounds are mandated by the PVP, and adherence to the PVP is expected as part of the Hackage guidelines. This has various knock off consequences, such as Hackage possibly not being able to generate Haddock documentation for your package, install-plans degrading over time, as well generally resulting in a poor experience for users since they'll run into the same compilation errors.

The cabal gen-bounds command can be used to help infer an initial set of version bounds, see Cabal User Guide | Generating dependency version bounds for more details.

If you have any questions, please let me know!

Specifically, I've noticed the following compile error

Configuring component lib from aivika-distributed-0.3
Preprocessing library aivika-distributed-0.3...
[ 1 of 25] Compiling Simulation.Aivika.Distributed.Optimistic.Internal.TimeWarp ( Simulation/Aivika/Distributed/Optimistic/Internal/TimeWarp.hs, /tmp/matrix-worker/1480228864/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-distributed-0.3/build/Simulation/Aivika/Distributed/Optimistic/Internal/TimeWarp.o )
[ 2 of 25] Compiling Simulation.Aivika.Distributed.Optimistic.Internal.Channel ( Simulation/Aivika/Distributed/Optimistic/Internal/Channel.hs, /tmp/matrix-worker/1480228864/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-distributed-0.3/build/Simulation/Aivika/Distributed/Optimistic/Internal/Channel.o )
[ 3 of 25] Compiling Simulation.Aivika.Distributed.Optimistic.Internal.Priority ( Simulation/Aivika/Distributed/Optimistic/Internal/Priority.hs, /tmp/matrix-worker/1480228864/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-distributed-0.3/build/Simulation/Aivika/Distributed/Optimistic/Internal/Priority.o )

Simulation/Aivika/Distributed/Optimistic/Internal/Priority.hs:34:46:
    Can't make a derived instance of ‘Typeable Priority’:
      You need DeriveDataTypeable to derive an instance for this class
    In the data declaration for ‘Priority’

alvika

There's similiar problems in the other alvika-* packages; e.g. in aivika-transformers:

Configuring component lib from aivika-transformers-4.6
Preprocessing library aivika-transformers-4.6...
[ 1 of 90] Compiling Simulation.Aivika.Trans.Table ( Simulation/Aivika/Trans/Table.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Table.o )
[ 2 of 90] Compiling Simulation.Aivika.Trans.Generator.Primitive ( Simulation/Aivika/Trans/Generator/Primitive.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Generator/Primitive.o )
[ 3 of 90] Compiling Simulation.Aivika.Trans.Array ( Simulation/Aivika/Trans/Array.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Array.o )
[ 4 of 90] Compiling Simulation.Aivika.Trans.Statistics ( Simulation/Aivika/Trans/Statistics.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Statistics.o )
[ 5 of 90] Compiling Simulation.Aivika.Trans.Observable ( Simulation/Aivika/Trans/Observable.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Observable.o )
[ 6 of 90] Compiling Simulation.Aivika.Trans.Generator ( Simulation/Aivika/Trans/Generator.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Generator.o )
[ 7 of 90] Compiling Simulation.Aivika.Trans.Internal.Types ( Simulation/Aivika/Trans/Internal/Types.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Internal/Types.o )
[ 8 of 90] Compiling Simulation.Aivika.Trans.QueueStrategy ( Simulation/Aivika/Trans/QueueStrategy.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/QueueStrategy.o )
[ 9 of 90] Compiling Simulation.Aivika.Trans.Ref.Base ( Simulation/Aivika/Trans/Ref/Base.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Ref/Base.o )
[10 of 90] Compiling Simulation.Aivika.Trans.Internal.Specs ( Simulation/Aivika/Trans/Internal/Specs.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Internal/Specs.o )
[11 of 90] Compiling Simulation.Aivika.Trans.Specs ( Simulation/Aivika/Trans/Specs.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Specs.o )
[12 of 90] Compiling Simulation.Aivika.IO.Ref.Base ( Simulation/Aivika/IO/Ref/Base.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/IO/Ref/Base.o )
[13 of 90] Compiling Simulation.Aivika.IO.Generator ( Simulation/Aivika/IO/Generator.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/IO/Generator.o )
[14 of 90] Compiling Simulation.Aivika.Trans.Exception ( Simulation/Aivika/Trans/Exception.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Exception.o )
[15 of 90] Compiling Simulation.Aivika.IO.Exception ( Simulation/Aivika/IO/Exception.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/IO/Exception.o )
[16 of 90] Compiling Simulation.Aivika.Trans.Comp ( Simulation/Aivika/Trans/Comp.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Comp.o )
[17 of 90] Compiling Simulation.Aivika.Trans.DES ( Simulation/Aivika/Trans/DES.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/DES.o )
[18 of 90] Compiling Simulation.Aivika.Trans.Internal.Parameter ( Simulation/Aivika/Trans/Internal/Parameter.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Internal/Parameter.o )
[19 of 90] Compiling Simulation.Aivika.Trans.Parameter ( Simulation/Aivika/Trans/Parameter.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Parameter.o )
[20 of 90] Compiling Simulation.Aivika.Trans.Internal.Simulation ( Simulation/Aivika/Trans/Internal/Simulation.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Internal/Simulation.o )
[21 of 90] Compiling Simulation.Aivika.Trans.Simulation ( Simulation/Aivika/Trans/Simulation.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Simulation.o )
[22 of 90] Compiling Simulation.Aivika.Trans.Internal.Dynamics ( Simulation/Aivika/Trans/Internal/Dynamics.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Internal/Dynamics.o )
[23 of 90] Compiling Simulation.Aivika.Trans.Dynamics ( Simulation/Aivika/Trans/Dynamics.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Dynamics.o )
[24 of 90] Compiling Simulation.Aivika.Trans.Dynamics.Extra ( Simulation/Aivika/Trans/Dynamics/Extra.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Dynamics/Extra.o )
[25 of 90] Compiling Simulation.Aivika.Trans.Dynamics.Memo ( Simulation/Aivika/Trans/Dynamics/Memo.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Dynamics/Memo.o )
[26 of 90] Compiling Simulation.Aivika.Trans.Dynamics.Memo.Unboxed ( Simulation/Aivika/Trans/Dynamics/Memo/Unboxed.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Dynamics/Memo/Unboxed.o )
[27 of 90] Compiling Simulation.Aivika.Trans.Parameter.Random ( Simulation/Aivika/Trans/Parameter/Random.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Parameter/Random.o )
[28 of 90] Compiling Simulation.Aivika.Trans.SD ( Simulation/Aivika/Trans/SD.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/SD.o )
[29 of 90] Compiling Simulation.Aivika.Trans.Dynamics.Random ( Simulation/Aivika/Trans/Dynamics/Random.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Dynamics/Random.o )
[30 of 90] Compiling Simulation.Aivika.Trans.Internal.Event ( Simulation/Aivika/Trans/Internal/Event.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Internal/Event.o )
[31 of 90] Compiling Simulation.Aivika.Trans.Event ( Simulation/Aivika/Trans/Event.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/Event.o )
[32 of 90] Compiling Simulation.Aivika.Trans.DoubleLinkedList ( Simulation/Aivika/Trans/DoubleLinkedList.hs, /tmp/matrix-worker/1480240675/dist-newstyle/build/x86_64-linux/ghc-7.8.4/aivika-transformers-4.6/build/Simulation/Aivika/Trans/DoubleLinkedList.o )

Simulation/Aivika/Trans/DoubleLinkedList.hs:191:18:
    Could not deduce (Functor m) arising from a use of ‘fmap’
    from the context (Eq a, MonadRef m)
      bound by the type signature for
                 listRemove :: (Eq a, MonadRef m) =>
                               DoubleLinkedList m a -> a -> Event m Bool
      at Simulation/Aivika/Trans/DoubleLinkedList.hs:189:15-77
    Possible fix:
      add (Functor m) to the context of
        the type signature for
          listRemove :: (Eq a, MonadRef m) =>
                        DoubleLinkedList m a -> a -> Event m Bool
    In the expression: fmap isJust
    In the expression: fmap isJust $ listRemoveBy x (== v)
    In an equation for ‘listRemove’:
        listRemove x v = fmap isJust $ listRemoveBy x (== v)

Simulation/Aivika/Trans/DoubleLinkedList.hs:227:20:
    Could not deduce (Functor m) arising from a use of ‘fmap’
    from the context (Eq a, MonadRef m)
      bound by the type signature for
                 listContains :: (Eq a, MonadRef m) =>
                                 DoubleLinkedList m a -> a -> Event m Bool
      at Simulation/Aivika/Trans/DoubleLinkedList.hs:225:17-79
    Possible fix:
      add (Functor m) to the context of
        the type signature for
          listContains :: (Eq a, MonadRef m) =>
                          DoubleLinkedList m a -> a -> Event m Bool
    In the expression: fmap isJust
    In the expression: fmap isJust $ listContainsBy x (== v)
    In an equation for ‘listContains’:
        listContains x v = fmap isJust $ listContainsBy x (== v)

or in aivika-4.6 with GHC 7.4.2:

Configuring component lib from aivika-4.6
Preprocessing library aivika-4.6...

[ 1 of 73] Compiling Simulation.Aivika.Table ( Simulation/Aivika/Table.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Table.o )
[ 2 of 73] Compiling Simulation.Aivika.Vector ( Simulation/Aivika/Vector.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Vector.o )
[ 3 of 73] Compiling Simulation.Aivika.PriorityQueue.Pure ( Simulation/Aivika/PriorityQueue/Pure.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/PriorityQueue/Pure.o )
[ 4 of 73] Compiling Simulation.Aivika.PriorityQueue ( Simulation/Aivika/PriorityQueue.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/PriorityQueue.o )
[ 5 of 73] Compiling Simulation.Aivika.Unboxed ( Simulation/Aivika/Unboxed.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Unboxed.o )
[ 6 of 73] Compiling Simulation.Aivika.Vector.Unboxed ( Simulation/Aivika/Vector/Unboxed.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Vector/Unboxed.o )
[ 7 of 73] Compiling Simulation.Aivika.DoubleLinkedList ( Simulation/Aivika/DoubleLinkedList.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/DoubleLinkedList.o )
[ 8 of 73] Compiling Simulation.Aivika.Statistics ( Simulation/Aivika/Statistics.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Statistics.o )
[ 9 of 73] Compiling Simulation.Aivika.Generator ( Simulation/Aivika/Generator.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Generator.o )
[10 of 73] Compiling Simulation.Aivika.Internal.Specs ( Simulation/Aivika/Internal/Specs.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Internal/Specs.o )
[11 of 73] Compiling Simulation.Aivika.Specs ( Simulation/Aivika/Specs.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Specs.o )
[12 of 73] Compiling Simulation.Aivika.Internal.Parameter ( Simulation/Aivika/Internal/Parameter.hs, /tmp/matrix-worker/1480240550/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-4.6/build/Simulation/Aivika/Internal/Parameter.o )

Simulation/Aivika/Internal/Parameter.hs:214:18:
    parse error on input `<-'

hvr avatar Nov 27 '16 10:11 hvr

Thanks Herbert for pointing me to the compilation and versioning issues! While the PVP agreement seems to be questionable some for me to follow it precisely (I'm trying to use quite stable functions from a small set and the most of these functions are very old, but PVP has its pros and cons), I'll try to improve the support of the old GHC compilers, although I'm not quite sure whether, for example, GHC 7.4 supports the RecursiveDo extension (it probably had another name if I remember).

Best regards, David Sorokin

dsorokin avatar Nov 27 '16 11:11 dsorokin

@dsorokin Sure, semantic versioning has its pros and cons, but the fact is that Hackage has this guideline (it's written right on the frontpage of http://hackage.haskell.org/, maybe we should make it more prominent?); That being said, if you're really confident (or maybe because you have access to information beyond what the PVP contract provides) that you're using a small set of stable entry points which won't change when major version increments are signalled, it may be tolerable to deviate from the Hackage guidelines. But it's a gamble: if the assumption turns out to be wrong, it will result in Hackage temporarily suffering a regression for all consumers of that package, and it causes me as Hackage Trustee more work, as I'll have to investigate asap to figure out which meta-data is at fault (unfortunately, this can't be fully automated as it's not always easy to figure out which package is to blame and/or avoid false positives, and we don't have unlimited computing resources, so it won't scale the bigger Hackage grows), perform emergency meta-data edits on Hackage (the more popular the package is, the more urgency there is to step in) which causes avoidable meta-data updates (grows the package index everybody has to download), and finally contact the author. Point in case: all 37 released versions of aivika on Hackage will require a meta-data fixup.

So, from a risk assessment POV, that's what's at stake if you don't play it safe. :-)

As for extensions, if you declare them via other-extensions in the .cabal file, you don't have to remember which GHC compiler supports them. The cabal solver will take care of it (and all the infrastructure that relies on it, such as the matrix builder), and it's more principled than encoding compiler properties via a base version bound (follows the mantra to "test for features, not for versions"). NB: you don't have to support GHC 7.4 if you don't want to; I'm merely interested in the Meta-data to reasonably/accurately reflect the areas of the configuration-space that are (not) supported.

EDIT: typos and reworded

hvr avatar Nov 27 '16 12:11 hvr

I uploaded modified packages aivika-transformers and aivika-distributed, where added, at least, the support of the old GHC 7.8 compiler. Thanks again.

dsorokin avatar Nov 27 '16 16:11 dsorokin

@dsorokin thanks; I'll watch the buildbot, and do a batch of meta-data fixups on Hackage; I'll let you know if I notice something else

hvr avatar Nov 27 '16 17:11 hvr

@dsorokin the most recent upload is still broken on GHC 7.4 even though it declares compatibility with base-4.5:

Configuring component lib from aivika-5.0.1
Preprocessing library aivika-5.0.1...

Simulation/Aivika/Circuit.hs:2:14:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/Composite.hs:2:37:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/Dynamics/Extra.hs:2:14:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/SystemDynamics.hs:2:28:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/Transform.hs:2:14:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/Internal/Dynamics.hs:2:14:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/Internal/Event.hs:2:14:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/Internal/Parameter.hs:2:14:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead

Simulation/Aivika/Internal/Simulation.hs:2:14:
    Warning: -XRecursiveDo is deprecated: use -XDoRec or pragma {-# LANGUAGE DoRec #-} instead
[ 1 of 76] Compiling Simulation.Aivika.Table ( Simulation/Aivika/Table.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Table.o )
[ 2 of 76] Compiling Simulation.Aivika.Vector ( Simulation/Aivika/Vector.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Vector.o )
[ 3 of 76] Compiling Simulation.Aivika.PriorityQueue.Pure ( Simulation/Aivika/PriorityQueue/Pure.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/PriorityQueue/Pure.o )
[ 4 of 76] Compiling Simulation.Aivika.PriorityQueue ( Simulation/Aivika/PriorityQueue.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/PriorityQueue.o )
[ 5 of 76] Compiling Simulation.Aivika.Unboxed ( Simulation/Aivika/Unboxed.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Unboxed.o )
[ 6 of 76] Compiling Simulation.Aivika.Vector.Unboxed ( Simulation/Aivika/Vector/Unboxed.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Vector/Unboxed.o )
[ 7 of 76] Compiling Simulation.Aivika.DoubleLinkedList ( Simulation/Aivika/DoubleLinkedList.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/DoubleLinkedList.o )
[ 8 of 76] Compiling Simulation.Aivika.Statistics ( Simulation/Aivika/Statistics.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Statistics.o )
[ 9 of 76] Compiling Simulation.Aivika.Generator ( Simulation/Aivika/Generator.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Generator.o )
[10 of 76] Compiling Simulation.Aivika.Internal.Specs ( Simulation/Aivika/Internal/Specs.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Internal/Specs.o )
[11 of 76] Compiling Simulation.Aivika.Specs ( Simulation/Aivika/Specs.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Specs.o )
[12 of 76] Compiling Simulation.Aivika.Internal.Parameter ( Simulation/Aivika/Internal/Parameter.hs, /tmp/matrix-worker/1480762658/dist-newstyle/build/x86_64-linux/ghc-7.4.2/aivika-5.0.1/build/Simulation/Aivika/Internal/Parameter.o )

Simulation/Aivika/Internal/Parameter.hs:214:18:
    parse error on input `<-'

hvr avatar Dec 03 '16 13:12 hvr

Thanks Herbert again! It seems that now I have to update the version number of package base, or rewrite those parts directly with help of mfix.

By the way, today I fortunately decided to test with the old GHC 7.8 before uploading and caught a missed import error of Data.Monoid in the aivika-transformers package. I fixed it in time)

dsorokin avatar Dec 03 '16 13:12 dsorokin

What version of the base package should I use to compile the code with GHC 7.6 and higher?

dsorokin avatar Dec 03 '16 13:12 dsorokin

@dsorokin this here gives you a good overview:

https://ghc.haskell.org/trac/ghc/wiki/Commentary/Libraries/VersionHistory

IOW, use e.g. >= 4.6 as the lower bound if you want to support only GHC 7.6 and later (which is totally fine btw).

Also, are you aware of https://github.com/hvr/multi-ghc-travis/blob/master/make_travis_yml_2.hs ? That way you can have Travis test continously against all the GHC versions you want to support during development...

hvr avatar Dec 03 '16 13:12 hvr

Thank you for the links!

dsorokin avatar Dec 03 '16 13:12 dsorokin