Sun Jul 13 12:20:43 BST 2008  a.d.clark@ed.ac.uk
  * Die on configuration parse failure

New patches:

[Die on configuration parse failure
a.d.clark@ed.ac.uk**20080713112043] {
hunk ./Hackage/Config.hs 31
-import System.FilePath ((</>), takeDirectory)
+import System.FilePath ((</>), takeDirectory, addExtension)
hunk ./Hackage/Config.hs 58
-import Distribution.Simple.Utils (notice, warn)
+import Distribution.Simple.Utils (notice, warn, die)
hunk ./Hackage/Config.hs 183
+                       -- If there is a parse error we should fail rather than
+                       -- using the default configuration since this generally
+                       -- indicates that the user did not wish to use the
+                       -- default configuration.
hunk ./Hackage/Config.hs 188
-                           do warn verbosity $ "Error parsing config file " 
-                                            ++ configFile ++ ": " ++ showPError err
-                              warn verbosity $ "Using default configuration."
-                              return defaultConf
-           where defaultConf' = defaultConf { configRemoteRepos = [] }
+                           do writeDefaultConfigFile defaultBackup defaultConf
+                              die $ "Error parsing config file "
+                                    ++ configFile ++ ": " ++ showPError err
+                                    ++ "\nDefault configuration written to: "
+                                    ++ defaultBackup
+                                    ++ "\nTo use the default configuration "
+                                    ++ "replace :" ++ configFile 
+                                    ++ " with :" ++ defaultBackup
+                                   
+           where defaultConf'  = defaultConf { configRemoteRepos = [] }
+                 defaultBackup = addExtension configFile ".default"
}

Context:

[Fix for when user supplies incorrect upload username/passwd
Duncan Coutts <duncan@haskell.org>**20080623113315
 Should now return a proper error rather than an internal
 error from the HTTP library.
] 
[Add initial build logging, based on reporting code
Duncan Coutts <duncan@haskell.org>**20080619233341] 
[Fix the upload command message about the location of the config file
Duncan Coutts <duncan@haskell.org>**20080618201737] 
[TAG 0.5.1
Duncan Coutts <duncan@haskell.org>**20080617154034] 
[Bump the version to 0.5.1
Duncan Coutts <duncan@haskell.org>**20080617154000] 
[Default to global installs on Windows
Duncan Coutts <duncan@haskell.org>**20080616223847
 User installs by default elsewhere. Note that this default only
 affects new config files. Existing windows users will need to
 change their config file or delete it and let it be re-created.
] 
[Overhaul the bogus dependency resolver so it works again
Duncan Coutts <duncan@haskell.org>**20080616175511
 The bogusResolver is used for compilers like hugs and nhc98 where
 we do not know what packages are already installed. We do it by
 altering the descriptions of the packages we're going to install
 to remove all of their dependencies. Doing this gives us a valid
 install plan. We rely on hope to minimise the difference between
 this install plan and reality.
] 
[Use standard thisPackageVersion rather than inlined definition
Duncan Coutts <duncan@haskell.org>**20080616173253] 
[Move getAvailablePackages into IndexUtils module
Duncan Coutts <duncan@haskell.org>**20080616171255] 
[Try and pick up the http proxy on windows correctly
Duncan Coutts <duncan@haskell.org>**20080616170312
 Takes account of the ProxyEnabled reg key
 Allow proxy uris that lack the http:// uri schema.
 This should really be moved into the HTTP package.
] 
[The update command doesn't take any extra args
Duncan Coutts <duncan@haskell.org>**20080613185421] 
[TAG 0.5.0
Duncan Coutts <duncan@haskell.org>**20080612192943] 
[Bump the version to 0.5.0
Duncan Coutts <duncan@haskell.org>**20080612190718] 
[Include the bash-completion code in the tarball
Duncan Coutts <duncan@haskell.org>**20080612190702] 
[Update to minor change in Cabal-1.4 and fix a warning.
Duncan Coutts <duncan@haskell.org>**20080612181122] 
[Put upper bounds on all the build-depends
Duncan Coutts <duncan@haskell.org>**20080612175040] 
[Take the the flag assignment into account in the resolver
Duncan Coutts <duncan@haskell.org>**20080610235212
 so it now actually works to say: $ cabal install foo -fbar
] 
[Put the configurations flags into each UnresolvedDependency
Duncan Coutts <duncan@haskell.org>**20080610235024
 We don't actually have per-package flags yet. All -f flags
 on the install/upgrade command line apply to every paclage.
] 
[Put the build client it into the build reports
Duncan Coutts <duncan@haskell.org>**20080610234654] 
[Fix printing of flags in build reports
Duncan Coutts <duncan@haskell.org>**20080610171033] 
[Put build-reports into per-server dirs
Duncan Coutts <duncan@haskell.org>**20080610014011
 Don't bother putting the server url into each report
 since we do not want to upload that information anyway.
] 
[Fix parsing of build reports
Duncan Coutts <duncan@haskell.org>**20080610013704
 and add a function to parse a whole logfile of reports
] 
[Use a readable external formar for build reports
Duncan Coutts <duncan@haskell.org>**20080609200756] 
[Include the hackage server in the build report
Duncan Coutts <duncan@haskell.org>**20080608131227
 This is so that we remember which server to send the reports to.
 This is pretty important if you're using a private as well as a
 public hackage server.
] 
[Use proper URI type rather than String
Duncan Coutts <duncan@haskell.org>**20080608124522] 
[First cut at generating build reports
Duncan Coutts <duncan@haskell.org>**20080608121754] 
[Use a smarter preference when picking a Cabal lib to build Setup.hs
Duncan Coutts <duncan@haskell.org>**20080607182600
 Instead of just using the latest version we use the best version
 according to the following preferences in priority order:
 - the same version as cabal-install was itself built with
 - the same major version number as cabal-install was built with
 - a stable version of Cabal (even second digit of major number)
 - the latest version
] 
[Only inspect the needed parts of the installed and available indexes
Duncan Coutts <duncan@haskell.org>**20080607143913
 The available package index is loaded lazily so if we can avoid
 forcing all the packages then we can save a huge amount of slow text
 parsing. So select out the maximal subset of the index that we could
 ever need based on the names of the packages we want to install. For
 the common case of installing just one or two packages this cuts
 down the number of packages we look at by a couple orders of
 magnitude. This does not help with the installed index which is read
 strictly, though most people do not (yet) have hundreds of installed
 packages, so that's less of an immediate problem.
] 
[TAG 0.4.9
Duncan Coutts <duncan@haskell.org>**20080606165746] 
[Add Hackage.Reporting to other-modules
Duncan Coutts <duncan@haskell.org>**20080606165704] 
[Bump version number
Duncan Coutts <duncan@haskell.org>**20080606155746] 
[Bring the reporting module slightly closer to reality
Duncan Coutts <duncan@haskell.org>**20080606154939] 
[trivial doc improvement and unused name fix
Duncan Coutts <duncan@haskell.org>**20080606152840] 
[Fix haddock markup
Duncan Coutts <duncan@haskell.org>**20080606143918] 
[Adapt to changes in Cabal library 1.4 branch
Duncan Coutts <duncan@haskell.org>**20080606135546] 
[Filter the configure flags based on the Cabal lib version
Duncan Coutts <duncan@haskell.org>**20080606092503
 Allows us to use cabal-install to build packages where we build the
 Setup.hs script using an older version of the Cabal library.
 This is important for packages that claim to need an older version
 and it's also pretty useful for testing.
] 
[Rearrange setup wrapper to know the cabal lib version
Duncan Coutts <duncan@haskell.org>**20080606003215
 It is important to know which version of the Cabal lib the setup
 script has been built with because it affects what flags we can pass
 to it. So we now store the version in dist/setup/setup.version.
 If the version number changes then we rebuild the setup binary.
] 
[When marking failed reverse deps, don't include the package itself
Duncan Coutts <duncan@haskell.org>**20080605003656
 Otherwise we end up saying packages failed because they depend
 on themselves which failed to install, which is silly.
] 
[Fix for marking reverse deps of failed packages
Duncan Coutts <duncan@haskell.org>**20080604125217
 The reverse deps may have already failed due to depending on another
 failed package. So do not assume all reverse deps are in the
 configured state. If they are in the failed state then ignore them.
] 
[Failed packages can still depend on configured packages
Duncan Coutts <duncan@haskell.org>**20080604101010
 This is because a package can depend on several packages and if one
 of the deps fail then it fails but it still depend on the others
 that did not fail. This fixes an assertion failure in larger builds.
] 
[Turn on assertion checking even in -O builds
Duncan Coutts <duncan@haskell.org>**20080604100033
 Although it is expensive, we want to catch problems early.
] 
[Update synopsis and description
Duncan Coutts <duncan@haskell.org>**20080603180733] 
[Update copyright dates and holders in LICENSE file
Duncan Coutts <duncan@haskell.org>**20080603172006] 
[Remove obsolete TODO
Duncan Coutts <duncan@haskell.org>**20080603171843] 
[Update the README file
Duncan Coutts <duncan@haskell.org>**20080603171721] 
[Check the InstallPlan invariant on updates and not on reads
Duncan Coutts <duncan@haskell.org>**20080603171646] 
[Don't include the default repo when loading the config file
Duncan Coutts <duncan@haskell.org>**20080603151844
 So we don't end up downloading the index from hackage twice.
] 
[TAG 0.4.8
Duncan Coutts <duncan@haskell.org>**20080603005057] 
[Bump version number to help with bug reports
Duncan Coutts <duncan@haskell.org>**20080603004702
 The new resolver is a significant change in behavior so it's
 useful to know when people report problems.
] 
[Switch the defaultResolver to the new topDownResolver
Duncan Coutts <duncan@haskell.org>**20080603004555
 Time for wider testing.
] 
[Make the 'upgrade' command take optional deps
Duncan Coutts <duncan@haskell.org>**20080603002337
 Up to now 'upgrade' took no args and tried to upgrade all installed
 packages to the latest versions. It retains that mode but also has
 a new mode rather like 'cabal install'. The difference is that with
 $ cabal install foo
 it means install latest version of foo but otherwise prefer the
 installed versions of deps of foo, while
 $ cabal upgrade foo
 means install the latest version of foo and also the latest
 versions of all the dependencies of foo.
] 
[Make use of the package version preference in the top-down resolver
Duncan Coutts <duncan@haskell.org>**20080602183243] 
[Change the DependencyResolver type to take a per-package version pref
Duncan Coutts <duncan@haskell.org>**20080602182410
 And add a few global package version pref policies and use them in
 ordinary install and upgrade. For install we use a policy that says
 that we prefer the latest version of a package that we specifically
 request and prefer the installed version of any other package. For
 upgrade we simple always prefer the latest version. One can imageine
 other policies where we prefer the latest version for only some
 interesting subset of packages and installed otherwise.
 No resolvers actually make use of this preference yet.
] 
[Fix improvePlan so the index is updated incrementally
Duncan Coutts <duncan@haskell.org>**20080602163944
 It's important since later packages can depend on earlier ones having
 been changed from configured to pre-existing. That is afterall the
 whole point of considering them in reverse toplogical order.
 Also, remove duplicates in the dependencies list of installed
 packages since ghc-pkg does not currently prevent duplicates in (eg
 multiple depends on the same version of base). See ghc bug #2230.
] 
[Support top level dependency version constraints
Duncan Coutts <duncan@haskell.org>**20080602111816
 and error messages for when they're unsatisfiable or conflict
] 
[Fix bug in passing the verbosity value when re-executing cabal
Andrea Vezzosi <sanzhiyan@gmail.com>**20080602052536
 It was passing the value as another argument, distinct from the flag.
] 
[Implement plan improvement
Duncan Coutts <duncan@haskell.org>**20080602000018
 The idea is to improve the plan by swapping a configured package for
 an equivalent installed one. For a particular package the condition
 is that the package be in a configured state, that a the same version
 be already installed with the exact same dependencies and all the
 packages in the plan that it depends on are in the installed state.
] 
[As a heuristic, use topological order for the order of package choices
Duncan Coutts <duncan@haskell.org>**20080530184437
 The general case in exploring the state space is that we have a set of
 choices (package names) and for each choice we have a number of
 versions of that package we could pick. If there's only one version of
 a package then we make that choice first. Otherwise we have to pick
 some package and select one of the available versions. The question is
 which package should we make a choice for first? Previously we picked
 completely arbitrarily. Surprisingly this actually works pretty well.
 An improvement is to pick packages in topological order. This works
 better because it allows dependencies from earlier choices to
 constrain our later choices.
] 
[Rearrange and tidy bits of the topdown resolver
Duncan Coutts <duncan@haskell.org>**20080530170306] 
[Switch install to use resolveDependenciesWithProgress
Duncan Coutts <duncan@haskell.org>**20080530170102
 And show progress messages at verbosity level 2.
] 
[Add resolveDependenciesWithProgress
Duncan Coutts <duncan@haskell.org>**20080530165445
 nd clean up header info
] 
[Switch DependencyResolver to return Progress and String errors
Duncan Coutts <duncan@haskell.org>**20080529204849
 rather than Either and structured error type [Dependency]. The reason
 we cannot use that as a structured error type any more is because
 missing dependencies is not the only failure reason. There are
 several reasons, several of which are pretty complex. For now we'll
 have to do with a human readable message. Perhaps we may be able to
 find a common structured type that the different dep resolvers can
 all agree on. I'm not hopeful however as error reporting seems to be
 closely tied to the dep resolution approach.
] 
[Use thisPackageVersion and notThisPackageVersion from Distribution.Package
Duncan Coutts <duncan@haskell.org>**20080529204714
 rather than the local definitions
] 
[Bump version and depend on the latest Cabal from the 1.4 branch
Duncan Coutts <duncan@haskell.org>**20080529104502] 
[First version of the top-down package dependency resolver
Duncan Coutts <duncan@haskell.org>**20080528215804
 This is a new dependency resolver that produces valid install plans.
 It works in polynomial time however because the search space is 
 exponential in size it is not guaranteed to find a solution even if
 one exists. It works by generating and then exploring the search
 space represented as a lazy tree. It uses constraints to prune
 choices and heuristics when guesses are necessary. Currently it can
 generate install plans for 99% of the packages on hackage. The
 remaining 6 packages should be doable with two extra tricks.
 It is not finished and is not yet usable in practice.
] 
[Move common dependency resolver types into shared module
Duncan Coutts <duncan@haskell.org>**20080528215049] 
[Hide any available base and ghc-prim packages from the dep resolver
Duncan Coutts <duncan@haskell.org>**20080521153700
 Previously if the base package was available on hackage then the dep
 resolver might try to upgrade it. Unfortunately that's almost
 certainly technically impossible at the moment. So now since the dep
 resolver does not see these available packages it cannot pick them.
 This should fix ticket #174.
] 
[Remove the silly failing resolver demo
Duncan Coutts <duncan@haskell.org>**20080521153648] 
[Update for renamed PackageIndex.delete (now .deletePackageId)
Duncan Coutts <duncan@haskell.org>**20080516002900] 
[Update for distPref changes
Duncan Coutts <duncan@haskell.org>**20080512005444] 
[Move the upgrade action into the Install module
Duncan Coutts <duncan@haskell.org>**20080510185920
 It shares most code anyway.
 Also fixes ticket #260 becuase we use the right entry point now.
] 
[Pull the planners out of install and pass them as parameters
Duncan Coutts <duncan@haskell.org>**20080510122321] 
[Move printing of build failures into a separate function
Duncan Coutts <duncan@haskell.org>**20080510122141] 
[Move dryRun out of the misc options
Duncan Coutts <duncan@haskell.org>**20080510114010] 
[Rewrite getUpgradableDeps so it's simpler and linear time
Duncan Coutts <duncan@haskell.org>**20080510012816
 Also change so that instead of giving the available package with
 the highest version number (where that is higher than the installed
 package) it gives us a dependency on a version of the package that
 is strictly greater than the one installed. This is more flexible
 since when resolving we do not necessarily have to pick the very
 latest version if that turns out not to be possible.
] 
[Put the check back in for hideBrokenPackages
Duncan Coutts <duncan@haskell.org>**20080509165800] 
[Split the two resolvers out of the Dependency module
Duncan Coutts <duncan@haskell.org>**20080509165509
 It's clearer what is the generic stuff and what is specific to the
 current resolver. So it should be a bit easier to swap in new ones.
] 
[Swap Either args so it's Either Error Ok
Duncan Coutts <duncan@haskell.org>**20080509152007
 Which seems to be the normal convention.
] 
[Make the existing dep resolvers to use the DependencyResolver interface
Duncan Coutts <duncan@haskell.org>**20080509151514
 That is the standard naive dep resolver and the bogus one that has to
 make up a plan assuming that all dependencies are installed.
] 
[Change the result type of DependencyResolver
Duncan Coutts <duncan@haskell.org>**20080509142807
 and add a wrapper that makes InstallPlans
] 
[Change InstallPlan.done and .next into .ready that returns a list
Duncan Coutts <duncan@haskell.org>**20080509114153
 So kind of like uncons style rather than null and head.
 It returns all the ready ones by lazily so it's no extra expense.
 It'll allow parallel installations since all ready packages are
 independent of each other. Also update callers.
] 
[Restructure the package installing code
Duncan Coutts <duncan@haskell.org>**20080508092649
 Previously each layer called the next layer down and therefore the
 top layer had to take all of the params that the bottom layer needed
 even though they were mostly or wholly unmodified on the way down.
 Now each layer takes the next layer as a parameter so we do not need
 to take the params that are not used directly by the current layer.
 The overall stack is then built by applying each layer to the next.
] 
[executeInstallPlan now takes an installer instead of calling installPkg
Duncan Coutts <duncan@haskell.org>**20080507182158
 Four of the executeInstallPlan param were just passed through directly
 to installPkg so this decouples them a bit.
] 
[Tidy planLocalPackage and planRepoPackages a bit more
Duncan Coutts <duncan@haskell.org>**20080507181733] 
[Refactor installLocalPackage and installRepoPackages
Duncan Coutts <duncan@haskell.org>**20080507180108
 They share most code so pull the first and last bits out into the
 top level install function. They now need 2 and 3 fewer params
 respectively, which is a good sign. Rename them because they're
 generating plans now rather than doing the installation directly.
] 
[Move ConfiguredPackage type into Types module
Duncan Coutts <duncan@haskell.org>**20080507155725
 It's not actually specific to the InstallPlan.
] 
[Hide broken installed packages when resolving dependencies
Duncan Coutts <duncan@haskell.org>**20080507002103
 Stops us from choosing them which would always end up with an
 invalid installation plan.
] 
[Add an info message when resolving dependencies
Duncan Coutts <duncan@haskell.org>**20080507001851
 It can take a while, especially with debug checks turned on.
] 
[Reimplement InstallPlan.failed as it was completely wrong
Duncan Coutts <duncan@haskell.org>**20080507001302
 It was finding all the dependencies of the failed package and
 marking them as failed. But of course what we have to do is find
 all the packages that depend on the failed package (the reverse
 dependencies) and mark them as failed. We use the reverse
 dependency Graph that we saved in the InstallPlan.
] 
[Add lookupConfiguredPackage helper function to InstallPlan
Duncan Coutts <duncan@haskell.org>**20080507001006
 Simplifies implementation of completed and failed
] 
[Add a dependency graph to the InstallPlan
Duncan Coutts <duncan@haskell.org>**20080507000626
 Uses Data.Graph and annoyingly we also need to keep functions
 around for mapping between Graph.Vertex <-> PackageIdentifier
] 
[Check that InstallPlan dependencies respect a state relation
Duncan Coutts <duncan@haskell.org>**20080507000209
 For example it's not allowed for installed packages to depend
 on configured packages.
] 
[Minor improvements to InstallPlan documentation and error reporting
Duncan Coutts <duncan@haskell.org>**20080506235905] 
[Hide the installed instance when installing the local package.
Duncan Coutts <duncan@haskell.org>**20080506133236
 Otherwise the dependency resolver may decide to pick the installed
 instance of the package but we really do want to install the local
 version. So to remove that choice from the dep resolver we just
 delete it from the installed package index.
] 
[Add more info and debug messages at key parts of the install process
Duncan Coutts <duncan@haskell.org>**20080506133022
 If we're in verbose mode then always print what we're going to
 install, not just when the user specifies --dry-run.
] 
[Switch from DepGraph to InstallPlan
Duncan Coutts <duncan@haskell.org>**20080505091743
 The dependency resolver has had to be extended in a slightly hacky
 way to gather the extra information needed by an install plan. In
 particular it requires the flags to use to configure each package,
 the actual versions of dependencies to use and all of the
 installed packages and their closure of dependencies.
 However the current resolver is fairly naive and so can be easily
 persuaded into producing an invalid install plan, in which case
 you'll get a detailed list of reasons as to why it is invalid.
] 
[Packages are only invalid if they have more than zero problems.
Duncan Coutts <duncan@haskell.org>**20080505090513] 
[Improve InstallPlan error checking and reporting
Duncan Coutts <duncan@haskell.org>**20080504201857
 Instead of just reporting that a plan is invalid, produce a
 detailed list of reasons why it is invalid.
 This should be useful for people debugging dependency resolvers.
 Also rename the complete property to closed, since the property
 is about the set being closed under the dependency relation.
 Also re-use the PackageIndex functions for checking the validity
 conditions rather than re-implementing the checks locally.
] 
[Use the mergeBy from the Utils module
Duncan Coutts <duncan@haskell.org>**20080504201742] 
[Add new utils, duplicates, duplicatesBy and mergeBy
Duncan Coutts <duncan@haskell.org>**20080504194530] 
[Update for flipped order of args for PackageIndex.insert
Duncan Coutts <duncan@haskell.org>**20080504193722] 
[Don't echo when prompting for the hackage upload password.
Duncan Coutts <duncan@haskell.org>**20080501214456
 Fixes ticket #268. And use newtypes for the username and password,
 just to be more sure we're not mixing them up with other strings.
] 
[Remove the resolveDependenciesLocal, implement it via resolveDependencies
Duncan Coutts <duncan@haskell.org>**20080430193351
 The local variant was for the case that we were starting from a package
 description rather than a dependency to a named package. In the local
 case we not only need to resolve the dependencies of the package but also
 to find a flag assignment for the local package. This case crops up in
 the resolver normally when we try to satisfy a dependency, we have to
 pick a flag assignment for the dependency and resolve its dependencies.
 It is annoying to have both entry points, especially as we want the
 resolver to be plugable. So instead we define the local package as an
 available package, then by resolving a single dependency on exactly the
 name and version of the local package then we can get an install plan for
 the local package. It also requires generalising installPkg to deal with
 the local case.
] 
[Generalise and rename PkgInfo to include local packages
Duncan Coutts <duncan@haskell.org>**20080430180922
 Renamed to AvailablePackage since that what it is really.
 Now instead of just representing packages from a remote hackage repo
 it includes an alternative for a local unpacked package. In future
 we should add more alternatives, eg for other local packages (ie not
 just the one that's unpacked in the current dir) and for remote
 packages in source control like darcs, git etc.
] 
[Convert the Install module to use the new SetupWrapper
Duncan Coutts <duncan@haskell.org>**20080430115021
 And refactor slightly to batch some of the misc parameters
 together in a record rather than passing them all separately.
] 
[Add a new --cabal-lib-version flag to the install command
Duncan Coutts <duncan@haskell.org>**20080430114709
 It's used to select which version of the Cabal lib to use when
 configuring, building and installing packages. It's mainly so that
 we can use cabal-install to help us test that packages build ok with
 both old and new versions of the Cabal library. In particular we'd
 like to check every package on hackage to make sure that new Cabal
 versions are not breaking packages that worked with older versions.
] 
[Convert Main to use the new SetupWrapper module
Duncan Coutts <duncan@haskell.org>**20080430114604] 
[Fix setupWrapper bug, when no compiler was configured
Duncan Coutts <duncan@haskell.org>**20080430114448] 
[Add replacement SetupWrapper module
Duncan Coutts <duncan@haskell.org>**20080430103412
 Clearer code and a wider interface to give more control.
] 
[Simplify the way we derive configure, install and upgrade commands
Duncan Coutts <duncan@haskell.org>**20080430085201
 so we do not accidentally inherit the default flags for the underlying
 configure command when we in fact want the empty flags. I am beginning
 to suspect that having any defaults at all was a mistake.
] 
[Make the default SavedConfig contain empty rather than default ConfigFlags
Duncan Coutts <duncan@haskell.org>**20080430084938
 We do not want to pass a load of default command line flags. We only want
 to pass flags where we're overriding the defaults.
 Also it's because old Cabal versions do not understand new flags.
] 
[Rearange install plan checking code
Duncan Coutts <duncan@haskell.org>**20080424224159
 Make it usable for callers that want to check
 properties before constructing an InstallPlan.
] 
[Update for checkPackage change
Duncan Coutts <duncan@haskell.org>**20080423153817] 
[Update for FlagAssignment changes
Duncan Coutts <duncan@haskell.org>**20080420191543] 
[Add new InstallPlan type
Duncan Coutts <duncan@haskell.org>**20080414171914
 This is joint work with Kolmodin.
 An InstallPlan records what we want to install and records the outcome
 of installing packages. It has a fairly strict internal invariant which
 should guarantee that each package can be configured sucessfully.
] 
[Simplify install --only implementation
Duncan Coutts <duncan@haskell.org>**20080414143457
 The install --only doesn't do any planning or build
 reporting so make it completely separate so we do
 not have to make up fake build plans or results.
] 
[Change resolveDependencies to take OS and Arch as parameters
Duncan Coutts <duncan@haskell.org>**20080414000419
 Rather than using global 'constants' for the current os and arch.
] 
[Make ResolvedDependency an internal detail of dependency calculation
Duncan Coutts <duncan@haskell.org>**20080413234119
 Externally we currently use a DepGraph, though we'll move to a InstallPlan.
 This is a step towards making it easier to swap in different package
 dependency resolution algorithms. Because we're hiding ResolvedDependency
 we have to disable the extended Hackage.Info stuff for the moment.
] 
[Relax version constraint on HTTP, seems to work with 3001.1
Duncan Coutts <duncan@haskell.org>**20080413223940] 
[Update for change to finalizePackageDescription
Duncan Coutts <duncan@haskell.org>**20080413223910] 
[Half-done build reporting stuff
**20080412234057] 
[Add missing modules in other-modules, fixes sdist
Spencer Janssen <sjanssen@cse.unl.edu>**20080330193710] 
[TAG 0.4.6
Duncan Coutts <duncan@haskell.org>**20080329195601] 
[Bump version number and depend on the latest Cabal lib
Duncan Coutts <duncan@haskell.org>**20080329194549] 
[Use new showPWarning for warnings in parsing the config file
Duncan Coutts <duncan@haskell.org>**20080329194426] 
[Update to recent Cabal lib changes
Duncan Coutts <duncan@haskell.org>**20080327053454] 
[Use the new Text class all over
Duncan Coutts <duncan@haskell.org>**20080325023224
 Mostly just changing showVersion, showPackageId to display instead
] 
[fix small bug in Hackage.Tar
Andrea Vezzosi <sanzhiyan@gmail.com>**20080320151322
 The baseDir was passed instead of the full path.
] 
[Bump version and require latest Cabal lib version
Duncan Coutts <duncan@haskell.org>**20080319221747] 
[#223 part2: Support all the configure options in the config file
Pepe Iborra <mnislaih@gmail.com>**20080319175052
 
 This patch takes advantage of the new OptionField structure in Distribution.Simple.Command
 to provide support for all the configure command line options in the .cabal/config file.
 This has a global effect on all the packages managed by cabal-install.
 
 The ticket also mentions support for per-package sections in the config file. This patch
 does not take care of that.
 
] 
[Record and report the exceptions that cause build failure
Duncan Coutts <duncan@haskell.org>**20080319170753
 When installing a bunch of package we have to catch exceptions since
 we carry on building other packages that did not depend on the
 failing package. We were recording what phase the failure was in but
 not the actual exception. We now record that too and print it along
 with the more general explanation of what package failed and in
 which phase. It's not perfect, eg when a package fails to compile we
 end up printing that the exception was "ExitFailure 1" which is not
 very useful.
] 
[Simplify the tar code a bit more
Duncan Coutts <duncan@haskell.org>**20080319015243
 We always know the base path for construction or extraction so don't
 bother using Maybe FilePath. Also use GZip qualified.
] 
[Use relative paths when makeing tar.gz rather than changing current dir
Duncan Coutts <duncan@haskell.org>**20080319013936
 The current directory is a global variable, we should not mutate it.
 So instead, pass a base and relative path when generating tar entries.
 Also change sanitizePath to be pure and use FilePath.Poisx.
] 
[Minor changes to the tar packing code
Duncan Coutts <duncan@haskell.org>**20080319000919
 Use lazy bytestring when packing tar entry headers rather than strict and
 then making a single chunk lazy bytestring later. The lazy bytestring pack
 will only generate a single chunk for a String that short (<4k).
 Use openBinaryFile rather than openFile + hSetBinaryMode.
 Add a haddock module header with copyright note.
] 
[Refactor the SrcDist code in a similar way as in the Cabal lib
Duncan Coutts <duncan@haskell.org>**20080319000633] 
[fix imports, because Dependency has moved in Cabal
Andrea Vezzosi <sanzhiyan@gmail.com>**20080318174423] 
[FIX #40, now cabal sdist creates the archive using Hackage.Tar
Andrea Vezzosi <sanzhiyan@gmail.com>**20080318173047
 we don't call setup sdist anymore but we use functions from Distribution.Simple.SrcDist
] 
[Parse filepaths in the config file the same way as in .cabal files
Duncan Coutts <duncan@haskell.org>**20080312135335
 That is, allow quoted and unquoted paths.
] 
[Implement CLI flag --root-cmd for 'cabal install' as in #202
Andrea Vezzosi <sanzhiyan@gmail.com>**20080306160816
 It also adds the internal flag --only so we can avoid building a setup when build-type == Simple.
] 
[List.hs: fix synopsis paragraph wrapping
Brent Yorgey <byorgey@gmail.com>**20080307192159] 
[Adapt to using the bundled ReadP
Duncan Coutts <duncan@haskell.org>**20080310233609
 +1 for using the same version of the ReadP lib everywhere,
 previously we would only have noticed this type error with nhc98.
] 
[Make the 'upload' command more self explanatory
Duncan Coutts <duncan@haskell.org>**20080310233346
 It tells you what to do if you don't supply any args, rather than doing
 nothing and it check for simple mistakes and gives helpful error messages.
] 
[Use new buildOS and buildArch
Duncan Coutts <duncan@haskell.org>**20080306114834] 
[Hackage/List.hs: reflow paragraphs when displaying synopsis/description.
Brent Yorgey <byorgey@gmail.com>**20080305193407] 
[Attempt to make things work using hugs, assume everything is installed
Duncan Coutts <duncan@haskell.org>**20080305152641] 
[Instead of Setup.lhs use .hs like everyone else does
Duncan Coutts <duncan@haskell.org>**20080303232408] 
[Hackage/List.hs: port showPackageInfo to pretty-printing combinators, improve display of packages with multi-line synopses
Brent Yorgey <byorgey@gmail.com>**20080304211707] 
[Fix defect when unpacking tar files containing links
Lennart Kolmodin <kolmodin@gentoo.org>**20080304194255
 There were two issues;
   * Unpacking links that point to files not yet unpacked
   * Used the link target as absolute path, but it's relative
 This patch addresses both issues, which is ticket #246.
 There may still be errors if a link refer to another link which has not
 been unpacked yet.
] 
[Update for recent Cabal lib api and behaviour changes
Duncan Coutts <duncan@haskell.org>**20080303213931
 Depend on latest Cabal lib version and bump our own version due to recent
 feature additions and removal of the 'info' command.
] 
[CLI completion: Add completion of packages
Lennart Kolmodin <kolmodin@gentoo.org>**20080303183231
 Add completion of packages to the commands install, list, upgrade and fetch.
 Only complete packages if the user is not trying to complete a flag.
 Complete with package-versions if the package name ends with a dash,
 otherwise just complete with the package names.
] 
[Fix fromFlag bug and use default flags for list command
Duncan Coutts <duncan@haskell.org>**20080303164154] 
[Fix savedConfigToConfigFlags so the command line overrides the config
Duncan Coutts <duncan@haskell.org>**20080303140007
 "cabal configure --global" was incorrectly passing the user prefix to setup.
] 
[In 'list', also include packages that are only installed and not available
Duncan Coutts <duncan@haskell.org>**20080303010346
 Previously we took the available packages and did an inner join with the
 installed packages so we missed out packages like base which are installed
 by not available. Now we get the selected installed and available package
 sets and do a full outer join using a sort and merge operation.
 Also use a proper data type to hold the info we print about each package.
] 
[Remove shortopt -I for --installed
Lennart Kolmodin <kolmodin@gentoo.org>**20080302195639] 
[Implement 'cabal list --simple-output'
Lennart Kolmodin <kolmodin@gentoo.org>**20080302195437
 Provides a output format that is easier to pass on to unix tools and other
 scripting tools. Also works together with --installed.
] 
[Implement --installed to 'cabal list'
Lennart Kolmodin <kolmodin@gentoo.org>**20080301222704
 Adding --installed to 'cabal list' will make it print only packages that are
 installed.
] 
[Improve 'cabal list'
Lennart Kolmodin <kolmodin@gentoo.org>**20080301202117
 Make the output of 'cabal list' prettier. 
 $ cabal list xmonad
  * xmonad
       Latest version available: 0.6
       Latest installed version: 0.6
       Homepage: http://xmonad.org
       Category: System
       Synopsis: A tiling window manager
       License:  BSD3
  * xmonad-contrib ...[snip]
 Very much like the gentoo tools eix and esearch.
 This targets part of ticket #235. It still does not show packages that are
 installed but not available.
] 
[Remove 'info' command, make --dry-run cover that feature
Duncan Coutts <duncan@haskell.org>**20080229140300
 In -v mode info produced a detailed tree explaining the dependency
 resolution. That feature has been moved into 'install --dry-run -v'.
] 
[Add --dry-run to upgrade, replacing existing info message
Duncan Coutts <duncan@haskell.org>**20080229110710
 Also adjust the default for --dry-run to be false rather than empty.
] 
[Implement --dry-run for 'cabal install'
Lennart Kolmodin <kolmodin@gentoo.org>**20080228195034] 
[Revert to ordinary read/writeFile for the config file
Duncan Coutts <duncan@haskell.org>**20080228105914] 
[Take nub by package id when making a dep graph
Duncan Coutts <duncan@haskell.org>**20080227021706
 and give more detailed error messages for internal error conditions.
 Fixes a problem where installing a set of packages where several depended
 on the same package would give us a ResolvedDependency list containing
 multiple copies of that package. The DepGraph was expecting unique packages.
 Resolving package deps and generating install plans needs more thought
 and better specified invariants.
] 
[Read package descriptions from the index as UTF8
Duncan Coutts <duncan@haskell.org>**20080225133357] 
[Convert to using readTextFile as appropriate
Duncan Coutts <duncan@haskell.org>**20080224180038
 Added readBinaryFile for on use (uploading .tar.gz files)
 Remove readURI as it was not being used.
] 
[Depend on latest Cabal lib
Duncan Coutts <duncan@haskell.org>**20080223184326] 
[Print output as UTF8
Duncan Coutts <duncan@haskell.org>**20080223184130] 
[Handle unpacking failures slightly more gracefully
Duncan Coutts <duncan@haskell.org>**20080222002748
 And note problem #246 about unpacking tar files with links
] 
[Update for Package and various utils having moved modules
Duncan Coutts <duncan@haskell.org>**20080222235759
 Several of the general util functions in Hackage.Utils are now in the main
 Cabal lib in Distribution.Simple.Utils so we use those.
 The Package class moved into Distribution.Package.
 Use the packageId class function in more places.
] 
[Use exitFailure rather than exitWith (ExitFailure 1)
Duncan Coutts <duncan@haskell.org>**20080222000323
 and instead of exitWith ExitSuccess just return through main rather than
 throwing an exception
] 
[Make the qa check return an exit code reporting the status
Lennart Kolmodin <kolmodin@gentoo.org>**20080221213201] 
[When a package seems ok, say so
Lennart Kolmodin <kolmodin@gentoo.org>**20080221213126] 
[Fix typo
Lennart Kolmodin <kolmodin@gentoo.org>**20080221213041] 
[Naive implementation of 'cabal check'
Lennart Kolmodin <kolmodin@gentoo.org>**20080221204820
 A naive implementation of 'cabal check'.
 It will list the errors and warnings as implemented by Cabal, yielding them
 in groups of severity. Currently ignores verbosity levels, no additional
 arguments are understood. This addresses ticket #211.
] 
[Make the install code collect some detail on the reasons for package failure
Duncan Coutts <duncan@haskell.org>**20080221204922
 Then print out at the end why packages failed. This is a step closer to
 producing detailed build reports.
] 
[Make ResolvedPackage an instance of Package and PackageFixedDeps
Duncan Coutts <duncan@haskell.org>**20080221204756
 And use that to simplify the code slightly. Also add an assertion into
 removeFailed, that the first returned result is the failed package itself,
 since we'll rely on this in the install code.
] 
[Replace RepoIndex type with PackageIndex PkgInfo
Duncan Coutts <duncan@haskell.org>**20080220212848
 and adapt to the minor finalisePackageDescription change
] 
[Use a dependency graph rather than a list when installing packages
Duncan Coutts <duncan@haskell.org>**20080220110637
 This allows us to figure out what to do when installing a single package
 fails. Instead of just carrying on as if nothing had happened and then
 failing several other packages which depended on the one that failed
 initially we can cut those dependent packages out as soon as the first one
 fails and if there is anything left that did not depend on the failed
 package then we can try and carry on.
] 
[Update to Cabal lib api changes
Duncan Coutts <duncan@haskell.org>**20080215131142
 The InstalledPackageIndex replaces our Hackage.LocalIndex module
] 
[Use setupMessage for consistency in downloading message
Duncan Coutts <duncan@haskell.org>**20080213193346] 
[-Wall clean
Duncan Coutts <duncan@haskell.org>**20080213193325] 
[Bump version and required Cabal version
Duncan Coutts <duncan@haskell.org>**20080211012151
 Due to recent Cabal api changes
] 
[Fixed imports to correspond to the latest arrangement of Distribution.PackageDescription.
phigley@gmail.com**20080210070730] 
[Rename ResolvedPackage to ResolvedDependency
Duncan Coutts <duncan@haskell.org>**20080120144754] 
[Make the configure command take the defaults from the config file
Duncan Coutts <duncan@haskell.org>**20080119170358
 Just like the install command has always done. This makes them consistent.
 So by default that means cabal configure uses --user --prefix=$HOME/.cabal
] 
[Note in the README than the unix package is not a dependency
Duncan Coutts <duncan@haskell.org>**20080119170254] 
[Fix a warning.
Duncan Coutts <duncan@haskell.org>**20080119170155
 All the other warnings are instances of ghc bug #1148.
] 
[Fix "cabal list" with no package specified
Duncan Coutts <duncan@haskell.org>**20080119155219] 
[Treat package names given on the command line case insenitively
Duncan Coutts <duncan@haskell.org>**20080118230004
 Implements feature request #167.
] 
[Add IndexUtils with functions to disambiguate packaage names
Duncan Coutts <duncan@haskell.org>**20080118225545
 To allow us to implement case-insensitivity in package names given on the
 command line. We lookup in the package index for packages with the same name
 case-insensitively. If there is no exact match exact case-sensitively and
 there are more than one packages matching case-insensitively then it aborts
 with a message listing the matches. This should not often happen since within
 any single HackageDB server, we can check that packages names are unique
 case-insensitively but it's possible to get ambiguities if cabal-install has
 been configured to use multiple repos.
] 
[Remove unused listInstalledPackages, replaced by LocalIndex.read
Duncan Coutts <duncan@haskell.org>**20080118221309] 
[Change Dependency module to use the LocalIndex ADT
Duncan Coutts <duncan@haskell.org>**20080118220703
 The whole Dependency module is pure now, no IO since it takes the indexes
 as arguments, rather than the many more args required to do the IO to load
 up the indexes. Much nicer. Also update all callers.
] 
[Update copyright and docs for RepoIndex
Duncan Coutts <duncan@haskell.org>**20080118220013
 Added my copyright as I've almost completely rewritten the module.
] 
[Add Hackage.LocalIndex module as an index of installed packages
Duncan Coutts <duncan@haskell.org>**20080118215953
 Very much like the RepoIndex module but only holds package ids at the moment
  rather that full InstalledPackageInfo records that we'd really prefer.
] 
[Rename Hackage.Index -> Hackage.RepoIndex
Duncan Coutts <duncan@haskell.org>**20080118215132
 In preperation to add Hackage.LocalIndex module
] 
[Trivial change to utils
Duncan Coutts <duncan@haskell.org>**20080118214236] 
[Disable a particularly slow invariant check
Duncan Coutts <duncan@haskell.org>**20080117200539] 
[Move package substring searching into the Index module and use it in List
Duncan Coutts <duncan@haskell.org>**20080117200439
 Not much faster but rather cleaner.
] 
[Make a proper RepoIndex ADT
Duncan Coutts <duncan@haskell.org>**20080117175854
 This represents the collection of packages from a remote repo.
 It encodes the policies on how we find packages when we have multiple repos.
 The policy is encoded in the repo merge operation and in the various kinds of
 lookup functions.
] 
[Add Utils module, tidy imports
Duncan Coutts <duncan@haskell.org>**20080117175709] 
[Split ParseUtils module out of Utils module
Duncan Coutts <duncan@haskell.org>**20080117173017] 
[Have command line args override saved config not the other way around
Duncan Coutts <duncan@haskell.org>**20080115200258
 Fixes setting the --prefix from the command line which was previously being
 ignored in favour of the default prefix from the config file.
] 
[Set the useragent string to be "cabal-install/$version"
Duncan Coutts <duncan@haskell.org>**20080115160347
 eg, currently it is "cabal-install/0.4.2"
] 
[Don't verbosely display the http conversation chatter by default
Duncan Coutts <duncan@haskell.org>**20080115160233
 Though do display it at deafening verbosity level.
] 
[Use proxy port number rather than ignoring it
Duncan Coutts <duncan@haskell.org>**20080115151033] 
[Refactor proxy handling yet again
Duncan Coutts <duncan@haskell.org>**20080115150933
 This time to better handle parsing and warning about invalid proxy uris
] 
[Remove unused var
Duncan Coutts <duncan@haskell.org>**20080115150838] 
[Use commandDefaultFlags = mempty rather than commandAddActionWithEmptyFlags
Duncan Coutts <duncan@haskell.org>**20080115150725
 Simpler and simplifies the Command api in the Cabal lib
] 
[Fix compilation on windows
Duncan Coutts <duncan@haskell.org>**20080114143456
 Silly #ifdefs making things harder to test.
] 
[After refactoring the http proxy code we don't need the unix package
Duncan Coutts <duncan@haskell.org>**20080114142301
 Which was just being used for an exception-free version of getEnv but we
 have to cope with exceptions anyway for the Win32 registry.
] 
[Set the user install flag when restoring saved config
Duncan Coutts <duncan@haskell.org>**20080114141313] 
[Allow finding the proxy to fail without failing overall
Duncan Coutts <duncan@haskell.org>**20080113201627
 On windows, if looking up the info in the registry failed then we failed
 overall. Now we just don't use the proxy. Also refactored a bit.
] 
[Fix getting verbosity flags
Duncan Coutts <duncan@haskell.org>**20080111025634] 
[Depend on latest development version of Cabal lib
Duncan Coutts <duncan@haskell.org>**20080110203711] 
[Remove redundant code an re-enable accidentally disabled code
Duncan Coutts <duncan@haskell.org>**20080110180137] 
[Significantly refactor configuration handling
Duncan Coutts <duncan@haskell.org>**20080110175634
 ConfigFlags is not used in any of the modules that do the real work, instead
 we just pass in the necessary information. Renamed ConfigFlags to SavedConfig
 and moved it's definition into the Config module. Also change what information
 is kept in the Repo type so that it knows the local path too. A PkgInfo now
 also knows which Repo it is from.
] 
[Added support for users behind proxy servers, reading system settings from the env var on unix or registry on windows
<jim@sdf-eu.org>**20071221201500] 
[Added upgrade command
ijones@syntaxpolice.org**20071231213953
 cabal upgrade installs the latest version of any currently installed
 package.
 
] 
[improved error handling for multiple installs
ijones@syntaxpolice.org**20071231210303
 When installing multiple packages, don't quit just after the first
 error, but rather collect the list of packages that failed to install
 continue installing whatever packages we can, and provide an error
 message at the end.
 
] 
[Initial attempt at command line completion
Lennart Kolmodin <kolmodin@gentoo.org>**20071219215747] 
[Added dependency on random. Needed by Hackage.Upload.
bjorn@bringert.net**20071218111220] 
[Improve 'cabal info pkg' message when there is nothing to install
Duncan Coutts <duncan@haskell.org>**20071218004724
   "All requested packages already installed. Nothing to do."
 rather than:
   "These packages would be installed:\n"
 followed by ... nothing.
] 
[Make logging and verboisty a bit more consistent
Duncan Coutts <duncan@haskell.org>**20071218004604
 Use the Distribution.Simple.Utils functions and eliminate use of printf
] 
[Don't append '.' to filename in message. Make config file end in a new line.
Duncan Coutts <duncan@haskell.org>**20071217234934] 
[Get the saved hackage username and password from the config file
Duncan Coutts <duncan@haskell.org>**20071217234649
 rather than from the old ~/.cabal-upload/auth file.
 Now uses ~/.cabal/config with:
 hackage-username:
 hackage-password:
] 
[Add Bjorn Bringert to authors and copyright list
Duncan Coutts <duncan@haskell.org>**20071217224227
 Since much recent cabal-install work is his and he wrote cabal-upload which
 was just integrated.
] 
[Remove unnecessary use of a type alias
Duncan Coutts <duncan@haskell.org>**20071217223913] 
[Initial integration of upload feature
Duncan Coutts <duncan@haskell.org>**20071217223748
 It still uses it's own config file, but now uses the same command line stuff
] 
[Fix usage message, swap program and sub-command names
Duncan Coutts <duncan@haskell.org>**20071217223620] 
[Remove redundant parameters
Duncan Coutts <duncan@haskell.org>**20071217211141] 
[Add the cabal-setup commands: configure, build etc
Duncan Coutts <duncan@haskell.org>**20071217210621
 So we now have the complete set of commands in one tool.
 This uses the new Command infrastructure to do two way conversion between
 flags as strings and as a structured parsed form.
] 
[Add Upload module direct copy of cabal-upload
Duncan Coutts <duncan@haskell.org>**20071217205813] 
[Add a verbosity flag to the info list update and fetch commands
Duncan Coutts <duncan@haskell.org>**20071217190035] 
[Add command listing support
Duncan Coutts <duncan@haskell.org>**20071217185912
 first step to shell command line completion
] 
[installCommand only ever needs to use defaultProgramConfiguration
Duncan Coutts <duncan@haskell.org>**20071217185811
 So don't bother making it a parameter
] 
[Add in more global help text like that of Setup.hs
Duncan Coutts <duncan@haskell.org>**20071217185605] 
[Replace command line handling
Duncan Coutts <duncan@haskell.org>**20071215194603
 Use the new cabal command line handling infrastructure. Use proper flag types
 rather than strings. 
 Drop support for per-package command line flags as it was generally agreed to
 be confusing.
] 
[Read/write binary files using ByteString without .Char8 modules
Duncan Coutts <duncan@haskell.org>**20071022222115
 ByteString.Char8 treats files as text files, which are really different
 on windows. We were getting CRLF translation in Windows which was messing
 everything up, like saving & reading the index file.
 So now only use BS.Char8 where necessary.
] 
[Remove old non-existant copyright file from extra-source-files
Duncan Coutts <duncan@haskell.org>**20071021174954
 We only have one LICENCE file
] 
[TAG 0.4.0
Duncan Coutts <duncan@haskell.org>**20071021143856] 
[Bump version to 0.4.0
Duncan Coutts <duncan@haskell.org>**20071021133633] 
[Update description
Duncan Coutts <duncan@haskell.org>**20071021133622] 
[Fix handling of unadorned package names
Duncan Coutts <duncan@haskell.org>**20071017230653
 ie make "cabal install xmonad" work ;-)
 We were parsing unqalified package names as a dependency upon a specific but
 empty version. That is treating "foo" as a dependency like "foo==".
 We now treat unadroned package names as deps on any version.
] 
[It builds with HTTP-3001 as well.
Duncan Coutts <duncan@haskell.org>**20071017225538] 
[Pass on the compiler to use when building a package
Duncan Coutts <duncan@haskell.org>**20071017225507] 
[Added explicit Cabal imports to Utils.
bjorn@bringert.net**20071017211514] 
[Parse command line arguments as either Dependency or PackageIDentifier, to allow e.g. 'cabal install binary-0.3'.
bjorn@bringert.net**20071017211126] 
[Fixed error message when some depedencies couldn't be resolved. Before it used show on Dependency, not showDependency.
bjorn@bringert.net**20071017190848
 Using fail here produces things like:
 cabal: user error (Unresolved dependencies: containers -any, array -any, bytestring >=0.9)
 It would be nice to get rid of the "user error" here. 
] 
[Portability fixes to allow building with ghc-6.4 and ghc-6.6
Duncan Coutts <duncan@haskell.org>**20071017004501] 
[Clean up redundant imports
Duncan Coutts <duncan@haskell.org>**20071017004440] 
[Make package searches ~100x faster but less featurefull
Duncan Coutts <duncan@haskell.org>**20071017004309
 Instead of parsing every .cabal file in the package list (which is very slow)
 We now just get the package name and version and do a case-insensitive
 substring search on the package name. The output format remains unchanged.
 So we no longer search inside package descriptions.
] 
[Parse multiple repo urls listed in the .cabal/config correctly
Duncan Coutts <duncan@haskell.org>**20071016004606
 The url part cannot contain any chars, since then we allow spaces and ',' and
 thus break parsing of following repos.
] 
[Moved the local package index reading to a new module, Hackage.Index.
bjorn@bringert.net**20071016215439] 
[The ConfigFlags now contain two different sets of install dirs, one for global and one for user installs.
bjorn@bringert.net**20071016153525
 This simplifies the install dirs handling a lot, and allows the user to specify both user and global install dirs in the config file, and chose installation type on the command line.
 We now ignore the config file and command-line compiler flavor when choosing install directories, since that
 is so messy. This might break installs with Hugs, but that requires testing.
 The old code didn't work when the compiler was specified on the command-line anyway.
] 
[Removed mtl and unix dependencies, they don't seem to be required.
bjorn@bringert.net**20071016112306] 
[Set preifx to the global default when the config file says to do a global install. This still doesn't work if --global is given on the command line. Print the complete config if verbosity >= verbose. Don't save prefix to the config file, since that means we will use the user default even for global installs.
bjorn@bringert.net**20071016091022] 
[Added deriving Show to all the types in Hackage.Types, useful for debugging.
bjorn@bringert.net**20071016090957] 
[Changed zlib dependency to 0.3 to be able to compile using 6.6 and deps from hackage.
bjorn@bringert.net**20071016085833] 
[Change Cabal dep to >=1.2 now that the required patches are in the 1.2 branch. This should really be >= 1.2.1, but the version number of the 1.2 has not been bumped yet.
bjorn@bringert.net**20071016085735] 
[Add an extra space when displaying package version lists
Duncan Coutts <duncan@haskell.org>**20071014185104
 eg: "xmonad [0.1, 0.2, 0.3]" rather than "xmonad [0.1,0.2,0.3]"
 it's just a tad easier to read.
] 
[Improve the error message we get when missing the package index file
Duncan Coutts <duncan@haskell.org>**20071014171035] 
[Remove the bundled deps as they're totally out of date
Duncan Coutts <duncan@haskell.org>**20071012112237] 
[Don't report errors on cleaning when it's already clean
Duncan Coutts <duncan@haskell.org>**20071012112052
 We now ignore file not found errors when deleting the packages dir.
 Otherwise when we clean and then clean again we get an exception since
 the directory we're trying to delete has already been deleted.
] 
[Don't say "Nothing to do" when installing the dependencies of a local package.
bjorn@bringert.net**20071013222238] 
[Pass -vN rather that --verbose=N to SetupWrapper, since older versions required --verbosity rather that --verbose.
bjorn@bringert.net**20071013215659] 
[More verbosity fixes.
bjorn@bringert.net**20071013143502] 
[Verbosity fixes.
bjorn@bringert.net**20071013142919] 
['cabal install' without argument now installs all the dependencies of the package in the current directory, and then configures, builds and installs it.
bjorn@bringert.net**20071013140029] 
[cabal list now only shows one line per package, with a list of verions.
bjorn@bringert.net**20071013125801] 
[Use --with-compiler and --with-hc-pkg.
bjorn@bringert.net**20071013123412] 
[Call findCompiler in Main for the commands that need it.
bjorn@bringert.net**20071013120115] 
[Changed configurations to make it build with ghc 6.8 and ghc 6.6. I haven't tested 6.6.1, but it should work.
bjorn@bringert.net**20071008211836] 
[Ok, I see. zlib >= 0.4 is needed since 0.3 wont install with ghc 6.8.
bjorn@bringert.net**20071008204452] 
[Changed finalization to say that all installed and available packages can be used to resolve dependencies. This is overly optimistic, since some of the available packages may not be installable because of missing deps. We probably need to look at the entire dependency graph.
bjorn@bringert.net**20071008201251] 
[Handle -fflag options.
bjorn@bringert.net**20071008200832] 
[Changed zlib >= 0.4 to zlib >= 0.3. 0.3 works fine for me, and 0.4 is not on hackage yet.
bjorn@bringert.net**20071008200532] 
[Rewrote the package dependency analysis code.
bjorn@bringert.net**20071007212538
 It is now about half as much code, and uses fewer and simpler
 functions and data types. The external interface is now much smaller,
 which meant that I had to change quite a bit of other code.
 I orignally wrote this in parallel with dons' clean-up changes,
 and had to merge by hand since darcs went into mad exponential conflict mode.
 I hope I didn't revert too many of dons' changes.
] 
[-Wall police
Don Stewart <dons@galois.com>**20071007161302] 
[polish
Don Stewart <dons@galois.com>**20071007155013] 
[Flatten cabal install namespace!
Don Stewart <dons@galois.com>**20071007154309] 
[move directory hierarchy up one level
Don Stewart <dons@galois.com>**20071007153407] 
[move tests under tests
Don Stewart <dons@galois.com>**20071007153000] 
[portable Setup.lhs
Don Stewart <dons@galois.com>**20071007152644] 
[updated license / readme
Don Stewart <dons@galois.com>**20071007152435] 
[Update to cabal configurations. (Due to broken base numbering though, we can't write a version that works with 6.6 :(
Don Stewart <dons@galois.com>**20071007150924] 
[Use Cabal.* namespace, not CabalInstall.* (since its the 'cabal' executable in the end)
Don Stewart <dons@galois.com>**20071007150901] 
[Oops, I removed the filtering out of already installed packages from resolveDependencies.
bjorn@bringert.net**20071007131648] 
[Some refactoring of the Dependency module.
bjorn@bringert.net**20071007131349] 
[Removed the build-dep command. It has been been broken since we started to use configurations, and should be subsumed by the planned cabal-setup integration.
bjorn@bringert.net**20071007130436] 
[Don't export finalizePackage.
bjorn@bringert.net**20071007130112] 
[Move listInstalledPackages to Config.
bjorn@bringert.net**20071007125840] 
[Check that there is a sanely named .cabal file after unpacking a code tarball.
bjorn@bringert.net**20071007125457] 
[Make resolveDependenciesAux pure.
bjorn@bringert.net**20071007124549] 
[resolveDependencies does not need a list of installed packages as argument.
bjorn@bringert.net**20071007123522] 
[Set prefix to .cabal by default.
bjorn@bringert.net**20071007121350] 
[Renamed executable to 'cabal'.
bjorn@bringert.net**20071007121333] 
[Only configure the compiler once per command.
bjorn@bringert.net**20071007115744] 
[Some -Wall policing.
bjorn@bringert.net**20071007102631] 
[Some minor refactoring.n
bjorn@bringert.net**20071007101249] 
[Removed old bit-rotted commented-out getReverseDeps.
bjorn@bringert.net**20071007100616] 
[Removed some fixed FIXMEs.
bjorn@bringert.net**20071007100411] 
[Replace zlib use by compression.
bjorn@bringert.net**20071007100258] 
[Create .cabal directory before writing .cabal/config
bjorn@bringert.net**20071007100113] 
[Added config file fields for all the install dir templates.
bjorn@bringert.net**20071007094703] 
[Added cachedir field to config file.
bjorn@bringert.net**20071007093410] 
[user-install field in config file.
bjorn@bringert.net**20071007093121] 
[Actually write some fields to the config file.
bjorn@bringert.net**20071007090430] 
[Use default configuration if we can't parse the config file.
bjorn@bringert.net**20071007090409] 
[Added TODO file.
bjorn@bringert.net**20071007085648] 
[Untabify the rest of the code.
bjorn@bringert.net**20071007084618] 
[Dummy config file writer.
bjorn@bringert.net**20071007084400] 
[Updated README. It's rather incomplete.
bjorn@bringert.net**20071007071043] 
[Get rid of OutputGen.
bjorn@bringert.net**20071006232017] 
[Some detabification.
bjorn@bringert.net**20071006225546] 
[Added a config file. Removed the old serv.list file. Added dinstall directory command line arguments.
bjorn@bringert.net**20071006225304] 
[Use our native Haskell tar implementation to extract code from tarballs. We now don't use an external tar program for anything.
bjorn@bringert.net**20071006154847] 
[Added extraction to the simple TAR implementation.
bjorn@bringert.net**20071006153122] 
[Remove the unused configRunHc.
bjorn@bringert.net**20071006102525] 
[Removed the unused configPkgListDir.
bjorn@bringert.net**20071006101246] 
[Sensible defaults in case of missing or erroneous server lists.
Lemmih <lemmih@gmail.com>**20071006093313] 
[Remove unused TarUtils import from Update.
bjorn@bringert.net**20071006100157] 
[Fix dependency parsing from the command line. Before it accepted partial parses, which for example made "cgi=3" parse as "cgi".
bjorn@bringert.net**20071006091615] 
[Compile with -Wall. There are tons of warnings.
bjorn@bringert.net**20071006083829] 
[s/parseDescription/parsePackageDescription/.
bjorn@bringert.net**20071006083757] 
[Store downloaded source code tarballs under the repo directory. 
bjorn@bringert.net**20071006063535
 This required changing the PkgInfo type from an alias for GenericPackageDescription 
 to a record with a Repo and a GenericPackageDescription.
 ResolvedPackage and ResolvedDependency also had to be changed to
 keep a Repo rather than a tarball URL.
] 
[Use the package-url field in the GenericPackageDescription to record the tarball url for each package.
bjorn@bringert.net**20071005155441] 
[Use the ungzipped 00-index.tar as the local package info cache.
bjorn@bringert.net**20071005153824
 This adds a dependency on zlib, to unzip the downloaded 00-index.tar.gz.
 Once unzipped, a small pure haskell tar reader is used to read
 the index contents.
 Servers in the server list now have names which are used 
 as local cache directory names.
 The --with-server command line flag has been removed since it
 did not allow specifying a server name.
] 
[Change Cabal dependency to Cabal>=1.3.
bjorn@bringert.net**20071005105510] 
[Attempts to use --flags options to set configurations flags when finalizing packages.
bjorn@bringert.net**20071005105142] 
[Store GenericPackageDescriptions, and finalize when resolving dependencies.
bjorn@bringert.net**20071004215516
 This is very untested, but should make cabal-install able to resolve
 dependencies again after the move to Cabal 1.2.0. The package descriptions
 are stored in a very hacky format atm the moment.
] 
[Refactoring: change getLatestPkg to work on PkgInfo, and use it in getDependency.
bjorn@bringert.net**20071004180950] 
[Refactor getBuildDeps and redefine flattenDepList in terms of it.
bjorn@bringert.net**20071004175047] 
[Refactor flattenDepList.
bjorn@bringert.net**20071004162538] 
[Refactoring: add Dependency.isInstalled and use it.
bjorn@bringert.net**20071004161353] 
[Refactoring: add listInstalledPackages, and use that everywhere instead of getInstalledPackages with lots of arguments that all come from ConfigFlags.
bjorn@bringert.net**20071004144421] 
[Refactor getDependency to make it easier to understand.
bjorn@bringert.net**20071004140521] 
[Changed Cabal dep from >=1.1.7 to >=1.2.0, since 1.1.7 was just the development version.
bjorn@bringert.net**20071003210123] 
[Fix LICENSE and remove duplicate copyright file
Duncan Coutts <duncan@haskell.org>**20070917033118
 Lemmih, Paolo Martini are the primary authors of cabal-install but were
 missing from the list in LICENCE.
] 
[Fixups for recent cabal api changes
Duncan Coutts <duncan@haskell.org>**20070906232255] 
[make it build with cabal-1.1.7
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070828172528
 But it does not work yet as it need to be updated to take configurations into
 account. At the moment it thinks no packages have any dependencies since
 it does not finalise the configuration for the package.
] 
[Add modules to cabal-setup.cabal: this makes Setup sdist work
Spencer Janssen <sjanssen@cse.unl.edu>**20070710181342] 
[Be more verbose in Update
Pepe Iborra <mnislaih@gmail.com>**20070521094421] 
[Unbreak package retrieval on Windows
Pepe Iborra <mnislaih@gmail.com>**20070521094212
 
 Fixes a bug in my previous filepath patch
] 
[Be more robust when dealing with external tar
Pepe Iborra <mnislaih@gmail.com>**20070520202137] 
[Upgraded to Distribution.Verbosity
Pepe Iborra <mnislaih@gmail.com>**20070520173752] 
[Follow directory layout of HackageDB data also when calculating URLs to download from, not just the local paths.
bjorn@bringert.net**20070520221611] 
[Print download URL with -v, to allow debugging download errors.
bjorn@bringert.net**20070520215635] 
[Changed HTTP version dep to HTTP >= 3000.0 && < 3000.1
bringert@cs.chalmers.se**20070520213129] 
[Add missing import
Pepe Iborra <mnislaih@gmail.com>**20070508085242] 
[follow change of directory layout of the HackageDB data
Ross Paterson <ross@soi.city.ac.uk>**20070506152013] 
[Use user installs by default
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070504104652
 So it "Just Works"tm without needing extra options or sudo fiddling.
 If you care you can still do sudo fiddling and --global-install
] 
[Fix dep on HTTP package
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070504104640] 
[Remove the Makefile and the redundant install instructions
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503194108
 We can now install purely using cabal, no Makefile needed.
 The install instrcutions previously said to install the data
 file manually, but cabal does that for us now.
] 
[Use the new hackage package archive url
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503194046] 
[Change various things in our own .cabal file
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503193742
 Fix the license, it's BSD3 not BSD4 (I double checked with Issac)
 Have cabal install the serv.list for us as a data file.
 Add HTTP and filepath as dependencies, rather than bundling them.
] 
[Add message when creating the package config files.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503193600
 Enabled at -v2
] 
[Be less verbose when parsing all the package's .cabal files
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503193449
 So that at ordinary -v1 we do not get lots of silly warnings for outdated
 .cabal files, like warnings about hs-src-dir vs hs-src-dirs.
] 
[Make the -v flag mean -v2 like cabal does, not -v3
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503193348
 This is relevant since we pass on this default verbosity when we call cabal,
 so it's much better if they match up.
] 
[Tweak where the default config lives and where we keep the package list
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503192303
 This should make it all "Just Work"tm. We no longer need a Makefile
 to do the installation. The point is, don't bother trying to use
 /etc/cabal-install/srve.list as the global list. That's hard to do
 because it involves installing that file, and we only want to do that
 for global installs, so it's even more complex. Instead we should just
 use cabal's facility to install data files. That way it ends up in
 /usr/local/share/cabal-install-x.y/
 or somewhere similar for a user install. But either way, cabal handles it.
 The per-user config sill overrides this one, so it's still possible to edit
 the list even if /usr/local/share/ is read-only. Also, we always use
 $HOME/.cabal-install/ for the per-user config and package cache.
 The one downside is that if an admin wants to use /etc/ and /var rather
 than /root/.cabal-install/ then this is a tad harder. But the point is
 at the moment it'll at least work for most people without fiddling,
 including windows users.
] 
[Get the version from the cabal-generated paths module
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503162224] 
[List packages in name and version order (case-insensitively)
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503162117] 
[Fix default verbosity
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070503162033] 
[Upgraded to filepath & first steps towards Windows compatibility
Pepe Iborra <mnislaih@gmail.com>**20070503143352] 
[Print ... after Downloading message.
bjorn@bringert.net**20070422115215] 
[Don't print Downloading 'package.tar.gz' twice.
bjorn@bringert.net**20070422114358] 
[Fixed path to LICENSE file in .cabal file.
bringert@cs.chalmers.se**20070410165954] 
[build-dep can now build the dependencies specified in a local .cabal file.
bjorn@bringert.net**20070409170409
 This is useful when you want to build a development version of something whose dependencies are available in Hackage. 
] 
[Removed one level of indirection in the command-line options parsing.
bjorn@bringert.net**20070409154654
 Before, getOpt would return a list of Flag, which had a one-to-one correspondence with functions TempFlags -> TempFlags. This made it uneccessarily difficult and error-prone to add new flags. I removed the Flag type and replaced the values with TempFlags -> TempFlags functions. This should have the side effect of making the tar path flag work, since it was not interpreted before.
] 
[Move cabal-install files to the top level
Ian Lynagh <igloo@earth.li>**20070405163417] 
[Remove non-cabal-install files
Ian Lynagh <igloo@earth.li>**20070405163341] 
[Add 'setup makefile' command
Simon Marlow <simonmar@microsoft.com>**20070309155022
 'setup makefile' generates a Makefile that performs the steps
 necessary to compile the Haskell sources to object code.  This only
 works for libraries, and only with GHC right now.
 
 Instead of simply 'setup build', you can do this:
 
   $ ./setup makefile
   $ make
   $ ./setup build
 
 where './setup makefile' does the preprocessing and generates a
 Makefile tailored to the current package.  'make' will build all the
 Haskell code to object files, and 'setup build' will build any C code
 and the library archives.
 
 The reason for all this is that you can say 'make -j' and get a
 parallel build, or you can say
 
   make dist/build/Foo.o EXTRA_HC_OPTS=-keep-s-file
 
 to compile a single file with extra options.
] 
[make Setup suitable for building the libraries with GHC
Ian Lynagh <igloo@earth.li>**20061112214536] 
[Expose Distribution.Compat.ReadP
Ian Lynagh <igloo@earth.li>**20061112214447] 
[Fix C/Haskell type mismatches
Ian Lynagh <igloo@earth.li>**20070404003510] 
[Use rawSystemPath for calling tar rather than system
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070327110606
 Means we get -v verboe output and better error messages if the command
 is not found.
] 
[Check the return value of tar
Bryan O'Sullivan <bos@serpentine.com>**20070326234148] 
[Fixed and improved Haddock comments
sven.panne@aedion.de**20070322164427] 
[If we export ParseResult, we should export PError and PWarning, too
sven.panne@aedion.de**20070322164340] 
[remove Makefile.inc (only affects nhc98)
Malcolm.Wallace@cs.york.ac.uk**20070320120844] 
[Fixes compiling an executable for profiling with template haskell.
Judah Jacobson <judah.jacobson@gmail.com>**20070314012802] 
[rejig handling of continuation lines (fixes Cabal #118)
Ross Paterson <ross@soi.city.ac.uk>**20070311154610
 
 Also avoids quadratic behaviour on long fields.
] 
[add Distribution.SetupWrapper to exposed-modules
Simon Marlow <simonmar@microsoft.com>**20070309122146] 
[Tweaks to make Cabal play nicer with haddock
Ian Lynagh <igloo@earth.li>**20070308155718
 
 The path for the html docs now includes the package name at the end,
 which works nicer for multiple packages sharing a contents/index.
 
 Use --ghc-pkg when available (in haddock darcs only currently) to tell
 haddock which ghc-pkg to use.
 
 Use --allow-missing-html when available (in haddock darcs only
 currently) to tell haddock not to worry if it can't find the HTML for
 packages we depend on. This is necessary when haddocking a group of
 packages before moving them all into place.
] 
[Cope with ghc-pkg telling us packages are broken
Ian Lynagh <igloo@earth.li>**20070307193131] 
[Tell GHC to use .hs mode when we want it to cpp something for us
Ian Lynagh <igloo@earth.li>**20070307143612] 
[Add parentheses so expressions are parsed correctly
Ian Lynagh <igloo@earth.li>**20070307131941] 
[minor refactoring
Ross Paterson <ross@soi.city.ac.uk>**20070301002731] 
[fix \begin{code typo
Ross Paterson <ross@soi.city.ac.uk>**20070301002557] 
[document the --with-compiler / --with-hc inconsistency
Ross Paterson <ross@soi.city.ac.uk>**20070225115601] 
[Clarify documentation on --with-compiler and --with-hc-pkg
simonpj@microsoft.com**20070221110452] 
[minor markup tweaks
Ross Paterson <ross@soi.city.ac.uk>**20070218104622] 
[This usePackages stuff is haddock-specific so name it as such
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20070213201434] 
[{en,dis}able-use-packages, -optP-P only if haddock<0.8
Conal Elliott <conal@conal.net>**20070204061106] 
[cabal-upload: Added command-line options for username, password, checking instead of uploading. Added ability to get login from file, and to get password from the terminal. Added still unused verbosity options. Bumped version number to 0.2.
bjorn@bringert.net**20070212232920] 
[exclude Setup.lhs
Ross Paterson <ross@soi.city.ac.uk>**20070212193608
 
 This was generating a useless Main entry in the lib doc index.
 (good for STABLE)
] 
[Add recent Cabal modules to nhc98 build system.
Malcolm.Wallace@cs.york.ac.uk**20070212171106] 
[Compatibility with Haskell'98.
Malcolm.Wallace@cs.york.ac.uk**20070212170804
 Import Distribution.Compat.Exception instead of Control.Exception.
 Fix illegal indentation of cascaded do-blocks.
] 
[add --enable-optimization/--disable-optimization config options (on by default)
Ross Paterson <ross@soi.city.ac.uk>**20070212004513] 
[cabal-upload: nicer output.
bjorn@bringert.net**20070206154619] 
[Send Accept header.
bjorn@bringert.net**20070206153521] 
[Allow uploading multiple packages.
bjorn@bringert.net**20070206153406] 
[Changed HTTP dependency to >= 1.0. 
bjorn@bringert.net**20070206153054] 
[cabal-upload: Removed build-simple since hackage doesn't seem to accept it for non-lib packages.
bjorn@bringert.net**20070206133616] 
[Added URL for cabal-upload wiki page.
bjorn@bringert.net**20070206132142] 
[Added usage message to cabal-upload.
bjorn@bringert.net**20070206131408] 
[Added a small hacky first version of cabal-upload.
bjorn@bringert.net**20070206112237] 
[cabal-setup doesn't need -cpp
Ross Paterson <ross@soi.city.ac.uk>**20070115154724] 
[Refactorings only
Simon Marlow <simonmar@microsoft.com>**20070114203741
 Here are a batch of refactorings to clean up parsing and parts of the
 simple build system.  This patch originated in a patch sent to
 cabal-devel@haskell.org with an intial implementation of
 configurations.  Since then we decided to go a different route with
 configurations, so I have separated the refactoring from the
 configurations patch.
 
 At this point, 2 tests fail for me, but I get the same 2 failures
 without this patch.
] 
[pass arguments through when performing the setup actions ourselves
Ross Paterson <ross@soi.city.ac.uk>**20070113133211] 
[separate option for the compiler for Setup.hs
Ross Paterson <ross@soi.city.ac.uk>**20070113133000
 
 This need not be the same compiler as used to build the package
] 
[Ignoring user packages when installing locally doesn't make sense.
Lemmih <lemmih@gmail.com>**20070112150318] 
[cabal-install now caches downloaded packages in the directory for the package, and with .tar.gz extension.
bjorn@bringert.net**20070112143527] 
[cabal-install.cabal: Added build-type field. Change hs-source-dir to hs-source-dirs (hs-source-dir has been deprecated for some time).
bjorn@bringert.net**20070112131959] 
[cabal-install --user now keeps package cache and package list in ~/.cabal-install
bjorn@bringert.net**20070112131301] 
[fix ghc-options (not a listField)
bjorn@bringert.net**20070112124938] 
[add a Build-Type field, and use it in setupWrapper
Ross Paterson <ross@soi.city.ac.uk>**20070111233018
 
 As discussed on the libraries list (Nov 2006), add a field Build-Type
 which can be used to declare that this package uses one of the boilerplate
 setup scripts.  This allows setupWrapper (used by cabal-setup and
 cabal-install) to bypass the setup script in this case and perform
 the setup actions itself.
] 
[remove a use of null+head
Ross Paterson <ross@soi.city.ac.uk>**20070111182430] 
[remove two fromJust's
Ross Paterson <ross@soi.city.ac.uk>**20070111182401] 
[pass CABAL_VERSION to Hugs
Ross Paterson <ross@soi.city.ac.uk>**20070111182216] 
[cabal-install now puts the package list in /var/lib/cabal-install and the tarballs in /var/cache/cabal-install by default. Added command-line options for changing those.
bjorn@bringert.net**20070111190452] 
[Track verbosity argument changes
Ian Lynagh <igloo@earth.li>**20070111180601] 
[Testsuite quietening
Ian Lynagh <igloo@earth.li>**20070111175329] 
[cabal-install: Output usage info for the right command when pasrsing the package name arguments fails.
bjorn@bringert.net**20070111164924] 
[SetupWrapper now passes verbosity to other functions, as required by Igloo's patch.
bjorn@bringert.net**20070111161651] 
[Make cabal-install use setupWrapper (the library version of cabal-setup).
bjorn@bringert.net**20070111160535] 
[Moved the cabal-setup code to Distribution.SetupWrapper, so that cabal-install can use it. CabalSetup.hs now just calls the setupWrapper function.
bjorn@bringert.net**20070111130506] 
[Quieten the testsuite more
Ian Lynagh <igloo@earth.li>**20070111155957] 
[Pass verbosity info down to warn
Ian Lynagh <igloo@earth.li>**20070111154526] 
[Derive Show on various datatypes
Ian Lynagh <igloo@earth.li>**20070111140220] 
[Give feedback in runTests.sh
Ian Lynagh <igloo@earth.li>**20070111132654] 
[Be less verbose at verbosity level 1
Ian Lynagh <igloo@earth.li>**20070111131228] 
[Fix warning
Ian Lynagh <igloo@earth.li>**20070111130928] 
[No need for -fno-warn-unused-matches any more
Ian Lynagh <igloo@earth.li>**20070111130824] 
[Always pass Hooks around, not Maybe Hooks
Ian Lynagh <igloo@earth.li>**20070111124234] 
[Make Makefile use the right ghc/ghc-pkg
Ian Lynagh <igloo@earth.li>**20070111122833] 
[Add -Wall to GHCFLAGS
Ian Lynagh <igloo@earth.li>**20070111102742] 
[Updated cabal-install test scripts to use the main Cabal repo.
bjorn@bringert.net**20070111111727] 
[Added cabal-install test scripts.
bjorn@bringert.net**20070110184835] 
[Added cabal-install Makefile.
bjorn@bringert.net**20070110184754] 
[Added HTTP package code used by cabal-install.
bjorn@bringert.net**20070110184545] 
[Imported all the cabal-install sources.
bjorn@bringert.net**20070110183142] 
[Added cabal-install dep on regex-compat.
bjorn@bringert.net**20070110180020] 
[Removed old CabalInstall.hs (it has moved to cabal-install/src in one of the pataches I pulled in).
bjorn@bringert.net**20070110174435] 
[Pulling in cabal-install: changed default Hackage DB URL.
bjorn@bringert.net**20070110173825] 
[Pulling cabal-with-install into Cabal: cabal-install.cabal changes.
bjorn@bringert.net**20070110172811] 
[Pulling changes from cabal-with-install: Multiple repositories.
bjorn@bringert.net**20070110164852
 Original patch:
 Sat Sep  2 00:13:40 CEST 2006  Paolo Martini <paolo@nemail.it>
   * Multiple repositories.
] 
[Pulling changes from cabal-with-install: Stripping off the dependencies, only HTTP left
bjorn@bringert.net**20070110164556
 Original patch:
 Sun Aug 20 19:01:03 CEST 2006  Paolo Martini <paolo@nemail.it>
   * Stripping off the dependencies, only HTTP left
] 
[Resolve Makefile conflict from importing Cabal-with-install patches.
bjorn@bringert.net**20070110163852] 
[a program to test download & install a bunch of cabal packages
ijones@syntaxpolice.org**20061114063409] 
[added --inplace trick to cabal build so that cabal-install can build on machines without cabal.
ijones@syntaxpolice.org**20060922034620] 
[First attempt to make a new repository (url in the configuration)
Paolo Martini <paolo@nemail.it>**20060820180342] 
[Tarball index format support
Paolo Martini <paolo@nemail.it>**20060816223509] 
[Quieten a test
Ian Lynagh <igloo@earth.li>**20070110175223] 
[Pass 0 verbosity on to GHC when building
Ian Lynagh <igloo@earth.li>**20070110174050] 
[More verbosity tweaking
Ian Lynagh <igloo@earth.li>**20070110172956] 
[Rejig verbosity levels a bit; 1 is now the default (was 0)
Ian Lynagh <igloo@earth.li>**20070110165149] 
[Make system tweaks to avoid cabal thinking it isn't bootstrapped when running the testsuite
Ian Lynagh <igloo@earth.li>**20070110162940] 
[Typo
Ian Lynagh <igloo@earth.li>**20070110154617] 
[Refer to the right variables
Ian Lynagh <igloo@earth.li>**20070110151326] 
[Give unrecognised flags more clearly
Ian Lynagh <igloo@earth.li>**20070110144650] 
[Beautify
Ian Lynagh <igloo@earth.li>**20070110143711] 
[Retab
Ian Lynagh <igloo@earth.li>**20070110143103] 
[Remove some chatter from the test scripts
Ian Lynagh <igloo@earth.li>**20070110142756] 
[Eliminate more warnings
Ian Lynagh <igloo@earth.li>**20070110142114] 
[More -Wall clean fixes
Ian Lynagh <igloo@earth.li>**20070110135838] 
[Improve cleaning
Ian Lynagh <igloo@earth.li>**20070110134230] 
[-Wall clean fixes
Ian Lynagh <igloo@earth.li>**20070110125523
 
 This patch is sponsored by Hac 07.
 Have you hacked a lambda today?
] 
[Fix non-fatal problem with 'setup haddock' for an exe package
Simon Marlow <simonmar@microsoft.com>**20070109133751
 For some unknown reason, we were passing --use-package=P to haddock,
 where P is the name of the current executable package.  This can never
 work, since P is not a library and will not be installed.  Fortunately
 Haddock ignores the error and continues anyway.
 
] 
[Set the Cabal version when building via the fptools build system
sven.panne@aedion.de**20070106152814
 
 Without this patch, Cabal is effectively "version-less" and all .cabal
 files with a version requirement are unusable. Therefore I think that
 this patch (or at least something equivalent) should be pushed to the
 6.6.1 branch, too.
] 
[added --save-configure flag to clean. got some complaints that there was no way to avoid reconfiguring after a clean.  now if you use --save-configure, you should be able to.
ijones@syntaxpolice.org**20061219152204] 
[tiny mod to License comments
ijones@syntaxpolice.org**20061219060021] 
[improving help output
ijones@syntaxpolice.org**20061219055849
 As suggested by Claus Reinke in this ticket:
 http://hackage.haskell.org/trac/hackage/ticket/105
] 
[fix ./Setup unregister --help, which was giving the help for register
Simon Marlow <simonmar@microsoft.com>**20061215165000] 
[Fix the links in the user guide to the API docs
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>*-20061129131633] 
[Fix the links in the user guide to the API docs
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061129131633] 
[haddock comments for SrcDist.hs
ijones@syntaxpolice.org**20061127041303] 
[some haddock comments for LocalBuildInfo.hs
ijones@syntaxpolice.org**20061127040916] 
[a little comment for JHC.hs
ijones@syntaxpolice.org**20061127040026] 
[some comments for Install.hs
ijones@syntaxpolice.org**20061127035919] 
[some comments for Hugs.hs
ijones@syntaxpolice.org**20061127035310] 
[haddock comments for GHC and GHCPackageConig
ijones@syntaxpolice.org**20061127034617] 
[some comments for Configure.hs
ijones@syntaxpolice.org**20061127033157] 
[some comments for Build.hs
ijones@syntaxpolice.org**20061127032409] 
[minor comments and cleanup for Setup.hs
ijones@syntaxpolice.org**20061127031744] 
[some haddock explanation of preprocessors
ijones@syntaxpolice.org**20061127031055] 
[some comments for Package.hs
ijones@syntaxpolice.org**20061127025108] 
[haddockizing some comments from Make.hs
ijones@syntaxpolice.org**20061127024142] 
[adding comments to Program.hs
ijones@syntaxpolice.org**20061127022353] 
[comments for the Program module
ijones@syntaxpolice.org**20061127002749] 
[don't return an error code just because there's no library to register
ijones@syntaxpolice.org**20061124144831] 
[Purely cosmetic; have '--<FOO>-args' use ARGS on their RHS rather than PATH in usage output
sof@galois.com**20061121195844] 
[parse executable field as a token (as documented), rather than free text
Ross Paterson <ross@soi.city.ac.uk>**20061120093400] 
[trim trailing spaces (including CRs) from all input lines
Ross Paterson <ross@soi.city.ac.uk>**20061120092526] 
[help nhc98 find the import of programLocation
Malcolm.Wallace@cs.york.ac.uk**20061117144001] 
[sdist: make it work on Windows platforms by simplifying 'tar' invocation. Hopefully not at the cost of other plats (i.e., as-yet untested there..)"
sof@galois.com**20061117014832] 
[build: consult and use any user-provided settings for 'ld' and 'ar'
sof@galois.com**20061117014622] 
[defaultUserHooks.sDistHook: pass in optional LBI to SrcDist.sdist
sof@galois.com**20061117014448] 
[defaultProgramConfiguration: add 'ld' and 'tar' entries
sof@galois.com**20061117014318] 
[revise Paths module for the Hugs target
Ross Paterson <ross@soi.city.ac.uk>**20061108223349
 
 When targetting Hugs, the Paths module now uses prefix-independent
 paths relative to the location of the Main module of the program,
 on all platforms.
 
 For the Hugs target, this replaces the code using GetModuleFileNameA(),
 which never worked.  Behaviour under GHC should be unchanged.
] 
[Hugs: fix location of installed package info
Ross Paterson <ross@soi.city.ac.uk>**20061021144613] 
[Fix escaping of ' chars in register.sh script.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061016215459] 
[Tidy up command comments
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061013211158] 
[Fix getDataDir etc. when bindir=$prefix
Simon Marlow <simonmar@microsoft.com>**20061013100941] 
[Update text on the front page: packages can now overlap in GHC 6.6
Simon Marlow <simonmar@microsoft.com>**20061012114601
 
] 
[New unlit code "ported" from cpphs-1.2
Lennart Kolmodin <kolmodin@dtek.chalmers.se>**20061009192609] 
[Share one more place where the cabal version is defined.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061010140027] 
[Fix spelling error in error message.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061010140013] 
[Centeralise the places that know that Cabal version number
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061010135918] 
[Remove spurious debug message.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061010125643] 
[Bump to next unstable development version
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061010125602] 
[Make cabal know it's own version number correctly
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061010130939
 This is an unpleasent way of doing it.
 Will have to fix once and for all in the next version.
] 
[TAG 1.1.6
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061009123801] 
[Bum version to 1.1.6 release
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061009123733] 
[Add note about unix dep for ghc-6.2
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061009123632] 
[Update README, changelog and releaseNotes
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061009123558] 
[TAG 1.1.5.9.4
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061007141722] 
[Bump version to 1.1.5.9.4
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061007141412] 
[Only use -package-name with the package's version number for ghc-6.4
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061007123309
 This change was added for ghc-6.6 but broke packages for ghc-6.2.2.
] 
[Make the configure step respect the HC makefile var
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061007113643] 
[Have the default make target be build rather than test
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061007113556
 This is more normal.
] 
[Read the buildinfo for the haddock step.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061005212138
 In particular this means we pick up any cc-options that are
 needed for preprocessing the source before haddock reads it.
 This fixes the haddock build step for many of the packages in
 the ghc-extralibs collection.
] 
[Use pragma OPTIONS rather than OPTIONS_GHC for compatability with ghc 6.2.x
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20061005211937] 
[TAG 1.1.5.9.3
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060911223941] 
[Bump version for 3rd 1.1.6 release candidate
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060911223908] 
[Make Distribution.Compat.FilePath public and Distribution.Compat.ReadP private
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060911222733
 Ideally all the Distribution.Compat.* modules would be private,
 however there is currently no sensible alternative to the FilePath module
 and hiding it at this stage breaks packages.
] 
[Use slightly simpler way of getting GHC version.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060823105956
 ghc has supported --numeric-version for ages.
] 
[Be cleverer about guessing hc-pkg name and location.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060823105412
 So it now works if you say:
 ./setup configure --with-compiler=ghc-6.5
 ie specifying a path-relative name rather than an absolute path.
 We then look for hc-pkg in the same dir as where we found the compiler.
 If the compiler appears to have a version suffix then we additionally
 and preferentially look for hc-pkg with that same version suffix.
 (I'm not sure that bit works if you've got a .exe suffix, perhaps a
 windows person could try it / take a look)
] 
[CabalSetup: reuse './setup' if it's newer than the setup script.
Lemmih <lemmih@gmail.com>**20060926231910] 
[Fix the combination of --enable-library-profiling and --enable-split-objs
Lemmih <lemmih@gmail.com>**20060926231658] 
[clarification of the way --inplace works
ijones@syntaxpolice.org**20060922042102] 
[cleanups to user's guide
Ross Paterson <ross@soi.city.ac.uk>**20060910144428
 
  * markup fixes
  * spelling
  * id's for some elements to avoid warnings
  * mention the use of Description field by setup haddock
  * clean up --hoogle description
] 
[Check exit codes!
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060908173615
 Cabal was not noticing haddock failing. That's bad.
] 
[Use {-# OPTIONS_GHC -cpp #-} so that runghc Setup.lhs works.
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060908153717] 
[TAG 1.1.5.9.2
Duncan Coutts <duncan.coutts@worc.ox.ac.uk>**20060906234045] 
Patch bundle hash:
0afe8bc2e9aa250d3bfed0ca2c7073c2b79dd8ed
