This project is mirrored from https://github.com/haskell/Cabal. Pull mirroring updated .
  1. 28 Sep, 2017 1 commit
  2. 25 Sep, 2017 1 commit
    • kristenk's avatar
      Remove the package instance from D.Solver.Modular.Var (closes #4142). · e1ca9dcf
      kristenk authored
      This change has several effects:
      
      - The solver no longer includes the package version in messages that relate to
        a package's flags, stanzas, or dependencies.  However, the solver always
        chooses the package version before choosing any flags, stanzas, or
        dependencies for the package, so it should be easy to find the version
        by looking earlier in the log.
      - In conflict counting, the solver treats flags with the same name in different
        versions of a package as the same flag.  This change in the conflict counting
        heuristic can improve the solver's efficiency when the same flag causes the
        same conflicts in different versions of a package.  The same applies to
        enabling tests or benchmarks.
      - Each flag or stanza can only appear once in a conflict set.  This has no
        effect on behavior, but it simplifies the message containing the final
        conflict set.
      
      Here is an example of the change in a log message.  It only prints
      hackage-server's version once, when it first chooses the package.  The conflict
      set also has one fewer variable, but that is probably due to the change in
      conflict counting.
      
       Resolving dependencies...
       cabal: Could not resolve dependencies:
       trying: hackage-server-0.5.0 (user goal)
      -trying: hackage-server-0.5.0:+build-hackage-build
      -trying: unix-2.7.2.1/installed-2.7... (dependency of hackage-server-0.5.0
      +trying: hackage-server:+build-hackage-build
      +trying: unix-2.7.2.1/installed-2.7... (dependency of hackage-server
       +build-hackage-build)
      -next goal: aeson (dependency of hackage-server-0.5.0 +build-hackage-build)
      +next goal: aeson (dependency of hackage-server +build-hackage-build)
       rejecting: aeson-1.2.2.0, aeson-1.2.1.0, aeson-1.2.0.0, aeson-1.1.2.0,
       aeson-1.1.1.0, aeson-1.1.0.0, aeson-1.0.2.1, aeson-1.0.2.0, aeson-1.0.1.0,
       aeson-1.0.0.0, aeson-0.11.3.0, aeson-0.11.2.1, aeson-0.11.2.0, aeson-0.11.1.4,
       aeson-0.11.1.3, aeson-0.11.1.2, aeson-0.11.1.1, aeson-0.11.1.0,
       aeson-0.11.0.0, aeson-0.9.0.1, aeson-0.9.0.0, aeson-0.8.1.1, aeson-0.8.1.0,
       aeson-0.8.0.2, aeson-0.7.0.6, aeson-0.7.0.4, aeson-0.6.2.1, aeson-0.6.2.0
       (conflict: hackage-server +build-hackage-build => aeson==0.6.1.*)
       rejecting: aeson-0.6.1.0 (conflict: unix => time==1.6.0.1/installed-1.6...,
       aeson => time<1.5)
       rejecting: aeson-0.6.0.2, aeson-0.6.0.1, aeson-0.6.0.0, aeson-0.5.0.0,
       aeson-0.4.0.1, aeson-0.4.0.0, aeson-0.3.2.14, aeson-0.3.2.13, aeson-0.3.2.12,
       aeson-0.3.2.11, aeson-0.3.2.10, aeson-0.3.2.9, aeson-0.3.2.8, aeson-0.3.2.7,
       aeson-0.3.2.6, aeson-0.3.2.5, aeson-0.3.2.4, aeson-0.3.2.3, aeson-0.3.2.2,
       aeson-0.3.2.1, aeson-0.3.2.0, aeson-0.3.1.1, aeson-0.3.1.0, aeson-0.3.0.0,
       aeson-0.2.0.0, aeson-0.1.0.0, aeson-0.10.0.0, aeson-0.8.0.1, aeson-0.8.0.0,
       aeson-0.7.0.5, aeson-0.7.0.3, aeson-0.7.0.2, aeson-0.7.0.1, aeson-0.7.0.0
       (conflict: hackage-server +build-hackage-build => aeson==0.6.1.*)
       After searching the rest of the dependency tree exhaustively, these were the
      -goals I've had most trouble fulfilling: aeson, hackage-server,
      -hackage-server-0.5.0:build-hackage-build,
      -hackage-server-0.4:build-hackage-mirror, template-haskell
      +goals I've had most trouble fulfilling: aeson,
      +hackage-server:build-hackage-build, hackage-server, template-haskell
      
      I ran hackage-benchmark to compare this commit with master (two commits
      earlier).  I used --min-run-time-percentage-difference-to-rerun=10 to only rerun
      packages if the run times differed by more than 10% in the first trial, and
      defaults for the rest of the options (10 trials, p-value of 0.05, 90 second
      timeout). The index state was "2017-09-24T03:35:06Z".
      
      1 is master, and 2 is this commit:
      
      package            result1       result2             mean1       mean2     stddev1     stddev2     speedup
      CC-delcont-ref     Solution      Solution           1.467s      1.505s      0.019s      0.100s      0.975
      ascii-cows         Solution      Solution           1.827s      1.758s      0.159s      0.012s      1.040
      opaleye-classy     NoInstallPlan NoInstallPlan      4.588s      4.070s      0.043s      0.032s      1.127
      range-space        NoInstallPlan NoInstallPlan      2.642s      2.299s      0.016s      0.016s      1.149
      rts                PkgNotFound   PkgNotFound        1.323s      1.327s      0.032s      0.033s      0.997
      servant-auth-docs  Solution      Solution           1.968s      1.998s      0.017s      0.074s      0.985
      thorn              BackjumpLimit NoInstallPlan      4.793s      3.141s      0.050s      0.034s      1.526
      unordered-intmap   Solution      Solution           1.502s      1.511s      0.081s      0.047s      0.994
      
      I looked at the solver logs for the three packages with the largest changes in
      run time, opaleye-classy, range-space, and thorn.  Each one showed that the
      solver started preferring a flag in an older version of a package after it had
      caused conflicts in a newer version of the package.
      e1ca9dcf
  3. 18 Sep, 2017 1 commit
    • Herbert Valerio Riedel's avatar
      Differentiate letter for the dist-dir layout of components · e2a52dee
      Herbert Valerio Riedel authored
      This has been a pet-peeve of mine since 1.24 but I forgot to address
      this in time for the 2.0 release, as it conflates all the component
      kinds into an opaque single "c" namespace thereby losing information,
      rather than encoding the component type in a more expressive single
      letter path component.
      e2a52dee
  4. 24 Aug, 2017 1 commit
  5. 23 Aug, 2017 1 commit
  6. 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
  7. 10 Aug, 2017 1 commit
  8. 06 Aug, 2017 2 commits
  9. 24 Jul, 2017 1 commit
  10. 23 Jul, 2017 1 commit
  11. 22 Jul, 2017 1 commit
  12. 21 Jul, 2017 1 commit
  13. 20 Jul, 2017 1 commit
  14. 19 Jul, 2017 3 commits
  15. 18 Jul, 2017 2 commits
  16. 17 Jul, 2017 1 commit
  17. 16 Jul, 2017 4 commits
  18. 15 Jul, 2017 3 commits
  19. 10 Jul, 2017 2 commits
    • kristenk's avatar
      Fix bug in conflict counting. · 22d44325
      kristenk authored
      In Explore.hs, the solver calculates a conflict set corresponding to the option
      to not choose a value for each goal, called 'initial'.  That conflict set should
      be added to the ConflictMap when the current goal causes a conflict.  However,
      there was a bug, and the solver added 'initial' to the ConflictMap at every
      level.
      
      The bug meant that the solver preferred all goals that it had already chosen.
      If a new goal started to cause conflicts, it would take a while for the solver
      to start preferring the new goal over the ones that it had previously seen.
      See #4595 for an example where this problem caused longer backjumps and slowed
      down the solver.
      
      Testing
      
      I ran "cabal install --dry-run" for all packages on Hackage with master and the branch with a 90 second timeout, GHC 8.0.1, and index state 2017-07-08T04:20:18Z. Then I filtered out all packages where both runs had the same result (success or failure) and the times were within 10%. I repeated that process three times to eliminate packages that had different run times due to noise. Then I ran "cabal install --dry-run --max-backjumps=-1" on the remaining packages and averaged three runs.
      
      Since this branch changes a goal-ordering heuristic, I expected a lot of changes in run time in either direction. Out of 105 changes, 83 were faster, 20 were slower, and 2 involved a timeout on both branches. (The two that timed out had different run times before I removed the backjump limit.)
      
      package                          master result   master time (seconds)   branch result   branch time (seconds)   speedup
      AesonBson                        solution         3.06                   solution         2.59                    1.18
      DisTract                         no solution      1.48                   no solution      1.34                    1.1
      GPipe-Examples                   timeout         90.01                   no solution      2.11                    -
      GuiTV                            solution         2.54                   solution        16.05                    0.16
      Phsu                             solution         3.49                   solution         1.83                    1.9
      Ranka                            no solution      2.05                   no solution      1.65                    1.25
      Rlang-QQ                         no solution      2.97                   no solution      1.89                    1.57
      SourceGraph                      timeout         90.04                   no solution     11.53                    -
      Validation                       no solution      2.1                    no solution      6.59                    0.32
      WebCont                          no solution      2.04                   no solution      1.6                     1.28
      acme-everything                  timeout         90.02                   timeout         90                       -
      aeson-t                          solution         2.04                   solution         1.81                    1.13
      alsa-gui                         no solution      1.62                   no solution      1.86                    0.87
      aviation-cessna172-diagrams      no solution      2.56                   no solution      2.29                    1.12
      aws-dynamodb-conduit             no solution      2.22                   no solution      1.83                    1.22
      azure-servicebus                 no solution      5.18                   no solution      2.87                    1.8
      bamboo-theme-mini-html5          no solution      2.51                   no solution      2                       1.26
      bitcoin-payment-channel          solution         3.42                   solution         2.73                    1.25
      bittorrent                       no solution      2.75                   no solution      2.4                     1.15
      blaze-builder-enumerator         no solution      1.62                   no solution      1.88                    0.86
      blunt                            solution         2.99                   solution         2.5                     1.19
      cash                             no solution      1.33                   no solution      1.53                    0.87
      cheapskate-terminal              no solution      2.04                   no solution      1.62                    1.26
      clckwrks-plugin-bugs             no solution      3.85                   no solution      5.78                    0.67
      cmdtheline                       no solution      1.96                   no solution      1.63                    1.2
      colchis                          no solution      1.99                   no solution      2.23                    0.89
      collada-types                    no solution      1.86                   no solution      1.66                    1.12
      convertible-text                 solution         1.61                   solution         1.83                    0.88
      cqrs-example                     no solution      2.64                   no solution      2.32                    1.14
      dixi                             solution         4.44                   solution         4.03                    1.1
      ethereum-client-haskell          no solution      1.84                   no solution      2.45                    0.75
      flowdock                         no solution      2.46                   no solution      3.19                    0.77
      geniserver                       no solution      5.34                   no solution      4.84                    1.1
      ghc-imported-from                solution         4.59                   solution         2.9                     1.58
      gps2htmlReport                   solution         3.08                   solution         5.58                    0.55
      guarded-rewriting                solution         1.54                   solution         1.34                    1.14
      hack2-handler-happstack-server   no solution      1.76                   no solution      2                       0.88
      halma-telegram-bot               solution         4.27                   solution         3.37                    1.27
      happs-tutorial                   no solution      2.08                   no solution      1.86                    1.12
      happstack                        no solution      3.08                   no solution      5.86                    0.53
      happstack-facebook               timeout         90.01                   timeout         90.03                    -
      haskelldb-hsql-mysql             no solution      1.73                   no solution      1.5                     1.16
      hdbi                             no solution      1.92                   no solution      1.66                    1.15
      hdbi-postgresql                  no solution      3.05                   no solution      1.95                    1.56
      hdbi-sqlite                      no solution      1.91                   no solution      1.69                    1.13
      hexpat-iteratee                  no solution      2.61                   no solution      1.84                    1.42
      hist-pl                          no solution      2.69                   no solution      2.36                    1.14
      hscd                             no solution      2.53                   no solution      1.59                    1.59
      http-client-lens                 no solution      3.63                   no solution      1.96                    1.85
      hubris                           no solution      3.62                   no solution      1.63                    2.22
      infinity                         no solution      1.34                   no solution      1.5                     0.89
      iteratee-parsec                  no solution      2.01                   no solution      1.74                    1.16
      json-togo                        no solution      1.86                   no solution      1.65                    1.13
      lat                              no solution      2.87                   no solution      1.86                    1.55
      liquidhaskell                    solution         3.34                   solution         2.25                    1.48
      manatee-core                     no solution      1.79                   no solution      1.6                     1.12
      manatee-curl                     no solution      8.44                   no solution      2.73                    3.09
      manatee-editor                   no solution      5.05                   no solution      2.81                    1.8
      manatee-filemanager              no solution     29.09                   no solution      2.96                    9.82
      manatee-imageviewer              no solution      1.78                   no solution      1.57                    1.13
      manatee-mplayer                  no solution      8.98                   no solution      4.05                    2.22
      manatee-terminal                 no solution      3.19                   no solution      2.41                    1.32
      minimung                         no solution      1.86                   no solution      1.57                    1.19
      monoids                          no solution      3.02                   no solution      2.68                    1.13
      mprover                          no solution      1.89                   no solution      1.54                    1.23
      ms                               no solution      8.04                   no solution      4.35                    1.85
      music-sibelius                   solution         3.1                    solution         2.5                     1.24
      nerf                             solution        22.54                   solution         3.09                    7.29
      nomyx-api                        solution         5.46                   solution         4.39                    1.24
      nomyx-library                    solution         2.08                   solution         1.86                    1.11
      nomyx-server                     no solution      4.83                   no solution      3.92                    1.23
      opaleye-classy                   no solution      2.07                   no solution      3.58                    0.58
      openflow                         no solution      1.95                   no solution      1.66                    1.18
      ot                               no solution      3.37                   no solution      1.95                    1.73
      paypal-api                       no solution      1.89                   no solution      1.64                    1.15
      pdf-slave-server                 no solution      3.21                   no solution      2.15                    1.49
      phooey                           solution         2.55                   solution        16.24                    0.16
      pipes-cereal-plus                solution         1.85                   solution         1.65                    1.12
      pocket-dns                       no solution      2.71                   no solution      2.08                    1.3
      pontarius-mediaserver            no solution      2.29                   no solution      2.7                     0.85
      precis                           no solution      2.53                   no solution      3.23                    0.78
      prove-everywhere-server          no solution      2.19                   no solution      1.92                    1.14
      quickbooks                       no solution      5.86                   no solution      5.17                    1.13
      rbpcp-api                        solution         2.35                   solution         2.13                    1.11
      react-haskell                    timeout         90.02                   no solution     71.21                    -
      regex-xmlschema                  no solution      1.34                   no solution      1.51                    0.89
      remote-json-server               solution         2.1                    solution         1.8                     1.16
      scholdoc-citeproc                no solution      3                      no solution      1.92                    1.57
      scion-browser                    no solution      5.21                   no solution      4.65                    1.12
      semdoc                           no solution      4.21                   no solution      3.04                    1.39
      servant-auth-token-rocksdb       no solution      4.68                   no solution      2.32                    2.02
      snaplet-auth-acid                no solution      2.25                   no solution      1.99                    1.13
      snaplet-stripe                   no solution      3.46                   no solution      2.97                    1.16
      sssp                             no solution      3.3                    no solution      2.79                    1.18
      target                           solution         2.8                    solution         2.11                    1.32
      tls-extra                        no solution      2.74                   no solution      2.36                    1.16
      twentefp-rosetree                no solution      1.69                   no solution      1.97                    0.86
      twitter-enumerator               no solution     28.39                   no solution      2.16                   13.15
      wai-middleware-cache             no solution      1.95                   no solution      1.56                    1.25
      wai-middleware-catch             no solution      1.9                    no solution      1.54                    1.24
      wai-middleware-route             solution        11.9                    solution         1.62                    7.34
      xml2json                         no solution      2.27                   no solution      1.68                    1.35
      yesod-auth-account-fork          solution         3.33                   solution         2.87                    1.16
      yesod-comments                   no solution     25.6                    no solution     14.44                    1.77
      yesod-pure                       solution         7.99                   solution         4.45                    1.79
      22d44325
    • Douglas Wilson's avatar
      Add tests for checking for QuasiQuotes in doingTH · 11e70568
      Douglas Wilson authored
      These tests are copied from cabal-testsuite/PackageTests/TemplateHaskell with
      only minor changes.
      11e70568
  20. 08 Jul, 2017 1 commit
    • Herbert Valerio Riedel's avatar
      Implement `cabal check` for consistent .cabal naming (#4592) · ca60819d
      Herbert Valerio Riedel authored
      Hackage requires the .cabal file to be named consistently with the package name,
      but `cabal check` didn't detect this yet.
      
      Example output:
      
          $ cabal check
          The following errors will cause portability problems on other environments:
          * The filename ./doo.cabal does not match package name (expected: foobar.cabal)
      
          Hackage would reject this package.
      
      Note: this new check is implicitly/accidentally tested by an existing (unrelated)
      test in `cabal-testsuite`.
      ca60819d
  21. 05 Jul, 2017 1 commit
    • Francesco Gazzetta's avatar
      Add tests for new-run · 22497b29
      Francesco Gazzetta authored
      We test both for single and multiple exe/package.
      
      `new-run` must halt on ambiguities or no compatible exes,
      and must run the exe if one can be uniquely selected between
      packages and components.
      22497b29
  22. 04 Jul, 2017 2 commits
  23. 09 Jun, 2017 1 commit
  24. 06 Jun, 2017 1 commit
    • Edward Z. Yang's avatar
      Fix test suite wobbliness on GHC 8.2. · b5d1e190
      Edward Z. Yang authored
      
      
      Here were the root causes:
      
      - Some tests involving Custom setpu showed MORE output
        (UseLocalPackageForSetup) when run on GHC 8.2.  This is because GHC
        8.2 ships a recent enough version of Cabal to know how to emit
        markers, which means we have started picking up the output.  I hacked
        up these tests to not accept this output, but a more correct thing to
        do is figure out how to NOT request marking of a Setup script which is
        not the inplace install.  This was a little tricky so I bailed.
      
      - GHC 8.2 no longer emits "It is a member of the hidden package".
        This broke CustomWithoutCabalDefaultMain.  Not sure if this
        is a GHC regression but it's pretty harmless.
      
      - While I was at it, I fixed an inexhaustive pattern match in
        cabal-testsuite (though perhaps poorly; I couldn't figure out
        what the new constructor does.)
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      b5d1e190
  25. 19 May, 2017 1 commit
  26. 09 May, 2017 1 commit
  27. 08 May, 2017 3 commits