| 1 | 1 patch for repository http://darcs.haskell.org/cabal-install/: |
|---|
| 2 | |
|---|
| 3 | Wed Mar 23 09:44:17 CDT 2011 amsay@amsay.net |
|---|
| 4 | * partial parallel building |
|---|
| 5 | |
|---|
| 6 | |
|---|
| 7 | New patches: |
|---|
| 8 | |
|---|
| 9 | [partial parallel building |
|---|
| 10 | amsay@amsay.net**20110323144417 |
|---|
| 11 | Ignore-this: 6646fe3035f0aacff52bff0c05a2c93 |
|---|
| 12 | ] { |
|---|
| 13 | hunk ./Distribution/Client/Install.hs 25 |
|---|
| 14 | ( unfoldr, find, nub, sort ) |
|---|
| 15 | import Data.Maybe |
|---|
| 16 | ( isJust, fromMaybe ) |
|---|
| 17 | +import Control.Concurrent |
|---|
| 18 | + ( forkIO, killThread ) |
|---|
| 19 | +import Control.Concurrent.ParallelIO.Local |
|---|
| 20 | + ( Pool, parallel_, startPool, stopPool, extraWorkerWhileBlocked ) |
|---|
| 21 | +import Control.Concurrent.Chan |
|---|
| 22 | + ( Chan, newChan, writeChan, readChan ) |
|---|
| 23 | +import Control.Concurrent.MVar |
|---|
| 24 | import Control.Exception as Exception |
|---|
| 25 | ( handleJust ) |
|---|
| 26 | #if MIN_VERSION_base(4,0,0) |
|---|
| 27 | hunk ./Distribution/Client/Install.hs 64 |
|---|
| 28 | import Distribution.Client.IndexUtils as IndexUtils |
|---|
| 29 | ( getAvailablePackages, getInstalledPackages ) |
|---|
| 30 | import qualified Distribution.Client.InstallPlan as InstallPlan |
|---|
| 31 | -import Distribution.Client.InstallPlan (InstallPlan) |
|---|
| 32 | +import Distribution.Client.InstallPlan (InstallPlan, PlanPackage(..)) |
|---|
| 33 | import Distribution.Client.Setup |
|---|
| 34 | ( GlobalFlags(..) |
|---|
| 35 | , ConfigFlags(..), configureCommand, filterConfigureFlags |
|---|
| 36 | hunk ./Distribution/Client/Install.hs 99 |
|---|
| 37 | , toFlag, fromFlag, fromFlagOrDefault, flagToMaybe ) |
|---|
| 38 | import qualified Distribution.Simple.Setup as Cabal |
|---|
| 39 | ( installCommand, InstallFlags(..), emptyInstallFlags ) |
|---|
| 40 | +import Distribution.Simple.Command (CommandUI) |
|---|
| 41 | import Distribution.Simple.Utils |
|---|
| 42 | ( rawSystemExit, comparing ) |
|---|
| 43 | import Distribution.Simple.InstallDirs as InstallDirs |
|---|
| 44 | hunk ./Distribution/Client/Install.hs 117 |
|---|
| 45 | import Distribution.Version |
|---|
| 46 | ( Version, anyVersion, thisVersion ) |
|---|
| 47 | import Distribution.Simple.Utils as Utils |
|---|
| 48 | - ( notice, info, debug, warn, die, intercalate, withTempDirectory ) |
|---|
| 49 | + ( notice, debug, warn, die, intercalate, withTempDirectory ) |
|---|
| 50 | import Distribution.Client.Utils |
|---|
| 51 | ( inDir, mergeBy, MergeResult(..) ) |
|---|
| 52 | import Distribution.System |
|---|
| 53 | hunk ./Distribution/Client/Install.hs 125 |
|---|
| 54 | import Distribution.Text |
|---|
| 55 | ( display ) |
|---|
| 56 | import Distribution.Verbosity as Verbosity |
|---|
| 57 | - ( Verbosity, showForCabal, verbose ) |
|---|
| 58 | + ( Verbosity, verbose, silent ) |
|---|
| 59 | import Distribution.Simple.BuildPaths ( exeExtension ) |
|---|
| 60 | hunk ./Distribution/Client/Install.hs 127 |
|---|
| 61 | +import GHC.Conc ( numCapabilities ) |
|---|
| 62 | |
|---|
| 63 | --TODO: |
|---|
| 64 | -- * assign flags to packages individually |
|---|
| 65 | hunk ./Distribution/Client/Install.hs 182 |
|---|
| 66 | printPlanMessages verbosity installed installPlan dryRun |
|---|
| 67 | |
|---|
| 68 | unless dryRun $ do |
|---|
| 69 | - installPlan' <- performInstallations verbosity |
|---|
| 70 | - context installed installPlan |
|---|
| 71 | + installPlan' <- performInstallations verbosity context installed installPlan |
|---|
| 72 | postInstallActions verbosity context userTargets installPlan' |
|---|
| 73 | |
|---|
| 74 | where |
|---|
| 75 | hunk ./Distribution/Client/Install.hs 575 |
|---|
| 76 | (packageDBs, _, comp, conf, |
|---|
| 77 | globalFlags, configFlags, configExFlags, installFlags) |
|---|
| 78 | installed installPlan = do |
|---|
| 79 | - |
|---|
| 80 | - executeInstallPlan installPlan $ \cpkg -> |
|---|
| 81 | + downloadChan <- newChan |
|---|
| 82 | + installChan <- newChan |
|---|
| 83 | + install_tid <- forkIO $ installThread installChan |
|---|
| 84 | + download_tid <- forkIO $ downloadThread downloadChan |
|---|
| 85 | + installPlanMV <- newMVar installPlan |
|---|
| 86 | + errorMVar <- newEmptyMVar |
|---|
| 87 | + counter <- newMVar 0 |
|---|
| 88 | + pool <- startPool threads |
|---|
| 89 | + executeInstallPlan verbosity counter pool installPlanMV errorMVar $ \cpkg -> |
|---|
| 90 | installConfiguredPackage platform compid configFlags |
|---|
| 91 | cpkg $ \configFlags' src pkg -> |
|---|
| 92 | hunk ./Distribution/Client/Install.hs 586 |
|---|
| 93 | - fetchAvailablePackage verbosity src $ \src' -> |
|---|
| 94 | - installLocalPackage verbosity (packageId pkg) src' $ \mpath -> |
|---|
| 95 | - installUnpackedPackage verbosity (setupScriptOptions installed) |
|---|
| 96 | - miscOptions configFlags' installFlags |
|---|
| 97 | - compid pkg mpath useLogFile |
|---|
| 98 | + onFailure DownloadFailed $ sendChan downloadChan src >>= \src' -> |
|---|
| 99 | + installLocalPackage (packageId pkg) src' $ \mpath -> |
|---|
| 100 | + installUnpackedPackage (setupScriptOptions installed) |
|---|
| 101 | + configFlags' installFlags |
|---|
| 102 | + pkg mpath useLogFile $ \result -> |
|---|
| 103 | + extraWorkerWhileBlocked pool $ sendChan installChan result |
|---|
| 104 | + stopPool pool |
|---|
| 105 | + killThread install_tid |
|---|
| 106 | + killThread download_tid |
|---|
| 107 | + takeMVar installPlanMV |
|---|
| 108 | |
|---|
| 109 | where |
|---|
| 110 | platform = InstallPlan.planPlatform installPlan |
|---|
| 111 | hunk ./Distribution/Client/Install.hs 623 |
|---|
| 112 | useLoggingHandle = Nothing, |
|---|
| 113 | useWorkingDir = Nothing |
|---|
| 114 | } |
|---|
| 115 | + threads = max 1 (maybe numCapabilities id (flagToMaybe (installMaxThreads installFlags)) - 2) |
|---|
| 116 | reportingLevel = fromFlag (installBuildReports installFlags) |
|---|
| 117 | logsDir = fromFlag (globalLogsDir globalFlags) |
|---|
| 118 | useLogFile :: Maybe (PackageIdentifier -> FilePath) |
|---|
| 119 | hunk ./Distribution/Client/Install.hs 645 |
|---|
| 120 | else flagToMaybe (installRootCmd installFlags), |
|---|
| 121 | libVersion = flagToMaybe (configCabalVersion configExFlags) |
|---|
| 122 | } |
|---|
| 123 | + installThread installChan = |
|---|
| 124 | + inThread installChan $ \(configFlags', pkg, mpath, scriptOptions, installFlags', result) -> |
|---|
| 125 | + installBuiltPackage scriptOptions miscOptions configFlags' installFlags' compid pkg mpath useLogFile result |
|---|
| 126 | + downloadThread downloadChan = inThread downloadChan $ \src-> do |
|---|
| 127 | + fetched <- checkFetched src |
|---|
| 128 | + case fetched of |
|---|
| 129 | + Just src' -> return src' |
|---|
| 130 | + Nothing -> fetchPackage silent src |
|---|
| 131 | |
|---|
| 132 | hunk ./Distribution/Client/Install.hs 654 |
|---|
| 133 | - |
|---|
| 134 | -executeInstallPlan :: Monad m |
|---|
| 135 | - => InstallPlan |
|---|
| 136 | - -> (ConfiguredPackage -> m BuildResult) |
|---|
| 137 | - -> m InstallPlan |
|---|
| 138 | -executeInstallPlan plan installPkg = case InstallPlan.ready plan of |
|---|
| 139 | - [] -> return plan |
|---|
| 140 | - (pkg: _) -> do buildResult <- installPkg pkg |
|---|
| 141 | - let plan' = updatePlan (packageId pkg) buildResult plan |
|---|
| 142 | - executeInstallPlan plan' installPkg |
|---|
| 143 | +installBuiltPackage :: SetupScriptOptions -> InstallMisc -> ConfigFlags -> (Version -> Cabal.InstallFlags) |
|---|
| 144 | + -> CompilerId -> PackageDescription -> Maybe FilePath |
|---|
| 145 | + -> Maybe (PackageIdentifier -> FilePath) -> BuildResult -> IO BuildResult |
|---|
| 146 | +installBuiltPackage scriptOptions miscOptions configFlags installFlags compid pkg workingDir useLogFile buildRes |
|---|
| 147 | + = do |
|---|
| 148 | + onFailure InstallFailed $ |
|---|
| 149 | + withWin32SelfUpgrade configFlags compid pkg $ do |
|---|
| 150 | + case rootCmd miscOptions of |
|---|
| 151 | + (Just cmd) -> reexec cmd |
|---|
| 152 | + Nothing -> setup useLogFile pkg workingDir scriptOptions Cabal.installCommand installFlags |
|---|
| 153 | + return buildRes |
|---|
| 154 | where |
|---|
| 155 | hunk ./Distribution/Client/Install.hs 666 |
|---|
| 156 | - updatePlan pkgid (Right buildSuccess) = |
|---|
| 157 | - InstallPlan.completed pkgid buildSuccess |
|---|
| 158 | + reexec cmd = do |
|---|
| 159 | + -- look for our on executable file and re-exec ourselves using |
|---|
| 160 | + -- a helper program like sudo to elevate priviledges: |
|---|
| 161 | + bindir <- getBinDir |
|---|
| 162 | + let self = bindir </> "cabal" <.> exeExtension |
|---|
| 163 | + weExist <- doesFileExist self |
|---|
| 164 | + if weExist |
|---|
| 165 | + then inDir workingDir $ |
|---|
| 166 | + rawSystemExit silent cmd |
|---|
| 167 | + [self, "install", "--only" |
|---|
| 168 | + ,"--verbose=0"] |
|---|
| 169 | + else die $ "Unable to find cabal executable at: " ++ self |
|---|
| 170 | |
|---|
| 171 | hunk ./Distribution/Client/Install.hs 679 |
|---|
| 172 | - updatePlan pkgid (Left buildFailure) = |
|---|
| 173 | - InstallPlan.failed pkgid buildFailure depsFailure |
|---|
| 174 | - where |
|---|
| 175 | - depsFailure = DependentFailed pkgid |
|---|
| 176 | - -- So this first pkgid failed for whatever reason (buildFailure). |
|---|
| 177 | - -- All the other packages that depended on this pkgid, which we |
|---|
| 178 | - -- now cannot build, we mark as failing due to 'DependentFailed' |
|---|
| 179 | - -- which kind of means it was not their fault. |
|---|
| 180 | +setup :: Maybe (PackageIdentifier -> FilePath) |
|---|
| 181 | + -> PackageDescription |
|---|
| 182 | + -> Maybe FilePath |
|---|
| 183 | + -> SetupScriptOptions |
|---|
| 184 | + -> CommandUI flags |
|---|
| 185 | + -> (Version -> flags) |
|---|
| 186 | + -> IO () |
|---|
| 187 | +setup useLogFile pkg workingDir scriptOptions cmd flags = do |
|---|
| 188 | + logFileHandle <- case useLogFile of |
|---|
| 189 | + Nothing -> return Nothing |
|---|
| 190 | + Just mkLogFileName -> do |
|---|
| 191 | + let logFileName = mkLogFileName (packageId pkg) |
|---|
| 192 | + logDir = takeDirectory logFileName |
|---|
| 193 | + unless (null logDir) $ createDirectoryIfMissing True logDir |
|---|
| 194 | + logFile <- openFile logFileName AppendMode |
|---|
| 195 | + return (Just logFile) |
|---|
| 196 | + setupWrapper silent |
|---|
| 197 | + scriptOptions { useLoggingHandle = logFileHandle |
|---|
| 198 | + , useWorkingDir = workingDir } |
|---|
| 199 | + (Just pkg) |
|---|
| 200 | + cmd flags [] |
|---|
| 201 | + |
|---|
| 202 | +sendChan :: Chan (MVar m, a) -> a -> IO m |
|---|
| 203 | +sendChan chan a = do |
|---|
| 204 | + mv <- newEmptyMVar |
|---|
| 205 | + writeChan chan (mv, a) |
|---|
| 206 | + takeMVar mv |
|---|
| 207 | + |
|---|
| 208 | +inThread :: Chan (MVar a, t) -> (t -> IO a) -> IO b |
|---|
| 209 | +inThread chan f = do |
|---|
| 210 | + (m,a) <- readChan chan |
|---|
| 211 | + result <- f a |
|---|
| 212 | + putMVar m result |
|---|
| 213 | + inThread chan f |
|---|
| 214 | + |
|---|
| 215 | +executeInstallPlan :: Verbosity -> MVar Int -> Pool |
|---|
| 216 | + -> MVar InstallPlan |
|---|
| 217 | + -> MVar BuildFailure |
|---|
| 218 | + -> (ConfiguredPackage -> IO BuildResult) |
|---|
| 219 | + -> IO () |
|---|
| 220 | +executeInstallPlan verbosity counter pool plan errors installPkg = do |
|---|
| 221 | + maybeErr <- tryTakeMVar errors |
|---|
| 222 | + case maybeErr of |
|---|
| 223 | + Nothing -> do |
|---|
| 224 | + plan' <- readMVar plan |
|---|
| 225 | + case InstallPlan.ready plan' of |
|---|
| 226 | + [] -> return () |
|---|
| 227 | + pkgs -> do |
|---|
| 228 | + modifyMVar_ counter (return . (+ length pkgs)) |
|---|
| 229 | + threads <- readMVar counter |
|---|
| 230 | + let jobs = length [p | (Configured p) <- InstallPlan.toList plan'] |
|---|
| 231 | + notice verbosity (show jobs ++ " jobs remaining, " ++ show threads ++ " running") |
|---|
| 232 | + parallel_ pool $ |
|---|
| 233 | + map (\pkg-> (nextDeps verbosity counter pool plan errors installPkg pkg) $ installPkg pkg) pkgs |
|---|
| 234 | + (Just _) -> return () |
|---|
| 235 | + |
|---|
| 236 | +nextDeps :: Verbosity -> MVar Int -> Pool |
|---|
| 237 | + -> MVar InstallPlan -> MVar BuildFailure |
|---|
| 238 | + -> (ConfiguredPackage -> IO BuildResult) |
|---|
| 239 | + -> ConfiguredPackage |
|---|
| 240 | + -> IO BuildResult |
|---|
| 241 | + -> IO () |
|---|
| 242 | +nextDeps verbosity counter pool plan errors installPkg pkg buildRes |
|---|
| 243 | + = do |
|---|
| 244 | + modifyMVar_ counter (return . subtract 1) |
|---|
| 245 | + buildRes' <- buildRes |
|---|
| 246 | + modifyMVar_ plan (updatePlan (packageId pkg) buildRes') |
|---|
| 247 | + executeInstallPlan verbosity counter pool plan errors installPkg |
|---|
| 248 | + where |
|---|
| 249 | + updatePlan pkgid (Right buildSuccess) x = |
|---|
| 250 | + return $ InstallPlan.completed pkgid buildSuccess x |
|---|
| 251 | + updatePlan pkgid (Left buildFailure) x = do |
|---|
| 252 | + putMVar errors buildFailure |
|---|
| 253 | + return $ InstallPlan.failed pkgid buildFailure (DependentFailed pkgid) x |
|---|
| 254 | + -- So this first pkgid failed for whatever reason (buildFailure). |
|---|
| 255 | + -- All the other packages that depended on this pkgid, which we |
|---|
| 256 | + -- now cannot build, we mark as failing due to 'DependentFailed' |
|---|
| 257 | + -- which kind of means it was not their fault. |
|---|
| 258 | |
|---|
| 259 | |
|---|
| 260 | -- | Call an installer for an 'AvailablePackage' but override the configure |
|---|
| 261 | hunk ./Distribution/Client/Install.hs 783 |
|---|
| 262 | Left _ -> error "finalizePackageDescription ConfiguredPackage failed" |
|---|
| 263 | Right (desc, _) -> desc |
|---|
| 264 | |
|---|
| 265 | -fetchAvailablePackage |
|---|
| 266 | - :: Verbosity |
|---|
| 267 | - -> PackageLocation (Maybe FilePath) |
|---|
| 268 | - -> (PackageLocation FilePath -> IO BuildResult) |
|---|
| 269 | - -> IO BuildResult |
|---|
| 270 | -fetchAvailablePackage verbosity src installPkg = do |
|---|
| 271 | - fetched <- checkFetched src |
|---|
| 272 | - case fetched of |
|---|
| 273 | - Just src' -> installPkg src' |
|---|
| 274 | - Nothing -> onFailure DownloadFailed $ |
|---|
| 275 | - fetchPackage verbosity src >>= installPkg |
|---|
| 276 | - |
|---|
| 277 | - |
|---|
| 278 | installLocalPackage |
|---|
| 279 | hunk ./Distribution/Client/Install.hs 784 |
|---|
| 280 | - :: Verbosity -> PackageIdentifier -> PackageLocation FilePath |
|---|
| 281 | + :: PackageIdentifier -> PackageLocation FilePath |
|---|
| 282 | -> (Maybe FilePath -> IO BuildResult) |
|---|
| 283 | -> IO BuildResult |
|---|
| 284 | hunk ./Distribution/Client/Install.hs 787 |
|---|
| 285 | -installLocalPackage verbosity pkgid location installPkg = case location of |
|---|
| 286 | +installLocalPackage pkgid location installPkg = case location of |
|---|
| 287 | |
|---|
| 288 | LocalUnpackedPackage dir -> |
|---|
| 289 | installPkg (Just dir) |
|---|
| 290 | hunk ./Distribution/Client/Install.hs 793 |
|---|
| 291 | |
|---|
| 292 | LocalTarballPackage tarballPath -> |
|---|
| 293 | - installLocalTarballPackage verbosity pkgid tarballPath installPkg |
|---|
| 294 | + installLocalTarballPackage pkgid tarballPath installPkg |
|---|
| 295 | |
|---|
| 296 | RemoteTarballPackage _ tarballPath -> |
|---|
| 297 | hunk ./Distribution/Client/Install.hs 796 |
|---|
| 298 | - installLocalTarballPackage verbosity pkgid tarballPath installPkg |
|---|
| 299 | + installLocalTarballPackage pkgid tarballPath installPkg |
|---|
| 300 | |
|---|
| 301 | RepoTarballPackage _ _ tarballPath -> |
|---|
| 302 | hunk ./Distribution/Client/Install.hs 799 |
|---|
| 303 | - installLocalTarballPackage verbosity pkgid tarballPath installPkg |
|---|
| 304 | + installLocalTarballPackage pkgid tarballPath installPkg |
|---|
| 305 | |
|---|
| 306 | |
|---|
| 307 | installLocalTarballPackage |
|---|
| 308 | hunk ./Distribution/Client/Install.hs 803 |
|---|
| 309 | - :: Verbosity -> PackageIdentifier -> FilePath |
|---|
| 310 | + :: PackageIdentifier -> FilePath |
|---|
| 311 | -> (Maybe FilePath -> IO BuildResult) |
|---|
| 312 | -> IO BuildResult |
|---|
| 313 | hunk ./Distribution/Client/Install.hs 806 |
|---|
| 314 | -installLocalTarballPackage verbosity pkgid tarballPath installPkg = do |
|---|
| 315 | +installLocalTarballPackage pkgid tarballPath installPkg = do |
|---|
| 316 | tmp <- getTemporaryDirectory |
|---|
| 317 | hunk ./Distribution/Client/Install.hs 808 |
|---|
| 318 | - withTempDirectory verbosity tmp (display pkgid) $ \tmpDirPath -> |
|---|
| 319 | + withTempDirectory silent tmp (display pkgid) $ \tmpDirPath -> |
|---|
| 320 | onFailure UnpackFailed $ do |
|---|
| 321 | hunk ./Distribution/Client/Install.hs 810 |
|---|
| 322 | - info verbosity $ "Extracting " ++ tarballPath |
|---|
| 323 | - ++ " to " ++ tmpDirPath ++ "..." |
|---|
| 324 | let relUnpackedPath = display pkgid |
|---|
| 325 | absUnpackedPath = tmpDirPath </> relUnpackedPath |
|---|
| 326 | descFilePath = absUnpackedPath |
|---|
| 327 | hunk ./Distribution/Client/Install.hs 820 |
|---|
| 328 | die $ "Package .cabal file not found: " ++ show descFilePath |
|---|
| 329 | installPkg (Just absUnpackedPath) |
|---|
| 330 | |
|---|
| 331 | - |
|---|
| 332 | -installUnpackedPackage :: Verbosity |
|---|
| 333 | - -> SetupScriptOptions |
|---|
| 334 | - -> InstallMisc |
|---|
| 335 | +installUnpackedPackage :: SetupScriptOptions |
|---|
| 336 | -> ConfigFlags |
|---|
| 337 | -> InstallFlags |
|---|
| 338 | hunk ./Distribution/Client/Install.hs 823 |
|---|
| 339 | - -> CompilerId |
|---|
| 340 | -> PackageDescription |
|---|
| 341 | -> Maybe FilePath -- ^ Directory to change to before starting the installation. |
|---|
| 342 | -> Maybe (PackageIdentifier -> FilePath) -- ^ File to log output to (if any) |
|---|
| 343 | hunk ./Distribution/Client/Install.hs 826 |
|---|
| 344 | + -> ((ConfigFlags, PackageDescription, Maybe FilePath, SetupScriptOptions, |
|---|
| 345 | + Version -> Cabal.InstallFlags, BuildResult) -> IO BuildResult) |
|---|
| 346 | -> IO BuildResult |
|---|
| 347 | hunk ./Distribution/Client/Install.hs 829 |
|---|
| 348 | -installUnpackedPackage verbosity scriptOptions miscOptions |
|---|
| 349 | - configFlags installConfigFlags |
|---|
| 350 | - compid pkg workingDir useLogFile = |
|---|
| 351 | +installUnpackedPackage scriptOptions configFlags installConfigFlags |
|---|
| 352 | + pkg workingDir useLogFile installPackage = |
|---|
| 353 | |
|---|
| 354 | -- Configure phase |
|---|
| 355 | onFailure ConfigureFailed $ do |
|---|
| 356 | hunk ./Distribution/Client/Install.hs 834 |
|---|
| 357 | - setup configureCommand configureFlags |
|---|
| 358 | + setup useLogFile pkg workingDir scriptOptions configureCommand configureFlags |
|---|
| 359 | |
|---|
| 360 | -- Build phase |
|---|
| 361 | onFailure BuildFailed $ do |
|---|
| 362 | hunk ./Distribution/Client/Install.hs 838 |
|---|
| 363 | - setup buildCommand' buildFlags |
|---|
| 364 | + setup useLogFile pkg workingDir scriptOptions buildCommand' buildFlags |
|---|
| 365 | |
|---|
| 366 | -- Doc generation phase |
|---|
| 367 | docsResult <- if shouldHaddock |
|---|
| 368 | hunk ./Distribution/Client/Install.hs 842 |
|---|
| 369 | - then (do setup haddockCommand haddockFlags |
|---|
| 370 | + then (do setup useLogFile pkg workingDir scriptOptions haddockCommand haddockFlags |
|---|
| 371 | return DocsOk) |
|---|
| 372 | `catchIO` (\_ -> return DocsFailed) |
|---|
| 373 | `catchExit` (\_ -> return DocsFailed) |
|---|
| 374 | hunk ./Distribution/Client/Install.hs 850 |
|---|
| 375 | |
|---|
| 376 | -- Tests phase |
|---|
| 377 | testsResult <- return TestsNotTried --TODO: add optional tests |
|---|
| 378 | - |
|---|
| 379 | + |
|---|
| 380 | -- Install phase |
|---|
| 381 | hunk ./Distribution/Client/Install.hs 852 |
|---|
| 382 | - onFailure InstallFailed $ |
|---|
| 383 | - withWin32SelfUpgrade verbosity configFlags compid pkg $ do |
|---|
| 384 | - case rootCmd miscOptions of |
|---|
| 385 | - (Just cmd) -> reexec cmd |
|---|
| 386 | - Nothing -> setup Cabal.installCommand installFlags |
|---|
| 387 | - return (Right (BuildOk docsResult testsResult)) |
|---|
| 388 | + installPackage (configFlags, pkg, workingDir, scriptOptions, installFlags, Right (BuildOk docsResult testsResult)) |
|---|
| 389 | |
|---|
| 390 | where |
|---|
| 391 | configureFlags = filterConfigureFlags configFlags { |
|---|
| 392 | hunk ./Distribution/Client/Install.hs 856 |
|---|
| 393 | - configVerbosity = toFlag verbosity' |
|---|
| 394 | + configVerbosity = toFlag silent |
|---|
| 395 | } |
|---|
| 396 | buildCommand' = buildCommand defaultProgramConfiguration |
|---|
| 397 | buildFlags _ = emptyBuildFlags { |
|---|
| 398 | hunk ./Distribution/Client/Install.hs 861 |
|---|
| 399 | buildDistPref = configDistPref configFlags, |
|---|
| 400 | - buildVerbosity = toFlag verbosity' |
|---|
| 401 | + buildVerbosity = toFlag silent |
|---|
| 402 | } |
|---|
| 403 | shouldHaddock = fromFlag (installDocumentation installConfigFlags) |
|---|
| 404 | haddockFlags _ = emptyHaddockFlags { |
|---|
| 405 | hunk ./Distribution/Client/Install.hs 866 |
|---|
| 406 | haddockDistPref = configDistPref configFlags, |
|---|
| 407 | - haddockVerbosity = toFlag verbosity' |
|---|
| 408 | + haddockVerbosity = toFlag silent |
|---|
| 409 | } |
|---|
| 410 | installFlags _ = Cabal.emptyInstallFlags { |
|---|
| 411 | Cabal.installDistPref = configDistPref configFlags, |
|---|
| 412 | hunk ./Distribution/Client/Install.hs 870 |
|---|
| 413 | - Cabal.installVerbosity = toFlag verbosity' |
|---|
| 414 | + Cabal.installVerbosity = toFlag silent |
|---|
| 415 | } |
|---|
| 416 | hunk ./Distribution/Client/Install.hs 872 |
|---|
| 417 | - verbosity' | isJust useLogFile = max Verbosity.verbose verbosity |
|---|
| 418 | - | otherwise = verbosity |
|---|
| 419 | - setup cmd flags = do |
|---|
| 420 | - logFileHandle <- case useLogFile of |
|---|
| 421 | - Nothing -> return Nothing |
|---|
| 422 | - Just mkLogFileName -> do |
|---|
| 423 | - let logFileName = mkLogFileName (packageId pkg) |
|---|
| 424 | - logDir = takeDirectory logFileName |
|---|
| 425 | - unless (null logDir) $ createDirectoryIfMissing True logDir |
|---|
| 426 | - logFile <- openFile logFileName AppendMode |
|---|
| 427 | - return (Just logFile) |
|---|
| 428 | - |
|---|
| 429 | - setupWrapper verbosity |
|---|
| 430 | - scriptOptions { useLoggingHandle = logFileHandle |
|---|
| 431 | - , useWorkingDir = workingDir } |
|---|
| 432 | - (Just pkg) |
|---|
| 433 | - cmd flags [] |
|---|
| 434 | - reexec cmd = do |
|---|
| 435 | - -- look for our on executable file and re-exec ourselves using |
|---|
| 436 | - -- a helper program like sudo to elevate priviledges: |
|---|
| 437 | - bindir <- getBinDir |
|---|
| 438 | - let self = bindir </> "cabal" <.> exeExtension |
|---|
| 439 | - weExist <- doesFileExist self |
|---|
| 440 | - if weExist |
|---|
| 441 | - then inDir workingDir $ |
|---|
| 442 | - rawSystemExit verbosity cmd |
|---|
| 443 | - [self, "install", "--only" |
|---|
| 444 | - ,"--verbose=" ++ showForCabal verbosity] |
|---|
| 445 | - else die $ "Unable to find cabal executable at: " ++ self |
|---|
| 446 | - |
|---|
| 447 | |
|---|
| 448 | -- helper |
|---|
| 449 | onFailure :: (SomeException -> BuildFailure) -> IO BuildResult -> IO BuildResult |
|---|
| 450 | hunk ./Distribution/Client/Install.hs 895 |
|---|
| 451 | -- * Wierd windows hacks |
|---|
| 452 | -- ------------------------------------------------------------ |
|---|
| 453 | |
|---|
| 454 | -withWin32SelfUpgrade :: Verbosity |
|---|
| 455 | - -> ConfigFlags |
|---|
| 456 | +withWin32SelfUpgrade :: ConfigFlags |
|---|
| 457 | -> CompilerId |
|---|
| 458 | -> PackageDescription |
|---|
| 459 | -> IO a -> IO a |
|---|
| 460 | hunk ./Distribution/Client/Install.hs 899 |
|---|
| 461 | -withWin32SelfUpgrade _ _ _ _ action | buildOS /= Windows = action |
|---|
| 462 | -withWin32SelfUpgrade verbosity configFlags compid pkg action = do |
|---|
| 463 | +withWin32SelfUpgrade _ _ _ action | buildOS /= Windows = action |
|---|
| 464 | +withWin32SelfUpgrade configFlags compid pkg action = do |
|---|
| 465 | |
|---|
| 466 | defaultDirs <- InstallDirs.defaultInstallDirs |
|---|
| 467 | compFlavor |
|---|
| 468 | hunk ./Distribution/Client/Install.hs 907 |
|---|
| 469 | (fromFlag (configUserInstall configFlags)) |
|---|
| 470 | (PackageDescription.hasLibs pkg) |
|---|
| 471 | |
|---|
| 472 | - Win32SelfUpgrade.possibleSelfUpgrade verbosity |
|---|
| 473 | + Win32SelfUpgrade.possibleSelfUpgrade silent |
|---|
| 474 | (exeInstallPaths defaultDirs) action |
|---|
| 475 | |
|---|
| 476 | where |
|---|
| 477 | hunk ./Distribution/Client/Setup.hs 572 |
|---|
| 478 | installLogFile :: Flag PathTemplate, |
|---|
| 479 | installBuildReports :: Flag ReportLevel, |
|---|
| 480 | installSymlinkBinDir:: Flag FilePath, |
|---|
| 481 | - installOneShot :: Flag Bool |
|---|
| 482 | + installOneShot :: Flag Bool, |
|---|
| 483 | + installMaxThreads :: Flag Int |
|---|
| 484 | } |
|---|
| 485 | |
|---|
| 486 | defaultInstallFlags :: InstallFlags |
|---|
| 487 | hunk ./Distribution/Client/Setup.hs 590 |
|---|
| 488 | installLogFile = mempty, |
|---|
| 489 | installBuildReports = Flag NoReports, |
|---|
| 490 | installSymlinkBinDir= mempty, |
|---|
| 491 | - installOneShot = Flag False |
|---|
| 492 | + installOneShot = Flag False, |
|---|
| 493 | + installMaxThreads = mempty |
|---|
| 494 | } |
|---|
| 495 | where |
|---|
| 496 | docIndexFile = toPathTemplate ("$datadir" </> "doc" </> "index.html") |
|---|
| 497 | hunk ./Distribution/Client/Setup.hs 682 |
|---|
| 498 | (reqArg' "TEMPLATE" (toFlag.toPathTemplate) |
|---|
| 499 | (flagToList . fmap fromPathTemplate)) |
|---|
| 500 | |
|---|
| 501 | + , option [] ["max-threads"] |
|---|
| 502 | + "Maximum threads to use when building in parallel" |
|---|
| 503 | + installMaxThreads (\v flags -> flags { installMaxThreads = v }) |
|---|
| 504 | + (reqArg' "MAXTHREADS" (toFlag . read) (map show . flagToList)) |
|---|
| 505 | + |
|---|
| 506 | , option [] ["remote-build-reporting"] |
|---|
| 507 | "Generate build reports to send to a remote server (none, anonymous or detailed)." |
|---|
| 508 | installBuildReports (\v flags -> flags { installBuildReports = v }) |
|---|
| 509 | hunk ./Distribution/Client/Setup.hs 722 |
|---|
| 510 | installLogFile = mempty, |
|---|
| 511 | installBuildReports = mempty, |
|---|
| 512 | installSymlinkBinDir= mempty, |
|---|
| 513 | - installOneShot = mempty |
|---|
| 514 | + installOneShot = mempty, |
|---|
| 515 | + installMaxThreads = mempty |
|---|
| 516 | } |
|---|
| 517 | mappend a b = InstallFlags { |
|---|
| 518 | installDocumentation= combine installDocumentation, |
|---|
| 519 | hunk ./Distribution/Client/Setup.hs 738 |
|---|
| 520 | installLogFile = combine installLogFile, |
|---|
| 521 | installBuildReports = combine installBuildReports, |
|---|
| 522 | installSymlinkBinDir= combine installSymlinkBinDir, |
|---|
| 523 | - installOneShot = combine installOneShot |
|---|
| 524 | + installOneShot = combine installOneShot, |
|---|
| 525 | + installMaxThreads = combine installMaxThreads |
|---|
| 526 | } |
|---|
| 527 | where combine field = field a `mappend` field b |
|---|
| 528 | |
|---|
| 529 | hunk ./cabal-install.cabal 101 |
|---|
| 530 | network >= 1 && < 3, |
|---|
| 531 | HTTP >= 4000.0.2 && < 4001, |
|---|
| 532 | zlib >= 0.4 && < 0.6, |
|---|
| 533 | - time >= 1.1 && < 1.3 |
|---|
| 534 | + time >= 1.1 && < 1.3, |
|---|
| 535 | + parallel-io >= 0.3 && < 0.4 |
|---|
| 536 | |
|---|
| 537 | if flag(old-base) |
|---|
| 538 | build-depends: base < 3 |
|---|
| 539 | } |
|---|
| 540 | |
|---|
| 541 | Context: |
|---|
| 542 | |
|---|
| 543 | [Fix username prompting for cabal upload |
|---|
| 544 | Duncan Coutts <duncan@community.haskell.org>**20110315224721 |
|---|
| 545 | Ignore-this: df520d38a20f56da60fd8dfe921c3fbf |
|---|
| 546 | Fixes ticket #810 |
|---|
| 547 | ] |
|---|
| 548 | [Unbreak the world target |
|---|
| 549 | Duncan Coutts <duncan@community.haskell.org>**20110304233956 |
|---|
| 550 | Ignore-this: 63eff29f8d0896610aabc5a13ce705bd |
|---|
| 551 | I'd accidentally left out the world target from the parsing phase |
|---|
| 552 | of the new user target handling system, so cabal install world did |
|---|
| 553 | not work. Now added to the target parser. |
|---|
| 554 | ] |
|---|
| 555 | [Fix silly bug in cabal configure. Ticket #805. |
|---|
| 556 | Duncan Coutts <duncan@community.haskell.org>**20110304221307 |
|---|
| 557 | Ignore-this: 6bec52c20c33624c28844849cfa2fa78 |
|---|
| 558 | I made a mistake during the recent refactoring work and was using |
|---|
| 559 | the dependency planner in the wrong way. The planner was being |
|---|
| 560 | given the available source packages and duely picking them to |
|---|
| 561 | satisfy dependencies, but for configure we're supposed to assume |
|---|
| 562 | that all dependencies are installed already. |
|---|
| 563 | ] |
|---|
| 564 | [In bootstrap script, do Cabal before other deps |
|---|
| 565 | Duncan Coutts <duncan@community.haskell.org>**20110227175535 |
|---|
| 566 | Ignore-this: a25054ccde26ece8e5bfc83272909593 |
|---|
| 567 | So that the others can use the new Cabal for their Setup.hs |
|---|
| 568 | ] |
|---|
| 569 | [Add source-repository this entry |
|---|
| 570 | Duncan Coutts <duncan@community.haskell.org>**20110227145302 |
|---|
| 571 | Ignore-this: 7bf8b3f2af6fc3067ced983a6e8b9532 |
|---|
| 572 | ] |
|---|
| 573 | [Bump version to 0.10.0 |
|---|
| 574 | Duncan Coutts <duncan@community.haskell.org>**20110227145245 |
|---|
| 575 | Ignore-this: 850619fd840cd2c47c2f3401e5a55abe |
|---|
| 576 | ] |
|---|
| 577 | [Require Cabal >= 1.10.1 |
|---|
| 578 | Duncan Coutts <duncan@community.haskell.org>**20110227175455 |
|---|
| 579 | Ignore-this: 4ecf4f3ac872b8ac8b948ffe5dba454a |
|---|
| 580 | It contains an important bug fix for some platforms, notably OSX |
|---|
| 581 | ] |
|---|
| 582 | [Update dependencies in bootstrap script |
|---|
| 583 | Duncan Coutts <duncan@community.haskell.org>**20110227165812 |
|---|
| 584 | Ignore-this: b0c2a17fc8aebf04a7c919fe42773a5a |
|---|
| 585 | Works with ghc-6.12 and ghc-7.0 |
|---|
| 586 | ] |
|---|
| 587 | [Minor tweaks to bootstrap script |
|---|
| 588 | Duncan Coutts <duncan@community.haskell.org>**20110227165713 |
|---|
| 589 | Ignore-this: abdecb3d0918a22e7f39d316a6b2c15d |
|---|
| 590 | When using curl, fail better on HTTP errors. |
|---|
| 591 | Also remove some dead code. |
|---|
| 592 | ] |
|---|
| 593 | [Only look at global packages when doing ./bootstrap.sh --global |
|---|
| 594 | Duncan Coutts <duncan@community.haskell.org>**20110227152637 |
|---|
| 595 | Ignore-this: 70346000a983f60efefd541d9392931a |
|---|
| 596 | Should fix ticket #796 |
|---|
| 597 | ] |
|---|
| 598 | [Add support for BSD fetch to bootstrap script |
|---|
| 599 | Duncan Coutts <duncan@community.haskell.org>**20110227152423 |
|---|
| 600 | Ignore-this: 8406ef2b924cc72198773b2e29ef2b06 |
|---|
| 601 | On FreeBSD fetch is installed by default, unlike wget or curl. |
|---|
| 602 | ] |
|---|
| 603 | [Add missing module to other-modules |
|---|
| 604 | Duncan Coutts <duncan@community.haskell.org>**20110227175240 |
|---|
| 605 | Ignore-this: fded3fdccc046a018c0620cea9e83def |
|---|
| 606 | ] |
|---|
| 607 | [Update versions in README |
|---|
| 608 | Duncan Coutts <duncan@community.haskell.org>**20110227170553 |
|---|
| 609 | Ignore-this: 7abda197c6006b1c3c1f43b4af87ada8 |
|---|
| 610 | ] |
|---|
| 611 | [Update changelog for 0.10.0 release |
|---|
| 612 | Duncan Coutts <duncan@community.haskell.org>**20110227151628 |
|---|
| 613 | Ignore-this: 64083adec0b77ee86a3afade031a2889 |
|---|
| 614 | ] |
|---|
| 615 | [Update copyright date |
|---|
| 616 | Duncan Coutts <duncan@community.haskell.org>**20110227145222 |
|---|
| 617 | Ignore-this: 66d0a4390f9027293a3998c69fe4a8d4 |
|---|
| 618 | ] |
|---|
| 619 | [Partial fix for handling multiple installed instances of same package version |
|---|
| 620 | Duncan Coutts <duncan@haskell.org>**20110227125008 |
|---|
| 621 | Ignore-this: de73667cc9b4165c1df797a23307acd6 |
|---|
| 622 | Previously when multiple instances of the same package are installed, |
|---|
| 623 | e.g. in global and user dbs, we would often end up selecting the wrong |
|---|
| 624 | instance. Now we select the user one consistently which will solve the |
|---|
| 625 | problem in most (but not all) cases. |
|---|
| 626 | ] |
|---|
| 627 | [Bump version to 0.9.6 |
|---|
| 628 | Duncan Coutts <duncan@community.haskell.org>**20110214024354 |
|---|
| 629 | Ignore-this: dfbecb3839c895fac3b31f3bca190085 |
|---|
| 630 | ] |
|---|
| 631 | [Adjust the amount of output for the -v verbosity level in a few places |
|---|
| 632 | Duncan Coutts <duncan@community.haskell.org>**20110213234115 |
|---|
| 633 | Ignore-this: ac14de4aeb99fcec70650040179b75af |
|---|
| 634 | For several commands, including install the -v verbosity level had |
|---|
| 635 | far too much useless internall stuff in it. Reduced the amount of |
|---|
| 636 | output from configuring the compiler, getting installed package and |
|---|
| 637 | the dependency planner. The extra detail is still available via -v3. |
|---|
| 638 | ] |
|---|
| 639 | [Remove UnresolvedDependency type |
|---|
| 640 | Duncan Coutts <duncan@community.haskell.org>**20110213230016 |
|---|
| 641 | Ignore-this: 3823588c1222187f1c9cbb17299cb75c |
|---|
| 642 | ] |
|---|
| 643 | [Remove code related to the dep resolver that is now redundant |
|---|
| 644 | Duncan Coutts <duncan@community.haskell.org>**20110213230002 |
|---|
| 645 | Ignore-this: 782ca2a1078fa8249f8f056a1a23c634 |
|---|
| 646 | ] |
|---|
| 647 | [Remove now-unused utilities from World module |
|---|
| 648 | Duncan Coutts <duncan@community.haskell.org>**20110213225041 |
|---|
| 649 | Ignore-this: ad1a368f71538602e5bbe2716a466d35 |
|---|
| 650 | No longer needed now that the world target is handled via UserTarget. |
|---|
| 651 | ] |
|---|
| 652 | [Use the new modular dep resolver interface in the various commands |
|---|
| 653 | Duncan Coutts <duncan@community.haskell.org>**20110213224955 |
|---|
| 654 | Ignore-this: 5fc85032554b125ae2a715273e7b9de3 |
|---|
| 655 | Also minor tweak to InstallPlan.remove |
|---|
| 656 | ] |
|---|
| 657 | [Insert a separate fetch stage to the install process |
|---|
| 658 | Duncan Coutts <duncan@community.haskell.org>**20110213200824 |
|---|
| 659 | Ignore-this: 647cc9a52d61b5b03771e79ef2dc84e6 |
|---|
| 660 | Helps to clarify things now that different kinds of packages |
|---|
| 661 | are fetched in different ways. |
|---|
| 662 | ] |
|---|
| 663 | [Tweak implementation of fetchRepoTarball |
|---|
| 664 | Duncan Coutts <duncan@community.haskell.org>**20110213200109 |
|---|
| 665 | Ignore-this: d1bb9fa0414f2bc70aa72086968b60e1 |
|---|
| 666 | ] |
|---|
| 667 | [New interface to the dep resolver that allows modular policy construction |
|---|
| 668 | Duncan Coutts <duncan@community.haskell.org>**20110213195009 |
|---|
| 669 | Ignore-this: cf218b8e70792cd0f4506c016787784f |
|---|
| 670 | Allows shorter and clearer code for the various ways the resolver is used. |
|---|
| 671 | ] |
|---|
| 672 | [Partial rewrite of cabal list and info commands |
|---|
| 673 | Duncan Coutts <duncan@community.haskell.org>**20110213194627 |
|---|
| 674 | Ignore-this: cd924d6acb75052a04ea6e4459bd4ddd |
|---|
| 675 | The new user target system requires a change in how cabal info works. |
|---|
| 676 | Instead of just giving package names and looking them up in the |
|---|
| 677 | available package index, we can now specify names with versions or |
|---|
| 678 | version constraints which means we want the info to be about that |
|---|
| 679 | version in particular. We now list many installed and available |
|---|
| 680 | versions and mark which ones are preferred or not. Also fix a bug |
|---|
| 681 | for packages that are only installed, not available. |
|---|
| 682 | ] |
|---|
| 683 | [Add a new module for handling user targets |
|---|
| 684 | Duncan Coutts <duncan@community.haskell.org>**20110213194150 |
|---|
| 685 | Ignore-this: 3a4b4ccd9d52d882a3a079d715a68c |
|---|
| 686 | This will allow us to increase the range of targets that cabal |
|---|
| 687 | commands can support. The new ones are local directory targets, |
|---|
| 688 | local cabal files, local tarballs and remote tarballs by URL. |
|---|
| 689 | Also a better way of doing the special "world" target. |
|---|
| 690 | ] |
|---|
| 691 | [Add a fetchPackage utility |
|---|
| 692 | Duncan Coutts <duncan@community.haskell.org>**20110213194034 |
|---|
| 693 | Ignore-this: 821d447afde378889305e1205ad3ad23 |
|---|
| 694 | Works for any package identified by PackageLocation |
|---|
| 695 | rather than just for repo packages. |
|---|
| 696 | ] |
|---|
| 697 | [Add a few more Tar Entries utilities |
|---|
| 698 | Duncan Coutts <duncan@community.haskell.org>**20110213193911 |
|---|
| 699 | Ignore-this: 9930ec082016efa9c3bed77d5eddbb17 |
|---|
| 700 | ] |
|---|
| 701 | [Add a local path and type param to PackageLocation |
|---|
| 702 | Duncan Coutts <duncan@community.haskell.org>**20110213193218 |
|---|
| 703 | Ignore-this: 91781b96f082d3311734659ddf802638 |
|---|
| 704 | So we can now use PackageLocation FilePath or Maybe FilePath to |
|---|
| 705 | describe what we know about the fetch status of package tarballs. |
|---|
| 706 | ] |
|---|
| 707 | [Separate WorldPkgInfo type from UnresolvedDependency type |
|---|
| 708 | Duncan Coutts <duncan@community.haskell.org>**20110213185006 |
|---|
| 709 | Ignore-this: 975965c1238b1f58a53303cb046c42bd |
|---|
| 710 | Currently just a renamed copy of UnresolvedDependency but called |
|---|
| 711 | WorldPkgInfo and defined in the World module. This is in preparation |
|---|
| 712 | to remove all other uses of the UnresolvedDependency type. |
|---|
| 713 | ] |
|---|
| 714 | [Rename AvailablePackageSource to PackageLocation |
|---|
| 715 | Duncan Coutts <duncan@community.haskell.org>**20110213183529 |
|---|
| 716 | Ignore-this: 40ee6b79bf284593491ae65228489d44 |
|---|
| 717 | And remove import list for Types module, just import it all |
|---|
| 718 | ] |
|---|
| 719 | [Split out a FetchUtils module |
|---|
| 720 | Duncan Coutts <duncan@community.haskell.org>**20110213183446 |
|---|
| 721 | Ignore-this: 19241ca08b50fe9547d780b6b2030955 |
|---|
| 722 | And rename fetchPackage function to the more accurate fetchRepoTarball |
|---|
| 723 | ] |
|---|
| 724 | [Remove unnecessary Maybe from LocalUnpackedPackage dir filepath |
|---|
| 725 | Duncan Coutts <duncan@community.haskell.org>**20110213165151 |
|---|
| 726 | Ignore-this: 44594d24516ba1286542b499fe5c804c |
|---|
| 727 | We can just use "." instead of Nothing |
|---|
| 728 | ] |
|---|
| 729 | [Change the interface of the two package index search functions |
|---|
| 730 | Duncan Coutts <duncan@community.haskell.org>**20110123193706 |
|---|
| 731 | Ignore-this: 1bb6d4d282bdcb029abb30409553e69b |
|---|
| 732 | Move the ambiguity checking to the only use site |
|---|
| 733 | Both normal and substring search now return [(PackageName, [pkg])] |
|---|
| 734 | ] |
|---|
| 735 | [cabal report uses the correct URIs and authenticates with username and passwords flags |
|---|
| 736 | Vo Minh Thu <noteed@gmail.com>**20101108184927 |
|---|
| 737 | Ignore-this: 9e07434d1547aaeb022743a88cfa092c |
|---|
| 738 | ] |
|---|
| 739 | [Change position of --only-dependencies in --help listing |
|---|
| 740 | Duncan Coutts <duncan@community.haskell.org>**20110213171956 |
|---|
| 741 | Ignore-this: 83fdf75d5d8977bb98d823d656a71335 |
|---|
| 742 | Move it next to the --upgrade-dependencies flag |
|---|
| 743 | ] |
|---|
| 744 | [Add an --only-dependencies flag to "install" (see ticket #697) |
|---|
| 745 | josh.hoyt@galois.com**20100630213736 |
|---|
| 746 | Ignore-this: 3c769bcd7a85ee34d1b4787807b75bfc |
|---|
| 747 | |
|---|
| 748 | This flag installs only the dependencies of the packages that were |
|---|
| 749 | explicitly mentioned on the command line. This is useful for using |
|---|
| 750 | cabal-install in development environments, where the developer needs |
|---|
| 751 | the dependencies to build the package in development, but does not yet |
|---|
| 752 | want to install the package itself. |
|---|
| 753 | ] |
|---|
| 754 | [Change my email address |
|---|
| 755 | Duncan Coutts <duncan@community.haskell.org>**20110123202100 |
|---|
| 756 | Ignore-this: 924e6bbc7f659a03f6c84d4c32487bf6 |
|---|
| 757 | ] |
|---|
| 758 | [fix a comment typo of 'according' |
|---|
| 759 | Jens Petersen <petersen@haskell.org>**20110122135339 |
|---|
| 760 | Ignore-this: b7960675f98710b7b5caa046d136ac4d |
|---|
| 761 | ] |
|---|
| 762 | [Preserve executable permissions on unpack |
|---|
| 763 | Duncan Coutts <duncan@community.haskell.org>**20110117144900 |
|---|
| 764 | Ignore-this: 5964f7b96672dd84f646bfa80dc51612 |
|---|
| 765 | ] |
|---|
| 766 | [Fix time version regexp in bootstrap script |
|---|
| 767 | Duncan Coutts <duncan@haskell.org>**20101123174641 |
|---|
| 768 | Ignore-this: 685b17e087526c99faee430447c4af5e |
|---|
| 769 | Sigh, having to use shell script and regexps... |
|---|
| 770 | ] |
|---|
| 771 | [Bump upper bounds on core packages for ghc-7 |
|---|
| 772 | Duncan Coutts <duncan@haskell.org>**20101123174328 |
|---|
| 773 | Ignore-this: e098c14caa914e3865767d7ba124e8c |
|---|
| 774 | ] |
|---|
| 775 | [Increase default HTTP package version in bootstrap script |
|---|
| 776 | Duncan Coutts <duncan@haskell.org>**20101123173124 |
|---|
| 777 | Ignore-this: 73209e2ee376d55d30b453adef08d7b2 |
|---|
| 778 | ] |
|---|
| 779 | [Update dependencies in the boostrap.sh script |
|---|
| 780 | Duncan Coutts <duncan@haskell.org>**20101123172516 |
|---|
| 781 | Ignore-this: 29b09c71664a289e0c021df552227d6 |
|---|
| 782 | ] |
|---|
| 783 | [Bump time package dependency for ghc-7 |
|---|
| 784 | Duncan Coutts <duncan@haskell.org>**20101123170957 |
|---|
| 785 | Ignore-this: a397e0ee880ee403dc553ee9ae6b6994 |
|---|
| 786 | ] |
|---|
| 787 | [Add an extra note about the http proxy decompression issue |
|---|
| 788 | Duncan Coutts <duncan@haskell.org>**20101027095034 |
|---|
| 789 | Ignore-this: d5ac6be96ae78a92f93cf56a9e7b3ccb |
|---|
| 790 | ] |
|---|
| 791 | [Use "maybeDecompress" to handle broken proxies that transparenty decompress network streams. Closes #622, #686. Cabal update could fail in some cases, see http://trac.haskell.org/http/ticket/109283 |
|---|
| 792 | Dmitry Astapov <dastapov@gmail.com>**20101026212606 |
|---|
| 793 | Ignore-this: 3686236834c6cb56b3a754c36a8d7305 |
|---|
| 794 | ] |
|---|
| 795 | [Added GZipUtils to handle .tar files with the same code as .tar.gz |
|---|
| 796 | Dmitry Astapov <dastapov@gmail.com>**20101026202343 |
|---|
| 797 | Ignore-this: bef7a20f60de2298fc60759f1ca298d9 |
|---|
| 798 | ] |
|---|
| 799 | [Update to use Cabal-1.10.x |
|---|
| 800 | Duncan Coutts <duncan@haskell.org>**20101016192816 |
|---|
| 801 | Ignore-this: 86d2b4bd91fe1c33e095b06438f6f972 |
|---|
| 802 | ] |
|---|
| 803 | [Add a TODO about fetch --constraint flags |
|---|
| 804 | Duncan Coutts <duncan@haskell.org>**20100901210351 |
|---|
| 805 | Ignore-this: 973318ae9ebc87c095935493c446a39d |
|---|
| 806 | ] |
|---|
| 807 | [Simplify the bash command completion |
|---|
| 808 | Duncan Coutts <duncan@haskell.org>**20101010204158 |
|---|
| 809 | Ignore-this: 6398703acc0702c18141da4ce09d20db |
|---|
| 810 | Fixes #741. Patch contributed by Jan Braun <janbraun@gmx.net> |
|---|
| 811 | ] |
|---|
| 812 | [Do not add lower case .hs files as modules in cabal init |
|---|
| 813 | Duncan Coutts <duncan@haskell.org>**20100614213536 |
|---|
| 814 | Ignore-this: 622461952f03fd6f80f0037b7336a676 |
|---|
| 815 | There's still something wrong with the recursive dir traversal. |
|---|
| 816 | It fails in some large cases. |
|---|
| 817 | ] |
|---|
| 818 | [Disable cabal upgrade and add cabal install --upgrade-dependencies |
|---|
| 819 | Duncan Coutts <duncan@haskell.org>**20100531130306 |
|---|
| 820 | Ignore-this: 6469bf32fad573bf3a5c2340bd384ef6 |
|---|
| 821 | cabal upgrade now gives an error message telling people to use install |
|---|
| 822 | or, if they know what they're doing, install --upgrade-dependencies |
|---|
| 823 | ] |
|---|
| 824 | [Bump version to 0.9.2 |
|---|
| 825 | Duncan Coutts <duncan@haskell.org>**20100531121422 |
|---|
| 826 | Ignore-this: 219c5a2d27e6aaa9639ec88265f3a40f |
|---|
| 827 | ] |
|---|
| 828 | [Minor tweaks in haddock code |
|---|
| 829 | Duncan Coutts <duncan@haskell.org>**20100528200326 |
|---|
| 830 | Ignore-this: 170fda28b6b709efc6c5efd171317e83 |
|---|
| 831 | ] |
|---|
| 832 | [Use new simplistic package resolver for cabal unpack |
|---|
| 833 | Duncan Coutts <duncan@haskell.org>**20100528011523 |
|---|
| 834 | Ignore-this: 85496633aa154e3601633ea9c6f43038 |
|---|
| 835 | ] |
|---|
| 836 | [Add cabal fetch --no-deps and --dry-run flags |
|---|
| 837 | Duncan Coutts <duncan@haskell.org>**20100528003508 |
|---|
| 838 | Ignore-this: adfaf937df9f81bdc489c8163651d588 |
|---|
| 839 | Allows fetching one or more packages but without fetching their |
|---|
| 840 | dependencies and thus not requiring that a consistent install plan |
|---|
| 841 | can be found. On the other hand --no-deps means that there is no |
|---|
| 842 | guarantee that the fetched packages can actually be installed. |
|---|
| 843 | ] |
|---|
| 844 | [Use the simplistic available package resolver in cabal fetch |
|---|
| 845 | Duncan Coutts <duncan@haskell.org>**20100518125509 |
|---|
| 846 | Ignore-this: 5a1caa0e64772c61dfd71b3567c6b218 |
|---|
| 847 | Not yet connected up to the user interface. |
|---|
| 848 | ] |
|---|
| 849 | [Add a simplistic resolver for available packages that ignores dependencies |
|---|
| 850 | Duncan Coutts <duncan@haskell.org>**20100518125357 |
|---|
| 851 | Ignore-this: a31605572aa4485898422a9d29aa6630 |
|---|
| 852 | Suitable for cabal fetch/unpack but not for installation. |
|---|
| 853 | ] |
|---|
| 854 | [Rearrange dependency resolver code slightly |
|---|
| 855 | Duncan Coutts <duncan@haskell.org>**20100517111624 |
|---|
| 856 | Ignore-this: ed0d580800ccee9b1065acb559727f3f |
|---|
| 857 | ] |
|---|
| 858 | [In fetch code, move dep resolution into separate function |
|---|
| 859 | Duncan Coutts <duncan@haskell.org>**20100517111336 |
|---|
| 860 | Ignore-this: 860dfe33f51c1840afb61987e68b27d2 |
|---|
| 861 | ] |
|---|
| 862 | [Add initial internal support for more kinds of available package |
|---|
| 863 | Duncan Coutts <duncan@haskell.org>**20100511030941 |
|---|
| 864 | Ignore-this: 74c25c42c83819c38608aed18c5ab214 |
|---|
| 865 | Previously only named packages from a remote package archive, or |
|---|
| 866 | the unpacked package in the current directory. Now also add unpacked |
|---|
| 867 | packages in particular directories, local tarballs and remote tarballs. |
|---|
| 868 | No support in the user interface or dep planning yet. |
|---|
| 869 | ] |
|---|
| 870 | [Use non-Char8 ByteString.readFile for reading 00-index.tar.gz |
|---|
| 871 | Duncan Coutts <duncan@haskell.org>**20100117113849 |
|---|
| 872 | Ignore-this: b19b19959b7915c202c31337ce2084bc |
|---|
| 873 | Was showing up on windows as an error decompressing after cabal update. |
|---|
| 874 | Thanks to Tamar Christina for reporting and helping track down the bug. |
|---|
| 875 | ] |
|---|
| 876 | [Remove redundant dry-run support from world file code |
|---|
| 877 | Duncan Coutts <duncan@haskell.org>**20100510054824 |
|---|
| 878 | Ignore-this: fbb943e80a9a54673cbdb1805218bd80 |
|---|
| 879 | ] |
|---|
| 880 | [Bump version to 0.9.1 |
|---|
| 881 | Duncan Coutts <duncan@haskell.org>**20100510034013 |
|---|
| 882 | Ignore-this: 200668c3328194ea707ae61d0d64aa3c |
|---|
| 883 | New world file feature |
|---|
| 884 | ] |
|---|
| 885 | [Workaround for 'cabal install world' problem with empty world file |
|---|
| 886 | Duncan Coutts <duncan@haskell.org>**20100510033051 |
|---|
| 887 | Ignore-this: e5bd44421b734dc3246d43d3ed8c17d1 |
|---|
| 888 | The current dep resolver does not like an empty set of targets |
|---|
| 889 | along with a non-empty set of constraints. |
|---|
| 890 | ] |
|---|
| 891 | [Update a coupld copyright and maintainer notes |
|---|
| 892 | Duncan Coutts <duncan@haskell.org>**20100510032848 |
|---|
| 893 | Ignore-this: bdcc380fc8d631e7ff0f2275bd03b81e |
|---|
| 894 | ] |
|---|
| 895 | [A bunch of TODOs for the Install module |
|---|
| 896 | Duncan Coutts <duncan@haskell.org>**20100510032756 |
|---|
| 897 | Ignore-this: 41711e805de2e5052a8b647722215857 |
|---|
| 898 | ] |
|---|
| 899 | [Misc minor tweaks in Main |
|---|
| 900 | Duncan Coutts <duncan@haskell.org>**20100510032736 |
|---|
| 901 | Ignore-this: 83ec8d4121c0db0327d14e6058feaf6e |
|---|
| 902 | ] |
|---|
| 903 | [Update world file entries ignoring version constraints |
|---|
| 904 | Duncan Coutts <duncan@haskell.org>**20100510032457 |
|---|
| 905 | Ignore-this: aa8134bb28d56a32906223a60838f8af |
|---|
| 906 | Otherwise it is easy to add impossible constraints to the world file. |
|---|
| 907 | cabal install 'foo > 1' && cabal install 'foo < 1' |
|---|
| 908 | Would give us a world file with both constraints. |
|---|
| 909 | ] |
|---|
| 910 | [Rearrange the code for the world file feature |
|---|
| 911 | Duncan Coutts <duncan@haskell.org>**20100510032121 |
|---|
| 912 | Ignore-this: 8ce13765f2ef77bf562a2e1e38c777b |
|---|
| 913 | Better better organisation of concerns for it to be in the Install |
|---|
| 914 | module rather than in Main which is mostly concerned with command |
|---|
| 915 | line handling. |
|---|
| 916 | ] |
|---|
| 917 | [Add plumbing in install code for global flags and target list |
|---|
| 918 | Duncan Coutts <duncan@haskell.org>**20100510031328 |
|---|
| 919 | Ignore-this: 7a559f8b13f43f724f5796c3f7c2bea3 |
|---|
| 920 | ] |
|---|
| 921 | [Make the logs dir a proper config item and pass it to the install code |
|---|
| 922 | Duncan Coutts <duncan@haskell.org>**20100427011318 |
|---|
| 923 | Ignore-this: 294ef784ebe8ee374035d182b10a6f5 |
|---|
| 924 | ] |
|---|
| 925 | [Rearrange installation code to make it a bit clearer |
|---|
| 926 | Duncan Coutts <duncan@haskell.org>**20100426005110 |
|---|
| 927 | Ignore-this: 70f9f1fdaf805eabc75d2cebe70153ed |
|---|
| 928 | ] |
|---|
| 929 | [Updated patch for world-file support |
|---|
| 930 | Peter Robinson <thaldyron@gmail.com>**20091103202927 |
|---|
| 931 | Ignore-this: 9333ae1f97d44246802504f779efc279 |
|---|
| 932 | Update 2: now uses writeFileAtomic from Cabal |
|---|
| 933 | This is a new patch for Ticket #199; it adds the "--one-shot" option. |
|---|
| 934 | A world file entry contains the package-name, package-version, and |
|---|
| 935 | user flags (if any). |
|---|
| 936 | For example, the file entry generated by |
|---|
| 937 | # cabal install stm-io-hooks --flags="-debug" |
|---|
| 938 | looks like this: |
|---|
| 939 | # stm-io-hooks -any --flags="-debug" |
|---|
| 940 | To rebuild/upgrade the packages in world (e.g. when updating the compiler) |
|---|
| 941 | use |
|---|
| 942 | cabal install world |
|---|
| 943 | Installing package 'foo' without adding it to the world file: |
|---|
| 944 | # cabal install foo --one-shot |
|---|
| 945 | |
|---|
| 946 | ] |
|---|
| 947 | [Import installDirsOptions from Cabal lib |
|---|
| 948 | Duncan Coutts <duncan@haskell.org>**20100401165125] |
|---|
| 949 | [Cope with intra-package deps when constructing install plans |
|---|
| 950 | Duncan Coutts <duncan@haskell.org>**20100320215331 |
|---|
| 951 | Ignore-this: 17d34d739024686d2f3a75a01e1e1c48 |
|---|
| 952 | ] |
|---|
| 953 | [Don't generate #! lines in Setup.hs files in cabal init |
|---|
| 954 | Duncan Coutts <duncan@haskell.org>**20100114033501 |
|---|
| 955 | We don't want to encourage multiple ways of invoking Setup |
|---|
| 956 | The one true (cross-platform) way is: runghc Setup |
|---|
| 957 | ] |
|---|
| 958 | [Fix the display of the license in "cabal list" output |
|---|
| 959 | Duncan Coutts <duncan@haskell.org>**20100113191913] |
|---|
| 960 | [Adjust to the change in the type of getInstalledPackages |
|---|
| 961 | Duncan Coutts <duncan@haskell.org>**20091229212020 |
|---|
| 962 | It used to return Maybe, now it always gives us a PackageIndex. |
|---|
| 963 | This depends on an API change in Cabal-1.9.x. |
|---|
| 964 | ] |
|---|
| 965 | [Display the exception for failed downloads |
|---|
| 966 | Duncan Coutts <duncan@haskell.org>**20091222132526 |
|---|
| 967 | Not great but better than nothing. |
|---|
| 968 | ] |
|---|
| 969 | [Remove now-unused compat module |
|---|
| 970 | Duncan Coutts <duncan@haskell.org>**20091222130959] |
|---|
| 971 | [Change the default config on Windows to per-user installs |
|---|
| 972 | Duncan Coutts <duncan@haskell.org>**20091228165411 |
|---|
| 973 | Ignore-this: afccc874f09efd2b8298ee01163c0462 |
|---|
| 974 | Slightly experimental. We should look out for unexpected consequences. |
|---|
| 975 | ] |
|---|
| 976 | [Move downloadURI to HttpUtils module |
|---|
| 977 | Duncan Coutts <duncan@haskell.org>**20091222095152 |
|---|
| 978 | Ignore-this: 6a80342e38c618ed5fe541fc7dfbec08 |
|---|
| 979 | And use exceptions rather than return codes. |
|---|
| 980 | ] |
|---|
| 981 | [Fix a couple more ghc-6.12 -Wall warnings |
|---|
| 982 | Duncan Coutts <duncan@haskell.org>**20091222075821 |
|---|
| 983 | Ignore-this: 429818d8b6fc528a155162e0eb67913d |
|---|
| 984 | ] |
|---|
| 985 | [Fix cabal sdist --snapshot |
|---|
| 986 | Duncan Coutts <duncan@haskell.org>**20091222080537 |
|---|
| 987 | Ignore-this: a1f090e1bae653645cf5d55055deab3d |
|---|
| 988 | ] |
|---|
| 989 | [Distribution/Client/InstallSymlink.hs: explicitely import 'catch' and friend tom System.IO |
|---|
| 990 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220220105 |
|---|
| 991 | Ignore-this: d7a4b304976bc8ce42dfae963d58694c |
|---|
| 992 | ] |
|---|
| 993 | [Distribution/Client/Install.hs: removed unused 'compilerTemplateEnv' from import |
|---|
| 994 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220215508 |
|---|
| 995 | Ignore-this: e850510c11ec648f6fcec6d85ce23a82 |
|---|
| 996 | ] |
|---|
| 997 | [Distribution/Client/Unpack.hs: removed redundant import |
|---|
| 998 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220214545 |
|---|
| 999 | Ignore-this: c1120ee8014c4c1bd3177857798e563d |
|---|
| 1000 | ] |
|---|
| 1001 | [Distribution/Client/Setup.hs: suppress warning (unused variable) |
|---|
| 1002 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220214448 |
|---|
| 1003 | Ignore-this: 382010da79af4baf200a406d478cc5ec |
|---|
| 1004 | ] |
|---|
| 1005 | [Distribution/Client/Haddock.hs: removed redundant instances |
|---|
| 1006 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220213757 |
|---|
| 1007 | Ignore-this: efffb1cd16256496f70314cce6001c6f |
|---|
| 1008 | ] |
|---|
| 1009 | [Distribution/Client/BuildReports/Anonymous.hs: removed unused import of BuildResult |
|---|
| 1010 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220213350 |
|---|
| 1011 | Ignore-this: 50c449c43df34ceb1b13c61788bb0758 |
|---|
| 1012 | ] |
|---|
| 1013 | [Distribution/Client/IndexUtils.hs: fixed warning on -Wall (unused result) |
|---|
| 1014 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220211940 |
|---|
| 1015 | Ignore-this: a74aded9f99237229dbfe762fcf20478 |
|---|
| 1016 | ] |
|---|
| 1017 | [Distribution/Client/SrcDist.hs: fixed warning on -Wall (unused result) |
|---|
| 1018 | Sergei Trofimovich <slyfox@community.haskell.org>**20091220211717 |
|---|
| 1019 | Ignore-this: d7d4fade7b5e5464d114995efdabb216 |
|---|
| 1020 | ] |
|---|
| 1021 | [Fix fromFlag error in upgrade |
|---|
| 1022 | Duncan Coutts <duncan@haskell.org>**20091221140752 |
|---|
| 1023 | Ignore-this: 82eee01373bf121c1c00a7c5d27bac0f |
|---|
| 1024 | Use the missing defaultInstallFlags. |
|---|
| 1025 | ] |
|---|
| 1026 | [Reorder commands in cabal --help output |
|---|
| 1027 | Duncan Coutts <duncan@haskell.org>**20091219034451] |
|---|
| 1028 | [Use the standard form of copyright statement in BSD3 license template |
|---|
| 1029 | Duncan Coutts <duncan@haskell.org>**20091219031017 |
|---|
| 1030 | See http://www.opensource.org/licenses/bsd-license.php |
|---|
| 1031 | ] |
|---|
| 1032 | [Remove stability feature from cabal init |
|---|
| 1033 | Duncan Coutts <duncan@haskell.org>**20091219030855 |
|---|
| 1034 | The stability field in .cabal files is deprecated since it's mostly useless. |
|---|
| 1035 | ] |
|---|
| 1036 | [Make the cabal init command line flag names follow the normal convention |
|---|
| 1037 | Duncan Coutts <duncan@haskell.org>**20091219030747 |
|---|
| 1038 | Using hyphens rather than upper case. |
|---|
| 1039 | ] |
|---|
| 1040 | [Fix reporting of installed program versions in cabal list |
|---|
| 1041 | Duncan Coutts <duncan@haskell.org>**20091218232501 |
|---|
| 1042 | We do not know if programs are installed or not so report |
|---|
| 1043 | unknown rather than saying it is not installed. |
|---|
| 1044 | ] |
|---|
| 1045 | [Update the README |
|---|
| 1046 | Duncan Coutts <duncan@haskell.org>**20091218173459 |
|---|
| 1047 | Ignore-this: adde7b8406a92837f295ed3d57037827 |
|---|
| 1048 | ] |
|---|
| 1049 | [Bump head to new dev version 0.9.x |
|---|
| 1050 | Duncan Coutts <duncan@haskell.org>**20091218172245 |
|---|
| 1051 | Ignore-this: 378cbb031583940fb4e301d0e640c396 |
|---|
| 1052 | ] |
|---|
| 1053 | [Update various .cabal bits |
|---|
| 1054 | Duncan Coutts <duncan@haskell.org>**20091218171642 |
|---|
| 1055 | Ignore-this: a54518592cf53158e6a01ff7ad8753ef |
|---|
| 1056 | ] |
|---|
| 1057 | [Update the bootstrap script to work with ghc-6.12 |
|---|
| 1058 | Duncan Coutts <duncan@haskell.org>**20091218165234 |
|---|
| 1059 | Ignore-this: b4aca31e814592f1cd6d53cf5a461859 |
|---|
| 1060 | We can no longer expect mtl, network and parsec to be installed. |
|---|
| 1061 | ] |
|---|
| 1062 | [Update the changelog for 0.8 |
|---|
| 1063 | Duncan Coutts <duncan@haskell.org>**20091218165221 |
|---|
| 1064 | Ignore-this: 35f1f722b56c7eec84574e9d4be0d0f3 |
|---|
| 1065 | ] |
|---|
| 1066 | [Fix combination of --global --package-db when compiling Setup.hs scripts |
|---|
| 1067 | Duncan Coutts <duncan@haskell.org>**20091218165119 |
|---|
| 1068 | Ignore-this: 6a78eaf39c21dfc692458f1046d852ce |
|---|
| 1069 | The order of the package db stack is important. |
|---|
| 1070 | ] |
|---|
| 1071 | [Allow numeric fields in tar headers that use binary format |
|---|
| 1072 | Duncan Coutts <duncan@haskell.org>**20091123063734 |
|---|
| 1073 | This is an old non-standard extension that some tar tools still use. |
|---|
| 1074 | ] |
|---|
| 1075 | [Create all parent directories of extraced files |
|---|
| 1076 | Duncan Coutts <duncan@haskell.org>**20091122080446 |
|---|
| 1077 | Previously only created the immediate parent directory. |
|---|
| 1078 | No rely more heavily on the file security check to make |
|---|
| 1079 | sure we are not writing files outside of the target area. |
|---|
| 1080 | ] |
|---|
| 1081 | [Ignore PAX entries when checking for tarbombs |
|---|
| 1082 | Duncan Coutts <duncan@haskell.org>**20091122080255 |
|---|
| 1083 | When checking for tarbombs, ignore PAX entry types 'g' and 'x'. |
|---|
| 1084 | These do not get extracted so their names do not matter. |
|---|
| 1085 | ] |
|---|
| 1086 | [fixed 'cabal sdist' |
|---|
| 1087 | Sergei Trofimovich <slyfox@community.haskell.org>**20091113165833 |
|---|
| 1088 | Ignore-this: a9061231f18a00fda66bd73e0d4bac86 |
|---|
| 1089 | ] |
|---|
| 1090 | [Build with ghc-6.6 |
|---|
| 1091 | Duncan Coutts <duncan@haskell.org>**20091110113735 |
|---|
| 1092 | Ignore-this: 939c6d822b78b7966ccc37a0739ecc81 |
|---|
| 1093 | ] |
|---|
| 1094 | [Fix base 4 exceptions in #ifdef WIN32 code section |
|---|
| 1095 | Duncan Coutts <duncan@haskell.org>**20091110112415 |
|---|
| 1096 | Ignore-this: 53ad5959a1964ff8eccf93c17dd1e3d7 |
|---|
| 1097 | ] |
|---|
| 1098 | [Add a couple checks to "cabal unpack" and improve the messages |
|---|
| 1099 | Duncan Coutts <duncan@haskell.org>**20091104142658 |
|---|
| 1100 | Ignore-this: 896cf992e5862393bb5e451a337545fa |
|---|
| 1101 | ] |
|---|
| 1102 | [Fix bootstrap (#599) |
|---|
| 1103 | Robin Green <greenrd@greenrd.org>**20091102073414 |
|---|
| 1104 | Ignore-this: 67304fe1c399d679c0c7a7d0d01cff45 |
|---|
| 1105 | |
|---|
| 1106 | ] |
|---|
| 1107 | [Switch to using some Utils from the Cabal lib |
|---|
| 1108 | Duncan Coutts <duncan@haskell.org>**20091102150528 |
|---|
| 1109 | Ignore-this: fe55da37cc85ce495a65949506ac3e42 |
|---|
| 1110 | Remove local copies. Also fixes a bug recently introduced |
|---|
| 1111 | in the writeFileAtomic function, spotted by Peter Robinson. |
|---|
| 1112 | ] |
|---|
| 1113 | [Parly fix building with ghc-6.6 |
|---|
| 1114 | Duncan Coutts <duncan@haskell.org>**20091028163849 |
|---|
| 1115 | Ignore-this: 75f4ae640c2c2d7d46cd4c00d835b618 |
|---|
| 1116 | The new cabal init stuff needs some work. |
|---|
| 1117 | ] |
|---|
| 1118 | [Fix building with ghc-6.12 |
|---|
| 1119 | Duncan Coutts <duncan@haskell.org>**20091028163719 |
|---|
| 1120 | Ignore-this: eb25e32b7696174a4702394ea59e03bc |
|---|
| 1121 | ] |
|---|
| 1122 | [Fix building with ghc-6.8 |
|---|
| 1123 | Duncan Coutts <duncan@haskell.org>**20091028163352 |
|---|
| 1124 | Ignore-this: 9dc502c70fd2e5940729656168030953 |
|---|
| 1125 | ] |
|---|
| 1126 | [Allow building with base 4 |
|---|
| 1127 | Duncan Coutts <duncan@haskell.org>**20091028163148 |
|---|
| 1128 | Ignore-this: 2ac8c966a4a014af94a21b7801331c19 |
|---|
| 1129 | ] |
|---|
| 1130 | [Bump version number a bit |
|---|
| 1131 | Duncan Coutts <duncan@haskell.org>**20091028133527 |
|---|
| 1132 | Ignore-this: e2a10bab1da090c8aeedeb6dba74cb3 |
|---|
| 1133 | ] |
|---|
| 1134 | [Update list of modules (so sdist works) |
|---|
| 1135 | Duncan Coutts <duncan@haskell.org>**20091028133513 |
|---|
| 1136 | Ignore-this: 91abc5688f598cf0a5ecf96855ccfe76 |
|---|
| 1137 | ] |
|---|
| 1138 | [Update new cabal init code for the recent package id changes |
|---|
| 1139 | Duncan Coutts <duncan@haskell.org>**20091028132037 |
|---|
| 1140 | Ignore-this: 83f7b69c2a0727dba37dd7242a4f5791 |
|---|
| 1141 | ] |
|---|
| 1142 | [Initial go at converting to the new Cabal-1.8 installed package system |
|---|
| 1143 | Duncan Coutts <duncan@haskell.org>**20091022123946 |
|---|
| 1144 | Ignore-this: 5e6665609e707de9dc73612b0efd25e9 |
|---|
| 1145 | It works by ignoring the possibility that there could be multiple |
|---|
| 1146 | installed packages sharing the same source package Id. We just pick |
|---|
| 1147 | the "top most" one which is usually ok. We make no attempt to check |
|---|
| 1148 | that we are using consistent installed packages. |
|---|
| 1149 | ] |
|---|
| 1150 | [Update for changes to finalizePackageDescription |
|---|
| 1151 | Duncan Coutts <duncan@haskell.org>**20091018173233 |
|---|
| 1152 | Ignore-this: f60d2b66f9f0e223599ab15ac78d112c |
|---|
| 1153 | ] |
|---|
| 1154 | [add 'init' subcommand for initializing project cabalisation |
|---|
| 1155 | Brent Yorgey <byorgey@cis.upenn.edu>**20091011165644 |
|---|
| 1156 | Ignore-this: df51056f9e138d38d64f48c86cdf6376 |
|---|
| 1157 | ] |
|---|
| 1158 | [Collecting some heuristics for creating an initial cabal file |
|---|
| 1159 | benedikt.huber@gmail.com**20090902160332 |
|---|
| 1160 | Ignore-this: 50eb36690a888529d209f9da5af15078 |
|---|
| 1161 | ] |
|---|
| 1162 | [Apply suggestion for bootstrap failure message |
|---|
| 1163 | Duncan Coutts <duncan@haskell.org>**20091020212319 |
|---|
| 1164 | Ignore-this: 70ed13514b158db7672f5d16a9ed90ea |
|---|
| 1165 | ghc ticket #3602 |
|---|
| 1166 | ] |
|---|
| 1167 | [Fix calculation of paths in check for bindir symlink overwriting |
|---|
| 1168 | Duncan Coutts <duncan@haskell.org>**20090829004959 |
|---|
| 1169 | Ignore-this: d4dd8e12c03d23ce935de94cedbda257 |
|---|
| 1170 | We were doing it wrong, but Linux realpath() C function was letting |
|---|
| 1171 | us get away with it. The Solaris realpath() is stricter. |
|---|
| 1172 | The new implementation is also simpler, relying on the fact that |
|---|
| 1173 | the canonicalizePath function will resolve symlinks. |
|---|
| 1174 | ] |
|---|
| 1175 | [Require Cabal lib version 1.7.3 |
|---|
| 1176 | Duncan Coutts <duncan@haskell.org>**20090707095944 |
|---|
| 1177 | Needs recent api changes. |
|---|
| 1178 | ] |
|---|
| 1179 | [Make the documentation toggle determine if we make the haddock index |
|---|
| 1180 | Duncan Coutts <duncan@haskell.org>**20090707013030 |
|---|
| 1181 | Previously the --haddock-index=template flag controled both the |
|---|
| 1182 | template used and whether it's used at all. When no path was set |
|---|
| 1183 | then it was not used. The problem with that is that since we are |
|---|
| 1184 | not enabling this feature by default then the default is blank. |
|---|
| 1185 | That is the default config file would look like: |
|---|
| 1186 | -- haddock-index: |
|---|
| 1187 | which doesn't help anyone discover what it means or what a |
|---|
| 1188 | sensible setting would be. By having a separate toggle to |
|---|
| 1189 | enable/disable we can have a default for the index file which |
|---|
| 1190 | makes it easy to discover in the config file: |
|---|
| 1191 | -- documentation: False |
|---|
| 1192 | -- doc-index-file: $datadir/doc/index.html |
|---|
| 1193 | All the user has to do is uncomment the first line and use True. |
|---|
| 1194 | ] |
|---|
| 1195 | [Be less noisy about warning about packages with missing docs |
|---|
| 1196 | Duncan Coutts <duncan@haskell.org>**20090707005149] |
|---|
| 1197 | [Use defaultInstallFlags as the defaults |
|---|
| 1198 | Duncan Coutts <duncan@haskell.org>**20090707004836] |
|---|
| 1199 | [Move regenerateHaddockIndex more out-of-line in the Install module |
|---|
| 1200 | Duncan Coutts <duncan@haskell.org>**20090707003722 |
|---|
| 1201 | Also update the code somewhat following the changes in |
|---|
| 1202 | the Cabal API for path templates and substitutions. |
|---|
| 1203 | ] |
|---|
| 1204 | [Use $pkgroot/package/$pkgid.tar.gz as tarball URL |
|---|
| 1205 | Duncan Coutts <duncan@haskell.org>**20090704170602] |
|---|
| 1206 | [#516, maintains a per-user index of haddock docs |
|---|
| 1207 | Andrea Vezzosi <sanzhiyan@gmail.com>**20090607170512 |
|---|
| 1208 | Ignore-this: 1114f6b944043781c4bf99620573b1cc |
|---|
| 1209 | If the haddock-index flag is set it keeps an index |
|---|
| 1210 | of the haddock documentation of the packages in |
|---|
| 1211 | the global and user databases |
|---|
| 1212 | ] |
|---|
| 1213 | [Now supporting explicit --user or --global switches in bootstrap.sh with usage feedback for bad args |
|---|
| 1214 | Dino Morelli <dino@ui3.info>**20090613150958 |
|---|
| 1215 | Ignore-this: 490a4fcdd5bc1940d6f32d71b0a042a5 |
|---|
| 1216 | This change was adapted from work submitted to the cabal-devel mailing list by Jason Dusek. |
|---|
| 1217 | ] |
|---|
| 1218 | [add message to 'package not found' error advising to run 'cabal update'. (#497) |
|---|
| 1219 | Brent Yorgey <byorgey@cis.upenn.edu>**20090611171233] |
|---|
| 1220 | [Fix sdist |
|---|
| 1221 | Duncan Coutts <duncan@haskell.org>**20090605023441 |
|---|
| 1222 | Fix handling of base dir in tar file creation. |
|---|
| 1223 | ] |
|---|
| 1224 | [Fix use of deprecated version constructors |
|---|
| 1225 | Duncan Coutts <duncan@haskell.org>**20090604180500] |
|---|
| 1226 | [Only report preferred new versions of cabal-install are available |
|---|
| 1227 | Duncan Coutts <duncan@haskell.org>**20090604175726 |
|---|
| 1228 | That is, use the "preferred-versions" mechanism when deciding |
|---|
| 1229 | whether there is a new version available. This would allow us to |
|---|
| 1230 | upload a new version without everyone immediately being told to |
|---|
| 1231 | get it and try it out. |
|---|
| 1232 | ] |
|---|
| 1233 | [Make cabal upload/check print out the error messages reported by the server |
|---|
| 1234 | Duncan Coutts <duncan@haskell.org>**20090604124836 |
|---|
| 1235 | The code to do it was already there but we were checking for the |
|---|
| 1236 | mime type text/plain using just (==) when in fact the server reports |
|---|
| 1237 | text/plain; charset="ISO-8859-1" |
|---|
| 1238 | so we have to parse the field a bit better (still a bit of a hack). |
|---|
| 1239 | ] |
|---|
| 1240 | [Require latest Cabal lib version |
|---|
| 1241 | Duncan Coutts <duncan@haskell.org>**20090603102312] |
|---|
| 1242 | [Improve formatting of cabal check output |
|---|
| 1243 | Duncan Coutts <duncan@haskell.org>**20090603102254] |
|---|
| 1244 | [Only apply preferences to base if its version is unbounded above |
|---|
| 1245 | Duncan Coutts <duncan@haskell.org>**20090603101623 |
|---|
| 1246 | Fixes ticket #485. This means that for constraints like: |
|---|
| 1247 | build-depends: base >= 3 && < 5 |
|---|
| 1248 | we will pick version 4. However we will continue to apply the |
|---|
| 1249 | version 3 preference for things like: |
|---|
| 1250 | build-depends: base >= 3 |
|---|
| 1251 | Where there is no upper bound on the version. Note that we now |
|---|
| 1252 | also ignore preferences for base given on the command line. |
|---|
| 1253 | We should implement #483 to split prefs from shims. |
|---|
| 1254 | ] |
|---|
| 1255 | [Improve the parse error message for package name/deps |
|---|
| 1256 | Duncan Coutts <duncan@haskell.org>**20090321154623 |
|---|
| 1257 | Make it clear that it's the specification of the package name that |
|---|
| 1258 | is at fault rather than the package to which the name refers. |
|---|
| 1259 | ] |
|---|
| 1260 | [Debian in their wisdom decided to build network against parsec 3. |
|---|
| 1261 | Duncan Coutts <duncan@haskell.org>**20090308142925 |
|---|
| 1262 | So checking for parsec 2 fails. We don't strictly need parsec, it's |
|---|
| 1263 | just a dependency of network, so remove the check. |
|---|
| 1264 | ] |
|---|
| 1265 | [Simplify version ranges before printing in error messages |
|---|
| 1266 | Duncan Coutts <duncan@haskell.org>**20090531191346 |
|---|
| 1267 | Part of ticket #369 |
|---|
| 1268 | ] |
|---|
| 1269 | [Use new top handler, should get better error messages |
|---|
| 1270 | Duncan Coutts <duncan@haskell.org>**20090531190318] |
|---|
| 1271 | [Fix uses of deprecated stuff |
|---|
| 1272 | Duncan Coutts <duncan@haskell.org>**20090531190239] |
|---|
| 1273 | [New development branch, version 0.7 |
|---|
| 1274 | Duncan Coutts <duncan@haskell.org>**20090531184336 |
|---|
| 1275 | Update to development version of Cabal |
|---|
| 1276 | ] |
|---|
| 1277 | [Solaris 9 /bin/sh doesn't like the ! syntax in bootstrap.sh |
|---|
| 1278 | Duncan Coutts <duncan@haskell.org>**20090318091730] |
|---|
| 1279 | [Clarify the instructions in the README and bootstrap.sh |
|---|
| 1280 | Duncan Coutts <duncan@haskell.org>**20090315125407 |
|---|
| 1281 | Addresses the complaint in ticket #523. |
|---|
| 1282 | ] |
|---|
| 1283 | [Select Configuration file via env var CABAL_CONFIG. |
|---|
| 1284 | Paolo Losi <paolo.losi@gmail.com>**20090223005251 |
|---|
| 1285 | Ignore-this: 26e5ded85cb69cb3a19cd57680a8a362 |
|---|
| 1286 | ] |
|---|
| 1287 | [Update tar code based on new tar package |
|---|
| 1288 | Duncan Coutts <duncan@haskell.org>**20090301174949] |
|---|
| 1289 | [Actually does compile with unix-1.0 that comes with ghc-6.6 |
|---|
| 1290 | Duncan Coutts <duncan@haskell.org>**20090221154605 |
|---|
| 1291 | ghc-6.6.1 came with unix-2.1 |
|---|
| 1292 | ] |
|---|
| 1293 | [TAG 0.6.2 |
|---|
| 1294 | Duncan Coutts <duncan@haskell.org>**20090219130720] |
|---|
| 1295 | [Update the README |
|---|
| 1296 | Duncan Coutts <duncan@haskell.org>**20090219130705] |
|---|
| 1297 | [Add missing other-modules |
|---|
| 1298 | Duncan Coutts <duncan@haskell.org>**20090218235206] |
|---|
| 1299 | [Add extra assertion into the top down dep planner |
|---|
| 1300 | Duncan Coutts <duncan@haskell.org>**20090218234650] |
|---|
| 1301 | [Bump version to 0.6.2 |
|---|
| 1302 | Duncan Coutts <duncan@haskell.org>**20090218231016] |
|---|
| 1303 | [Update changelog for 0.6.2 release |
|---|
| 1304 | Duncan Coutts <duncan@haskell.org>**20090218230918] |
|---|
| 1305 | [Tweaks to the bootstrap script |
|---|
| 1306 | Duncan Coutts <duncan@haskell.org>**20090218223943 |
|---|
| 1307 | Update Cabal lib version to 1.6.0.2 |
|---|
| 1308 | Implement a couple shell script coding style recommendations. |
|---|
| 1309 | ] |
|---|
| 1310 | [Disable the upgrade command for now. |
|---|
| 1311 | Duncan Coutts <duncan@haskell.org>**20090218221752] |
|---|
| 1312 | [Add warnings in the case that no remote servers have been specified |
|---|
| 1313 | Duncan Coutts <duncan@haskell.org>**20090216181424 |
|---|
| 1314 | It's not strictly an error but it can be rather confusing. |
|---|
| 1315 | ] |
|---|
| 1316 | [Put an explanation of the config file format at the top in comments. |
|---|
| 1317 | Duncan Coutts <duncan@haskell.org>**20090215190817] |
|---|
| 1318 | [Change the field order in the initial config file. |
|---|
| 1319 | Duncan Coutts <duncan@haskell.org>**20090215190727 |
|---|
| 1320 | Also update the name of one excluded field. |
|---|
| 1321 | ] |
|---|
| 1322 | [Put the default logging and reporting setting in the initial config file. |
|---|
| 1323 | Duncan Coutts <duncan@haskell.org>**20090215190524] |
|---|
| 1324 | [Complete the implementation of --build-summary=TEMPLATE |
|---|
| 1325 | Duncan Coutts <duncan@haskell.org>**20090215190254 |
|---|
| 1326 | Actually respect the new flag. It's actually a list of template files |
|---|
| 1327 | and all specified files get written to. This allows us to specify |
|---|
| 1328 | a default build log file and also have the user write to extra ones. |
|---|
| 1329 | The summary file template can contain $pkgid $compiler etc. |
|---|
| 1330 | ] |
|---|
| 1331 | [Rearrange user interface for build logging |
|---|
| 1332 | Duncan Coutts <duncan@haskell.org>**20090215185800 |
|---|
| 1333 | The new options (as described in ticket #501) are: |
|---|
| 1334 | --build-summary=TEMPLATE |
|---|
| 1335 | --build-log=TEMPLATE |
|---|
| 1336 | --remote-build-reporting=LEVEL |
|---|
| 1337 | where LELVEL `elem` [none,anonymous,detailed] |
|---|
| 1338 | ] |
|---|
| 1339 | [always check environment variables for HTTP proxy first |
|---|
| 1340 | Ganesh Sittampalam <ganesh.sittampalam@credit-suisse.com>**20090210230736] |
|---|
| 1341 | [Improve the cabal update notice |
|---|
| 1342 | Duncan Coutts <duncan@haskell.org>**20090209211844] |
|---|
| 1343 | [Don't report that packages are cached at the default verbosity level |
|---|
| 1344 | Duncan Coutts <duncan@haskell.org>**20090209201228 |
|---|
| 1345 | It's just not that useful. Report it at -v verobisty level, and |
|---|
| 1346 | change the text and formatting. |
|---|
| 1347 | ] |
|---|
| 1348 | [Fix #490, unpack now gives a proper error message. |
|---|
| 1349 | Andrea Vezzosi <sanzhiyan@gmail.com>**20090208165240 |
|---|
| 1350 | Ignore-this: 358dd291624f8858a52ae2ff27a7e0c2 |
|---|
| 1351 | ] |
|---|
| 1352 | [Use the new withTempDirectory function |
|---|
| 1353 | Duncan Coutts <duncan@haskell.org>**20090202012255 |
|---|
| 1354 | In particular it means that install will unpack packages into |
|---|
| 1355 | different temp dirs on each invocation which means that running |
|---|
| 1356 | install on the same package for different compilers at the same |
|---|
| 1357 | time should not clash. This is quite useful for testing. |
|---|
| 1358 | ] |
|---|
| 1359 | [Add compat withTempDirectory function |
|---|
| 1360 | Duncan Coutts <duncan@haskell.org>**20090202011917 |
|---|
| 1361 | This is already in Cabal HEAD but we cannot use that yet |
|---|
| 1362 | ] |
|---|
| 1363 | [Add homepage and bug-reports fields to .cabal file |
|---|
| 1364 | Duncan Coutts <duncan@haskell.org>**20090201225021] |
|---|
| 1365 | [Remove the prefernece and cabal lib version flags from the InstallFlags |
|---|
| 1366 | Duncan Coutts <duncan@haskell.org>**20090126012412 |
|---|
| 1367 | They are now in the ConfigExFlags instead. |
|---|
| 1368 | ] |
|---|
| 1369 | [Change the install and configure modules to use the extended config flags |
|---|
| 1370 | Duncan Coutts <duncan@haskell.org>**20090126011942] |
|---|
| 1371 | [Add ConfigExFlags into the configure, install and upgrade commands |
|---|
| 1372 | Duncan Coutts <duncan@haskell.org>**20090126010918 |
|---|
| 1373 | Not yet passed all the way through. |
|---|
| 1374 | ] |
|---|
| 1375 | [Add ConfigExFlags and related command |
|---|
| 1376 | Duncan Coutts <duncan@haskell.org>**20090126010132 |
|---|
| 1377 | This is for configure flags that we use in the configure command in the |
|---|
| 1378 | cabal command line tool that are not present in runghc Setup configure |
|---|
| 1379 | command line interface. These are flags that we are moving from the |
|---|
| 1380 | install command, so that we can also use them for the configure command. |
|---|
| 1381 | Initially it's just the flags for specifying package version preferences |
|---|
| 1382 | and the cabal library version. We'll add constraints later. |
|---|
| 1383 | ] |
|---|
| 1384 | [Remove unnecessary qualified use of ConfigFlags |
|---|
| 1385 | Duncan Coutts <duncan@haskell.org>**20090126003951] |
|---|
| 1386 | [Make configure use the dependency resolver |
|---|
| 1387 | Duncan Coutts <duncan@haskell.org>**20090125170951 |
|---|
| 1388 | This means it makes smarter decisions and also decions that are more |
|---|
| 1389 | consistent with those taken by the install command. |
|---|
| 1390 | ] |
|---|
| 1391 | [Update HTTP dep in the bootstrap script |
|---|
| 1392 | Duncan Coutts <duncan@haskell.org>**20090123160700] |
|---|
| 1393 | [Improve error message when ghc or ghc-pkg are mismatched or not found |
|---|
| 1394 | Duncan Coutts <duncan@haskell.org>**20090123160550] |
|---|
| 1395 | [Don't use grep -e, solaris does not like it |
|---|
| 1396 | Duncan Coutts <duncan@haskell.org>**20090123160443] |
|---|
| 1397 | [Fix some FIXMEs and do some TODOs in the list command |
|---|
| 1398 | Duncan Coutts <duncan@haskell.org>**20090123004810 |
|---|
| 1399 | Now properly prints if the haddock docs are installed and if the |
|---|
| 1400 | tarball is cached. It did print them before but it was lying. |
|---|
| 1401 | ] |
|---|
| 1402 | [Add initial implementation of cabal info |
|---|
| 1403 | Duncan Coutts <duncan@haskell.org>**20090119025202 |
|---|
| 1404 | It provides more detailed information on a particular package. |
|---|
| 1405 | Still a few TODOs. Fixes #361, #449 and #456. |
|---|
| 1406 | ] |
|---|
| 1407 | [Only print the config file location for the global --help |
|---|
| 1408 | Duncan Coutts <duncan@haskell.org>**20090116175900] |
|---|
| 1409 | [Update to using HTTP-4000.x |
|---|
| 1410 | Duncan Coutts <duncan@haskell.org>**20090116135646 |
|---|
| 1411 | This should fix a long-standing bug with http proxies (ticket #352) |
|---|
| 1412 | It should also make downloads faster, or at least use less memory. |
|---|
| 1413 | ] |
|---|
| 1414 | [Parse compiler field from old config files correctly |
|---|
| 1415 | Duncan Coutts <duncan@haskell.org>**20090116002851 |
|---|
| 1416 | Really old versions of cabal-install generated a default config |
|---|
| 1417 | containing "compiler: GHC". Sadly the new way we generate the |
|---|
| 1418 | config file parser from the command line parser means we end up |
|---|
| 1419 | with a case-sensitive parser as it only matches the exact |
|---|
| 1420 | command line flags. So we hack it and add in a traditional |
|---|
| 1421 | parser for that field only. Really the command line and config |
|---|
| 1422 | file infrastructure needs rewriting again. Sigh. |
|---|
| 1423 | ] |
|---|
| 1424 | [Improve the printing of config file field parse error messages |
|---|
| 1425 | Duncan Coutts <duncan@haskell.org>**20090116001421] |
|---|
| 1426 | [Read install dirs correctly from old-style .cabal/config files |
|---|
| 1427 | Duncan Coutts <duncan@haskell.org>**20090116001321 |
|---|
| 1428 | Should fix ticket #365 |
|---|
| 1429 | ] |
|---|
| 1430 | [Note in the README that zlib needs the zlib C lib package |
|---|
| 1431 | Duncan Coutts <duncan@haskell.org>**20090116000541] |
|---|
| 1432 | [Traditional /bin/sh portability fixes for bootstrap.sh |
|---|
| 1433 | Duncan Coutts <duncan@haskell.org>**20090115113227] |
|---|
| 1434 | [More improvments to the bootstrap.sh script |
|---|
| 1435 | Duncan Coutts <duncan@haskell.org>**20090115110612] |
|---|
| 1436 | [Rewrite the bootstrap.sh script |
|---|
| 1437 | Duncan Coutts <duncan@haskell.org>**20090115102210 |
|---|
| 1438 | Hopefully more useful and more robust. In particular it does not |
|---|
| 1439 | download and install packages where suitable versions are already |
|---|
| 1440 | installed. It also checks for deps. |
|---|
| 1441 | ] |
|---|
| 1442 | [Don't add installed constraints system packages that are not installed |
|---|
| 1443 | Duncan Coutts <duncan@haskell.org>**20090114143540 |
|---|
| 1444 | In particular fixes a problem (ticket #439) where we required the |
|---|
| 1445 | installed version of ghc-prim with compilers that do not have that |
|---|
| 1446 | package such as ghc-6.8 and older, hugs, nhc, lhc etc. |
|---|
| 1447 | ] |
|---|
| 1448 | [cabal update now reports if a newer version of cabal-install is available |
|---|
| 1449 | Duncan Coutts <duncan@haskell.org>**20090114133220] |
|---|
| 1450 | [Warn if a package index from a remote repo is 15 days or older |
|---|
| 1451 | Duncan Coutts <duncan@haskell.org>**20090114124827 |
|---|
| 1452 | For example it will print: |
|---|
| 1453 | Warning: The package list for 'hackage.haskell.org' is 16 days old. |
|---|
| 1454 | Run 'cabal update' to get the latest list of available packages. |
|---|
| 1455 | ] |
|---|
| 1456 | [Don't display the category in cabal list output |
|---|
| 1457 | Duncan Coutts <duncan@haskell.org>**20090114003549 |
|---|
| 1458 | It is probably not sufficiently useful to justify the space it takes. |
|---|
| 1459 | ] |
|---|
| 1460 | [In cabal list, always display available and installed versions |
|---|
| 1461 | Duncan Coutts <duncan@haskell.org>**20090114003329 |
|---|
| 1462 | Previously we omitted the line if it was not installed, or was |
|---|
| 1463 | not available. However that confused people because it was not |
|---|
| 1464 | obvious that it would list both. Now it shows something like: |
|---|
| 1465 | * foo |
|---|
| 1466 | Latest version available: 1.0 |
|---|
| 1467 | Latest version installed: [ Not installed ] |
|---|
| 1468 | ] |
|---|
| 1469 | [Print the location of the config file in the global --help |
|---|
| 1470 | Duncan Coutts <duncan@haskell.org>**20090113192215 |
|---|
| 1471 | Ticket #413 |
|---|
| 1472 | ] |
|---|
| 1473 | [Improve the cabal --help output |
|---|
| 1474 | Duncan Coutts <duncan@haskell.org>**20090113192058 |
|---|
| 1475 | Put the general info message at the top and make the explanation of |
|---|
| 1476 | installing a hackage package somewhat clearer. |
|---|
| 1477 | ] |
|---|
| 1478 | [Display examples in cabal install --help |
|---|
| 1479 | Duncan Coutts <duncan@haskell.org>**20090113161426 |
|---|
| 1480 | Examples: |
|---|
| 1481 | cabal install Package in the current directory |
|---|
| 1482 | cabal install foo Package from the hackage server |
|---|
| 1483 | cabal install foo-1.0 Specific version of a package |
|---|
| 1484 | cabal install 'foo < 2' Constrained package version |
|---|
| 1485 | ] |
|---|
| 1486 | [Print a newline after entering upload password |
|---|
| 1487 | Duncan Coutts <duncan@haskell.org>**20090113142604 |
|---|
| 1488 | So we end up with: |
|---|
| 1489 | Hackage password: |
|---|
| 1490 | Uploading test.tar.gz... |
|---|
| 1491 | rather than: |
|---|
| 1492 | Hackage password: Uploading test.tar.gz... |
|---|
| 1493 | ] |
|---|
| 1494 | [Respect the --package-db flag when compiling Setup.hs |
|---|
| 1495 | Duncan Coutts <duncan@haskell.org>**20081221184755 |
|---|
| 1496 | Fixes ticket #394. |
|---|
| 1497 | ] |
|---|
| 1498 | [Use a more precise package substitution test in improvePlan |
|---|
| 1499 | Duncan Coutts <duncan@haskell.org>**20081219215922 |
|---|
| 1500 | This is where we take a valid plan and we "improve" it by swapping |
|---|
| 1501 | installed packages for available packages wherever possible. This |
|---|
| 1502 | change is to the condition we use in deciding if it is safe to use |
|---|
| 1503 | the installed package in place of a reinstall. Previously we checked |
|---|
| 1504 | that the dependencies of the installed version were exactly the same |
|---|
| 1505 | as the dependencies we were planning to reinstall with. That was |
|---|
| 1506 | valid but rather conservative. It caused problems in some situations |
|---|
| 1507 | where the installed package did not exactly match the available |
|---|
| 1508 | package (eg when using development versions of a package or of ghc). |
|---|
| 1509 | What we do now is test if the extra constraints implied by selecting |
|---|
| 1510 | the installed version are consistent with the existing set of |
|---|
| 1511 | constraints. This involves threading the constraint set around. In |
|---|
| 1512 | theory this should even cope with adding additional packages to the |
|---|
| 1513 | plan as a result of selecting an installed package. |
|---|
| 1514 | ] |
|---|
| 1515 | [Use installed constraints instead of hiding versions of the base package |
|---|
| 1516 | Duncan Coutts <duncan@haskell.org>**20081219193740 |
|---|
| 1517 | We want to stop cabal-install from accidentally trying to upgrade |
|---|
| 1518 | the base package since this doesn't work in most cases. We used to |
|---|
| 1519 | achieve that by deleting the base package from the available package |
|---|
| 1520 | index. We now do it by leaving the package index as is and instead |
|---|
| 1521 | adding a constraint that we pick only an installed version of base. |
|---|
| 1522 | This is a nicer hack and has the potential to give better error |
|---|
| 1523 | messages. |
|---|
| 1524 | ] |
|---|
| 1525 | [Extend the invariant on the Constraints ADT |
|---|
| 1526 | Duncan Coutts <duncan@haskell.org>**20081219192309 |
|---|
| 1527 | It now carries around the original version of the database |
|---|
| 1528 | purely so that it can do a much more extensive consistency |
|---|
| 1529 | check. Packages are never gained or lost, just transfered |
|---|
| 1530 | between pots in various slightly tricky ways. |
|---|
| 1531 | ] |
|---|
| 1532 | [Fix constraint set handling for installed constraints |
|---|
| 1533 | Duncan Coutts <duncan@haskell.org>**20081219182328 |
|---|
| 1534 | A rather subtle bug. The code was actually correct but the transitionsTo |
|---|
| 1535 | assertion was not accounting for a transition between the case where |
|---|
| 1536 | a package's available version had been excluded and then the whole thing |
|---|
| 1537 | got excluded by a version constraint. It counted one side as a loss |
|---|
| 1538 | without a corresponding gain on the other side. |
|---|
| 1539 | ] |
|---|
| 1540 | [Add a install/upgrade --preference='foo < 2' flag |
|---|
| 1541 | Duncan Coutts <duncan@haskell.org>**20081218213849 |
|---|
| 1542 | This behaves just like the preferred-versions file in the hackage index |
|---|
| 1543 | but it can be specified on the command line or in a config file. |
|---|
| 1544 | ] |
|---|
| 1545 | [Generalise the way preferences are specified to the resolver |
|---|
| 1546 | Duncan Coutts <duncan@haskell.org>**20081218204917 |
|---|
| 1547 | We still provide a default global policy, but now we give a |
|---|
| 1548 | list of per-package preferences which can be on the version |
|---|
| 1549 | or installed state. Later preferences override earlier ones. |
|---|
| 1550 | ] |
|---|
| 1551 | [Workaround for a url parsing bug that breaks http proxies that need auth |
|---|
| 1552 | Duncan Coutts <duncan@haskell.org>**20081218165541 |
|---|
| 1553 | Diagnosis and patch from Valery V. Vorotyntsev. |
|---|
| 1554 | ] |
|---|
| 1555 | [Implement cabal install --constraint= |
|---|
| 1556 | Duncan Coutts <duncan@haskell.org>**20081216235032 |
|---|
| 1557 | Connect up the existing user interface with the new dep resolver api. |
|---|
| 1558 | ] |
|---|
| 1559 | [Have the dep resolver take constraints and targets separately |
|---|
| 1560 | Duncan Coutts <duncan@haskell.org>**20081216233446] |
|---|
| 1561 | [Add PackageInstalledConstraint to the PackageConstraint type |
|---|
| 1562 | Duncan Coutts <duncan@haskell.org>**20081215224538 |
|---|
| 1563 | This should be useful for things like preventing upgrading |
|---|
| 1564 | the base package for ghc. |
|---|
| 1565 | ] |
|---|
| 1566 | [A bit more renaming in the top down resolver |
|---|
| 1567 | Duncan Coutts <duncan@haskell.org>**20081215224324] |
|---|
| 1568 | [Take preferences into account in the bogus resolver |
|---|
| 1569 | Duncan Coutts <duncan@haskell.org>**20081215221728] |
|---|
| 1570 | [Mostly renaming and trivial refactoring |
|---|
| 1571 | Duncan Coutts <duncan@haskell.org>**20081215221034] |
|---|
| 1572 | [Change the dep resolver interface to pass constraints separately from targets |
|---|
| 1573 | Duncan Coutts <duncan@haskell.org>**20081215215634 |
|---|
| 1574 | This lets us specify constraints for packages that are not targets. |
|---|
| 1575 | ] |
|---|
| 1576 | [Rename and rearrange the PackagePreferences type |
|---|
| 1577 | Duncan Coutts <duncan@haskell.org>**20081215204836] |
|---|
| 1578 | [Don't re-export PackageName from Distribution.Client.Dependency |
|---|
| 1579 | Duncan Coutts <duncan@haskell.org>**20081215203617 |
|---|
| 1580 | It used to be a type alias. |
|---|
| 1581 | ] |
|---|
| 1582 | [Use the Platform type rather than passing around the OS and Arch separately |
|---|
| 1583 | Duncan Coutts <duncan@haskell.org>**20081215202856] |
|---|
| 1584 | [Bump version to 0.6.1 |
|---|
| 1585 | Duncan Coutts <duncan@haskell.org>**20081210224713] |
|---|
| 1586 | [Tidy up the unpack code |
|---|
| 1587 | Duncan Coutts <duncan@haskell.org>**20081210223633 |
|---|
| 1588 | Also fix a bug for tar files that contain entries for files |
|---|
| 1589 | without preceding entries for the directories they are in. |
|---|
| 1590 | ] |
|---|
| 1591 | [Clean up the code in Main |
|---|
| 1592 | Duncan Coutts <duncan@haskell.org>**20081210223242 |
|---|
| 1593 | Make the names more regular and set up the various flags |
|---|
| 1594 | in a more regular way. |
|---|
| 1595 | ] |
|---|
| 1596 | [Use (\_ -> []) instead of mempty to avoid funky Monoid instance |
|---|
| 1597 | Duncan Coutts <duncan@haskell.org>**20081210223106 |
|---|
| 1598 | This would let us build with ghc-6.4 or nhc if it were not for other issues. |
|---|
| 1599 | ] |
|---|
| 1600 | [Fix warning aobut -fffi in OPTIONS pragma |
|---|
| 1601 | Duncan Coutts <duncan@haskell.org>**20081203005449] |
|---|
| 1602 | [Mention where files get downloaded to at verbosity level verbose |
|---|
| 1603 | Duncan Coutts <duncan@haskell.org>**20081203004427] |
|---|
| 1604 | [Implement 'cabal unpack' command as in #390 |
|---|
| 1605 | Andrea Vezzosi <sanzhiyan@gmail.com>**20081113185923] |
|---|
| 1606 | [Remove use of tabs |
|---|
| 1607 | Duncan Coutts <duncan@haskell.org>**20081122163527] |
|---|
| 1608 | [Put explicit lower bound on version of base |
|---|
| 1609 | Duncan Coutts <duncan@haskell.org>**20081122163151 |
|---|
| 1610 | It does not build with ghc-6.4.2, missing Functor instance for Either. |
|---|
| 1611 | ] |
|---|
| 1612 | [Use a more general fix for "cabal install base" |
|---|
| 1613 | Duncan Coutts <duncan@haskell.org>**20081122163026 |
|---|
| 1614 | It's not specific to LHC. Normally we prevent upgrading of base |
|---|
| 1615 | since it's unlikely to work and would normally be accidental. |
|---|
| 1616 | However when the user explicitly asks to upgrade base then we |
|---|
| 1617 | let them do that and they can keep the pieces when it breaks. |
|---|
| 1618 | ] |
|---|
| 1619 | [Warn about use of tabs |
|---|
| 1620 | Duncan Coutts <duncan@haskell.org>**20081122154309] |
|---|
| 1621 | [Only send the base file name when uploading tarballs |
|---|
| 1622 | Duncan Coutts <duncan@haskell.org>**20080903230334 |
|---|
| 1623 | The server should ignore the dir part anyway but there's no |
|---|
| 1624 | need to send it in the first place. |
|---|
| 1625 | ] |
|---|
| 1626 | [Slightly better lhc support. |
|---|
| 1627 | Lemmih <lemmih@gmail.com>**20081121034338 |
|---|
| 1628 | Ignore-this: 9f51f465aa87d1c6677ca492f877ecd6 |
|---|
| 1629 | ] |
|---|
| 1630 | [TAG 0.6.0 |
|---|
| 1631 | Duncan Coutts <duncan@haskell.org>**20081011195420] |
|---|
| 1632 | [Bump version to 0.6.0 |
|---|
| 1633 | Duncan Coutts <duncan@haskell.org>**20081011195314] |
|---|
| 1634 | [Improve the README, better install instructions |
|---|
| 1635 | Duncan Coutts <duncan@haskell.org>**20081011185919 |
|---|
| 1636 | And slightly better intro guide to the main commands. |
|---|
| 1637 | ] |
|---|
| 1638 | [Bump versions of deps in the bootstrap script |
|---|
| 1639 | Duncan Coutts <duncan@haskell.org>**20081011184937] |
|---|
| 1640 | [Add Eq for a couple types in the anon build reports |
|---|
| 1641 | Duncan Coutts <duncan@haskell.org>**20081011184825] |
|---|
| 1642 | [Drop silly export |
|---|
| 1643 | Duncan Coutts <duncan@haskell.org>**20081011184805] |
|---|
| 1644 | [Apparnetly builds with unix-2.0 which is what came with ghc-6.6 |
|---|
| 1645 | Duncan Coutts <duncan@haskell.org>**20081010234836] |
|---|
| 1646 | [Fix the -i dir for compiling Setup.hs when it's the current dir |
|---|
| 1647 | Duncan Coutts <duncan@haskell.org>**20081010234558 |
|---|
| 1648 | map "" to "." |
|---|
| 1649 | ] |
|---|
| 1650 | [Tidy up the preferred-versions file parser |
|---|
| 1651 | Duncan Coutts <duncan@haskell.org>**20081010070105] |
|---|
| 1652 | [Bump version number and dependencies |
|---|
| 1653 | Duncan Coutts <duncan@haskell.org>**20081010065854] |
|---|
| 1654 | [Relax deps to build with ghc-6.10 |
|---|
| 1655 | Duncan Coutts <duncan@haskell.org>**20081007230701] |
|---|
| 1656 | [Handle build reports with missing logs better |
|---|
| 1657 | Duncan Coutts <duncan@haskell.org>**20081007230635] |
|---|
| 1658 | [Add DownloadFailed as a possible failure for installation |
|---|
| 1659 | Duncan Coutts <duncan@haskell.org>**20081007230418 |
|---|
| 1660 | Should now be caught during installing a bunch of packages |
|---|
| 1661 | and not cause immediate overall failure. It should instead |
|---|
| 1662 | be treated like any other package build failure and be |
|---|
| 1663 | reported at the end and only affect other dependent builds. |
|---|
| 1664 | ] |
|---|
| 1665 | [Fix search paths for compiling Setup.hs scrips |
|---|
| 1666 | Duncan Coutts <duncan@haskell.org>**20081007213630 |
|---|
| 1667 | and in particular for bootstrapping the Cabal lib. |
|---|
| 1668 | ] |
|---|
| 1669 | [Fix selecting paired packages |
|---|
| 1670 | Duncan Coutts <duncan@haskell.org>**20081007062930 |
|---|
| 1671 | Previously when we selected base 4 (and as a consequence |
|---|
| 1672 | slected base 3 too) we didn't properly trace the dependencies |
|---|
| 1673 | of base 3 so if nothing actually required base 3 then we ended |
|---|
| 1674 | up with base 3 in the solution but not with syb which it |
|---|
| 1675 | depends on. Consequently the solution was invalid. |
|---|
| 1676 | Now we select the paired package properly (hopefully). |
|---|
| 1677 | ] |
|---|
| 1678 | [Take preferred versions into account in dependency planning |
|---|
| 1679 | Duncan Coutts <duncan@haskell.org>**20081006055129 |
|---|
| 1680 | This means we can now globally prefer base 3 rather than 4. |
|---|
| 1681 | However we need to be slightly careful or we end up deciding |
|---|
| 1682 | to do silly things like rebuild haskell98 against base 3. |
|---|
| 1683 | That would happen because the h98 package doesn't constrain |
|---|
| 1684 | the choice to one or the other and we would prefer base 3. |
|---|
| 1685 | So we have to add that we really prefer whatever it uses |
|---|
| 1686 | currently (if any). |
|---|
| 1687 | ] |
|---|
| 1688 | [Pass the package suggested version constraints through to the resolver |
|---|
| 1689 | Duncan Coutts <duncan@haskell.org>**20081006042758 |
|---|
| 1690 | Not used yet. |
|---|
| 1691 | ] |
|---|
| 1692 | [Fix selection of paired packages |
|---|
| 1693 | Duncan Coutts <duncan@haskell.org>**20081006040616] |
|---|
| 1694 | [Read preferred versions from the package index |
|---|
| 1695 | Duncan Coutts <duncan@haskell.org>**20081006030259 |
|---|
| 1696 | From a file named 'preferred-versions' in the 00-index.tar.gz |
|---|
| 1697 | If there are several they are combined. Contents is like: |
|---|
| 1698 | base < 4 |
|---|
| 1699 | one suggested version constraint per line. |
|---|
| 1700 | ] |
|---|
| 1701 | [Refactor and update the hackage index reading code |
|---|
| 1702 | Duncan Coutts <duncan@haskell.org>**20081005202747] |
|---|
| 1703 | [Print more details about what is to be installed with -v |
|---|
| 1704 | Duncan Coutts <duncan@haskell.org>**20081005075556 |
|---|
| 1705 | Reports if installs are new or reinstalls and for reinstalls |
|---|
| 1706 | prints what dependencies have changed. |
|---|
| 1707 | ] |
|---|
| 1708 | [When finalising paired packages, cope with there being multiple choices |
|---|
| 1709 | Duncan Coutts <duncan@haskell.org>**20081005053821 |
|---|
| 1710 | For ordinary packages we selected a single version which means |
|---|
| 1711 | we added an equality constraint. As a consequence we used to |
|---|
| 1712 | assume there was only one version left when finalising. For |
|---|
| 1713 | paired packages there may be two versions left if the package |
|---|
| 1714 | did not directly constrain the choice to just one. If there is |
|---|
| 1715 | more than one version remaining then we have to pick between |
|---|
| 1716 | them. At the moment we still pick the highest version, but |
|---|
| 1717 | later we can take a global preference or polciy into account. |
|---|
| 1718 | ] |
|---|
| 1719 | [When selecting paired packages, select both. |
|---|
| 1720 | Duncan Coutts <duncan@haskell.org>**20081005053804] |
|---|
| 1721 | [Handle constraints on paired packages |
|---|
| 1722 | Duncan Coutts <duncan@haskell.org>**20081005051919 |
|---|
| 1723 | The trick is that when applying constraints to paired |
|---|
| 1724 | packages, the constraint has to exclude both packages at |
|---|
| 1725 | once. We exclude the pair together or not at all. If it |
|---|
| 1726 | would only exclude one then we discard the constraint. |
|---|
| 1727 | ] |
|---|
| 1728 | [Add the notion of paired packages to the Constraints ADT |
|---|
| 1729 | Duncan Coutts <duncan@haskell.org>**20081005013141 |
|---|
| 1730 | Packages like base-3 and base-4 are paired. This means they are |
|---|
| 1731 | supposed to be treated equivalently in some contexts. Paired |
|---|
| 1732 | packages are installed packages with the same name where one |
|---|
| 1733 | version depends on the other. |
|---|
| 1734 | ] |
|---|
| 1735 | [Make InstalledPackage an instance of PackageFixedDeps |
|---|
| 1736 | Duncan Coutts <duncan@haskell.org>**20081005012741] |
|---|
| 1737 | [Add the glue code to actully report excluded packages |
|---|
| 1738 | Duncan Coutts <duncan@haskell.org>**20081005001400 |
|---|
| 1739 | Now displayed in the output of install --dry-run -v |
|---|
| 1740 | ] |
|---|
| 1741 | [Have Constraints.constrain report the excluded packages |
|---|
| 1742 | Duncan Coutts <duncan@haskell.org>**20081004235006 |
|---|
| 1743 | Each time we apply a constraint we can end up excluding some |
|---|
| 1744 | extra package. Report that list of packages because it is |
|---|
| 1745 | quite interesting information to get insight into what the |
|---|
| 1746 | resolver is actually doing. |
|---|
| 1747 | ] |
|---|
| 1748 | [Separate the construction of the exclusion list from its use |
|---|
| 1749 | Duncan Coutts <duncan@haskell.org>**20081004234421 |
|---|
| 1750 | Previously directly inserted packages into the excluded package |
|---|
| 1751 | list. Now we generate a list of them and then add them. We want |
|---|
| 1752 | the list of newly excluded packages separately because it is |
|---|
| 1753 | interesting information to report to the user when -v is on. |
|---|
| 1754 | ] |
|---|
| 1755 | [Generalise the logging of selected and discarded packages |
|---|
| 1756 | Duncan Coutts <duncan@haskell.org>**20081004232555 |
|---|
| 1757 | Allow for selecting several packages in one go. |
|---|
| 1758 | Currently when we select a package we only list the over versions |
|---|
| 1759 | of the same package that that excludes, and not the other packages |
|---|
| 1760 | we exclude by applying the dependency constraints of the selected |
|---|
| 1761 | package. In future we would like to do that so we now report the |
|---|
| 1762 | package name of discards not just the version. Though we do group |
|---|
| 1763 | by the package name to avoid too much repition. |
|---|
| 1764 | ] |
|---|
| 1765 | [Fix infinite loop in the TopDown dependency resolver |
|---|
| 1766 | Andrea Vezzosi <sanzhiyan@gmail.com>**20080925181441 |
|---|
| 1767 | The loop occurred only if a package depended on another one |
|---|
| 1768 | with the same name, e.g. base-3.0.3.0 <- base-4.0.0.0 |
|---|
| 1769 | ] |
|---|
| 1770 | [small improvements to bootstrap |
|---|
| 1771 | Duncan Coutts <duncan@haskell.org>**20080926214828 |
|---|
| 1772 | patch sent in by brian0, ticket #357 |
|---|
| 1773 | ] |
|---|
| 1774 | [Update to the development version of the Cabal lib |
|---|
| 1775 | Duncan Coutts <duncan@haskell.org>**20080831225243 |
|---|
| 1776 | The branch of cabal-install that tracks Cabal-1.4 now lives at |
|---|
| 1777 | http://darcs.haskell.org/cabal-branches/cabal-install-0.5/ |
|---|
| 1778 | ] |
|---|
| 1779 | [Allow use of curl in bootstrap.sh |
|---|
| 1780 | Duncan Coutts <duncan@haskell.org>**20080826233400 |
|---|
| 1781 | Patch from jsnx. Fixes ticket #343. Also, use "cd blah; cd .." |
|---|
| 1782 | instead of "pushd blah; popd" as some shells lack pushd/popd |
|---|
| 1783 | ] |
|---|
| 1784 | [Relax version constraint on unix package |
|---|
| 1785 | Duncan Coutts <duncan@haskell.org>**20080826232851 |
|---|
| 1786 | Allows building with ghc-6.6.1 |
|---|
| 1787 | ] |
|---|
| 1788 | [Use mplus not mappend for combining tar filename checks |
|---|
| 1789 | Duncan Coutts <duncan@haskell.org>**20080826232606 |
|---|
| 1790 | mappend would join the error messages in the case that both |
|---|
| 1791 | checks failed. Also the monoid instance was new in base 3. |
|---|
| 1792 | ] |
|---|
| 1793 | [TAG 0.5.2 |
|---|
| 1794 | Duncan Coutts <duncan@haskell.org>**20080826214238] |
|---|
| 1795 | Patch bundle hash: |
|---|
| 1796 | 5a2e3c84d5a1144fd9fd4098bdb5a14aeab3922c |
|---|