This project is mirrored from https://github.com/haskell/Cabal.
Pull mirroring updated .
- Feb 25, 2022
-
-
Lars Kuhtz authored
-
Lars Kuhtz authored
-
Lars Kuhtz authored
-
- Feb 23, 2022
-
-
Andrea Bedini authored
These two `otherwise`s have been dead code since about 2016 but GHC has started warning about them only since 9.2.
-
Robert authored
If `withTempFileName` receives an asynchronous exception (e.g. a canceled async), the bracket cleanup handler will attempt to remove the temporary file. This can fail with an IO exception. Regular bracket then throws that IO exception, swallowing the asynchronous exception. To calling code, this appears no different from an IO exception thrown from the body, and it won't be able to tell that it should be exiting promptly. This manifests concretely during temporary file clean-up of `asyncFetchPackages` on Windows (seen during unit testing in CI), where temporary file removal fails (on GHC 8.4), which leads to `concurrently` failing to cancel the outstanding download because it's handled like a regular download failure.
-
Robert authored
This fixes deadlock in asyncFetchPackages: withAsync action1 (\_ -> action2) loses exceptions thrown by action1. If in addition, action2 has a dependency on data produced by action1 (as is the case here), this will block indefinitely. (This bug caused some of the new tests to hang, since after the change to use async-safe try, it became easier for fetchPackages to throw an exception.)
-
Robert authored
This is a step towards fixing interrupt handling during asynchronous download. The concrete bug fixed by this changes is that `try` catches asynchronous exceptions, preventing `withAsync` from interrupting it when its `body` action finishes prematurely. This manifests during `cabal build` when hitting Ctrl-C during download, e.g.: 1. Ctrl-C interrupts a curl process 2. This interrupt is converted into a UserInterrupt exception via the process package's delegate_ctlc functionality. 3. UserInterrupt bubbles up through `fetchPackage`, is caught by the `try` (fine) and writen to the result mvar. Meanwhile, `fetchPackage` continues its loop, starting to fetch the next package. 4. Some `rebuildTarget` is waiting for the interrupted download; `waitAsyncFetchPackage` rethrows UserInterrupt in that thread. 5. UserInterrupt bubbles up through `collectJob`, `execute`, the `body` action. 6. `withAsync`'s finalizer cancels the `fetchPackages` async. 7. The `fetchPackages` async receives the AsyncCancelled exception while fetching the next package (see 3. above). This interrupts the download action (it shouldn't matter whether we happen to be running curl again or not), and AsyncCancelled bubbles up through `fetchPackage`, is caught by the `try` (not fine!) and written to the mvar. But no-one is reading that mvar anymore because the build job already aborted (step 5), and that AsyncCancelled exception is lost. 8. `fetchPackages` keeps doing its thing, exiting eventually. Note that this change affects both instances of `try` in this story: `UserInterrupt` is also an asynchronous exception, so after the change the `UserInterrupt` takes a different path from step 3. Followup commits fix bugs along those paths.
-
Robert authored
-
Robert authored
This primarily trigger concurrency bugs that are fixed in the follow-up commits.
-
Robert authored
-
Robert authored
-
Robert authored
-
Robert authored
- Sort modules and tests alphabetically (they were maddeningly close to alphabetic) - Consistently label unit test groups at top-level
-
gershomb authored
* don't crash on a few stray exceptions * try -> catch and display * act on reviewer comments Co-authored-by:
Gershom Bazerman <gershom@arista.com>
-
Robert authored
-
- Feb 22, 2022
-
-
Robert authored
-
Robert authored
-
Robert authored
-
Andrea Bedini authored
-
- Feb 19, 2022
-
-
Andrea Bedini authored
* Avoid templating GitHub Actions workflow GitHub Actions workflow have sufficient power to express what we need. We don't need to maintain and additional templating solution on top. * Add GHC 9.2, bump bounds, fix syntax * Switch to official haskell image * Always run cli tests for ghc 8.2 and above * Remove step to regenerate GitHub Actions workflows * Fix missed reference to GHC version * Fix yaml syntax * Fix type in the GHC version * More CI changes - Run bootstrap.yml on ubuntu-latest - Use explicit matrix for linux.yml - Drop containers in favour of haskell setup action - Drop workaround for ancient git * Remove unneeded package from CI setup I belive this is only necessary to run `cabal man` which we do not in the CI. * Drop old GHCs from the CI * Switch macos.yml to haskell/action/setup Also add the same GHC versions as Linux. * Simplify CI - Remove cabal-plan, we actually never call it (I think) - Remove vendored cabal-doctest - Remove few stray allow-newer clauses no longer necessary, apparently Originally done by @gbaz in PR #7907. * Mark GHC 9.2.1 as experimental * Remove reference to cabal-plan from validate.sh * setup-haskell action already runs cabal update * Add missing build matrix in test-windows-dogfood * Replace cabal-plan list-bin with cabal list-bin * Enable caching in the CI * Fix typo * Remove continue-on-error until I figure it out * Keep naming consistent * Temporarily disable 8.0.2 on macos * Add missing step id * Tweaks Remove workaround for nektos/act, it accidentally sneaked in. * More tweaks * Tweaks * Restore cabal-plan, temporarily mark everything experimental cabal list-bin doesn't seem to work like cabal-plan does. * Tweaks * Ensure cabal-plan executable gets built * Install automake on MacOS * Tweaks * Tweaks Link experimental flags to relative GitHub issues * Fix typo
-
- Feb 18, 2022
-
-
Mel Zuser authored
Closes #5508
-
- Feb 16, 2022
-
-
Javier Neira authored
-
- Feb 14, 2022
-
-
Phil de Joux authored
-
- Feb 10, 2022
-
-
Mel Zuser authored
-
- Feb 05, 2022
-
-
Robert authored
CI times appear to be dominated by the CI tests, which seems excessive. A typical Linux validate.sh job takes ~45 minutes, of which 15 are spent in the VCS tests. MacOS is even worse, with the VCS tests taking >1h out of a total time of >2h.
-
- Feb 02, 2022
-
-
Daniel Gröber (dxld) authored
-
Daniel Gröber (dxld) authored
-
- Jan 31, 2022
- Jan 30, 2022
-
-
patrickdoc authored
Co-authored-by:
mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
-
- Jan 26, 2022
-
-
patrickdoc authored
-
Mikolaj Konarski authored
-
Emily Pillmore authored
* add changelog entries + additional release notes * remove cruft (cherry picked from commit 12dc5c26)
-
- Jan 25, 2022
-
-
Mel Zuser authored
-
- Jan 23, 2022
-
-
Mel Zuser authored
Related: #7073
-
- Jan 20, 2022
-
-
andreas.abel authored
-
Also: Fix color formatting when PAGER is 'less'
-
andreas.abel authored
-
andreas.abel authored
Directly piping into `man -l -` does not work as BSD-`man` does not understand option `-l`. More standardized are the building blocks `nroff` and `less`. `cabal man` now should behave as pipeline ``` cabal man --raw | nroff -man /dev/stdin | less ``` Also fixed output of `cabal man --raw` so that it does not produce warnings. - `.R` removed. Was warning: ``` `R' is a string (producing the registered sign), not a macro. ``` - No quoted 'new-FOO' should appear at beginning of line. Was warning: ``` warning: macro `new-FOO'' not defined (probably missing space after `ne') ``` Added to `cabal-testsuite/PackageTests/Man/cabal.test.hs` a check that the `stderr` output of `nroff -man /dev/stdin` is empty (no warnings). Remaining problem: Unfortunately, after quitting `less` with `q` the following error is displayed: ``` fd:NNN: commitBuffer: resource vanished (Broken pipe) ``` Not sure how to fix this (my attempts failed).
-
- Jan 13, 2022
-
-
Patrick Augusto authored
-