Changes between Version 28 and Version 29 of Commentary/GSoCMultipleInstances


Ignore:
Timestamp:
Jun 19, 2012 2:00:14 PM (3 years ago)
Author:
kosmikus
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/GSoCMultipleInstances

    v28 v29  
    55
    66 * Cabal should install packages to a location that does not just depend on name and version,
    7  * `ghc-pkg` should always add instances to the PackageDB and never overwrite them,
     7 * `ghc-pkg` should always add instances to the `PackageDB` and never overwrite them,
    88 * `ghc --make`, `ghci`, and the configure phase of Cabal should select suitable instances according to some rule of thumb (similar to the current resolution technique),
    99 * we want to be able to make more fine-grained distinctions between package instances than currently possible, for example by distinguishing different build flavours or "ways" (profiling, etc.)
    10  * `cabal-install` should still find an InstallPlan, and still avoid unnecessarily rebuilding packages whenever it makes sense
     10 * `cabal-install` should still find an `InstallPlan`, and still avoid unnecessarily rebuilding packages whenever it makes sense
    1111 * some form of garbage collection should be offered to have a chance to reduce the amount of installed packages
    1212
     
    156156What is ComponentLocalBuildInfo for?
    157157
     158== Currently open design decisions ==
     159
     160=== `InstalledPackageId` and install path ===
     161
     162Options for uniquely identifying `InstalledPackageId`:
     163
     164   * Cabal hash only
     165   * Cabal + ABI hash (truly unique)
     166   * random number
     167
     168Options for identifying install path:
     169
     170   * Cabal hash
     171   * random number
     172
     173ABI hash cannot be in install path because it's only available after build.
     174
     175=== Build flavours ===
     176
     177To what degree should we distinguish package instances?
     178
     179   * Only package versions transitively
     180   * Ways and Cabal flags
     181   * Everything Haskell-specific info that we can query
     182   * Even non-Haskell-specific inputs such as OS dependencies
     183
     184=== `InstalledPackageInfo` and solver algorithm ===
     185
     186Options for `InstalledPackageInfo`:
     187
     188   * Only add Cabal hash.
     189   * Add (nearly) all information, but in an extensible format.
     190   * Add all information in a way that `ghc-pkg` itself can use it.
     191
     192[These aren't necessarily mutually exclusive.]
     193
     194Options for the solver:
     195
     196   * Direct (see above): requires a certain amount of info in the `InstalledPackageInfo`.
     197
     198   * Agnostic (except for builtin packages): could be done with only the Cabal hash in `InstalledPackageInfo`.