This project is mirrored from https://github.com/haskell/Cabal.
Pull mirroring updated .
- 17 Dec, 2017 1 commit
-
-
Herbert Valerio Riedel authored
-
- 16 Dec, 2017 1 commit
-
-
Herbert Valerio Riedel authored
This refactoring unifies the defaulting logic into a single place paving the way for changing the defaulting logic.
-
- 27 Oct, 2017 1 commit
-
-
Herbert Valerio Riedel authored
This is a refactoring abstracting `FlagAssignment` while retaining its external appearance as much as possible (i.e. same Read/Show/Binary instances etc). Later we can attach new instances, enforce internal invariants (like e.g. uniqueness of flagnames), switch out the internal representation (maybe to `Data.Map`), etc more easily.
-
- 14 Oct, 2017 1 commit
-
-
Duncan Coutts authored
It's currently in the old Targets module, but we'll need it in the new-build code too soon, and it's not really that closely related to targets, so it makes sense to have it live in the common Types module.
-
- 13 Oct, 2017 1 commit
-
-
Oleg Grenrus authored
Also add cataVersionRange, anaVersionRange, hyloVersionRange and use them to deprecate foldVersionRange'
-
- 09 Aug, 2017 2 commits
-
-
Herbert Valerio Riedel authored
This builds on top of a0d80350 (#4575) and extends the syntax to support the token `all` or `*` to serve as wild-card for the relaxation subject, i.e. the following non-exhaustive list of forms is made possible (NB: the package name `all` is reserved on Hackage): allow-newer: somepkg:* allow-newer: somepkg:all allow-newer: somepkg:^* allow-newer: somepkg:^all allow-newer: all:^all allow-newer: *:^all allow-newer: *:^* allow-newer: *:* allow-newer: all:all Refer to the user's guide for details
-
Herbert Valerio Riedel authored
This removes the redundancy between `RelaxDepsNone` and `RelaxDepsSome []` by removing `RelaxDepsNone`. This way we avoid the risk of subtle bugs that can occur if the same semantic value can be expressed in a non-unique way. A further step to normalise the type would be to turn `[RelaxedDep]` into `Set RelaxedDep`, but there is no operation that would significantly benefit from that yet.
-
- 03 Jul, 2017 1 commit
-
-
Herbert Valerio Riedel authored
This extends the capabilities of `--allow-{newer,older}` to allow for more fine-grained scoping to control more precisely which packages and constraints a relaxation is applied to. See updated documentation for more details.
-
- 18 May, 2017 1 commit
-
-
Herbert Valerio Riedel authored
This is a preparatory refactoring needed for future work such as #4203. I've refrained from doing additional cleanups in order to keep this a refactoring that mostly moves around blocks of code mostly unchanged (except for whitespace), and make it easier to review. This feature was originally implemented because its lack was complained about by Stack/Stackage developers. However, after it got implemented it was never really being used; what's more, it's causing us overhead for no benefit as well as blocking us improving the implementation via the likes of #4203. Closes #3581
-
- 08 Feb, 2017 1 commit
-
-
It's really an error to try and build a graph where you have duplicate node keys, so remove Graph.fromList and add Graph.fromDistinctList. This check is always on, not just an assertion, becuase we get it for free given the way Maps can be constructed. All uses of Graph.fromList are ok to convert to fromDistinctList.
-
- 03 Feb, 2017 2 commits
-
-
I used the new constraint scope to enforce the minimum Cabal version in setup scripts that lack a 'custom-setup' stanza. It isn't exposed to users yet.
-
-
- 16 Jan, 2017 1 commit
-
-
kristenk authored
-
- 13 Jan, 2017 1 commit
-
-
Robert Henderson authored
-
- 12 Jan, 2017 2 commits
-
-
Robert Henderson authored
I also removed 'unqualified' from PackagePath.hs and replaced all uses of it with 'scopeToplevel'. The meaning is identical, however 'scopeToplevel' is a less confusing name.
-
kristenk authored
--install-base-libraries makes cabal ignore the list of packages that cannot be installed or upgraded.
-
- 07 Jan, 2017 1 commit
-
-
Robert Henderson authored
Refactored PackageConstraint in two ways: 1) split it into a package name and a 'PackageProperty' to make the code a bit cleaner; 2) changed PackageName to 'Qualified PackageName'. Added a Binary instance for Qualifier in PackagePath.hs (needed for PackageConstraint). Added pretty-printing code for PackageConstraint. For now, all the code that creates a PackageConstraint just sets the qualifier to 'unqualified', so this commit will not change the external behaviour of cabal-install.
-
- 03 Jan, 2017 1 commit
-
-
Mikhail Glushenkov authored
[ci skip]
-
- 31 Dec, 2016 1 commit
-
-
Going along with the existing approach of using a constraint rather than altering the deps of custom Setup.hs scripts, but make the constraint only apply to Cabal instances that are dependencies of Setup.hs scripts not all instances of Cabal. Also rearrange things a little with a dedicated solver policy function for adding a min dep on Cabal versions for setup scripts.
-
- 21 Dec, 2016 1 commit
-
-
Herbert Valerio Riedel authored
65e9b88b made template-haskell non-upgradable 65ae95c1 made it upgradable again ...and this commit makes it non-upgradable again While there may be a few cases when `template-haskell` can be reinstalled, it's generally not advisable, and causes more harm than the benefit in the few cases where we'd gain install-plan flexibility (e.g. when only template-haskell's API is needed for compile, but no actual TH evaluation takes place). Closes #4098
-
- 14 Nov, 2016 1 commit
-
-
John Ericson authored
Also gets rid of `Distribution.Packages.TextClass`
-
- 31 Oct, 2016 1 commit
-
-
Construction and destruction follows the usual pattern with `mkFlagName` & `unFlagName` functions.
-
- 28 Sep, 2016 1 commit
-
-
Herbert Valerio Riedel authored
Similiar to dabd9d98 which made `PackageName` opaque, this makes `Distribution.Version.Version` opaque. The most common version numbers occuring on Hackage are 3- and 4-part versions. This results in significant Heap overhead due to `Data.Version`'s inefficient internal representation. So like the `PackageName` commit, this commit is a preparatory commit to pave the way for replacing `Version`'s internal representation by a representation with a memory footprint which can be an order of magnitude smaller. Finally, this also adds a new functor-like convenience function alterVersion :: ([Int] -> [Int]) -> Version -> Version for modifying the version number components.
-
- 27 Sep, 2016 1 commit
-
-
Herbert Valerio Riedel authored
When looking at heap-profiles of `cabal-install`, the `(:)` constructor stands out as the most-allocated constructor on the heap. Having to handle 10k+ package names contributes to the allocation numbers, especially on 64bit archs where ASCII `String`s have a 24 byte per character footprint. This commit is a preparatory commit to pave the way for changing `PackageName`'s internal representation to something like `ShortByteString` (which is essentially a thin wrapper around primitive `ByteArray#`s which themselves have have an overhead of 2 words + one byte per ASCII character rounded up to nearest word) which would allow to reduce the memory footprint by a full order of magnitude, as well as reduce pointer chasing and GC overhead.
-
- 21 Sep, 2016 1 commit
-
-
Edward Z. Yang authored
There is a bug in `cabal configure`'s invocation of the solver in Distribution/Client/Configure.hs: standardInstallPolicy installedPkgIndex (SourcePackageDb mempty packagePrefs) [SpecificSourcePackage localPkg] We can see that the solver is given an EMPTY source package database. This is because we assume that everything you need from cabal configure is taken from the installed package index. But this is NOT true for executables, which never have an entry in the installed package index. So we SHOULD NOT solve for executables in the legacy codepath, since there isn't anything useful we can do with the info anyway. This gets toggled using a new solver parameter SolveExecutables. I didn't bother with a test because this will be obsoleted by nix-local-build. Fixes #3875 Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
- 05 Sep, 2016 1 commit
-
-
kristenk authored
The solver can handle duplicate targets by linking them together, but the log is more complex, and the result is the same as if the targets were deduplicated beforehand. Duplicate targets can occur in a sandbox (issue #3203).
-
- 21 Aug, 2016 1 commit
-
-
Edward Z. Yang authored
This fixes #220: new-build now builds, installs and adds executables to PATH automatically if they show up in 'build-tools'. However, there is still more that could be done: the new behavior only applies to a specific list of 'build-tools' (alex, happy, etc) which Cabal recognizes out of the box. The plan is to introduce a new 'tool-depends' field to allow dependencies on other executables as well. Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
- 04 Aug, 2016 1 commit
-
-
kristenk authored
-
- 29 Jul, 2016 1 commit
-
-
bardur.arantsson authored
[ci skip]
-
- 23 Jul, 2016 3 commits
-
-
bardur.arantsson authored
-
bardur.arantsson authored
Removing 'topdown' as a resolver choice means that 'choose' is also obsolete and so it is removed too.
-
Herbert Valerio Riedel authored
This implements the flag `--allow-older` which is the analogous to `--allow-newer` acting on lower bounds.
-
- 21 Jul, 2016 2 commits
-
-
Edward Z. Yang authored
Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
Edward Z. Yang authored
As per an existing TODO in the code, the use of testEnabled/benchmarkEnabled to indicate if a component was enabled/disabled by the user command line was an egregious violation of abstraction. This commit removes these two fields, instead passing along the necessary enabling information with ComponentEnabledSpec instead. As there were not many uses of testEnabled/benchmarkEnabled, this was not too difficult to do. Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
- 19 Jul, 2016 4 commits
-
-
Edward Z. Yang authored
This is a bit more accurate and doesn't require any fake UnitIds anymore. (But to-do: axe fake UnitIds!) Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
Edward Z. Yang authored
Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
Edward Z. Yang authored
Now we copy-paste the contents of InstallPlan into SolverInstallPlan, thus giving it a separate set of types. For now, we don't do anything else, e.g., remove unnecessary functions or specialize. We need a new function 'fromSolverInstallPlan' akin to 'mapPreservingGraph' which can take an InstallPlan from the old solver install plan to the new one. Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
Edward Z. Yang authored
This is a preparatory commit for giving SolverInstallPlan its own type. We first start by moving the type synonyms for SolverInstallPlan into their own module, and update module references to point to them. TODO: Maybe this module should go in the Solver hierarchy rather than the client hierarchy? Signed-off-by:
Edward Z. Yang <ezyang@cs.stanford.edu>
-
- 11 Jul, 2016 1 commit
-
-
Herbert Valerio Riedel authored
This also adds a not yet used `AllowOlder` newtype This is a preparatory refactoring propsed in #3466 for supporting `--allow-older`
-
- 02 Jul, 2016 1 commit
-
-
Andres Löh authored
-