Skip to content


Subversion checkout URL

You can clone with
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: haskell/cabal
head fork: haskell/cabal
This comparison is big! We’re only showing the most recent 250 commits
Commits on Jun 02, 2008
@Saizan Saizan Fix bug in passing the verbosity value when re-executing cabal
It was passing the value as another argument, distinct from the flag.
@dcoutts dcoutts Support top level dependency version constraints
and error messages for when they're unsatisfiable or conflict
@dcoutts dcoutts Fix improvePlan so the index is updated incrementally
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.
@dcoutts dcoutts Change the DependencyResolver type to take a per-package version pref
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.
@dcoutts dcoutts Make use of the package version preference in the top-down resolver 181bce1
Commits on Jun 03, 2008
@dcoutts dcoutts Make the 'upgrade' command take optional deps
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.
@dcoutts dcoutts Switch the defaultResolver to the new topDownResolver
Time for wider testing.
@dcoutts dcoutts Bump version number to help with bug reports
The new resolver is a significant change in behavior so it's
useful to know when people report problems.
@dcoutts dcoutts Don't include the default repo when loading the config file
So we don't end up downloading the index from hackage twice.
@dcoutts dcoutts Check the InstallPlan invariant on updates and not on reads b4f78d3
@dcoutts dcoutts Update the README file 743181b
@dcoutts dcoutts Remove obsolete TODO 7e2d704
@dcoutts dcoutts Update copyright dates and holders in LICENSE file 4541530
@dcoutts dcoutts Update synopsis and description e6bab63
Commits on Jun 04, 2008
@dcoutts dcoutts Turn on assertion checking even in -O builds
Although it is expensive, we want to catch problems early.
@dcoutts dcoutts Failed packages can still depend on configured packages
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.
@dcoutts dcoutts Fix for marking reverse deps of failed packages
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.
Commits on Jun 05, 2008
@dcoutts dcoutts When marking failed reverse deps, don't include the package itself
Otherwise we end up saying packages failed because they depend
on themselves which failed to install, which is silly.
Commits on Jun 06, 2008
@dcoutts dcoutts Rearrange setup wrapper to know the cabal lib version
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.
@dcoutts dcoutts Filter the configure flags based on the Cabal lib version
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.
@dcoutts dcoutts Adapt to changes in Cabal library 1.4 branch 7d50938
@dcoutts dcoutts Fix haddock markup 26224a6
@dcoutts dcoutts trivial doc improvement and unused name fix 5366a8d
@dcoutts dcoutts Bring the reporting module slightly closer to reality 8c49419
@dcoutts dcoutts Bump version number 65e9644
@dcoutts dcoutts Add Hackage.Reporting to other-modules 77d120b
@dcoutts dcoutts TAG 0.4.9 be871e9
Commits on Jun 07, 2008
@dcoutts dcoutts Only inspect the needed parts of the installed and available indexes
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.
@dcoutts dcoutts Use a smarter preference when picking a Cabal lib to build Setup.hs
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
Commits on Jun 08, 2008
@dcoutts dcoutts First cut at generating build reports 2b7af78
@dcoutts dcoutts Use proper URI type rather than String 905fdd0
@dcoutts dcoutts Include the hackage server in the build report
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.
Commits on Jun 09, 2008
@dcoutts dcoutts Use a readable external formar for build reports 4ed1981
Commits on Jun 10, 2008
@dcoutts dcoutts Fix parsing of build reports
and add a function to parse a whole logfile of reports
@dcoutts dcoutts Put build-reports into per-server dirs
Don't bother putting the server url into each report
since we do not want to upload that information anyway.
@dcoutts dcoutts Fix printing of flags in build reports 074ac9e
@dcoutts dcoutts Put the build client it into the build reports 7b7a808
@dcoutts dcoutts Put the configurations flags into each UnresolvedDependency
We don't actually have per-package flags yet. All -f flags
on the install/upgrade command line apply to every paclage.
@dcoutts dcoutts Take the the flag assignment into account in the resolver
so it now actually works to say: $ cabal install foo -fbar
Commits on Jun 12, 2008
@dcoutts dcoutts Put upper bounds on all the build-depends 3a0c26c
@dcoutts dcoutts Update to minor change in Cabal-1.4 and fix a warning. d4bf39a
@dcoutts dcoutts Include the bash-completion code in the tarball 1636e97
@dcoutts dcoutts Bump the version to 0.5.0 bbbf1d7
@dcoutts dcoutts TAG 0.5.0 e62c513
Commits on Jun 13, 2008
@dcoutts dcoutts The update command doesn't take any extra args 0f37a4b
Commits on Jun 16, 2008
@dcoutts dcoutts Try and pick up the http proxy on windows correctly
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.
@dcoutts dcoutts Move getAvailablePackages into IndexUtils module 2d0b76e
@dcoutts dcoutts Use standard thisPackageVersion rather than inlined definition 8d5b92f
@dcoutts dcoutts Overhaul the bogus dependency resolver so it works again
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.
@dcoutts dcoutts Default to global installs on Windows
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.
Commits on Jun 17, 2008
@dcoutts dcoutts Bump the version to 0.5.1 1c2d3d1
@dcoutts dcoutts TAG 0.5.1 0b5a44d
Commits on Jun 18, 2008
@dcoutts dcoutts Fix the upload command message about the location of the config file deb9db0
Commits on Jun 19, 2008
@dcoutts dcoutts Add initial build logging, based on reporting code 8868c29
Commits on Jun 23, 2008
@dcoutts dcoutts Fix for when user supplies incorrect upload username/passwd
Should now return a proper error rather than an internal
error from the HTTP library.
Commits on Jul 25, 2008
@gwern gwern cabal-install.cabal: fix build-from-sdist failure 4951143
Commits on Jul 30, 2008
@dcoutts dcoutts Move modules under Distribution.Client
And tidy some imports slightly
@dcoutts dcoutts Add support to SetupWrapper for logging setup output to a handle
or for using a diiferent initial working directory. We already
need to use a different working dir and this would allow us to
spawn multiple setup processes for parallel builds each with
their own working dir. Also, we want to be able to capture the
output of builds. At the moment our internal logging framework
is not capable of redirecting, but if we launch a process we
redirect its output to a file. This should be useful for build
reporting where we want logs for each individual package.
@dcoutts dcoutts Move the install command options so they're not toplevel decls
Except for optionDryRun which is shared with another command.
@dcoutts dcoutts Use the external setup method when logging the output
For the internal method, change to the right working dir if necessary.
@dcoutts dcoutts Use the setupWrapper useWorkingDir feature in Install
Rather than calling inDir directly.
@dcoutts dcoutts When launching setup in another dir we must use an adjusted path
The path to the binary we're running must be accessable from
that other directory. The fix is to use currentDir </> setup
@dcoutts dcoutts Make the upgrade command take all the install command flags d9cce45
@dcoutts dcoutts Add install --log-builds flag
Eg can use cabal install foo --log-builds='$pkgid-$compiler.log'
and the build log for each package will written to a separate
file. If an existing file is given then the log is appended.
This or something like it should help in future with build
reporting of the non-anonymous kind.
Commits on Aug 02, 2008
@dcoutts dcoutts Remove the unused module Distribution.Client.Clean ae2fa8e
@dcoutts dcoutts Fix changing working dir when calling external setup but not logging
Now uses a single code path for both modes.
@dcoutts dcoutts Pass dist dir and verbosity flags to build and install phases b558cc3
@dcoutts dcoutts Add feature to symlink binaries into another dir
This covers the major part of ticket #289.
@dcoutts dcoutts Add a symlink-bindir field to the config file
and link it up with the symlink feature code.
@dcoutts dcoutts Bump minor version number 3f2e151
@dcoutts dcoutts Fix generating haddock docs 41214fd
@dcoutts dcoutts Warn about symlinks that could not be created 2a6d52c
@dcoutts dcoutts Add a LocalRepo kind of Repo and refactor the Fetch code
This is the groundwork needed to support local repositories,
that is ones acessable via the local filesystem and without
a corresponding download cache. They use the same format/layout
as the download cache of a remote repo.
Commits on Aug 03, 2008
@dcoutts dcoutts Use the given working dir when preparing to call setup
I introduced a subtle bug with paths when I stopped using inDir
outside of setupWrapper. It was using the current dir to find
Setup.hs rather than the target dir. That ofen works because
there's a Setup.hs in the local dir. I think it's now fixed to
always use paths relative to workingDir. As before, it invokes
the setup binary giving it the new working dir.
Commits on Aug 05, 2008
@dcoutts dcoutts Refactor BuildResult type and related types
Split BuildResult into Either BuildFailure BuildSuccess
Make BuildSuccess contain info for docs and tests.
Make PlanPackage use BuildSuccess and BuildFailure directly
rather than being parameterised by any build result type.
This has a knock on effect on lots of other types which
were parameterised just because PlanPackage was.
@dcoutts dcoutts Initial support for building haddock docs
No flag to turn it on/off yet.
Commits on Aug 06, 2008
@dcoutts dcoutts Shrink the size of the ParseUtils module
Really it should be eleminated entirely.
@dcoutts dcoutts Remove showFields
use the pre-existing ppFields
@dcoutts dcoutts Use a local copy of the new parseFields from Cabal lib
We can remove the local copy once we switch to the next
Cabal version. In the mean time, the code is at least sane
and consistent between libs.
@dcoutts dcoutts Don't require config file fields to have "" for empty values
And make the parsing slightly nicer.
@dcoutts dcoutts Rearrange the symlinking code slightly
Will make it easier to create the bin dir, if that's what we want to do.
@dcoutts dcoutts Ignore local files when compiling Setup.hs c4f4081
@dcoutts dcoutts Add --enable/disable-documentation flag.
This addresses most of ticket #206.
Commits on Aug 07, 2008
@dcoutts dcoutts Rearrange the BuildReport code dfeab5c
@Lemmih Lemmih Simple upload support for build reports. fb021e3
@dcoutts dcoutts Fix up other-modules list 5c757ca
@dcoutts dcoutts Fix BuildReport parser 69e7ef5
Commits on Aug 08, 2008
@dcoutts dcoutts Add defaultLogsDir util and use it for storing build reports ed978fc
@dcoutts dcoutts Add --build-reports install flag 00bb6d4
@dcoutts dcoutts Implement --build-reports flag df8e634
@dcoutts dcoutts Add command line UI for 'report' action. 76499cb
@dcoutts dcoutts Add verbosity flag to report command b99939e
@Lemmih Lemmih Store detailed build logs. 9e82124
@Lemmih Lemmih First stab at uploading the detailed logs. 4d5d1c6
@dcoutts dcoutts Create the logs dir 9905fb1
@dcoutts dcoutts Fix the urls for the new hackage server 966af5b
@Lemmih Lemmih Only look at .log files. 5db611b
@Lemmih Lemmih Use correct uri to /buildreports a4e2466
@Lemmih Lemmih silly types. 9aa31c9
Commits on Aug 10, 2008
@Lemmih Lemmih Support legacy download and upload urls. 64c37e9
@Lemmih Lemmih Print upload error messages if they are in text/plain. 7bda173
@dcoutts dcoutts Remove most warnings from BuildReports.Upload module 63e952d
Commits on Aug 12, 2008
@dcoutts dcoutts Use a more specific type in one place in SetupWrapper
It doesn't need access to the whole Packagedescription,
it only needs the the PackageIdentifier.
@dcoutts dcoutts Regig install pipeline, pass the PackageDescription
Rather than the GenericPackageDescription.
@dcoutts dcoutts Fix building on Windows
I hateses #ifdefs
@dcoutts dcoutts Add missing module to other-modules 9bc2a78
@dcoutts dcoutts Clean up some warnings 2428f90
@dcoutts dcoutts Allow cabal-install to re-install itself on Windows
This is a fairly heavyweight solution, but then it's quite
a nasty problem. What we do is when we notice that we're
about to install something in place of our own .exe file,
we move our exe file out of the way (but in the same dir).
Then after we've installed the new exe we call it and ask
it to delete the old file (so we do not litter the bin dir
with lots of old versions). That requires synchronising
between the old and new programs and for the new program
to understand a command to do the syncing and deleting of
the old program. Lots of Win32 FFI imports. :-(
On the plus side it seems to work and is transparent to
the user and the rest of cabal-install. In particular the
actual file-installation code (which is burried deep
within Cabal) does not need to know about the special case
of installing over our own exe file.
@dcoutts dcoutts Don't fail if we don't sync with the child
It just means we leave a temp file around in the bin dir.
Commits on Aug 14, 2008
@dcoutts dcoutts Fetch packages even if they happen to already be installed
Though obviously not if they have already been fetched.
This lets people study the source for core packages that
came with their compiler say, so they did not get have the
sources downloaded via cabal-install. Fixes ticket #297.
@dcoutts dcoutts Add cabal install --reinstall flag
to force reinstall of package where we have the exact same
version already installed. Ordinarily we would say that
there is nothing to do as the exact same package version
is already installed. There are some cases where you might
want to do this, eg to rebuild with different compiler
options, or adding/removing components (since we do not
track those indifidually yet, eg docs, profiling libs).
@dcoutts dcoutts Only look for detailed build reports if we were generating them e123e28
@dcoutts dcoutts Always print the message about nothing to install
Not just if the user specified -v or --dry-run. Otherwise
it's rather confusing. Also clarify that the reason there
is nothing to install is because the latest versions are
installed already. Also mention the --reinstall flag:
  Resolving dependencies...
  No packages to be installed. All the requested packages
  are already installed. If you want to reinstall anyway
  then use the --reinstall flag.
Commits on Aug 15, 2008
@dcoutts dcoutts allow tilde in hackage server URIs
report and fix from Nicolas Frisby <>
(code had changed slightly so the original patch didn't apply cleanly)
Commits on Aug 21, 2008
@dcoutts dcoutts Rearrange config settings and global command line settings
The intention here is to have the config file content and parser
be derivied from the command line types and flags. Now instead
of having a saved config type that contains additional
information to that kept in command line parameters we now put
all the information in the command line settings type and make
the saved config just the aggregation of the settings for
various key commands like configure, install, upload. There's
also an extended GlobalFlags type with the things like repos,
cache dir etc. When we generate the initial config file we put
in commented out versions of all (non-deprecated) valid fields,
along with their default values. The aim is to make the config
file self-documenting.
Commits on Aug 22, 2008
@dcoutts dcoutts Add back separate user and global sets of install dirs
The user install setting selects between the two sets of dirs.
At the moment it's just the "user-" and "global-" prefixed field
names to support existing config files.
@dcoutts dcoutts Add sections for user/global install-dirs to the config file
So it looks like:
install-dirs user
  prefix: /home/username/.cabal
Rather than using user-prefix, global-prefix, etc etc for each
field. The old field names are still recognised but not added
into the initial config file.
@dcoutts dcoutts Add symlink-bindir flag to install/upgrade command
Was previously only available in the config file.
@dcoutts dcoutts Add changelog
I can only trace the history back to the 0.3 era.
@dcoutts dcoutts Actually use the saved install flags when installing 1ac3aee
@dcoutts dcoutts add bootstrap shell script
At the request of Bjorn.
@dcoutts dcoutts Exclude various fields from the config file
Excluded fields that make sense as command line flags but do
not make sense to use every time by saving in the config file.
@dcoutts dcoutts Don't override config with install defaults 893119f
@dcoutts dcoutts Remove old unused modules and supporting util code 2ce6c54
@dcoutts dcoutts Improve the error handling and error message for missing repo index f…
@dcoutts dcoutts Decompress the repo index atomically.
So if decompression fails (eg if the index is corrupt) then
the decompressed file does not get (partially) written.
@dcoutts dcoutts Improve the HTTP error message slightly and note some TODOs 921a9e5
Commits on Aug 24, 2008
@dcoutts dcoutts Use updated tar code
Much more robust. Correctly detects trucated archives.
@dcoutts dcoutts Be less strict in requirements of upgrade
Require current or later version, rather than strictly later
verison. There may be dependencies that cannot be upgraded.
@dcoutts dcoutts Use the right options when compiling external Setup prog
So the cabal version constraint is actually passed in.
This got lost in a previous refactoring.
Commits on Aug 26, 2008
@dcoutts dcoutts Adjust config defaults again
Hopefully a bit clearer now and also means we pass the right
flags to Setup that were compiled with older versions of Cabal.
@dcoutts dcoutts Add release date of 0.5.2 2d53a4e
@dcoutts dcoutts Fix haddock syntax 81627fa
@dcoutts dcoutts Fix up the and include it in the tarball bb96e42
@dcoutts dcoutts Use mplus not mappend for combining tar filename checks
mappend would join the error messages in the case that both
checks failed. Also the monoid instance was new in base 3.
@dcoutts dcoutts Relax version constraint on unix package
Allows building with ghc-6.6.1
@dcoutts dcoutts Allow use of curl in
Patch from jsnx. Fixes ticket #343. Also, use "cd blah; cd .."
instead of "pushd blah; popd" as some shells lack pushd/popd
Commits on Aug 31, 2008
@dcoutts dcoutts Update to the development version of the Cabal lib
The branch of cabal-install that tracks Cabal-1.4 now lives at
Commits on Sep 03, 2008
@dcoutts dcoutts Only send the base file name when uploading tarballs
The server should ignore the dir part anyway but there's no
need to send it in the first place.
Commits on Sep 25, 2008
@Saizan Saizan Fix infinite loop in the TopDown dependency resolver
The loop occurred only if a package depended on another one
with the same name, e.g. base- <- base-
Commits on Sep 26, 2008
@dcoutts dcoutts small improvements to bootstrap
patch sent in by brian0, ticket #357
Commits on Oct 04, 2008
@dcoutts dcoutts Generalise the logging of selected and discarded packages
Allow for selecting several packages in one go.
Currently when we select a package we only list the over versions
of the same package that that excludes, and not the other packages
we exclude by applying the dependency constraints of the selected
package. In future we would like to do that so we now report the
package name of discards not just the version. Though we do group
by the package name to avoid too much repition.
@dcoutts dcoutts Separate the construction of the exclusion list from its use
Previously directly inserted packages into the excluded package
list. Now we generate a list of them and then add them. We want
the list of newly excluded packages separately because it is
interesting information to report to the user when -v is on.
@dcoutts dcoutts Have Constraints.constrain report the excluded packages
Each time we apply a constraint we can end up excluding some
extra package. Report that list of packages because it is
quite interesting information to get insight into what the
resolver is actually doing.
Commits on Oct 05, 2008
@dcoutts dcoutts Add the glue code to actully report excluded packages
Now displayed in the output of install --dry-run -v
@dcoutts dcoutts Make InstalledPackage an instance of PackageFixedDeps ee5e610
@dcoutts dcoutts Add the notion of paired packages to the Constraints ADT
Packages like base-3 and base-4 are paired. This means they are
supposed to be treated equivalently in some contexts. Paired
packages are installed packages with the same name where one
version depends on the other.
@dcoutts dcoutts Handle constraints on paired packages
The trick is that when applying constraints to paired
packages, the constraint has to exclude both packages at
once. We exclude the pair together or not at all. If it
would only exclude one then we discard the constraint.
@dcoutts dcoutts When selecting paired packages, select both. 9f0e44d
@dcoutts dcoutts When finalising paired packages, cope with there being multiple choices
For ordinary packages we selected a single version which means
 we added an equality constraint. As a consequence we used to
assume there was only one version left when finalising. For
paired packages there may be two versions left if the package
did not directly constrain the choice to just one. If there is
more than one version remaining then we have to pick between
them. At the moment we still pick the highest version, but
later we can take a global preference or polciy into account.
@dcoutts dcoutts Print more details about what is to be installed with -v
Reports if installs are new or reinstalls and for reinstalls
prints what dependencies have changed.
@dcoutts dcoutts Refactor and update the hackage index reading code 1fb921f
Commits on Oct 06, 2008
@dcoutts dcoutts Read preferred versions from the package index
From a file named 'preferred-versions' in the 00-index.tar.gz
If there are several they are combined. Contents is like:
base < 4
one suggested version constraint per line.
@dcoutts dcoutts Fix selection of paired packages 11e554b
@dcoutts dcoutts Pass the package suggested version constraints through to the resolver
Not used yet.
@dcoutts dcoutts Take preferred versions into account in dependency planning
This means we can now globally prefer base 3 rather than 4.
However we need to be slightly careful or we end up deciding
to do silly things like rebuild haskell98 against base 3.
That would happen because the h98 package doesn't constrain
the choice to one or the other and we would prefer base 3.
So we have to add that we really prefer whatever it uses
currently (if any).
Commits on Oct 07, 2008
@dcoutts dcoutts Fix selecting paired packages
Previously when we selected base 4 (and as a consequence
slected base 3 too) we didn't properly trace the dependencies
of base 3 so if nothing actually required base 3 then we ended
up with base 3 in the solution but not with syb which it
depends on. Consequently the solution was invalid.
Now we select the paired package properly (hopefully).
@dcoutts dcoutts Fix search paths for compiling Setup.hs scrips
and in particular for bootstrapping the Cabal lib.
@dcoutts dcoutts Add DownloadFailed as a possible failure for installation
Should now be caught during installing a bunch of packages
and not cause immediate overall failure. It should instead
be treated like any other package build failure and be
reported at the end and only affect other dependent builds.
@dcoutts dcoutts Handle build reports with missing logs better f5c0f67
@dcoutts dcoutts Relax deps to build with ghc-6.10 3d46f74
Commits on Oct 10, 2008
@dcoutts dcoutts Bump version number and dependencies 06cb3a9
@dcoutts dcoutts Tidy up the preferred-versions file parser 38e211f
@dcoutts dcoutts Fix the -i dir for compiling Setup.hs when it's the current dir
map "" to "."
@dcoutts dcoutts Apparnetly builds with unix-2.0 which is what came with ghc-6.6 95cbdae
Commits on Oct 11, 2008
@dcoutts dcoutts Drop silly export cd3bf01
@dcoutts dcoutts Add Eq for a couple types in the anon build reports 7cd72c6
@dcoutts dcoutts Bump versions of deps in the bootstrap script e21c4b7
@dcoutts dcoutts Improve the README, better install instructions
And slightly better intro guide to the main commands.
@dcoutts dcoutts Bump version to 0.6.0 c82e0c0
@dcoutts dcoutts TAG 0.6.0 89b4bfe
Commits on Nov 13, 2008
@Saizan Saizan Implement 'cabal unpack' command as in #390 66e6089
Commits on Nov 21, 2008
@Lemmih Lemmih Slightly better lhc support. 2747296
Commits on Nov 22, 2008
@dcoutts dcoutts Warn about use of tabs 1eb3ada
@dcoutts dcoutts Use a more general fix for "cabal install base"
It's not specific to LHC. Normally we prevent upgrading of base
since it's unlikely to work and would normally be accidental.
However when the user explicitly asks to upgrade base then we
let them do that and they can keep the pieces when it breaks.
@dcoutts dcoutts Put explicit lower bound on version of base
It does not build with ghc-6.4.2, missing Functor instance for Either.
@dcoutts dcoutts Remove use of tabs b9f6739
Commits on Dec 03, 2008
@dcoutts dcoutts Mention where files get downloaded to at verbosity level verbose 810c5b3
@dcoutts dcoutts Fix warning aobut -fffi in OPTIONS pragma 9e7e292
Commits on Dec 10, 2008
@dcoutts dcoutts Use (\_ -> []) instead of mempty to avoid funky Monoid instance
This would let us build with ghc-6.4 or nhc if it were not for other issues.
@dcoutts dcoutts Clean up the code in Main
Make the names more regular and set up the various flags
in a more regular way.
@dcoutts dcoutts Tidy up the unpack code
Also fix a bug for tar files that contain entries for files
without preceding entries for the directories they are in.
@dcoutts dcoutts Bump version to 0.6.1 05f4d8e
Commits on Dec 15, 2008
@dcoutts dcoutts Use the Platform type rather than passing around the OS and Arch sepa…
@dcoutts dcoutts Don't re-export PackageName from Distribution.Client.Dependency
It used to be a type alias.
@dcoutts dcoutts Rename and rearrange the PackagePreferences type 619d1ce
@dcoutts dcoutts Change the dep resolver interface to pass constraints separately from…
… targets

This lets us specify constraints for packages that are not targets.
@dcoutts dcoutts Mostly renaming and trivial refactoring 570c87c
@dcoutts dcoutts Take preferences into account in the bogus resolver 11d038e
@dcoutts dcoutts A bit more renaming in the top down resolver addacf8
@dcoutts dcoutts Add PackageInstalledConstraint to the PackageConstraint type
This should be useful for things like preventing upgrading
the base package for ghc.
Commits on Dec 16, 2008
@dcoutts dcoutts Have the dep resolver take constraints and targets separately 92128c5
@dcoutts dcoutts Implement cabal install --constraint=
Connect up the existing user interface with the new dep resolver api.
Commits on Dec 18, 2008
@dcoutts dcoutts Workaround for a url parsing bug that breaks http proxies that need auth
Diagnosis and patch from Valery V. Vorotyntsev.
@dcoutts dcoutts Generalise the way preferences are specified to the resolver
We still provide a default global policy, but now we give a
list of per-package preferences which can be on the version
or installed state. Later preferences override earlier ones.
@dcoutts dcoutts Add a install/upgrade --preference='foo < 2' flag
This behaves just like the preferred-versions file in the hackage index
but it can be specified on the command line or in a config file.
Commits on Dec 19, 2008
@dcoutts dcoutts Fix constraint set handling for installed constraints
A rather subtle bug. The code was actually correct but the transitionsTo
assertion was not accounting for a transition between the case where
a package's available version had been excluded and then the whole thing
got excluded by a version constraint. It counted one side as a loss
without a corresponding gain on the other side.
@dcoutts dcoutts Extend the invariant on the Constraints ADT
It now carries around the original version of the database
purely so that it can do a much more extensive consistency
check. Packages are never gained or lost, just transfered
between pots in various slightly tricky ways.
@dcoutts dcoutts Use installed constraints instead of hiding versions of the base package
We want to stop cabal-install from accidentally trying to upgrade
the base package since this doesn't work in most cases. We used to
achieve that by deleting the base package from the available package
index. We now do it by leaving the package index as is and instead
adding a constraint that we pick only an installed version of base.
This is a nicer hack and has the potential to give better error
@dcoutts dcoutts Use a more precise package substitution test in improvePlan
This is where we take a valid plan and we "improve" it by swapping
installed packages for available packages wherever possible. This
change is to the condition we use in deciding if it is safe to use
the installed package in place of a reinstall. Previously we checked
that the dependencies of the installed version were exactly the same
as the dependencies we were planning to reinstall with. That was
valid but rather conservative. It caused problems in some situations
where the installed package did not exactly match the available
package (eg when using development versions of a package or of ghc).
What we do now is test if the extra constraints implied by selecting
the installed version are consistent with the existing set of
constraints. This involves threading the constraint set around. In
theory this should even cope with adding additional packages to the
plan as a result of selecting an installed package.
Commits on Dec 21, 2008
@dcoutts dcoutts Respect the --package-db flag when compiling Setup.hs
Fixes ticket #394.
Commits on Jan 13, 2009
@dcoutts dcoutts Print a newline after entering upload password
So we end up with:
  Hackage password: 
  Uploading test.tar.gz...
rather than:
  Hackage password: Uploading test.tar.gz...
@dcoutts dcoutts Display examples in cabal install --help
  cabal install                     Package in the current directory
  cabal install foo                 Package from the hackage server
  cabal install foo-1.0             Specific version of a package
  cabal install 'foo < 2'           Constrained package version
@dcoutts dcoutts Improve the cabal --help output
Put the general info message at the top and make the explanation of
installing a hackage package somewhat clearer.
@dcoutts dcoutts Print the location of the config file in the global --help
Ticket #413
Commits on Jan 14, 2009
@dcoutts dcoutts In cabal list, always display available and installed versions
Previously we omitted the line if it was not installed, or was
not available. However that confused people because it was not
obvious that it would list both. Now it shows something like:
 * foo
       Latest version available: 1.0
       Latest version installed: [ Not installed ]
@dcoutts dcoutts Don't display the category in cabal list output
It is probably not sufficiently useful to justify the space it takes.
@dcoutts dcoutts Warn if a package index from a remote repo is 15 days or older
For example it will print:
Warning: The package list for '' is 16 days old.
Run 'cabal update' to get the latest list of available packages.
@dcoutts dcoutts cabal update now reports if a newer version of cabal-install is avail…
@dcoutts dcoutts Don't add installed constraints system packages that are not installed
In particular fixes a problem (ticket #439) where we required the
installed version of ghc-prim with compilers that do not have that
package such as ghc-6.8 and older, hugs, nhc, lhc etc.
Commits on Jan 15, 2009
@dcoutts dcoutts Rewrite the script
Hopefully more useful and more robust. In particular it does not
download and install packages where suitable versions are already
installed. It also checks for deps.
@dcoutts dcoutts More improvments to the script cf58605
@dcoutts dcoutts Traditional /bin/sh portability fixes for 4a7a69b
Commits on Jan 16, 2009
@dcoutts dcoutts Note in the README that zlib needs the zlib C lib package a5caf11
@dcoutts dcoutts Read install dirs correctly from old-style .cabal/config files
Should fix ticket #365
@dcoutts dcoutts Improve the printing of config file field parse error messages 28a73ea
@dcoutts dcoutts Parse compiler field from old config files correctly
Really old versions of cabal-install generated a default config
containing "compiler: GHC". Sadly the new way we generate the
config file parser from the command line parser means we end up
with a case-sensitive parser as it only matches the exact
command line flags. So we hack it and add in a traditional
parser for that field only. Really the command line and config
file infrastructure needs rewriting again. Sigh.
@dcoutts dcoutts Update to using HTTP-4000.x
This should fix a long-standing bug with http proxies (ticket #352)
It should also make downloads faster, or at least use less memory.
@dcoutts dcoutts Only print the config file location for the global --help 3f74ca8
Commits on Jan 19, 2009
@dcoutts dcoutts Add initial implementation of cabal info
It provides more detailed information on a particular package.
Still a few TODOs. Fixes #361, #449 and #456.
Commits on Jan 23, 2009
@dcoutts dcoutts Fix some FIXMEs and do some TODOs in the list command
Now properly prints if the haddock docs are installed and if the
tarball is cached. It did print them before but it was lying.
@dcoutts dcoutts Don't use grep -e, solaris does not like it 09223ed
@dcoutts dcoutts Improve error message when ghc or ghc-pkg are mismatched or not found 55128b4
@dcoutts dcoutts Update HTTP dep in the bootstrap script bd98e51
Commits on Jan 25, 2009
@dcoutts dcoutts Make configure use the dependency resolver
This means it makes smarter decisions and also decions that are more
consistent with those taken by the install command.
Commits on Jan 26, 2009
@dcoutts dcoutts Remove unnecessary qualified use of ConfigFlags 2e219f9
@dcoutts dcoutts Add ConfigExFlags and related command
This is for configure flags that we use in the configure command in the
cabal command line tool that are not present in runghc Setup configure
command line interface. These are flags that we are moving from the
install command, so that we can also use them for the configure command.
Initially it's just the flags for specifying package version preferences
and  the cabal library version. We'll add constraints later.
@dcoutts dcoutts Add ConfigExFlags into the configure, install and upgrade commands
Not yet passed all the way through.
@dcoutts dcoutts Change the install and configure modules to use the extended config f…
@dcoutts dcoutts Remove the prefernece and cabal lib version flags from the InstallFlags
They are now in the ConfigExFlags instead.
Commits on Feb 01, 2009
@dcoutts dcoutts Add homepage and bug-reports fields to .cabal file c7d431e
Commits on Feb 02, 2009
@dcoutts dcoutts Add compat withTempDirectory function
This is already in Cabal HEAD but we cannot use that yet
@dcoutts dcoutts Use the new withTempDirectory function
In particular it means that install will unpack packages into
different temp dirs on each invocation which means that running
install on the same package for different compilers at the same
time should not clash. This is quite useful for testing.
Commits on Feb 08, 2009
@Saizan Saizan Fix #490, unpack now gives a proper error message. 1a16976
Commits on Feb 09, 2009
@dcoutts dcoutts Don't report that packages are cached at the default verbosity level
It's just not that useful. Report it at -v verobisty level, and
change the text and formatting.
@dcoutts dcoutts Improve the cabal update notice eec0fc9
Commits on Feb 10, 2009
Ganesh Sittampalam always check environment variables for HTTP proxy first dea2d6d
Commits on Feb 15, 2009
@dcoutts dcoutts Rearrange user interface for build logging
The new options (as described in ticket #501) are:
  where LELVEL `elem` [none,anonymous,detailed]
@dcoutts dcoutts Complete the implementation of --build-summary=TEMPLATE
Actually respect the new flag. It's actually a list of template files
and all specified files get written to. This allows us to specify
a default build log file and also have the user write to extra ones.
The summary file template can contain $pkgid $compiler etc.
@dcoutts dcoutts Put the default logging and reporting setting in the initial config f…
@dcoutts dcoutts Change the field order in the initial config file.
Also update the name of one excluded field.
@dcoutts dcoutts Put an explanation of the config file format at the top in comments. 9e53148
Commits on Feb 16, 2009
@dcoutts dcoutts Add warnings in the case that no remote servers have been specified
It's not strictly an error but it can be rather confusing.
Commits on Feb 18, 2009
@dcoutts dcoutts Disable the upgrade command for now. 5169a28
@dcoutts dcoutts Tweaks to the bootstrap script
Update Cabal lib version to
Implement a couple shell script coding style recommendations.
@dcoutts dcoutts Update changelog for 0.6.2 release 323d56e
@dcoutts dcoutts Bump version to 0.6.2 fc17cd5
@dcoutts dcoutts Add extra assertion into the top down dep planner efaba54
@dcoutts dcoutts Add missing other-modules e997ee4
Commits on Feb 19, 2009
@dcoutts dcoutts Update the README d2af878