Planning for the 7.12 release

Ben Gamari ben at
Fri Aug 28 11:46:44 UTC 2015

Kosyrev Serge <_deepfire at> writes:

> Ben Gamari <ben at> writes:
>> These items are a bit less certain but may make it in if the authors
>> push forward quickly enough,
> [..]
>>     * A (possible) overhaul of GHC's build system to use Shake instead
>>       of Make.
> Is there a breakdown of what remains to be done on this front?
I'm actually not entirely clear on the general plan regarding the
Shake-up and perhaps this is a good time to discuss it.

How gradual of a transition do we envision this will be? Specifically,
for how long do we want the two build systems to coexist (if at all)?

If this is intended to be an immediate wholesale switch to Shake I would
be very skeptical of merging for 7.12 as three months is, in my
opinion, very little time to test such a sweeping change.

However, a long transition time is also not terribly desirable as
maintaining two largely independent build systems potentially carries
significant cost.

Can we in principle expect the Shake build system to build all of
the configurations GHC currently supports from day-one (including, for
instance, cross compilation)? The batch files in the repository suggest
that it has been used on Windows but has it been tested on our other
Tier 1 platforms?

I just attempted to use the current state of the repository and sadly
found that things fell apart pretty quickly [1].

I would love to see this happen, but obviously we need to tread
carefully when performing such a major overhaul to code so central to
the project. Moreover, I would really like to minimize the probability
that we increase the maintenance burden of our build infrastructure.

I think if there is clear communication regarding what remains to be
done and motivation to quickly finish these items then Shakification is
still an possibility for 7.12.

Otherwise I personally think we may want to be a bit conservative. End
users can always check out the shaking-up-ghc repository into their GHC
trees themselves if they want to try using it. I'm certainly willing to
consider other opinions, however.


- Ben

[1] After I manually ran ./boot,

    $ _shake/build --lint --directory ".." $@
    ...  # various output from ./configure
    Reading shake/cfg/system.config...
    Reading package dependencies...
    Error when running Shake build system:
    * OracleQ (PackageDataKey ("libraries/bin-package-db/dist-boot/","libraries_bin-package-db_dist-boot_LIB_NAME"))
    * libraries/bin-package-db/dist-boot/
    * libraries/bin-package-db/dist-boot/ libraries/bin-package-db/dist-boot/haddock-prologue.txt libraries/bin-package-db/dist-boot/inplace-pkg-config libraries/bin-package-db/dist-boot/setup-config libraries/bin-package-db/dist-boot/build/autogen/cabal_macros.h
    * libraries/binary/dist-boot/
    * libraries/binary/dist-boot/ libraries/binary/dist-boot/haddock-prologue.txt libraries/binary/dist-boot/inplace-pkg-config libraries/binary/dist-boot/setup-config libraries/binary/dist-boot/build/autogen/cabal_macros.h
    * /mnt/work/ghc/ghc-shake/inplace/bin/ghc-cabal
    Error, file does not exist and no rule available:
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 472 bytes
Desc: not available
URL: <>

More information about the ghc-devs mailing list