1 patch for repository http://darcs.haskell.org/cabal-install: Mon Jan 9 22:40:12 CET 2012 Carl Baatz * Extend config with .cabal-install from current directory. This patch allows an optional package-specific cabal-install config to be stored in the current directory. It will use any file ending in .cabal-install (including '.cabal-install') but fail if more than one such file is found. The suggested naming convention is to use .cabal-install. This change affords, for example, setting a package-specific remote-repo location, which comes in handy when developing proprietary packages that should be uploaded only to an internal Hackage. New patches: [Extend config with .cabal-install from current directory. Carl Baatz **20120109214012 Ignore-this: fec3f2017af45fc5a9ace31ff0001e6f This patch allows an optional package-specific cabal-install config to be stored in the current directory. It will use any file ending in .cabal-install (including '.cabal-install') but fail if more than one such file is found. The suggested naming convention is to use .cabal-install. This change affords, for example, setting a package-specific remote-repo location, which comes in handy when developing proprietary packages that should be uploaded only to an internal Hackage. ] { hunk ./Distribution/Client/Config.hs 62 import Distribution.Simple.Program ( defaultProgramConfiguration ) import Distribution.Simple.Utils - ( notice, warn, lowercase ) + ( notice, warn, die, lowercase ) import Distribution.Compiler ( CompilerFlavor(..), defaultCompilerFlavor ) import Distribution.Verbosity hunk ./Distribution/Client/Config.hs 75 import Data.Monoid ( Monoid(..) ) import Control.Monad - ( when, foldM, liftM ) + ( when, foldM, liftM, filterM ) import qualified Data.Map as Map import qualified Distribution.Compat.ReadP as Parse ( option ) hunk ./Distribution/Client/Config.hs 84 import Text.PrettyPrint.HughesPJ ( (<>), (<+>), ($$), ($+$) ) import System.Directory - ( createDirectoryIfMissing, getAppUserDataDirectory ) + ( createDirectoryIfMissing, getAppUserDataDirectory, + getCurrentDirectory, getDirectoryContents, doesFileExist ) import Network.URI ( URI(..), URIAuth(..) ) import System.FilePath hunk ./Distribution/Client/Config.hs 89 - ( (), takeDirectory ) + ( (), takeDirectory, takeExtension ) import System.Environment ( getEnvironment ) import System.IO.Error hunk ./Distribution/Client/Config.hs 247 -- * Config file reading -- +-- | Load user config and extend with package config (from +-- @\*.cabal-install@ in current directory) if it exists. Package +-- config flags shadow corresponding user config flags. loadConfig :: Verbosity -> Flag FilePath -> Flag Bool -> IO SavedConfig hunk ./Distribution/Client/Config.hs 251 -loadConfig verbosity configFileFlag userInstallFlag = addBaseConf $ do +loadConfig verbosity configFileFlag userInstallFlag = do + base <- baseSavedConfig + user <- userSavedConfig verbosity configFileFlag + package <- packageSavedConfig verbosity + let config = base `mappend` user `mappend` package + return (updateInstallDirs userInstallFlag config) + +userSavedConfig :: Verbosity -> Flag FilePath -> IO SavedConfig +userSavedConfig verbosity configFileFlag = do let sources = [ ("commandline option", return . flagToMaybe $ configFileFlag), ("env var CABAL_CONFIG", lookup "CABAL_CONFIG" `liftM` getEnvironment), hunk ./Distribution/Client/Config.hs 292 warn verbosity $ "Using default configuration." initialSavedConfig - where - addBaseConf body = do - base <- baseSavedConfig - extra <- body - return (updateInstallDirs userInstallFlag (base `mappend` extra)) +-- | Load the package config file (@\*.cabal-install@) if it +-- exists. Fails if more than one install file is found or if parsing +-- fails. +-- +-- The package config might be used to specify a Hackage repo specific +-- to the package (an internal company Hackage for example). +packageSavedConfig :: Verbosity -> IO SavedConfig +packageSavedConfig verbosity = do + dir <- getCurrentDirectory + files <- getDirectoryContents dir + installFiles <- filterM doesFileExist -- Avoid directories + [ dir file | file <- files, + takeExtension file == ".cabal-install" ] + case installFiles of + [] -> return mempty + [configFile] -> do + minp <- readConfigFile mempty configFile + case minp of + Nothing -> return mempty -- Config file optional + Just (ParseOk ws conf) -> do + notice verbosity $ "Loading package specific install config..." + when (not $ null ws) $ warn verbosity $ + unlines (map (showPWarning configFile) ws) + return conf + Just (ParseFailed err) -> do + notice verbosity $ "Loading package specific install config..." + let (line, msg) = locatedErrorMsg err + -- We fail on parsing so that the remote repo setting + -- isn't defaulted back to the public Hackage if there + -- is a problem somewhere else in the config file. + die $ "Error parsing package specific config file " ++ configFile + ++ maybe "" (\n -> ":" ++ show n) line ++ ":\n" ++ msg + ++ "\nA package install config is optional, but must be valid if given." + multiple -> die $ "Multiple install config files found.\n" + ++ "Please use only one of: " ++ show multiple readConfigFile :: SavedConfig -> FilePath -> IO (Maybe (ParseResult SavedConfig)) readConfigFile initial file = handleNotExists $ } Context: [cabal init: various UI tweaks and changes to the generated .cabal files Duncan Coutts **20110521225203 Ignore-this: abb13eb3a311b8c9e7d835fd06a7d5b - Add a default "(none)" option for license and category. There are now no questions with no default except for the lib/exe question. For throwaway packages user can just keep hitting enter and get something sensible. - Prune the list of suggested licenses (remove unversioned GPL, LGPL) - Don't include extra-source-files or build-tools when they would be empty - Improve the wording of the generated documentation for lib/exe fields ] [Adjust the initial comment in cabal files generated by cabal init Duncan Coutts **20110517003127 Ignore-this: 6ef8f04c69c86e83117a2afb1170d05b Use slightly longer lines and a somewhat more terse comment. Also use a new shorter and hopefully stable URL for the user guide. ] [Adjust the cabal init interactive prompt string Duncan Coutts **20110517002302 Ignore-this: e1a9b199098c9de08d2c6414b7338cfc ] [Add a cabal init question about whether to generate comments Duncan Coutts **20110517002050 Ignore-this: 988d117f12625a27bbcda23fbae12716 Users will typically only want this the first time they use cabal init. ] [Generate lower case field names in cabal init Duncan Coutts **20110516083429 Ignore-this: fea0d0072c491e3afad87506eef73fd2 ] [Fix formatting of cabal init BSD copyright declaration Duncan Coutts **20110515163822 Ignore-this: 3653f7ab4ea857a52da5f1fc3be71f9e ] [Correct spelling surpress -> suppress Ben Millwood **20110430111730 Ignore-this: 350ebba8896534fca324804e806da9b9 ] [Fix bug where contraints where lost for case insensitive package matches Duncan Coutts **20110503144932 Ignore-this: dce08d788905ac7b960c2193b1c4bbee E.g. cabal install cabal-1.8.0.6 would actually install the latest version instead, because when 'cabal' got corrected to 'Cabal' the associated constraint 'cabal == 1.8.0.6' was not converted to 'Cabal == 1.8.0.6'. ] [Distinguish the various impossible errors in the solver Duncan Coutts **20110418211436 Ignore-this: b372bdb3247a66b183fac446aaaab075 Will make tracking down problems easier in future. ] [Fix a case in the new solver pruning pass Duncan Coutts **20110418211211 Ignore-this: a31ab5fff4c1a859c79d8492a670248c It is actually possible for pruning to eliminate required packages because it's possible for it to propagate all the way up to one of the initial targets. ] [Install phase pulls in test suite dependencies when necessary. Thomas Tuegel **20110418110529 Ignore-this: a3eaa460b229870cf3e2f276ae6df7c6 ] [Add command line support for installed, source and flag constraints Duncan Coutts **20110414205240 Ignore-this: 295c5f5c6bbb17a7fa659dc7ae9ea926 e.g. --constraint='foo source' --constraint='baz installed' --constraint='bar +this -that' ] [Change the use of the InstalledConstraint type and enhance solver logging Duncan Coutts **20110414204729 Ignore-this: 3cd4778d2ba325d3dfb36d59c5c0b5aa Now log when things get excluded due to installed and source constraints. ] [Add support for source constraints to the solver Duncan Coutts **20110329095710 Ignore-this: 60539431d54b0bc7728ad23b3b6a319f ] [Rename the constructors of PackageConstraint to be more consistent Duncan Coutts **20110327235254 Ignore-this: 44ff168d45470e89c25715ba2e351442 ] [Remove a module dependency to avoid cyclic imports Duncan Coutts **20110327223743 Ignore-this: 38bddb846c18eb7f05784502d80abfb6 ] [Tweak to conflict constraint error message Duncan Coutts **20110327180252 Ignore-this: 468ee6ce4c5ad38433ef946a18733581 ] [Log package exclusions due to top level constraints Duncan Coutts **20110327180206 Ignore-this: 71e46d530b0e7152ba0570683ecbc0f3 ] [Prune impossible packages as a solver pre-pass Duncan Coutts **20110327175733 Ignore-this: 2c0d3219071b7c280168094167aa678d There are many packages that can never be successfully configured and by pruning them early we reduce the number of choices for the solver later (which is good since the solver does no backtracking when it makes bad choices). This relies on two recent features: 1. we can now express constraints that exclude a particular source package and 2. that we can exclude packages without needing to know whether or not they will ever be needed. ] [Distinguish installed constraint error messages Duncan Coutts **20110327164048 Ignore-this: 7fd6c173ef2af48f570dba450cc3cc95 ] [Eliminate TaggedDependency type from solver code Duncan Coutts **20110327153749 Ignore-this: 635e7f5430cced67b41becd19c4beb80 ] [Update the solver to use the new target tracking Duncan Coutts **20110327145756 Ignore-this: febeb903d7b4714b48d460d6a435eb01 The constraint set ADT now needs to be told which targets we are interested in, rather than assuming anything we constrain might be a target. ] [Generalise the constraint set ADT in a couple ways Duncan Coutts **20110326171658 Ignore-this: 7e016edea6a34c441e7568c72b1968c6 We now track target packages and only require constraints on those targets to be satisfiable. This allows us to overconstrain packages that we do not care about, which is useful for excluding broken packages. We also now have a more general way of specifying constraints. Previously constraints were specified as the conjunction of a version range predicate and an optional installed constraint. This form made it impossible to express constraints such as "exclude this source package". Constraints for a package name are now specified simply by a function predicate on the package version and installed/source state. ] [Eliminate local definition of utility Duncan Coutts **20110327134232 Ignore-this: e034a11f6670d8f8ef9d4b5d2123ed ] [Cosmetic: use PackageId rather than PackageIdentifier Duncan Coutts **20110327133212 Ignore-this: 25c32fd18e264281e1ccacbf9bde3e78 ] [Change the terminology used in source code for available/source packages Duncan Coutts **20110304221605 Ignore-this: b66b73eb59498216d8b89cfa6ad696d4 Rather than 'available' packages, the source now refers consistently to 'source' packages. This is a bit clearer. ] [TAG 0.10.0 Duncan Coutts **20110308192323 Ignore-this: 8711506cb11ca7df1d1e42692380ed88 ] [Fix username prompting for cabal upload Duncan Coutts **20110315224721 Ignore-this: df520d38a20f56da60fd8dfe921c3fbf Fixes ticket #810 ] [Unbreak the world target Duncan Coutts **20110304233956 Ignore-this: 63eff29f8d0896610aabc5a13ce705bd I'd accidentally left out the world target from the parsing phase of the new user target handling system, so cabal install world did not work. Now added to the target parser. ] [Fix silly bug in cabal configure. Ticket #805. Duncan Coutts **20110304221307 Ignore-this: 6bec52c20c33624c28844849cfa2fa78 I made a mistake during the recent refactoring work and was using the dependency planner in the wrong way. The planner was being given the available source packages and duely picking them to satisfy dependencies, but for configure we're supposed to assume that all dependencies are installed already. ] [In bootstrap script, do Cabal before other deps Duncan Coutts **20110227175535 Ignore-this: a25054ccde26ece8e5bfc83272909593 So that the others can use the new Cabal for their Setup.hs ] [Add source-repository this entry Duncan Coutts **20110227145302 Ignore-this: 7bf8b3f2af6fc3067ced983a6e8b9532 ] [Bump version to 0.10.0 Duncan Coutts **20110227145245 Ignore-this: 850619fd840cd2c47c2f3401e5a55abe ] [Require Cabal >= 1.10.1 Duncan Coutts **20110227175455 Ignore-this: 4ecf4f3ac872b8ac8b948ffe5dba454a It contains an important bug fix for some platforms, notably OSX ] [Update dependencies in bootstrap script Duncan Coutts **20110227165812 Ignore-this: b0c2a17fc8aebf04a7c919fe42773a5a Works with ghc-6.12 and ghc-7.0 ] [Minor tweaks to bootstrap script Duncan Coutts **20110227165713 Ignore-this: abdecb3d0918a22e7f39d316a6b2c15d When using curl, fail better on HTTP errors. Also remove some dead code. ] [Only look at global packages when doing ./bootstrap.sh --global Duncan Coutts **20110227152637 Ignore-this: 70346000a983f60efefd541d9392931a Should fix ticket #796 ] [Add support for BSD fetch to bootstrap script Duncan Coutts **20110227152423 Ignore-this: 8406ef2b924cc72198773b2e29ef2b06 On FreeBSD fetch is installed by default, unlike wget or curl. ] [Add missing module to other-modules Duncan Coutts **20110227175240 Ignore-this: fded3fdccc046a018c0620cea9e83def ] [Update versions in README Duncan Coutts **20110227170553 Ignore-this: 7abda197c6006b1c3c1f43b4af87ada8 ] [Update changelog for 0.10.0 release Duncan Coutts **20110227151628 Ignore-this: 64083adec0b77ee86a3afade031a2889 ] [Update copyright date Duncan Coutts **20110227145222 Ignore-this: 66d0a4390f9027293a3998c69fe4a8d4 ] [Partial fix for handling multiple installed instances of same package version Duncan Coutts **20110227125008 Ignore-this: de73667cc9b4165c1df797a23307acd6 Previously when multiple instances of the same package are installed, e.g. in global and user dbs, we would often end up selecting the wrong instance. Now we select the user one consistently which will solve the problem in most (but not all) cases. ] [Bump version to 0.9.6 Duncan Coutts **20110214024354 Ignore-this: dfbecb3839c895fac3b31f3bca190085 ] [Adjust the amount of output for the -v verbosity level in a few places Duncan Coutts **20110213234115 Ignore-this: ac14de4aeb99fcec70650040179b75af For several commands, including install the -v verbosity level had far too much useless internall stuff in it. Reduced the amount of output from configuring the compiler, getting installed package and the dependency planner. The extra detail is still available via -v3. ] [Remove UnresolvedDependency type Duncan Coutts **20110213230016 Ignore-this: 3823588c1222187f1c9cbb17299cb75c ] [Remove code related to the dep resolver that is now redundant Duncan Coutts **20110213230002 Ignore-this: 782ca2a1078fa8249f8f056a1a23c634 ] [Remove now-unused utilities from World module Duncan Coutts **20110213225041 Ignore-this: ad1a368f71538602e5bbe2716a466d35 No longer needed now that the world target is handled via UserTarget. ] [Use the new modular dep resolver interface in the various commands Duncan Coutts **20110213224955 Ignore-this: 5fc85032554b125ae2a715273e7b9de3 Also minor tweak to InstallPlan.remove ] [Insert a separate fetch stage to the install process Duncan Coutts **20110213200824 Ignore-this: 647cc9a52d61b5b03771e79ef2dc84e6 Helps to clarify things now that different kinds of packages are fetched in different ways. ] [Tweak implementation of fetchRepoTarball Duncan Coutts **20110213200109 Ignore-this: d1bb9fa0414f2bc70aa72086968b60e1 ] [New interface to the dep resolver that allows modular policy construction Duncan Coutts **20110213195009 Ignore-this: cf218b8e70792cd0f4506c016787784f Allows shorter and clearer code for the various ways the resolver is used. ] [Partial rewrite of cabal list and info commands Duncan Coutts **20110213194627 Ignore-this: cd924d6acb75052a04ea6e4459bd4ddd The new user target system requires a change in how cabal info works. Instead of just giving package names and looking them up in the available package index, we can now specify names with versions or version constraints which means we want the info to be about that version in particular. We now list many installed and available versions and mark which ones are preferred or not. Also fix a bug for packages that are only installed, not available. ] [Add a new module for handling user targets Duncan Coutts **20110213194150 Ignore-this: 3a4b4ccd9d52d882a3a079d715a68c This will allow us to increase the range of targets that cabal commands can support. The new ones are local directory targets, local cabal files, local tarballs and remote tarballs by URL. Also a better way of doing the special "world" target. ] [Add a fetchPackage utility Duncan Coutts **20110213194034 Ignore-this: 821d447afde378889305e1205ad3ad23 Works for any package identified by PackageLocation rather than just for repo packages. ] [Add a few more Tar Entries utilities Duncan Coutts **20110213193911 Ignore-this: 9930ec082016efa9c3bed77d5eddbb17 ] [Add a local path and type param to PackageLocation Duncan Coutts **20110213193218 Ignore-this: 91781b96f082d3311734659ddf802638 So we can now use PackageLocation FilePath or Maybe FilePath to describe what we know about the fetch status of package tarballs. ] [Separate WorldPkgInfo type from UnresolvedDependency type Duncan Coutts **20110213185006 Ignore-this: 975965c1238b1f58a53303cb046c42bd Currently just a renamed copy of UnresolvedDependency but called WorldPkgInfo and defined in the World module. This is in preparation to remove all other uses of the UnresolvedDependency type. ] [Rename AvailablePackageSource to PackageLocation Duncan Coutts **20110213183529 Ignore-this: 40ee6b79bf284593491ae65228489d44 And remove import list for Types module, just import it all ] [Split out a FetchUtils module Duncan Coutts **20110213183446 Ignore-this: 19241ca08b50fe9547d780b6b2030955 And rename fetchPackage function to the more accurate fetchRepoTarball ] [Remove unnecessary Maybe from LocalUnpackedPackage dir filepath Duncan Coutts **20110213165151 Ignore-this: 44594d24516ba1286542b499fe5c804c We can just use "." instead of Nothing ] [Change the interface of the two package index search functions Duncan Coutts **20110123193706 Ignore-this: 1bb6d4d282bdcb029abb30409553e69b Move the ambiguity checking to the only use site Both normal and substring search now return [(PackageName, [pkg])] ] [cabal report uses the correct URIs and authenticates with username and passwords flags Vo Minh Thu **20101108184927 Ignore-this: 9e07434d1547aaeb022743a88cfa092c ] [Change position of --only-dependencies in --help listing Duncan Coutts **20110213171956 Ignore-this: 83fdf75d5d8977bb98d823d656a71335 Move it next to the --upgrade-dependencies flag ] [Add an --only-dependencies flag to "install" (see ticket #697) josh.hoyt@galois.com**20100630213736 Ignore-this: 3c769bcd7a85ee34d1b4787807b75bfc This flag installs only the dependencies of the packages that were explicitly mentioned on the command line. This is useful for using cabal-install in development environments, where the developer needs the dependencies to build the package in development, but does not yet want to install the package itself. ] [Change my email address Duncan Coutts **20110123202100 Ignore-this: 924e6bbc7f659a03f6c84d4c32487bf6 ] [fix a comment typo of 'according' Jens Petersen **20110122135339 Ignore-this: b7960675f98710b7b5caa046d136ac4d ] [Preserve executable permissions on unpack Duncan Coutts **20110117144900 Ignore-this: 5964f7b96672dd84f646bfa80dc51612 ] [Fix time version regexp in bootstrap script Duncan Coutts **20101123174641 Ignore-this: 685b17e087526c99faee430447c4af5e Sigh, having to use shell script and regexps... ] [Bump upper bounds on core packages for ghc-7 Duncan Coutts **20101123174328 Ignore-this: e098c14caa914e3865767d7ba124e8c ] [Increase default HTTP package version in bootstrap script Duncan Coutts **20101123173124 Ignore-this: 73209e2ee376d55d30b453adef08d7b2 ] [Update dependencies in the boostrap.sh script Duncan Coutts **20101123172516 Ignore-this: 29b09c71664a289e0c021df552227d6 ] [Bump time package dependency for ghc-7 Duncan Coutts **20101123170957 Ignore-this: a397e0ee880ee403dc553ee9ae6b6994 ] [Add an extra note about the http proxy decompression issue Duncan Coutts **20101027095034 Ignore-this: d5ac6be96ae78a92f93cf56a9e7b3ccb ] [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 Dmitry Astapov **20101026212606 Ignore-this: 3686236834c6cb56b3a754c36a8d7305 ] [Added GZipUtils to handle .tar files with the same code as .tar.gz Dmitry Astapov **20101026202343 Ignore-this: bef7a20f60de2298fc60759f1ca298d9 ] [Update to use Cabal-1.10.x Duncan Coutts **20101016192816 Ignore-this: 86d2b4bd91fe1c33e095b06438f6f972 ] [Add a TODO about fetch --constraint flags Duncan Coutts **20100901210351 Ignore-this: 973318ae9ebc87c095935493c446a39d ] [Simplify the bash command completion Duncan Coutts **20101010204158 Ignore-this: 6398703acc0702c18141da4ce09d20db Fixes #741. Patch contributed by Jan Braun ] [Do not add lower case .hs files as modules in cabal init Duncan Coutts **20100614213536 Ignore-this: 622461952f03fd6f80f0037b7336a676 There's still something wrong with the recursive dir traversal. It fails in some large cases. ] [Disable cabal upgrade and add cabal install --upgrade-dependencies Duncan Coutts **20100531130306 Ignore-this: 6469bf32fad573bf3a5c2340bd384ef6 cabal upgrade now gives an error message telling people to use install or, if they know what they're doing, install --upgrade-dependencies ] [Bump version to 0.9.2 Duncan Coutts **20100531121422 Ignore-this: 219c5a2d27e6aaa9639ec88265f3a40f ] [Minor tweaks in haddock code Duncan Coutts **20100528200326 Ignore-this: 170fda28b6b709efc6c5efd171317e83 ] [Use new simplistic package resolver for cabal unpack Duncan Coutts **20100528011523 Ignore-this: 85496633aa154e3601633ea9c6f43038 ] [Add cabal fetch --no-deps and --dry-run flags Duncan Coutts **20100528003508 Ignore-this: adfaf937df9f81bdc489c8163651d588 Allows fetching one or more packages but without fetching their dependencies and thus not requiring that a consistent install plan can be found. On the other hand --no-deps means that there is no guarantee that the fetched packages can actually be installed. ] [Use the simplistic available package resolver in cabal fetch Duncan Coutts **20100518125509 Ignore-this: 5a1caa0e64772c61dfd71b3567c6b218 Not yet connected up to the user interface. ] [Add a simplistic resolver for available packages that ignores dependencies Duncan Coutts **20100518125357 Ignore-this: a31605572aa4485898422a9d29aa6630 Suitable for cabal fetch/unpack but not for installation. ] [Rearrange dependency resolver code slightly Duncan Coutts **20100517111624 Ignore-this: ed0d580800ccee9b1065acb559727f3f ] [In fetch code, move dep resolution into separate function Duncan Coutts **20100517111336 Ignore-this: 860dfe33f51c1840afb61987e68b27d2 ] [Add initial internal support for more kinds of available package Duncan Coutts **20100511030941 Ignore-this: 74c25c42c83819c38608aed18c5ab214 Previously only named packages from a remote package archive, or the unpacked package in the current directory. Now also add unpacked packages in particular directories, local tarballs and remote tarballs. No support in the user interface or dep planning yet. ] [Use non-Char8 ByteString.readFile for reading 00-index.tar.gz Duncan Coutts **20100117113849 Ignore-this: b19b19959b7915c202c31337ce2084bc Was showing up on windows as an error decompressing after cabal update. Thanks to Tamar Christina for reporting and helping track down the bug. ] [Remove redundant dry-run support from world file code Duncan Coutts **20100510054824 Ignore-this: fbb943e80a9a54673cbdb1805218bd80 ] [Bump version to 0.9.1 Duncan Coutts **20100510034013 Ignore-this: 200668c3328194ea707ae61d0d64aa3c New world file feature ] [Workaround for 'cabal install world' problem with empty world file Duncan Coutts **20100510033051 Ignore-this: e5bd44421b734dc3246d43d3ed8c17d1 The current dep resolver does not like an empty set of targets along with a non-empty set of constraints. ] [Update a coupld copyright and maintainer notes Duncan Coutts **20100510032848 Ignore-this: bdcc380fc8d631e7ff0f2275bd03b81e ] [A bunch of TODOs for the Install module Duncan Coutts **20100510032756 Ignore-this: 41711e805de2e5052a8b647722215857 ] [Misc minor tweaks in Main Duncan Coutts **20100510032736 Ignore-this: 83ec8d4121c0db0327d14e6058feaf6e ] [Update world file entries ignoring version constraints Duncan Coutts **20100510032457 Ignore-this: aa8134bb28d56a32906223a60838f8af Otherwise it is easy to add impossible constraints to the world file. cabal install 'foo > 1' && cabal install 'foo < 1' Would give us a world file with both constraints. ] [Rearrange the code for the world file feature Duncan Coutts **20100510032121 Ignore-this: 8ce13765f2ef77bf562a2e1e38c777b Better better organisation of concerns for it to be in the Install module rather than in Main which is mostly concerned with command line handling. ] [Add plumbing in install code for global flags and target list Duncan Coutts **20100510031328 Ignore-this: 7a559f8b13f43f724f5796c3f7c2bea3 ] [Make the logs dir a proper config item and pass it to the install code Duncan Coutts **20100427011318 Ignore-this: 294ef784ebe8ee374035d182b10a6f5 ] [Rearrange installation code to make it a bit clearer Duncan Coutts **20100426005110 Ignore-this: 70f9f1fdaf805eabc75d2cebe70153ed ] [Updated patch for world-file support Peter Robinson **20091103202927 Ignore-this: 9333ae1f97d44246802504f779efc279 Update 2: now uses writeFileAtomic from Cabal This is a new patch for Ticket #199; it adds the "--one-shot" option. A world file entry contains the package-name, package-version, and user flags (if any). For example, the file entry generated by # cabal install stm-io-hooks --flags="-debug" looks like this: # stm-io-hooks -any --flags="-debug" To rebuild/upgrade the packages in world (e.g. when updating the compiler) use cabal install world Installing package 'foo' without adding it to the world file: # cabal install foo --one-shot ] [Import installDirsOptions from Cabal lib Duncan Coutts **20100401165125] [Cope with intra-package deps when constructing install plans Duncan Coutts **20100320215331 Ignore-this: 17d34d739024686d2f3a75a01e1e1c48 ] [Don't generate #! lines in Setup.hs files in cabal init Duncan Coutts **20100114033501 We don't want to encourage multiple ways of invoking Setup The one true (cross-platform) way is: runghc Setup ] [Fix the display of the license in "cabal list" output Duncan Coutts **20100113191913] [Adjust to the change in the type of getInstalledPackages Duncan Coutts **20091229212020 It used to return Maybe, now it always gives us a PackageIndex. This depends on an API change in Cabal-1.9.x. ] [Display the exception for failed downloads Duncan Coutts **20091222132526 Not great but better than nothing. ] [Remove now-unused compat module Duncan Coutts **20091222130959] [Change the default config on Windows to per-user installs Duncan Coutts **20091228165411 Ignore-this: afccc874f09efd2b8298ee01163c0462 Slightly experimental. We should look out for unexpected consequences. ] [Move downloadURI to HttpUtils module Duncan Coutts **20091222095152 Ignore-this: 6a80342e38c618ed5fe541fc7dfbec08 And use exceptions rather than return codes. ] [Fix a couple more ghc-6.12 -Wall warnings Duncan Coutts **20091222075821 Ignore-this: 429818d8b6fc528a155162e0eb67913d ] [Fix cabal sdist --snapshot Duncan Coutts **20091222080537 Ignore-this: a1f090e1bae653645cf5d55055deab3d ] [Distribution/Client/InstallSymlink.hs: explicitely import 'catch' and friend tom System.IO Sergei Trofimovich **20091220220105 Ignore-this: d7a4b304976bc8ce42dfae963d58694c ] [Distribution/Client/Install.hs: removed unused 'compilerTemplateEnv' from import Sergei Trofimovich **20091220215508 Ignore-this: e850510c11ec648f6fcec6d85ce23a82 ] [Distribution/Client/Unpack.hs: removed redundant import Sergei Trofimovich **20091220214545 Ignore-this: c1120ee8014c4c1bd3177857798e563d ] [Distribution/Client/Setup.hs: suppress warning (unused variable) Sergei Trofimovich **20091220214448 Ignore-this: 382010da79af4baf200a406d478cc5ec ] [Distribution/Client/Haddock.hs: removed redundant instances Sergei Trofimovich **20091220213757 Ignore-this: efffb1cd16256496f70314cce6001c6f ] [Distribution/Client/BuildReports/Anonymous.hs: removed unused import of BuildResult Sergei Trofimovich **20091220213350 Ignore-this: 50c449c43df34ceb1b13c61788bb0758 ] [Distribution/Client/IndexUtils.hs: fixed warning on -Wall (unused result) Sergei Trofimovich **20091220211940 Ignore-this: a74aded9f99237229dbfe762fcf20478 ] [Distribution/Client/SrcDist.hs: fixed warning on -Wall (unused result) Sergei Trofimovich **20091220211717 Ignore-this: d7d4fade7b5e5464d114995efdabb216 ] [Fix fromFlag error in upgrade Duncan Coutts **20091221140752 Ignore-this: 82eee01373bf121c1c00a7c5d27bac0f Use the missing defaultInstallFlags. ] [Reorder commands in cabal --help output Duncan Coutts **20091219034451] [Use the standard form of copyright statement in BSD3 license template Duncan Coutts **20091219031017 See http://www.opensource.org/licenses/bsd-license.php ] [Remove stability feature from cabal init Duncan Coutts **20091219030855 The stability field in .cabal files is deprecated since it's mostly useless. ] [Make the cabal init command line flag names follow the normal convention Duncan Coutts **20091219030747 Using hyphens rather than upper case. ] [Fix reporting of installed program versions in cabal list Duncan Coutts **20091218232501 We do not know if programs are installed or not so report unknown rather than saying it is not installed. ] [Update the README Duncan Coutts **20091218173459 Ignore-this: adde7b8406a92837f295ed3d57037827 ] [Bump head to new dev version 0.9.x Duncan Coutts **20091218172245 Ignore-this: 378cbb031583940fb4e301d0e640c396 ] [Update various .cabal bits Duncan Coutts **20091218171642 Ignore-this: a54518592cf53158e6a01ff7ad8753ef ] [Update the bootstrap script to work with ghc-6.12 Duncan Coutts **20091218165234 Ignore-this: b4aca31e814592f1cd6d53cf5a461859 We can no longer expect mtl, network and parsec to be installed. ] [Update the changelog for 0.8 Duncan Coutts **20091218165221 Ignore-this: 35f1f722b56c7eec84574e9d4be0d0f3 ] [Fix combination of --global --package-db when compiling Setup.hs scripts Duncan Coutts **20091218165119 Ignore-this: 6a78eaf39c21dfc692458f1046d852ce The order of the package db stack is important. ] [Allow numeric fields in tar headers that use binary format Duncan Coutts **20091123063734 This is an old non-standard extension that some tar tools still use. ] [Create all parent directories of extraced files Duncan Coutts **20091122080446 Previously only created the immediate parent directory. No rely more heavily on the file security check to make sure we are not writing files outside of the target area. ] [Ignore PAX entries when checking for tarbombs Duncan Coutts **20091122080255 When checking for tarbombs, ignore PAX entry types 'g' and 'x'. These do not get extracted so their names do not matter. ] [fixed 'cabal sdist' Sergei Trofimovich **20091113165833 Ignore-this: a9061231f18a00fda66bd73e0d4bac86 ] [Build with ghc-6.6 Duncan Coutts **20091110113735 Ignore-this: 939c6d822b78b7966ccc37a0739ecc81 ] [Fix base 4 exceptions in #ifdef WIN32 code section Duncan Coutts **20091110112415 Ignore-this: 53ad5959a1964ff8eccf93c17dd1e3d7 ] [Add a couple checks to "cabal unpack" and improve the messages Duncan Coutts **20091104142658 Ignore-this: 896cf992e5862393bb5e451a337545fa ] [Fix bootstrap (#599) Robin Green **20091102073414 Ignore-this: 67304fe1c399d679c0c7a7d0d01cff45 ] [Switch to using some Utils from the Cabal lib Duncan Coutts **20091102150528 Ignore-this: fe55da37cc85ce495a65949506ac3e42 Remove local copies. Also fixes a bug recently introduced in the writeFileAtomic function, spotted by Peter Robinson. ] [Parly fix building with ghc-6.6 Duncan Coutts **20091028163849 Ignore-this: 75f4ae640c2c2d7d46cd4c00d835b618 The new cabal init stuff needs some work. ] [Fix building with ghc-6.12 Duncan Coutts **20091028163719 Ignore-this: eb25e32b7696174a4702394ea59e03bc ] [Fix building with ghc-6.8 Duncan Coutts **20091028163352 Ignore-this: 9dc502c70fd2e5940729656168030953 ] [Allow building with base 4 Duncan Coutts **20091028163148 Ignore-this: 2ac8c966a4a014af94a21b7801331c19 ] [Bump version number a bit Duncan Coutts **20091028133527 Ignore-this: e2a10bab1da090c8aeedeb6dba74cb3 ] [Update list of modules (so sdist works) Duncan Coutts **20091028133513 Ignore-this: 91abc5688f598cf0a5ecf96855ccfe76 ] [Update new cabal init code for the recent package id changes Duncan Coutts **20091028132037 Ignore-this: 83f7b69c2a0727dba37dd7242a4f5791 ] [Initial go at converting to the new Cabal-1.8 installed package system Duncan Coutts **20091022123946 Ignore-this: 5e6665609e707de9dc73612b0efd25e9 It works by ignoring the possibility that there could be multiple installed packages sharing the same source package Id. We just pick the "top most" one which is usually ok. We make no attempt to check that we are using consistent installed packages. ] [Update for changes to finalizePackageDescription Duncan Coutts **20091018173233 Ignore-this: f60d2b66f9f0e223599ab15ac78d112c ] [add 'init' subcommand for initializing project cabalisation Brent Yorgey **20091011165644 Ignore-this: df51056f9e138d38d64f48c86cdf6376 ] [Collecting some heuristics for creating an initial cabal file benedikt.huber@gmail.com**20090902160332 Ignore-this: 50eb36690a888529d209f9da5af15078 ] [Apply suggestion for bootstrap failure message Duncan Coutts **20091020212319 Ignore-this: 70ed13514b158db7672f5d16a9ed90ea ghc ticket #3602 ] [Fix calculation of paths in check for bindir symlink overwriting Duncan Coutts **20090829004959 Ignore-this: d4dd8e12c03d23ce935de94cedbda257 We were doing it wrong, but Linux realpath() C function was letting us get away with it. The Solaris realpath() is stricter. The new implementation is also simpler, relying on the fact that the canonicalizePath function will resolve symlinks. ] [Require Cabal lib version 1.7.3 Duncan Coutts **20090707095944 Needs recent api changes. ] [Make the documentation toggle determine if we make the haddock index Duncan Coutts **20090707013030 Previously the --haddock-index=template flag controled both the template used and whether it's used at all. When no path was set then it was not used. The problem with that is that since we are not enabling this feature by default then the default is blank. That is the default config file would look like: -- haddock-index: which doesn't help anyone discover what it means or what a sensible setting would be. By having a separate toggle to enable/disable we can have a default for the index file which makes it easy to discover in the config file: -- documentation: False -- doc-index-file: $datadir/doc/index.html All the user has to do is uncomment the first line and use True. ] [Be less noisy about warning about packages with missing docs Duncan Coutts **20090707005149] [Use defaultInstallFlags as the defaults Duncan Coutts **20090707004836] [Move regenerateHaddockIndex more out-of-line in the Install module Duncan Coutts **20090707003722 Also update the code somewhat following the changes in the Cabal API for path templates and substitutions. ] [Use $pkgroot/package/$pkgid.tar.gz as tarball URL Duncan Coutts **20090704170602] [#516, maintains a per-user index of haddock docs Andrea Vezzosi **20090607170512 Ignore-this: 1114f6b944043781c4bf99620573b1cc If the haddock-index flag is set it keeps an index of the haddock documentation of the packages in the global and user databases ] [Now supporting explicit --user or --global switches in bootstrap.sh with usage feedback for bad args Dino Morelli **20090613150958 Ignore-this: 490a4fcdd5bc1940d6f32d71b0a042a5 This change was adapted from work submitted to the cabal-devel mailing list by Jason Dusek. ] [add message to 'package not found' error advising to run 'cabal update'. (#497) Brent Yorgey **20090611171233] [Fix sdist Duncan Coutts **20090605023441 Fix handling of base dir in tar file creation. ] [Fix use of deprecated version constructors Duncan Coutts **20090604180500] [Only report preferred new versions of cabal-install are available Duncan Coutts **20090604175726 That is, use the "preferred-versions" mechanism when deciding whether there is a new version available. This would allow us to upload a new version without everyone immediately being told to get it and try it out. ] [Make cabal upload/check print out the error messages reported by the server Duncan Coutts **20090604124836 The code to do it was already there but we were checking for the mime type text/plain using just (==) when in fact the server reports text/plain; charset="ISO-8859-1" so we have to parse the field a bit better (still a bit of a hack). ] [Require latest Cabal lib version Duncan Coutts **20090603102312] [Improve formatting of cabal check output Duncan Coutts **20090603102254] [Only apply preferences to base if its version is unbounded above Duncan Coutts **20090603101623 Fixes ticket #485. This means that for constraints like: build-depends: base >= 3 && < 5 we will pick version 4. However we will continue to apply the version 3 preference for things like: build-depends: base >= 3 Where there is no upper bound on the version. Note that we now also ignore preferences for base given on the command line. We should implement #483 to split prefs from shims. ] [Improve the parse error message for package name/deps Duncan Coutts **20090321154623 Make it clear that it's the specification of the package name that is at fault rather than the package to which the name refers. ] [Debian in their wisdom decided to build network against parsec 3. Duncan Coutts **20090308142925 So checking for parsec 2 fails. We don't strictly need parsec, it's just a dependency of network, so remove the check. ] [Simplify version ranges before printing in error messages Duncan Coutts **20090531191346 Part of ticket #369 ] [Use new top handler, should get better error messages Duncan Coutts **20090531190318] [Fix uses of deprecated stuff Duncan Coutts **20090531190239] [New development branch, version 0.7 Duncan Coutts **20090531184336 Update to development version of Cabal ] [Solaris 9 /bin/sh doesn't like the ! syntax in bootstrap.sh Duncan Coutts **20090318091730] [Clarify the instructions in the README and bootstrap.sh Duncan Coutts **20090315125407 Addresses the complaint in ticket #523. ] [Select Configuration file via env var CABAL_CONFIG. Paolo Losi **20090223005251 Ignore-this: 26e5ded85cb69cb3a19cd57680a8a362 ] [Update tar code based on new tar package Duncan Coutts **20090301174949] [Actually does compile with unix-1.0 that comes with ghc-6.6 Duncan Coutts **20090221154605 ghc-6.6.1 came with unix-2.1 ] [TAG 0.6.2 Duncan Coutts **20090219130720] Patch bundle hash: bae7f7aaea454d6c12d7bf407af4991e3a398c84