This project is mirrored from Pull mirroring updated .
  1. 12 Apr, 2020 1 commit
  2. 11 Dec, 2019 1 commit
    • Oleg Grenrus's avatar
      Add Distribution.Utils.Structured · ae33fcf9
      Oleg Grenrus authored
      It defines `Structured` type class, which we use to prepend
      a hash to cached `Binary` blobs. Thus we can catch early, if
      format is changed, avoiding corrupt cache making cabal
      behave weirdly.
      Plenty types got Typeable instances, as it's a superclass of Structured
      This commit also introduces new compat modules:
      - Distribution.Compat.Typeable with typeRep
      - Distribution.Client.Compat.Orphans,
        to collect at least some orphans into central place.
  3. 28 Nov, 2018 1 commit
    • Oleg Grenrus's avatar
      Move ReadP out of Cabal (to cabal-install) · baf78ca2
      Oleg Grenrus authored
      - Distribution.Compat.ReadP to Distribution.Deprecated.ReadP
      - Distribution.Text to Distribution.Deprecated.Text
      - all Text instances needed by cabal-install to Deprecated.Text too
      - Distribution.ParseUtils to Distribution.Deprecated.ParseUtils
      - Remove deprecated Distribution.PrettyUtils
      - new Distribution.Text with
          display = prettyShow
          simpleParse = simpleParsec
        to not break too much stuff (Custom Setup.hs)
      - parseInstalledPackageInfo type signature changed to use
        `base` types
      This removes around 2k lines from Cabal the library.
      git diff --stat shows less, as files are moved (git is smart).
      Even so, total 300 lines removal at this point.
  4. 03 Nov, 2018 1 commit
    • Francesco Gazzetta's avatar
      Multiple libraries (allow depending on sublibs) · e2194d25
      Francesco Gazzetta authored
      Create a new syntax for depending on any library of any package.
      The syntax is
          build-depends: pkgname:{pkgname, sublibname} -any
      where the second `pkgname` specifies a dependency on the main unnamed
      Closes #4206.
  5. 14 Jul, 2018 1 commit
  6. 27 Oct, 2017 1 commit
    • Herbert Valerio Riedel's avatar
      Make `FlagAssignment` an opaque `newtype` · 6cb6a516
      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.
  7. 14 Oct, 2017 1 commit
    • Duncan Coutts's avatar
      Move PackageSpecifier into common Types module · b9ce4337
      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.
  8. 20 Sep, 2017 1 commit
    • Herbert Valerio Riedel's avatar
      Don't automatically case-correct mispelled package-names · c5553fe8
      Herbert Valerio Riedel authored
      Previously, a command like
         cabal install uHttpc
      would silently auto-correct this to
         cabal install uhttpc
      However, this is inconsistent as `build-depends` or `constraints`
      are case-insensitive.
      So with this patch,
         cabal install VULKAN uHttpc
      result in the following error(s) instead:
         There is no package named 'VULKAN'. However, the following package names exist: 'Vulkan', 'vulkan'.
         There is no package named 'uHttpc'. However, the following package name exists: 'uhttpc'.
  9. 15 Aug, 2017 1 commit
    • Oleg Grenrus's avatar
      Use parsec, drop parsec flag · 5e4f4d58
      Oleg Grenrus authored
      - Manually generate Lexer.hs
      - Temporarily disable parser-hackage-tests on appveyor (needs
      - Add root Makefile to handle commmon dev tasks (genering Lexer.hs)
  10. 05 Aug, 2017 1 commit
  11. 01 May, 2017 1 commit
  12. 19 Feb, 2017 1 commit
  13. 03 Feb, 2017 3 commits
    • kristenk's avatar
      Expose constraints that apply to any setup dependency. · 9aa4b9f0
      kristenk authored
      For example, "setup.Cabal installed" forces cabal to use the installed Cabal
      library for all setup scripts.
    • kristenk's avatar
      Expose constraints that apply wherever a package appears in the dependency graph. · f9139d7b
      kristenk authored
      For example, --constraint="any.pkg == 5" applies to "pkg" whether it is a
      top-level dependency, setup dependency, or build tool dependency.
      I also modified the UserConstraint type so that it is more similar to the
      PackageConstraint type, now that both types need to express similar
      "constraint scopes".
    • kristenk's avatar
      Remove 'Namespace' from qualified constraints. · 3003d06d
      kristenk authored
      This commit changes the meaning of constraints like 'pkg > 5'. Previously,
      'pkg > 5' only applied to the top-level 'pkg' goal without a 'Namespace', but
      now it applies to any top-level goal for 'pkg'. However, the 'Namespace' field is
      currently only used by --independent-goals, so this change has no effect on
  14. 26 Jan, 2017 1 commit
  15. 22 Jan, 2017 1 commit
  16. 12 Jan, 2017 3 commits
  17. 08 Jan, 2017 1 commit
  18. 07 Jan, 2017 4 commits
  19. 06 Jan, 2017 2 commits
  20. 05 Jan, 2017 2 commits
  21. 14 Nov, 2016 1 commit
  22. 31 Oct, 2016 1 commit
  23. 28 Sep, 2016 1 commit
    • Herbert Valerio Riedel's avatar
      Make `Version` type opaque (#3905) · bb2026c4
      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.
  24. 27 Sep, 2016 1 commit
    • Herbert Valerio Riedel's avatar
      Make `PackageName` type opaque (#3896) · dabd9d98
      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.
  25. 26 Sep, 2016 1 commit
  26. 06 May, 2016 2 commits
  27. 27 Apr, 2016 1 commit
  28. 26 Apr, 2016 1 commit
  29. 17 Mar, 2016 1 commit
  30. 07 Mar, 2016 1 commit