| | 13 | == Hashes and identifiers == |
| | 14 | |
| | 15 | There are three identifiers: |
| | 16 | |
| | 17 | * `XXXX`: the identifier appended to the installation directory so that installed packages do not clash with each other |
| | 18 | * `YYYY`: the `InstalledPackageId`, which is an identifier used to uniquely identify a package in the package database. |
| | 19 | * `ZZZZ`: the ABI hash derived by GHC after compiling the package |
| | 20 | |
| | 21 | The current situation: |
| | 22 | |
| | 23 | * `XXXX`: is empty, which is bad (two instances of a package install in the same place) |
| | 24 | * `YYYY`: is currently equal to `ZZZZ`, which is bad because we need to make more distinctions: |
| | 25 | * we need to distinguish between two packages that have identical ABIs but different behaviour (e.g. a bug was fixed) |
| | 26 | * we need to distinguish between two instances of a package that are compiled against different dependencies, or with different options, or compiled in a different way (profiling, dynamic) |
| | 27 | |
| | 28 | Some requirements and notes: |
| | 29 | |
| | 30 | * `XXXX` must be decided ''before'' we begin compiling, whereas `ZZZZ` |
| | 31 | |
| | 32 | |