
Kosyrev Serge <_deepfire@feelingofgreen.ru> writes:
Ben Gamari
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. Cheers, - 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/package-data.mk","libraries_bin-package-db_dist-boot_LIB_NAME")) * libraries/bin-package-db/dist-boot/package-data.mk * libraries/bin-package-db/dist-boot/package-data.mk 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/package-data.mk * libraries/binary/dist-boot/package-data.mk 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: /mnt/work/ghc/ghc-shake/inplace/bin/ghc-cabal