This project is mirrored from https://github.com/haskell/Cabal. 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.
      ae33fcf9
  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.
      baf78ca2
  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
      library.
      
      Closes #4206.
      e2194d25
  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.
      6cb6a516
  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.
      b9ce4337
  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'.
      c5553fe8
  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
        01-index.tar)
      - Add root Makefile to handle commmon dev tasks (genering Lexer.hs)
      5e4f4d58
  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.
      9aa4b9f0
    • 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".
      f9139d7b
    • 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
      behavior.
      3003d06d
  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.
      bb2026c4
  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.
      dabd9d98
  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