Skip to content
Snippets Groups Projects
This project is mirrored from https://github.com/haskell/Cabal. Pull mirroring updated .
  1. Aug 24, 2016
  2. Aug 23, 2016
  3. Aug 21, 2016
    • Edward Z. Yang's avatar
      Solve for, build, and add to path build-tools dependencies. · c0a48602
      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: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      c0a48602
    • Edward Z. Yang's avatar
    • Edward Z. Yang's avatar
      Per-component new-build support (no Custom support yet). · d9bf6788
      Edward Z. Yang authored
      
      A bit of a megapatch.  Here's what's in it:
      
      * First, a few miscellaneous utility functions and reexports
        in Cabal.  I could have split these into a separate commit
        but I was too lazy to.
      
      * Distribution.Client.Install got refactored:
        instead of using PackageFixedDeps, it uses IsUnit
        instead.  This is because we weren't using ComponentDeps
        in a nontrivial way; we just need some graph structure
        and IsNode (with UnitId keys) fulfills that. I also removed the
        invariant checking and error reporting because it was
        being annoying (we check the invariants already in
        SolverInstallPlan).
      
      * Look at Distribution.Client.ProjectPlanning.Types.
        This contains the primary type change: ElaboratedConfiguredPackage
        is now EITHER a monolithic ElaboratedPackage, or a per-component
        ElaboratedComponent (it should get renamed but I didn't do that
        in this patch.)  These are what we're going to store in our
        plans: if a package we're building has a Setup script which supports
        per-component builds, we'll explode it into a component.  Otherwise
        we'll keep it as a package.  We'll see codepaths for both
        throughout.
      
      * OK, so the expansion happens in ProjectPlanning, mostly in
        'elaborateAndExpandSolverPackage'.  You should review the
        package hash computation code closely.  When we can separate
        components, we compute a hash for each INDEPENDENTLY.  This
        is good: we get more sharing.
      
      * We need to adjust the target resolution and pruning code
        in ProjectOrchestration and ProjectPlanning.  I did a dumb
        but easy idea: if a user mentions 'packagename' in a
        target name, I spray the PackageTarget on every
        possibly relevant IPID in buildTargets', and then pare
        it down later.
      
      * And of course there's code in ProjectBuilding to actual
        do a configure and then build.
      
      * We change the layout of build directories so that we can
        track each component separately.  While I was doing that,
        I also added compiler and platform information.
      
      Custom doesn't work yet because I need to give them their own
      separate component, and teach Cabal how to build them specially.
      
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      d9bf6788
    • Edward Z. Yang's avatar
      Undo new-build support for convenience libraries. · e6b6167d
      Edward Z. Yang authored
      
      The previous approach I took, though correct, was quite
      confusing.  If I refactor InstallPlan to operate on a
      per-component basis, then we'll automatically get support
      for convenience libraries, which will ultimately cleaner.
      (While we won't be able to get rid of support for whole
      package installs, it will be safe to assume packages
      using convenience libraries also support one-shot
      configure.)
      
      I didn't revert the support in cabal install; I'm not
      planning on componentizing it.
      
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      e6b6167d
  4. Aug 17, 2016
  5. Jun 26, 2016
  6. May 06, 2016
  7. May 05, 2016
  8. Apr 23, 2016
  9. Apr 19, 2016
  10. Apr 17, 2016
    • Duncan Coutts's avatar
      Adjust tests for monitoring Cabal files to cover more cases · 518b9b38
      Duncan Coutts authored
      Without this change, Edward's original patch to monitor the contents of
      Cabal files wouldn't actually be needed to make the test pass.
      
      Originally the test only covered the case of specifying a package by a
      glob that matches a .cabal file, and that case already worked because
      the glob matching already included a monitor on the glob matches (ie
      the .cabal file). What did not work was a glob that matched a
      directory, since in that case we did the the glob match for
      $thedir/*.cabal incorrectly, meaning that we didn't end up monitoring
      the files properly (a path mismatch meant we were monitoring different
      files).
      518b9b38
  11. Apr 12, 2016
  12. Apr 02, 2016
  13. Apr 01, 2016
  14. Mar 03, 2016
    • kristenk's avatar
      Allow inconsistent handling of missing paths in 'sandbox delete-source' tests · 4a06b1d4
      kristenk authored
      Fixes #3059.
      
      cabal's handling of non-existent sources depends on the behavior of the
      directory package. 'canonicalizePath' can fail on non-existent paths before
      directory-1.2.3.0. This commit updates the test 'fail_on_nonexistent_source' to
      allow 'cabal sandbox delete-source' to fail or succeed.  It also changes
      'fail_removing_source_thats_not_registered' so that it only tests existing
      sources.
      4a06b1d4
  15. Feb 11, 2016
  16. Feb 10, 2016
  17. Feb 02, 2016
  18. Jan 31, 2016
  19. Jan 04, 2016
    • Duncan Coutts's avatar
      Fix tar tests · fd3dd32d
      Duncan Coutts authored
      No need to test functions that come from the tar lib now.
      
      Also, correct the expected output for sandbox remove source. Previously
      the results were expected to come out in reverse order, because the old
      filterEntriesM performed the monad actions in reverse order. The new
      code doesn't have that bug so the results come out in the correct order.
      fd3dd32d
  20. Dec 09, 2015
  21. Nov 24, 2015
  22. Nov 23, 2015
  23. Nov 17, 2015
  24. Oct 18, 2015
  25. Oct 17, 2015
  26. Oct 14, 2015
Loading