Changes between Version 28 and Version 29 of Commentary/GSoCMultipleInstances


Ignore:
Timestamp:
Jun 19, 2012 2:00:14 PM (2 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`.