Implement better defaulting for `build-type`
commit9fb03d739577c9cca17b1670086c2277308c6d03
authorHerbert Valerio Riedel <hvr@gnu.org>
Sat, 16 Dec 2017 23:52:58 +0000 (17 00:52 +0100)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sun, 17 Dec 2017 08:04:51 +0000 (17 09:04 +0100)
tree95d8c663ae0d564a8e99d7fd59342fd1871754df
parent895f863b9c38309b08a93e6fa5760400a81c3d61
Implement better defaulting for `build-type`

This implements the following defaulting rules:

 * For `cabal-version:2.0` and below, default to the `Custom`
   build-type unconditionally (legacy defaulting)

 * Otherwise, if a `custom-setup` stanza is defined, default to
   the `Custom` build-type; else default to `Simple` build-type.

This gets us better defaults for the two most popular use-cases, and
which can be statically inferred by only looking at the `.cabal` file.

This allows us to bring down the minimal (modern) trivial cabal
package definition down to a single file with 4 lines:

    cabal-version: 2.1
    name: mu
    version: 0
    library

NB: We don't need any `Setup.hs` file, as `cabal sdist` will magically
generate one on the fly.
Cabal/Distribution/PackageDescription/Check.hs
Cabal/Distribution/Types/PackageDescription.hs
Cabal/doc/developing-packages.rst