cabal-install 0.8.0 → 0.8.2
raw patch · 24 files changed
+155/−195 lines, 24 files
Files
- Distribution/Client/BuildReports/Anonymous.hs +1/−1
- Distribution/Client/BuildReports/Storage.hs +1/−1
- Distribution/Client/BuildReports/Types.hs +1/−1
- Distribution/Client/Config.hs +3/−7
- Distribution/Client/Dependency/TopDown.hs +3/−1
- Distribution/Client/Fetch.hs +8/−42
- Distribution/Client/Haddock.hs +3/−3
- Distribution/Client/HttpUtils.hs +40/−4
- Distribution/Client/IndexUtils.hs +2/−2
- Distribution/Client/Init.hs +2/−17
- Distribution/Client/Init/Licenses.hs +3/−3
- Distribution/Client/Init/Types.hs +0/−15
- Distribution/Client/Install.hs +3/−2
- Distribution/Client/InstallPlan.hs +3/−2
- Distribution/Client/InstallSymlink.hs +2/−0
- Distribution/Client/List.hs +3/−2
- Distribution/Client/PackageUtils.hs +34/−0
- Distribution/Client/Setup.hs +27/−35
- Distribution/Client/SrcDist.hs +2/−2
- Distribution/Client/Unpack.hs +1/−1
- Distribution/Client/Update.hs +3/−2
- Distribution/Compat/TempFile.hs +0/−43
- Main.hs +7/−6
- cabal-install.cabal +3/−3
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,