This project is mirrored from https://github.com/haskell/Cabal. Pull mirroring updated .
  1. 17 Mar, 2017 1 commit
    • Edward Z. Yang's avatar
      Refactor MungedPackageId and PackageIndex. · f4ded04f
      Edward Z. Yang authored
      
      
      This makes the necessary changes to 4dc0f30fc36914ee2f01bde016bee98b8e0bb0bb
      to handle component configuring correctly.  It probably is a good step
      towards pkg:lib style dependencies.
      
      The big ideas:
      
      * There's a new AnnotatedId type, which is any identifier (like
        ComponentId), but also with a PackageId and ComponentName.
        It's a bit like ConfiguredId, but ConfiguredId is specialized
        for ComponentId.  There's a conversion function
        annotatedIdToConfiguredId.
      
      * We adopt a totally new strategy for handling MungedPackageId in
        InstalledPackageInfo.  Rather than store the munged package
        identifier in IPI, we NEVER store it, instead computing it
        from the package name and library name (which are stored.)
        There is now code to PARSE a munged package name into these
        two components, so that when we read 'name' we get the
        correct info.  The resulting code is splendidly clear.
      
      * Some places where we took a ComponentName (notably
        computeCompatPackageName) we now take 'Maybe UnqualComponentName'.
        This is more accurate, because compatibility package names are
        only computed for libraries, not other components.  Some code
        in Distribution.Backpack.ReadyComponent is partial now,
        but the invariants should hold up.
      
      * A number of places where MungedId was applied, I undid them.
        Most notable are macro generation (that should be PACKAGES,
        not components) and mkLegacyUnitId (since REALLY old style
        unit identifiers, we won't support internal libraries anyway.)
      
      * Many functions in PackageIndex are monomorphized to
        InstalledPackageInfo.  Fortunately cabal-install's usage
        still works.
      
      * Distribution/Client/SolverPlanIndex.hs, not used by anyone,
        got the axe.
      
      * Dependency solving has a hack to solve the problem of how to
        interpret installed internal libraries in the package database.
        The basic idea is that, although in most cases where we used
        a MungedId, we say it explicitly, in the SOLVER, we munge
        *installed package names* only, and keep the type PackageName.
        It's a hack, but the alternative is to write a lot more code.
        Note that is MORALLY PN is indeed a PackageName, since we really
        are solving for honest to goodness packages, not components!
        See Note [Index conversion with internal libraries] for more
        details.
      
      * ConfiguredId now records the ComponentName.  This is quite important,
        because we need to use it to figure out how we are going to phrase
        --dependency.  In fact, it is a miracle that this worked at all
        (and it only worked because of a very skeevy update to the PackageId
        in the creation of ConfiguredComponent).  Irritatingly, this must
        be a Maybe ComponentName, because a ConfiguredId MIGHT refer to
        a setup component. Very distressing.
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      f4ded04f
  2. 10 Mar, 2017 1 commit
  3. 07 Mar, 2017 22 commits
  4. 27 Feb, 2017 3 commits
  5. 21 Feb, 2017 3 commits
  6. 20 Feb, 2017 1 commit
    • kristenk's avatar
      Allow the solver to toggle manual flags to match constraints that have any qualifier. · f7f63ab4
      kristenk authored and Mikhail Glushenkov's avatar Mikhail Glushenkov committed
      This fixes #4299. The change gives the dependency solver the flexibility to link
      dependencies when the user has only set a manual flag on one of them.
      Previously, the solver would force the constrained dependency to have the
      flag value from the constraint and force the unconstrained dependency to have
      the default flag value. In cases where the single instance restriction required
      the dependencies to be linked, the solver couldn't find a solution.
      
      Qualified constraints can still be used to force different dependencies on a
      package to use different flag values. For example,
      "--constraint 'pkg +flag' --constraint 'pkg2:setup.pkg -flag'" turns the flag on
      for the top-level dependency and off for the setup dependency.
      
      I also stored flag default values in the search tree to simplify the code.
      f7f63ab4
  7. 19 Feb, 2017 1 commit
  8. 18 Feb, 2017 1 commit
  9. 17 Feb, 2017 3 commits
  10. 12 Feb, 2017 1 commit
  11. 31 Jan, 2017 1 commit
    • Ryan Scott's avatar
      Require echo-0.1.3 · 8977b657
      Ryan Scott authored
      echo-0.1.3 introduces a dependency on the minimalistic mintty library, so we
      need to add that to ./bootstrap.sh as well.
      8977b657
  12. 26 Jan, 2017 2 commits