dsorokin / aivika

A multi-method simulation library
Other
79 stars 4 forks source link

Inaccurate version bounds in cabal file / compile failure #2

Open hvr opened 7 years ago

hvr commented 7 years ago

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 `<-'
dsorokin commented 7 years ago

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

hvr commented 7 years ago

@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

dsorokin commented 7 years ago

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

hvr commented 7 years ago

@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 commented 7 years ago

@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 `<-'
dsorokin commented 7 years ago

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 commented 7 years ago

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

hvr commented 7 years ago

@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...

dsorokin commented 7 years ago

Thank you for the links!