packages feed

cabal-install 0.8.0 → 0.8.2

raw patch · 24 files changed

+155/−195 lines, 24 files

Files

Distribution/Client/BuildReports/Anonymous.hs view
@@ -27,7 +27,7 @@   ) where  import Distribution.Client.Types-         ( ConfiguredPackage(..), BuildResult )+         ( ConfiguredPackage(..) ) import qualified Distribution.Client.Types as BR          ( BuildResult, BuildFailure(..), BuildSuccess(..)          , DocsResult(..), TestsResult(..) )
Distribution/Client/BuildReports/Storage.hs view
@@ -30,7 +30,7 @@          , AvailablePackageSource(..), Repo(..), RemoteRepo(..) ) import qualified Distribution.Client.InstallPlan as InstallPlan import Distribution.Client.InstallPlan-         ( InstallPlan, PlanPackage )+         ( InstallPlan )  import Distribution.Simple.InstallDirs          ( PathTemplate, fromPathTemplate
Distribution/Client/BuildReports/Types.hs view
@@ -15,7 +15,7 @@   ) where  import qualified Distribution.Text as Text-         ( Text(disp, parse) )+         ( Text(..) )  import qualified Distribution.Compat.ReadP as Parse          ( pfail, munch1 )
Distribution/Client/Config.hs view
@@ -62,8 +62,6 @@          ( notice, warn, lowercase ) import Distribution.Compiler          ( CompilerFlavor(..), defaultCompilerFlavor )-import Distribution.System-         ( OS(Windows), buildOS ) import Distribution.Verbosity          ( Verbosity, normal ) @@ -212,11 +210,9 @@ defaultCompiler = fromMaybe GHC defaultCompilerFlavor  defaultUserInstall :: Bool-defaultUserInstall = case buildOS of-  -- We do global installs by default on Windows-  Windows -> False-  -- and per-user installs by default everywhere else-  _       -> True+defaultUserInstall = True+-- We do per-user installs by default on all platforms. We used to default to+-- global installs on Windows but that no longer works on Windows Vista or 7.  defaultRemoteRepo :: RemoteRepo defaultRemoteRepo = RemoteRepo name uri
Distribution/Client/Dependency/TopDown.hs view
@@ -36,6 +36,8 @@          , PackageFixedDeps(depends) ) import Distribution.PackageDescription          ( PackageDescription(buildDepends) )+import Distribution.Client.PackageUtils+         ( externalBuildDepends ) import Distribution.PackageDescription.Configuration          ( finalizePackageDescription, flattenPackageDescription ) import Distribution.Version@@ -301,7 +303,7 @@                                     platform comp [] p of       Left missing        -> Left missing       Right (pkg, flags') -> Right $-        SemiConfiguredPackage apkg flags' (buildDepends pkg)+        SemiConfiguredPackage apkg flags' (externalBuildDepends pkg)    dependencySatisfiable = not . null . PackageIndex.lookupDependency available 
Distribution/Client/Fetch.hs view
@@ -36,7 +36,8 @@          ( getAvailablePackages, disambiguateDependencies          , getInstalledPackages ) import qualified Distribution.Client.InstallPlan as InstallPlan-import Distribution.Client.HttpUtils (getHTTP, isOldHackageURI)+import Distribution.Client.HttpUtils+         ( downloadURI, isOldHackageURI )  import Distribution.Package          ( PackageIdentifier, packageName, packageVersion, Dependency(..) )@@ -46,8 +47,7 @@ import Distribution.Simple.Program          ( ProgramConfiguration ) import Distribution.Simple.Utils-         ( die, notice, info, debug, setupMessage-         , copyFileVerbose, writeFileAtomic )+         ( die, notice, info, debug, setupMessage ) import Distribution.System          ( buildPlatform ) import Distribution.Text@@ -56,7 +56,6 @@          ( Verbosity )  import qualified Data.Map as Map-import qualified Data.ByteString.Lazy.Char8 as BS import Control.Monad          ( when, filterM ) import System.Directory@@ -66,37 +65,9 @@ import qualified System.FilePath.Posix as FilePath.Posix          ( combine, joinPath ) import Network.URI-         ( URI(uriPath, uriScheme) )-import Network.HTTP-         ( Response(..) )-import Network.Stream-         ( ConnError(..) )+         ( URI(uriPath) )  -downloadURI :: Verbosity-            -> FilePath -- ^ Where to put it-            -> URI      -- ^ What to download-            -> IO (Maybe ConnError)-downloadURI verbosity path uri | uriScheme uri == "file:" = do-  copyFileVerbose verbosity (uriPath uri) path-  return Nothing-downloadURI verbosity path uri = do-  eitherResult <- getHTTP verbosity uri-  case eitherResult of-    Left err -> return (Just err)-    Right rsp-      | rspCode rsp == (2,0,0)-     -> do info verbosity ("Downloaded to " ++ path)-           writeFileAtomic path (BS.unpack $ rspBody rsp)-     --FIXME: check the content-length header matches the body length.-     --TODO: stream the download into the file rather than buffering the whole-     --      thing in memory.-     --      remember the ETag so we can not re-download if nothing changed.-     >> return Nothing--      | otherwise-     -> return (Just (ErrorMisc ("Unsucessful HTTP code: " ++ show (rspCode rsp))))- -- Downloads a package to [config-dir/packages/package-id] and returns the path to the package. downloadPackage :: Verbosity -> Repo -> PackageIdentifier -> IO String downloadPackage _ repo@Repo{ repoKind = Right LocalRepo } pkgid =@@ -108,11 +79,8 @@       path = packageFile      repo pkgid   debug verbosity $ "GET " ++ show uri   createDirectoryIfMissing True dir-  status <- downloadURI verbosity path uri-  case status of-    Just err -> die $ "Failed to download '" ++ display pkgid-                   ++ "': " ++ show err-    Nothing  -> return path+  downloadURI verbosity uri path+  return path  -- Downloads an index file to [config-dir/packages/serv-id]. downloadIndex :: Verbosity -> RemoteRepo -> FilePath -> IO FilePath@@ -123,10 +91,8 @@             }       path = cacheDir </> "00-index" <.> "tar.gz"   createDirectoryIfMissing True cacheDir-  mbError <- downloadURI verbosity path uri-  case mbError of-    Just err -> die $ "Failed to download index '" ++ show err ++ "'"-    Nothing  -> return path+  downloadURI verbosity uri path+  return path  -- |Returns @True@ if the package has already been fetched. isFetched :: AvailablePackage -> IO Bool
Distribution/Client/Haddock.hs view
@@ -16,12 +16,12 @@     )     where -import Data.Maybe (Maybe(..), listToMaybe)+import Data.Maybe (listToMaybe) import Data.List (maximumBy)-import Control.Monad (Monad(return), sequence, guard)+import Control.Monad (guard) import System.Directory (createDirectoryIfMissing, doesFileExist,                          renameFile)-import System.FilePath (FilePath, (</>), splitFileName)+import System.FilePath ((</>), splitFileName) import Distribution.Package (Package(..)) import Distribution.Simple.Program (haddockProgram, ProgramConfiguration                                    , rawSystemProgram, requireProgramVersion)
Distribution/Client/HttpUtils.hs view
@@ -2,20 +2,26 @@ ----------------------------------------------------------------------------- -- | Separate module for HTTP actions, using a proxy server if one exists  ------------------------------------------------------------------------------module Distribution.Client.HttpUtils (getHTTP, proxy, isOldHackageURI) where+module Distribution.Client.HttpUtils (+    downloadURI,+    getHTTP,+    proxy,+    isOldHackageURI+  ) where  import Network.HTTP          ( Request (..), Response (..), RequestMethod (..)          , Header(..), HeaderName(..) ) import Network.URI          ( URI (..), URIAuth (..), parseAbsoluteURI )-import Network.Stream (Result)+import Network.Stream+         ( Result, ConnError(..) ) import Network.Browser          ( Proxy (..), Authority (..), browse          , setOutHandler, setErrHandler, setProxy, request) import Control.Monad          ( mplus, join, liftM2 )-import qualified Data.ByteString.Lazy as ByteString+import qualified Data.ByteString.Lazy.Char8 as ByteString import Data.ByteString.Lazy (ByteString) #ifdef WIN32 import System.Win32.Types@@ -34,7 +40,9 @@  import qualified Paths_cabal_install (version) import Distribution.Verbosity (Verbosity)-import Distribution.Simple.Utils (warn, debug)+import Distribution.Simple.Utils+         ( die, info, warn, debug+         , copyFileVerbose, writeFileAtomic ) import Distribution.Text          ( display ) import qualified System.FilePath.Posix as FilePath.Posix@@ -92,6 +100,7 @@         warn verbosity $ "ignoring http proxy, trying a direct connection"         return NoProxy       Just p  -> return p+--TODO: print info message when we're using a proxy  -- | We need to be able to parse non-URIs like @\"wwwcache.example.com:80\"@ -- which lack the @\"http://\"@ URI scheme. The problem is that@@ -151,6 +160,33 @@                                 setProxy p                                 request req                  return (Right resp)++downloadURI :: Verbosity+            -> URI      -- ^ What to download+            -> FilePath -- ^ Where to put it+            -> IO ()+downloadURI verbosity uri path | uriScheme uri == "file:" =+  copyFileVerbose verbosity (uriPath uri) path+downloadURI verbosity uri path = do+  result <- getHTTP verbosity uri+  let result' = case result of+        Left  err -> Left err+        Right rsp -> case rspCode rsp of+          (2,0,0) -> Right (rspBody rsp)+          (a,b,c) -> Left err+            where+              err = ErrorMisc $ "Unsucessful HTTP code: "+                             ++ concatMap show [a,b,c]++  case result' of+    Left err   -> die $ "Failed to download " ++ show uri ++ " : " ++ show err+    Right body -> do+      info verbosity ("Downloaded to " ++ path)+      writeFileAtomic path (ByteString.unpack body)+      --FIXME: check the content-length header matches the body length.+      --TODO: stream the download into the file rather than buffering the whole+      --      thing in memory.+      --      remember the ETag so we can not re-download if nothing changed.  -- Utility function for legacy support. isOldHackageURI :: URI -> Bool
Distribution/Client/IndexUtils.hs view
@@ -128,8 +128,8 @@   let (pkgs, prefs) = mconcat pkgss       prefs' = Map.fromListWith intersectVersionRanges                  [ (name, range) | Dependency name range <- prefs ]-  evaluate pkgs-  evaluate prefs'+  _ <- evaluate pkgs+  _ <- evaluate prefs'   return AvailablePackageDb {     packageIndex       = pkgs,     packagePreferences = prefs'
Distribution/Client/Init.hs view
@@ -49,7 +49,7 @@   ( orLaterVersion )  import Distribution.Client.Init.Types-  ( InitFlags(..), PackageType(..), Category(..), Stability(..) )+  ( InitFlags(..), PackageType(..), Category(..) ) import Distribution.Client.Init.Licenses   ( bsd3, gplv2, gplv3, lgpl2, lgpl3 ) import Distribution.Client.Init.Heuristics@@ -92,7 +92,6 @@            >=> getAuthorInfo            >=> getHomepage            >=> getSynopsis-           >=> getStability            >=> getCategory            >=> getLibOrExec            >=> getSrcDir@@ -185,15 +184,6 @@    return $ flags { synopsis = maybeToFlag syn } -getStability :: InitFlags -> IO InitFlags-getStability flags = do-  stab <-     return (flagToMaybe $ stability flags)-          ?>> maybePrompt flags (promptList "Project stability" [Stable ..]-                                            (Just Experimental)-                                            True)--  return $ flags { stability = maybeToFlag stab }- -- | Prompt for a package category. --   Note that it should be possible to do some smarter guessing here too, i.e. --   look at the name of the top level source directory.@@ -385,8 +375,7 @@   writeFile "Setup.hs" setupFile  where   setupFile = unlines-    [ "#!/usr/bin/env runhaskell"-    , "import Distribution.Simple"+    [ "import Distribution.Simple"     , "main = defaultMain"     ] @@ -456,10 +445,6 @@         , fieldS "Copyright"     NoFlag                 (Just "A copyright notice.")-                True--       , fieldS "Stability"     (either id display `fmap` stability c)-                (Just "Stability of the pakcage (experimental, provisional, stable...)")                 True         , fieldS "Category"      (either id display `fmap` category c)
Distribution/Client/Init/Licenses.hs view
@@ -11,8 +11,8 @@ type License = String  bsd3 :: String -> String -> License-bsd3 s y = unlines-    [ "Copyright " ++ s ++ " " ++ y+bsd3 authors year = unlines+    [ "Copyright (c)" ++ year ++ ", " ++ authors     , ""     , "All rights reserved."     , ""@@ -27,7 +27,7 @@     , "      disclaimer in the documentation and/or other materials provided"     , "      with the distribution."     , ""-    , "    * Neither the name of " ++ s ++ " nor the names of other"+    , "    * Neither the name of " ++ authors ++ " nor the names of other"     , "      contributors may be used to endorse or promote products derived"     , "      from this software without specific prior written permission."     , ""
Distribution/Client/Init/Types.hs view
@@ -46,7 +46,6 @@               , license      :: Flag License               , author       :: Flag String               , email        :: Flag String-              , stability    :: Flag (Either String Stability)               , homepage     :: Flag String                , synopsis     :: Flag String@@ -83,7 +82,6 @@     , license        = mempty     , author         = mempty     , email          = mempty-    , stability      = mempty     , homepage       = mempty     , synopsis       = mempty     , category       = mempty@@ -106,7 +104,6 @@     , license        = combine license     , author         = combine author     , email          = combine email-    , stability      = combine stability     , homepage       = combine homepage     , synopsis       = combine synopsis     , category       = combine category@@ -143,18 +140,6 @@ instance Text Category where   disp  = Disp.text . show   parse = Parse.choice $ map (fmap read . Parse.string . show) [Codec .. ]---- | Some common package stability indicators.-data Stability-    = Stable-    | Provisional-    | Experimental-    | Alpha-    deriving (Read, Show, Eq, Ord, Bounded, Enum)--instance Text Stability where-  disp  = Disp.text . show-  parse = Parse.choice $ map (fmap read . Parse.string . show) [Stable .. ]  #if MIN_VERSION_base(3,0,0) #else
Distribution/Client/Install.hs view
@@ -101,7 +101,7 @@          ( defaultPackageDesc, rawSystemExit, comparing ) import Distribution.Simple.InstallDirs as InstallDirs          ( PathTemplate, fromPathTemplate, toPathTemplate, substPathTemplate-         , initialPathTemplateEnv, compilerTemplateEnv, installDirsTemplateEnv )+         , initialPathTemplateEnv, installDirsTemplateEnv ) import Distribution.Package          ( PackageName, PackageIdentifier, packageName, packageVersion          , Package(..), PackageFixedDeps(..)@@ -558,7 +558,8 @@     printFailureReason reason = case reason of       DependentFailed pkgid -> " depends on " ++ display pkgid                             ++ " which failed to install."-      DownloadFailed  _ -> " failed while downloading the package."+      DownloadFailed  e -> " failed while downloading the package."+                        ++ " The exception was:\n  " ++ show e       UnpackFailed    e -> " failed while unpacking the package."                         ++ " The exception was:\n  " ++ show e       ConfigureFailed e -> " failed during the configure step."
Distribution/Client/InstallPlan.hs view
@@ -54,8 +54,9 @@          ( Version, withinRange ) import Distribution.PackageDescription          ( GenericPackageDescription(genPackageFlags)-         , PackageDescription(buildDepends)          , Flag(flagName), FlagName(..) )+import Distribution.Client.PackageUtils+         ( externalBuildDepends ) import Distribution.PackageDescription.Configuration          ( finalizePackageDescription ) import Distribution.Client.PackageIndex@@ -490,5 +491,5 @@          platform comp          []          (packageDescription pkg) of-        Right (resolvedPkg, _) -> buildDepends resolvedPkg+        Right (resolvedPkg, _) -> externalBuildDepends resolvedPkg         Left  _ -> error "configuredPackageInvalidDeps internal error"
Distribution/Client/InstallSymlink.hs view
@@ -66,6 +66,8 @@          ( canonicalizePath ) import System.FilePath          ( (</>), splitPath, joinPath, isAbsolute )++import Prelude hiding (catch, ioError) import System.IO.Error          ( catch, isDoesNotExistError, ioError ) import Control.Exception
Distribution/Client/List.hs view
@@ -171,10 +171,11 @@          Just pkg -> disp (packageVersion pkg)      , text "Latest version installed:" <+>        case latestInstalled pkginfo of-         Nothing  -> text "[ Not installed ]"+         Nothing  | hasLib pkginfo -> text "[ Not installed ]"+                  | otherwise      -> text "[ Unknown ]"          Just pkg -> disp (packageVersion pkg)      , maybeShow (homepage pkginfo) "Homepage:" text-     , text "License: " <+> text (show (license pkginfo))+     , text "License: " <+> text (display (license pkginfo))      ])      $+$ text ""   where
+ Distribution/Client/PackageUtils.hs view
@@ -0,0 +1,34 @@+-----------------------------------------------------------------------------+-- |+-- Module      :  Distribution.Client.PackageUtils+-- Copyright   :  (c) Duncan Coutts 2010+-- License     :  BSD-like+--+-- Maintainer  :  cabal-devel@gmail.com+-- Stability   :  provisional+-- Portability :  portable+--+-- Various package description utils that should be in the Cabal lib+-----------------------------------------------------------------------------+module Distribution.Client.PackageUtils (+    externalBuildDepends,+  ) where++import Distribution.Package+         ( packageVersion, packageName, Dependency(..) )+import Distribution.PackageDescription+         ( PackageDescription(..) )+import Distribution.Version+         ( withinRange )++-- | The list of dependencies that refer to external packages+-- rather than internal package components.+--+externalBuildDepends :: PackageDescription -> [Dependency]+externalBuildDepends pkg = filter (not . internal) (buildDepends pkg)+  where+    -- True if this dependency is an internal one (depends on a library+    -- defined in the same package).+    internal (Dependency depName versionRange) =+            depName == packageName pkg &&+            packageVersion pkg `withinRange` versionRange
Distribution/Client/Setup.hs view
@@ -65,6 +65,8 @@          ( ReadP, readP_to_S, char, munch1, pfail, (+++) ) import Distribution.Verbosity          ( Verbosity, normal )+import Distribution.Simple.Utils+         ( wrapText )  import Data.Char          ( isSpace, isAlphaNum )@@ -264,7 +266,7 @@ fetchCommand :: CommandUI (Flag Verbosity) fetchCommand = CommandUI {     commandName         = "fetch",-    commandSynopsis     = "Downloads packages for later installation or study.",+    commandSynopsis     = "Downloads packages for later installation.",     commandDescription  = Nothing,     commandUsage        = usagePackages "fetch",     commandDefaultFlags = toFlag normal,@@ -676,25 +678,21 @@ initCommand = CommandUI {     commandName = "init",     commandSynopsis = "Interactively create a .cabal file.",-    commandUsage = \pname -> unlines-       [ "Usage: " ++ pname ++ " init [FLAGS]"-       , ""-       , "Cabalise a project by creating a .cabal, Setup.lhs, and"-       , "optionally a LICENSE file."-       , ""-       , "Calling init with no arguments (recommended) uses an"-       , "interactive mode, which will try to guess as much as"-       , "possible and prompt you for the rest.  Command-line"-       , "arguments are provided for scripting purposes."-       , "If you don't want interactive mode, be sure to pass"-       , "the -n flag."-       , ""-       , "Flags for init:"-       ],-    commandDescription = Nothing,+    commandDescription = Just $ \_ -> wrapText $+         "Cabalise a project by creating a .cabal, Setup.hs, and "+      ++ "optionally a LICENSE file.\n\n"+      ++ "Calling init with no arguments (recommended) uses an "+      ++ "interactive mode, which will try to guess as much as "+      ++ "possible and prompt you for the rest.  Command-line "+      ++ "arguments are provided for scripting purposes. "+      ++ "If you don't want interactive mode, be sure to pass "+      ++ "the -n flag.\n",+    commandUsage = \pname ->+         "Usage: " ++ pname ++ " init [FLAGS]\n\n"+      ++ "Flags for init:",     commandDefaultFlags = defaultInitFlags,     commandOptions = \_ ->-      [ option ['n'] ["nonInteractive"]+      [ option ['n'] ["non-interactive"]         "Non-interactive mode."         IT.nonInteractive (\v flags -> flags { IT.nonInteractive = v })         trueArg@@ -704,22 +702,22 @@         IT.quiet (\v flags -> flags { IT.quiet = v })         trueArg -      , option [] ["noComments"]+      , option [] ["no-comments"]         "Do not generate explanatory comments in the .cabal file."         IT.noComments (\v flags -> flags { IT.noComments = v })         trueArg        , option ['m'] ["minimal"]-        "Generate a minimal .cabal file, that is, do not include extra empty fields.  Also implies --noComments."+        "Generate a minimal .cabal file, that is, do not include extra empty fields.  Also implies --no-comments."         IT.minimal (\v flags -> flags { IT.minimal = v })         trueArg -      , option [] ["packageDir"]+      , option [] ["package-dir"]         "Root directory of the package (default = current directory)."         IT.packageDir (\v flags -> flags { IT.packageDir = v })         (reqArgFlag "DIRECTORY") -      , option ['p'] ["packageName"]+      , option ['p'] ["package-name"]         "Name of the Cabal package to create."         IT.packageName (\v flags -> flags { IT.packageName = v })         (reqArgFlag "PACKAGE")@@ -731,7 +729,7 @@                                       (toFlag `fmap` parse))                           (flagToList . fmap display)) -      , option [] ["cabalVersion"]+      , option [] ["cabal-version"]         "Required version of the Cabal library."         IT.cabalVersion (\v flags -> flags { IT.cabalVersion = v })         (reqArg "VERSION_RANGE" (readP_to_E ("Cannot parse Cabal version range: "++)@@ -755,12 +753,6 @@         IT.email (\v flags -> flags { IT.email = v })         (reqArgFlag "EMAIL") -      , option [] ["stability"]-        "Package stability."-        IT.stability (\v flags -> flags { IT.stability = v })-        (reqArg' "STABILITY" (\s -> toFlag $ maybe (Left s) Right (readMaybe s))-                             (flagToList . fmap (either id show)))-       , option ['u'] ["homepage"]         "Project homepage and/or repository."         IT.homepage (\v flags -> flags { IT.homepage = v })@@ -777,18 +769,18 @@         (reqArg' "CATEGORY" (\s -> toFlag $ maybe (Left s) Right (readMaybe s))                             (flagToList . fmap (either id show))) -      , option [] ["isLibrary"]+      , option [] ["is-library"]         "Build a library."         IT.packageType (\v flags -> flags { IT.packageType = v })         (noArg (Flag IT.Library)) -      , option [] ["isExecutable"]+      , option [] ["is-executable"]         "Build an executable."         IT.packageType         (\v flags -> flags { IT.packageType = v })         (noArg (Flag IT.Executable)) -      , option ['o'] ["exposeModule"]+      , option ['o'] ["expose-module"]         "Export a module from the package."         IT.exposedModules         (\v flags -> flags { IT.exposedModules = v })@@ -803,13 +795,13 @@                                       ((Just . (:[])) `fmap` parse))                           (fromMaybe [] . fmap (fmap display))) -      , option [] ["sourceDir"]+      , option [] ["source-dir"]         "Directory containing package source."         IT.sourceDirs (\v flags -> flags { IT.sourceDirs = v })         (reqArg' "DIR" (Just . (:[]))                        (fromMaybe [])) -      , option [] ["buildTool"]+      , option [] ["build-tool"]         "Required external build tool."         IT.buildTools (\v flags -> flags { IT.buildTools = v })         (reqArg' "TOOL" (Just . (:[]))@@ -875,7 +867,7 @@ parseRepo :: Parse.ReadP r RemoteRepo parseRepo = do   name <- Parse.munch1 (\c -> isAlphaNum c || c `elem` "_-.")-  Parse.char ':'+  _ <- Parse.char ':'   uriStr <- Parse.munch1 (\c -> isAlphaNum c || c `elem` "+-=._/*()@'$:;&!?~")   uri <- maybe Parse.pfail return (parseAbsoluteURI uriStr)   return $ RemoteRepo {
Distribution/Client/SrcDist.hs view
@@ -55,10 +55,10 @@              | otherwise = pkg     setupMessage verbosity "Building source dist for" (packageId pkg') -    if snapshot+    _ <- if snapshot       then prepareSnapshotTree verbosity pkg' mb_lbi distPref tmpDir pps       else prepareTree         verbosity pkg' mb_lbi distPref tmpDir pps-    targzFile <- createArchive verbosity pkg tmpDir distPref+    targzFile <- createArchive verbosity pkg' tmpDir distPref     notice verbosity $ "Source tarball created: " ++ targzFile    where
Distribution/Client/Unpack.hs view
@@ -45,7 +45,7 @@ import Control.Monad          ( unless, when ) import Data.Ord (comparing)-import Data.List(null, maximumBy)+import Data.List(maximumBy) import System.FilePath          ( (</>), addTrailingPathSeparator ) import qualified Data.Map as Map
Distribution/Client/Update.hs view
@@ -33,7 +33,8 @@ import Distribution.Verbosity          ( Verbosity ) -import qualified Data.ByteString.Lazy.Char8 as BS+import qualified Data.ByteString.Lazy       as BS+import qualified Data.ByteString.Lazy.Char8 as BS.Char8 import qualified Codec.Compression.GZip as GZip (decompress) import qualified Data.Map as Map import System.FilePath (dropExtension)@@ -56,7 +57,7 @@     notice verbosity $ "Downloading the latest package list from "                     ++ remoteRepoName remoteRepo     indexPath <- downloadIndex verbosity remoteRepo (repoLocalDir repo)-    writeFileAtomic (dropExtension indexPath) . BS.unpack+    writeFileAtomic (dropExtension indexPath) . BS.Char8.unpack                                               . GZip.decompress                                             =<< BS.readFile indexPath 
− Distribution/Compat/TempFile.hs
@@ -1,43 +0,0 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -cpp #-}-{-# OPTIONS_NHC98 -cpp #-}-{-# OPTIONS_JHC -fcpp #-}--- #hide-module Distribution.Compat.TempFile (-  createTempDirectory,-  ) where--import System.FilePath        ((</>))-#ifdef mingw32_HOST_OS-import System.Directory       (createDirectory)-#else-import System.Posix.Directory (createDirectory)-#endif-import System.IO.Error        (try, isAlreadyExistsError)--#if __NHC__-import System.Posix.Types     (CPid(..))-foreign import ccall unsafe "getpid" c_getpid :: IO CPid-#else-import System.Posix.Internals (c_getpid)-#endif--createTempDirectory :: FilePath -> String -> IO FilePath-createTempDirectory dir template = do-  pid <- c_getpid-  findTempName pid-  where-    findTempName x = do-      let dirpath = dir </> template ++ show x-      r <- try $ mkPrivateDir dirpath-      case r of-        Right _ -> return dirpath-        Left  e | isAlreadyExistsError e -> findTempName (x+1)-                | otherwise              -> ioError e--mkPrivateDir :: String -> IO ()-#ifdef mingw32_HOST_OS-mkPrivateDir s = System.Directory.createDirectory s-#else-mkPrivateDir s = System.Posix.Directory.createDirectory s 0o700-#endif
Main.hs view
@@ -123,19 +123,19 @@                                   ++ " of the Cabal library "      commands =-      [configureExCommand     `commandAddAction` configureAction-      ,installCommand         `commandAddAction` installAction+      [installCommand         `commandAddAction` installAction+      ,updateCommand          `commandAddAction` updateAction       ,listCommand            `commandAddAction` listAction       ,infoCommand            `commandAddAction` infoAction-      ,updateCommand          `commandAddAction` updateAction       ,upgradeCommand         `commandAddAction` upgradeAction       ,fetchCommand           `commandAddAction` fetchAction-      ,uploadCommand          `commandAddAction` uploadAction+      ,unpackCommand          `commandAddAction` unpackAction       ,checkCommand           `commandAddAction` checkAction       ,sdistCommand           `commandAddAction` sdistAction+      ,uploadCommand          `commandAddAction` uploadAction       ,reportCommand          `commandAddAction` reportAction-      ,unpackCommand          `commandAddAction` unpackAction       ,initCommand            `commandAddAction` initAction+      ,configureExCommand     `commandAddAction` configureAction       ,wrapperAction (buildCommand defaultProgramConfiguration)                      buildVerbosity    buildDistPref       ,wrapperAction copyCommand@@ -259,7 +259,8 @@                                  (configUserInstall configFlags)   let configFlags'   = savedConfigureFlags   config `mappend` configFlags       configExFlags' = savedConfigureExFlags config `mappend` configExFlags-      installFlags'  = savedInstallFlags     config `mappend` installFlags+      installFlags'  = defaultInstallFlags          `mappend`+                       savedInstallFlags     config `mappend` installFlags       globalFlags'   = savedGlobalFlags      config `mappend` globalFlags   (comp, conf) <- configCompilerAux configFlags'   upgrade verbosity
cabal-install.cabal view
@@ -1,5 +1,5 @@ Name:               cabal-install-Version:            0.8.0+Version:            0.8.2 Synopsis:           The command-line interface for Cabal and Hackage. Description:     The \'cabal\' command-line program simplifies the process of managing@@ -33,7 +33,7 @@ source-repository this   type:     darcs   location: http://darcs.haskell.org/cabal-branches/cabal-install-0.8/-  tag: 0.8.0+  tag: 0.8.2  flag old-base   description: Old, monolithic base@@ -75,6 +75,7 @@         Distribution.Client.InstallSymlink         Distribution.Client.List         Distribution.Client.PackageIndex+        Distribution.Client.PackageUtils         Distribution.Client.Setup         Distribution.Client.SetupWrapper         Distribution.Client.SrcDist@@ -86,7 +87,6 @@         Distribution.Client.Utils         Distribution.Client.Win32SelfUpgrade         Distribution.Compat.Exception-        Distribution.Compat.TempFile         Paths_cabal_install      build-depends: base     >= 2        && < 5,