| 11 | | == Zero-boot packages == |
| 12 | | |
| 13 | | Since GHC's source code imports the boot packages, ''even the bootstrap compiler must have the boot packages available''. (Or, more precisely, all the types and values that are imported must be available from some package in the bootstrap compiler; the exact set of packages does not need to be identical.) |
| 14 | | |
| 15 | | For the most part we simply assume that the bootstrap compiler already has the boot packages installed. The '''Zero-boot Packages''' are a set of packages for which this assumption does not hold. For example, for certain fast-moving boot packages (eg Cabal), we don't want to rely on the user having installed a bang-up-to-date version of the package. |
| 16 | | |
| 17 | | So we begin the entire build process by installing the zero-boot packages in the bootstrap compiler. (This installation is purely local to the build tree.) |
| 18 | | |
| 19 | | As time goes on, a Zero-boot package may become an ordinary boot package, because the bootstrap compiler is expected to have (a sufficiently up to date) version of the package already. |
| 20 | | |
| 21 | | The current Zero-boot packages are: |
| 22 | | * `Cabal`: we frequently update Cabal and GHC in sync |
| 23 | | * `hpc` |
| 24 | | * `extensible-exceptions` |
| | 27 | |
| | 28 | == Zero-boot packages == |
| | 29 | |
| | 30 | Since GHC's source code imports the boot packages, ''even the bootstrap compiler must have the boot packages available''. (Or, more precisely, all the types and values that are imported must be available from some package in the bootstrap compiler; the exact set of packages does not need to be identical.) |
| | 31 | |
| | 32 | For the most part we simply assume that the bootstrap compiler already has the boot packages installed. The '''Zero-boot Packages''' are a set of packages for which this assumption does not hold. For example, for certain fast-moving boot packages (eg Cabal), we don't want to rely on the user having installed a bang-up-to-date version of the package. |
| | 33 | |
| | 34 | So we begin the entire build process by installing the zero-boot packages in the bootstrap compiler. (This installation is purely local to the build tree.) |
| | 35 | |
| | 36 | As time goes on, a Zero-boot package may become an ordinary boot package, because the bootstrap compiler is expected to have (a sufficiently up to date) version of the package already. |
| | 37 | |
| | 38 | The current Zero-boot packages are: |
| | 39 | * `Cabal`: we frequently update Cabal and GHC in sync |
| | 40 | * `hpc` |
| | 41 | * `extensible-exceptions`: this is a shim that provides an API to older versions of GHC that is compatible with what the current `base` package now exports. So, unusually, `extensible-exceptions` is a zero-boot package, but not a boot package. |