Changes between Version 28 and Version 29 of Commentary/GSoCMultipleInstances
- Timestamp:
- 06/19/12 07:00:14 (12 months ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Commentary/GSoCMultipleInstances
v28 v29 5 5 6 6 * 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 PackageDBand never overwrite them,7 * `ghc-pkg` should always add instances to the `PackageDB` and never overwrite them, 8 8 * `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), 9 9 * 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 sense10 * `cabal-install` should still find an `InstallPlan`, and still avoid unnecessarily rebuilding packages whenever it makes sense 11 11 * some form of garbage collection should be offered to have a chance to reduce the amount of installed packages 12 12 … … 156 156 What is ComponentLocalBuildInfo for? 157 157 158 == Currently open design decisions == 159 160 === `InstalledPackageId` and install path === 161 162 Options for uniquely identifying `InstalledPackageId`: 163 164 * Cabal hash only 165 * Cabal + ABI hash (truly unique) 166 * random number 167 168 Options for identifying install path: 169 170 * Cabal hash 171 * random number 172 173 ABI hash cannot be in install path because it's only available after build. 174 175 === Build flavours === 176 177 To 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 186 Options 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 194 Options 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`.
