This project is mirrored from https://github.com/haskell/Cabal.
Pull mirroring updated .
 28 Sep, 2017 1 commit


Edward Z. Yang authored
I am not sure what I was thinking when I modified the code to skip profiling builds if there was no code, but this is surely wrong! Comes with a test. Fixes #4754. Signedoffby: Edward Z. Yang <ezyang@cs.stanford.edu>

 25 Sep, 2017 1 commit


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 hackageserver'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: hackageserver0.5.0 (user goal) trying: hackageserver0.5.0:+buildhackagebuild trying: unix2.7.2.1/installed2.7... (dependency of hackageserver0.5.0 +trying: hackageserver:+buildhackagebuild +trying: unix2.7.2.1/installed2.7... (dependency of hackageserver +buildhackagebuild) next goal: aeson (dependency of hackageserver0.5.0 +buildhackagebuild) +next goal: aeson (dependency of hackageserver +buildhackagebuild) rejecting: aeson1.2.2.0, aeson1.2.1.0, aeson1.2.0.0, aeson1.1.2.0, aeson1.1.1.0, aeson1.1.0.0, aeson1.0.2.1, aeson1.0.2.0, aeson1.0.1.0, aeson1.0.0.0, aeson0.11.3.0, aeson0.11.2.1, aeson0.11.2.0, aeson0.11.1.4, aeson0.11.1.3, aeson0.11.1.2, aeson0.11.1.1, aeson0.11.1.0, aeson0.11.0.0, aeson0.9.0.1, aeson0.9.0.0, aeson0.8.1.1, aeson0.8.1.0, aeson0.8.0.2, aeson0.7.0.6, aeson0.7.0.4, aeson0.6.2.1, aeson0.6.2.0 (conflict: hackageserver +buildhackagebuild => aeson==0.6.1.*) rejecting: aeson0.6.1.0 (conflict: unix => time==1.6.0.1/installed1.6..., aeson => time<1.5) rejecting: aeson0.6.0.2, aeson0.6.0.1, aeson0.6.0.0, aeson0.5.0.0, aeson0.4.0.1, aeson0.4.0.0, aeson0.3.2.14, aeson0.3.2.13, aeson0.3.2.12, aeson0.3.2.11, aeson0.3.2.10, aeson0.3.2.9, aeson0.3.2.8, aeson0.3.2.7, aeson0.3.2.6, aeson0.3.2.5, aeson0.3.2.4, aeson0.3.2.3, aeson0.3.2.2, aeson0.3.2.1, aeson0.3.2.0, aeson0.3.1.1, aeson0.3.1.0, aeson0.3.0.0, aeson0.2.0.0, aeson0.1.0.0, aeson0.10.0.0, aeson0.8.0.1, aeson0.8.0.0, aeson0.7.0.5, aeson0.7.0.3, aeson0.7.0.2, aeson0.7.0.1, aeson0.7.0.0 (conflict: hackageserver +buildhackagebuild => aeson==0.6.1.*) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: aeson, hackageserver, hackageserver0.5.0:buildhackagebuild, hackageserver0.4:buildhackagemirror, templatehaskell +goals I've had most trouble fulfilling: aeson, +hackageserver:buildhackagebuild, hackageserver, templatehaskell I ran hackagebenchmark to compare this commit with master (two commits earlier). I used minruntimepercentagedifferencetorerun=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, pvalue of 0.05, 90 second timeout). The index state was "20170924T03:35:06Z". 1 is master, and 2 is this commit: package result1 result2 mean1 mean2 stddev1 stddev2 speedup CCdelcontref Solution Solution 1.467s 1.505s 0.019s 0.100s 0.975 asciicows Solution Solution 1.827s 1.758s 0.159s 0.012s 1.040 opaleyeclassy NoInstallPlan NoInstallPlan 4.588s 4.070s 0.043s 0.032s 1.127 rangespace 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 servantauthdocs 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 unorderedintmap 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, opaleyeclassy, rangespace, 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.

 18 Sep, 2017 1 commit


Herbert Valerio Riedel authored
This has been a petpeeve 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.

 24 Aug, 2017 1 commit


Francesco Gazzetta authored

 23 Aug, 2017 1 commit


Francesco Gazzetta authored

 15 Aug, 2017 1 commit


Oleg Grenrus authored
 Manually generate Lexer.hs  Temporarily disable parserhackagetests on appveyor (needs 01index.tar)  Add root Makefile to handle commmon dev tasks (genering Lexer.hs)

 10 Aug, 2017 1 commit


tuncer authored
Without this it would print a list of packages and append "Trying configure anyway." without any separator between the list and the new sentence.

 06 Aug, 2017 2 commits


Francesco Gazzetta authored

Francesco Gazzetta authored

 24 Jul, 2017 1 commit


Francesco Gazzetta authored

 23 Jul, 2017 1 commit


Sergey Vinokurov authored
Also rename config field configArDoesNotSupportResponseFiles into configUseResponseFiles

 22 Jul, 2017 1 commit


Sergey Vinokurov authored

 21 Jul, 2017 1 commit


Amir Mohammad Saied authored

 20 Jul, 2017 1 commit


Francesco Gazzetta authored

 19 Jul, 2017 3 commits


Francesco Gazzetta authored
Datafiles should work when running an inplace exe

Francesco Gazzetta authored

Francesco Gazzetta authored

 18 Jul, 2017 2 commits


Mikhail Glushenkov authored

Mikhail Glushenkov authored

 17 Jul, 2017 1 commit


Mikhail Glushenkov authored

 16 Jul, 2017 4 commits


Amir Mohammad Saied authored

Amir Mohammad Saied authored

Amir Mohammad Saied authored

Amir Mohammad Saied authored

 15 Jul, 2017 3 commits


Amir Mohammad Saied authored

Francesco Gazzetta authored

Amir Mohammad Saied authored

 10 Jul, 2017 2 commits


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 dryrun" for all packages on Hackage with master and the branch with a 90 second timeout, GHC 8.0.1, and index state 20170708T04: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 dryrun maxbackjumps=1" on the remaining packages and averaged three runs. Since this branch changes a goalordering 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 GPipeExamples 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 RlangQQ 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 acmeeverything timeout 90.02 timeout 90  aesont solution 2.04 solution 1.81 1.13 alsagui no solution 1.62 no solution 1.86 0.87 aviationcessna172diagrams no solution 2.56 no solution 2.29 1.12 awsdynamodbconduit no solution 2.22 no solution 1.83 1.22 azureservicebus no solution 5.18 no solution 2.87 1.8 bamboothememinihtml5 no solution 2.51 no solution 2 1.26 bitcoinpaymentchannel solution 3.42 solution 2.73 1.25 bittorrent no solution 2.75 no solution 2.4 1.15 blazebuilderenumerator 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 cheapskateterminal no solution 2.04 no solution 1.62 1.26 clckwrkspluginbugs 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 colladatypes no solution 1.86 no solution 1.66 1.12 convertibletext solution 1.61 solution 1.83 0.88 cqrsexample no solution 2.64 no solution 2.32 1.14 dixi solution 4.44 solution 4.03 1.1 ethereumclienthaskell 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 ghcimportedfrom solution 4.59 solution 2.9 1.58 gps2htmlReport solution 3.08 solution 5.58 0.55 guardedrewriting solution 1.54 solution 1.34 1.14 hack2handlerhappstackserver no solution 1.76 no solution 2 0.88 halmatelegrambot solution 4.27 solution 3.37 1.27 happstutorial no solution 2.08 no solution 1.86 1.12 happstack no solution 3.08 no solution 5.86 0.53 happstackfacebook timeout 90.01 timeout 90.03  haskelldbhsqlmysql no solution 1.73 no solution 1.5 1.16 hdbi no solution 1.92 no solution 1.66 1.15 hdbipostgresql no solution 3.05 no solution 1.95 1.56 hdbisqlite no solution 1.91 no solution 1.69 1.13 hexpatiteratee no solution 2.61 no solution 1.84 1.42 histpl no solution 2.69 no solution 2.36 1.14 hscd no solution 2.53 no solution 1.59 1.59 httpclientlens 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 iterateeparsec no solution 2.01 no solution 1.74 1.16 jsontogo 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 manateecore no solution 1.79 no solution 1.6 1.12 manateecurl no solution 8.44 no solution 2.73 3.09 manateeeditor no solution 5.05 no solution 2.81 1.8 manateefilemanager no solution 29.09 no solution 2.96 9.82 manateeimageviewer no solution 1.78 no solution 1.57 1.13 manateemplayer no solution 8.98 no solution 4.05 2.22 manateeterminal 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 musicsibelius solution 3.1 solution 2.5 1.24 nerf solution 22.54 solution 3.09 7.29 nomyxapi solution 5.46 solution 4.39 1.24 nomyxlibrary solution 2.08 solution 1.86 1.11 nomyxserver no solution 4.83 no solution 3.92 1.23 opaleyeclassy 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 paypalapi no solution 1.89 no solution 1.64 1.15 pdfslaveserver no solution 3.21 no solution 2.15 1.49 phooey solution 2.55 solution 16.24 0.16 pipescerealplus solution 1.85 solution 1.65 1.12 pocketdns no solution 2.71 no solution 2.08 1.3 pontariusmediaserver no solution 2.29 no solution 2.7 0.85 precis no solution 2.53 no solution 3.23 0.78 proveeverywhereserver no solution 2.19 no solution 1.92 1.14 quickbooks no solution 5.86 no solution 5.17 1.13 rbpcpapi solution 2.35 solution 2.13 1.11 reacthaskell timeout 90.02 no solution 71.21  regexxmlschema no solution 1.34 no solution 1.51 0.89 remotejsonserver solution 2.1 solution 1.8 1.16 scholdocciteproc no solution 3 no solution 1.92 1.57 scionbrowser no solution 5.21 no solution 4.65 1.12 semdoc no solution 4.21 no solution 3.04 1.39 servantauthtokenrocksdb no solution 4.68 no solution 2.32 2.02 snapletauthacid no solution 2.25 no solution 1.99 1.13 snapletstripe 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 tlsextra no solution 2.74 no solution 2.36 1.16 twentefprosetree no solution 1.69 no solution 1.97 0.86 twitterenumerator no solution 28.39 no solution 2.16 13.15 waimiddlewarecache no solution 1.95 no solution 1.56 1.25 waimiddlewarecatch no solution 1.9 no solution 1.54 1.24 waimiddlewareroute solution 11.9 solution 1.62 7.34 xml2json no solution 2.27 no solution 1.68 1.35 yesodauthaccountfork solution 3.33 solution 2.87 1.16 yesodcomments no solution 25.6 no solution 14.44 1.77 yesodpure solution 7.99 solution 4.45 1.79

Douglas Wilson authored
These tests are copied from cabaltestsuite/PackageTests/TemplateHaskell with only minor changes.

 08 Jul, 2017 1 commit


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 `cabaltestsuite`.

 05 Jul, 2017 1 commit


Francesco Gazzetta authored
We test both for single and multiple exe/package. `newrun` must halt on ambiguities or no compatible exes, and must run the exe if one can be uniquely selected between packages and components.

 04 Jul, 2017 2 commits


Francesco Gazzetta authored

Francesco Gazzetta authored

 09 Jun, 2017 1 commit


Edward Z. Yang authored

 06 Jun, 2017 1 commit


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 cabaltestsuite (though perhaps poorly; I couldn't figure out what the new constructor does.) Signedoffby: Edward Z. Yang <ezyang@cs.stanford.edu>

 19 May, 2017 1 commit


Herbert Valerio Riedel authored

 09 May, 2017 1 commit


kristenk authored
This commit adds "cabalversion: >= 1.20" to enable percomponent build and work with all Cabal versions that support newbuild. It also adds the "defaultlanguage" field, in order to avoid warnings.

 08 May, 2017 3 commits