diff --git a/Cabal/ChangeLog.md b/Cabal/ChangeLog.md index 7feaf77182f..2797caf4872 100644 --- a/Cabal/ChangeLog.md +++ b/Cabal/ChangeLog.md @@ -1,5 +1,5 @@ -# 3.8.0.20220526 a pre-release; [Mikolaj Konarski](mailto:mikolaj@well-typed.com) May 2022 - * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.8.0.20220526.md +# 3.8.1.0 [Mikolaj Konarski](mailto:mikolaj@well-typed.com) August 2022 + * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.8.1.0.md # 3.6.3.0 March 2022 * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.6.3.0.md diff --git a/cabal-install/changelog b/cabal-install/changelog index 6fee3f1263c..48be043315b 100644 --- a/cabal-install/changelog +++ b/cabal-install/changelog @@ -1,7 +1,7 @@ -*-change-log-*- -3.8.0.20220526 a pre-release; Mikolaj Konarski May 2022 - * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.8.0.20220526.md +3.8.1.0 Mikolaj Konarski August 2022 + * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.8.1.0.md 3.6.2.0 Emily Pillmore October 2021 * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.6.2.0.md diff --git a/cabal-install/src/Distribution/Client/ProjectPlanning.hs b/cabal-install/src/Distribution/Client/ProjectPlanning.hs index ab4bd57063d..f9f81f2c8ea 100644 --- a/cabal-install/src/Distribution/Client/ProjectPlanning.hs +++ b/cabal-install/src/Distribution/Client/ProjectPlanning.hs @@ -1197,6 +1197,7 @@ planPackages verbosity comp platform solver SolverSettings{..} -- TODO: long-term, this compatibility matrix should be -- stored as a field inside 'Distribution.Compiler.Compiler' setupMinCabalVersionConstraint + | isGHC, compVer >= mkVersion [9,4] = mkVersion [3,8] | isGHC, compVer >= mkVersion [9,2] = mkVersion [3,6] | isGHC, compVer >= mkVersion [9,0] = mkVersion [3,4] | isGHC, compVer >= mkVersion [8,10] = mkVersion [3,2] diff --git a/changelog.d/backported b/changelog.d/backported deleted file mode 100644 index 14da5402b25..00000000000 --- a/changelog.d/backported +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Backported to 3.4 -prs: #6968 #6964 diff --git a/changelog.d/cabal-syntax b/changelog.d/cabal-syntax deleted file mode 100644 index aa28f3d9ad6..00000000000 --- a/changelog.d/cabal-syntax +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Create Cabal-syntax for .cabal files -prs: #7620 -issues: #7559 - -description { -- Extract `Cabal-syntax` from `Cabal` to provide the syntax and parsing code - for `.cabal` files. `Cabal` currently reexports all of the modules which were - moved to `Cabal-syntax` although these exports may be deprecated in the - future. -} diff --git a/changelog.d/changelog b/changelog.d/changelog deleted file mode 100644 index 9e88ff44b42..00000000000 --- a/changelog.d/changelog +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Version bumps and changelog entries -packages: cabal-development -prs: #6957 #6976 diff --git a/changelog.d/ci b/changelog.d/ci deleted file mode 100644 index 2c6699ad74f..00000000000 --- a/changelog.d/ci +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: CI setup -prs: #6959 - -description: { - -- Remove travis scripts - -} diff --git a/changelog.d/code-organization b/changelog.d/code-organization deleted file mode 100644 index b050cb755cb..00000000000 --- a/changelog.d/code-organization +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Code organization -prs: #6963 #6970 #6974 #6975 #6960 - -description: { - -- Move Cabal sources into Cabal/src -- Move cabal-install sources to cabal-install/src/ -- Move doc/ to the top-level of the repository -- Add stylish-haskell config. - -} diff --git a/changelog.d/documentation b/changelog.d/documentation deleted file mode 100644 index 4eda812ed60..00000000000 --- a/changelog.d/documentation +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Documentation improvements -prs: #6971 #7047 -issues: #6813 - -description: { - -Write highlights - -} diff --git a/changelog.d/issue-1919 b/changelog.d/issue-1919 deleted file mode 100644 index fa6b06c1c66..00000000000 --- a/changelog.d/issue-1919 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Fix haddock command via Setup.hs for internal libraries -packages: Cabal -issues: #1919 -prs: #7827 diff --git a/changelog.d/issue-4439 b/changelog.d/issue-4439 deleted file mode 100644 index 3c39b997aec..00000000000 --- a/changelog.d/issue-4439 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: `ghc-options` and `--with-gcc` are now passed to GHC when compiling C and C++ sources -packages: Cabal -issues: #4439 -prs: #5440 #7874 diff --git a/changelog.d/issue-4683 b/changelog.d/issue-4683 deleted file mode 100644 index 4bf63785525..00000000000 --- a/changelog.d/issue-4683 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: 'cabal check' to fail when no upper bounds for base or Cabal are present in setup dependencies -packages: Cabal cabal-install -issues: #4683 -prs: #5370 #7409 diff --git a/changelog.d/issue-6190 b/changelog.d/issue-6190 deleted file mode 100644 index ca7a1e6a687..00000000000 --- a/changelog.d/issue-6190 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: --repl-options doesn’t split on whitespace -packages: Cabal -issues: #6190 -prs: #7799 diff --git a/changelog.d/issue-6664-pre-sdist-command b/changelog.d/issue-6664-pre-sdist-command deleted file mode 100644 index 2b513d1374a..00000000000 --- a/changelog.d/issue-6664-pre-sdist-command +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Add post-checkout-command to source-package-repository -issues: #6664 -prs: #7047 diff --git a/changelog.d/issue-6679 b/changelog.d/issue-6679 deleted file mode 100644 index 6e039945bfb..00000000000 --- a/changelog.d/issue-6679 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Fix v2-haddock results in "unexpected status" -packages: cabal-install -prs: #7843 -issues: #6679 \ No newline at end of file diff --git a/changelog.d/issue-6767 b/changelog.d/issue-6767 deleted file mode 100644 index fd4f66ee177..00000000000 --- a/changelog.d/issue-6767 +++ /dev/null @@ -1,17 +0,0 @@ -synopsis: Remove World file functionality -packages: cabal-install -issues: #6767 -prs: #7746 -description: { -In v1-install, 'world' was used to trace what packages have been -installed, and re-install everything that is listed in it on-demand. However, in -v2-install, this is no longer needed, and outdated. -Additionally, 'world' code-path is probably not up-to-date, remove it instead of -having partial features. - -- Don't generate `world` file in `~/.cabal` when `v1-install` is executed. - -- Don't ever read `world` from `~/.cabal`. - -- Remove meta-target `world` from `v1-install`. -} diff --git a/changelog.d/issue-6906 b/changelog.d/issue-6906 deleted file mode 100644 index f0b077b8bf8..00000000000 --- a/changelog.d/issue-6906 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: cabal v2 commands (install, repl, run) uses duplicate global config and rebuilds libs twice in the store -packages: cabal-install -issues: #6907 -prs: #7753 #7759 diff --git a/changelog.d/issue-7279 b/changelog.d/issue-7279 deleted file mode 100644 index 87e3b119bfe..00000000000 --- a/changelog.d/issue-7279 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Allow trailing whitespace after flags in cabal.project -packages: Cabal-syntax -issues: #7279 -prs: #8006 diff --git a/changelog.d/issue-7326 b/changelog.d/issue-7326 deleted file mode 100644 index 6a8964c496d..00000000000 --- a/changelog.d/issue-7326 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Assume list-bin target selectors are for executables -packages: cabal-install -issues: #7326 -prs: #7335 diff --git a/changelog.d/issue-7541 b/changelog.d/issue-7541 deleted file mode 100644 index dee2e0be9f3..00000000000 --- a/changelog.d/issue-7541 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: '--repl-no-load' option skips startup modules load in REPL -issues: #7541 -packages: Cabal cabal-install -prs: #7578 \ No newline at end of file diff --git a/changelog.d/issue-7641 b/changelog.d/issue-7641 deleted file mode 100644 index c6c55398503..00000000000 --- a/changelog.d/issue-7641 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Fix post-checkout-command crash when 0 exit status bug -issues: #7641 -packages: cabal-install -prs: #7847 \ No newline at end of file diff --git a/changelog.d/issue-7679 b/changelog.d/issue-7679 deleted file mode 100644 index ab2e50590c4..00000000000 --- a/changelog.d/issue-7679 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Fix list-bin to only choose the selected component -packages: cabal-install -issues: #7679 -prs: #7791 diff --git a/changelog.d/issue-7698 b/changelog.d/issue-7698 deleted file mode 100644 index 4e136cabfcf..00000000000 --- a/changelog.d/issue-7698 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: `cabal sdist` works in projects with `extra-packages` -issues: #7698 -packages: cabal-install diff --git a/changelog.d/issue-7705 b/changelog.d/issue-7705 deleted file mode 100644 index d763234395c..00000000000 --- a/changelog.d/issue-7705 +++ /dev/null @@ -1,15 +0,0 @@ -synopsis: default configuration no longer written when config file is given explicitly -packages: cabal-install -issues: #7705 -prs: #7715 -description: { - -- When no config file exists, `cabal` commands will create a default one. - -- This behavior is discontinued now when the config file is given explicitly - via the `--config-file` option or the `CABAL_CONFIG` environment variable. - -- If no config file is given explicitly, and the default config file - (relative to `CABAL_DIR`) does not exist, it is created as it used to be. - -} \ No newline at end of file diff --git a/changelog.d/issue-7714 b/changelog.d/issue-7714 deleted file mode 100644 index c2163d5be4a..00000000000 --- a/changelog.d/issue-7714 +++ /dev/null @@ -1,22 +0,0 @@ -synopsis: use `nroff -man | less` instead of `man` as backend for `cabal man` -packages: cabal-install -issues: #7714 -prs: #7726 -description: { - -The previous implementation of `cabal man` used `man` as backend to -view the generated manpage file. However, macOS' and BSD's `man` does -not accept a file as input, so `cabal man` was broken on macOS and -BSD. - -The issue has been fixed by piping the generated manpage through -`nroff -man` and then into `$PAGER` which defaults to `less`. Thus, -`cabal man` now works both on Linux and macOS/BSD. - -NB: `cabal man` requires `nroff` to be installed which is the case for -standard setups (but may not be case on slim setups like VMs used in -CI). Note that `nroff` is not necessarily a prerequisite of a package -containing `man`. - - -} \ No newline at end of file diff --git a/changelog.d/issue-7765-constraint-alias b/changelog.d/issue-7765-constraint-alias deleted file mode 100644 index 744abdbbee5..00000000000 --- a/changelog.d/issue-7765-constraint-alias +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Add -c alias for --constraint command line flag -issues: #7765 -prs: #7766 - diff --git a/changelog.d/issue-7835 b/changelog.d/issue-7835 deleted file mode 100644 index 0a828d3fd8f..00000000000 --- a/changelog.d/issue-7835 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Use Win32 >= 2.8 to get Win32.sYNCHRONIZE -packages: cabal-install -issues: #7835 -prs: #7982 -description: { - - #7982 also completes a changelog entry for Cabal-3.6.1.0, noting it is required for cabal-install >= 3.6 - -} \ No newline at end of file diff --git a/changelog.d/issue-7965 b/changelog.d/issue-7965 deleted file mode 100644 index 093d91f20a0..00000000000 --- a/changelog.d/issue-7965 +++ /dev/null @@ -1,5 +0,0 @@ -synopsis: Ensure that v2-sdist command respects the --ignore-project flag --- If the "--project-file" flag is set, then this [--ignore-project] will always be false -packages: cabal-install -issues: #7965 -prs: #8109 \ No newline at end of file diff --git a/changelog.d/issue-8036 b/changelog.d/issue-8036 deleted file mode 100644 index 28f6ad18678..00000000000 --- a/changelog.d/issue-8036 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Make enable/disable nix flags easier to read -packages: cabal-install -issues: #8036 -prs: #8054 \ No newline at end of file diff --git a/changelog.d/issue-8227 b/changelog.d/issue-8227 deleted file mode 100644 index 05a60c7f3db..00000000000 --- a/changelog.d/issue-8227 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Enabled foreign library building on apple silicon -packages: Cabal -prs: #8232 -issues: #8227 #7837 -significance: significant - -description: { - -- Enabled foreign library building on apple silicon -- Updated error message for foreign library builds on unsupported platforms - -} diff --git a/changelog.d/issue-8236 b/changelog.d/issue-8236 deleted file mode 100644 index d57e56a6f04..00000000000 --- a/changelog.d/issue-8236 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: cabal init -n: avoid extra blank lines -packages: cabal-init Cabal-syntax -issues: #8236 -prs: #8292 diff --git a/changelog.d/issue-8255 b/changelog.d/issue-8255 deleted file mode 100644 index 453203bf1ee..00000000000 --- a/changelog.d/issue-8255 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: cabal init -i should autodetect author name and maintainer email (fix #8255) -packages: cabal-install -issues: #8255 -prs: #8267 diff --git a/changelog.d/issue-8265 b/changelog.d/issue-8265 deleted file mode 100644 index 83307d0218d..00000000000 --- a/changelog.d/issue-8265 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: cabal init -i: add the GHC2021 language option -packages: cabal-install -prs: #8277 -issues: #8265 diff --git a/changelog.d/only-download b/changelog.d/only-download deleted file mode 100644 index 955c3a1afbd..00000000000 --- a/changelog.d/only-download +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Add a --only-download flag -packages: cabal-install -prs: #7347 -issues: #7323 diff --git a/changelog.d/option-argument-errors b/changelog.d/option-argument-errors deleted file mode 100644 index 90d1f32d7ea..00000000000 --- a/changelog.d/option-argument-errors +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Handle option argument parse errors without 'error' -packages: Cabal cabal-install -prs: #7579 -issues: #7573 -description: { -- Errors parsing arguments such as `-v=3` no longer result in - stack traces. -- `Distribution.ReadE.readEOrFail` was removed. -} diff --git a/changelog.d/path-validation b/changelog.d/path-validation deleted file mode 100644 index 79e3f0d7b9b..00000000000 --- a/changelog.d/path-validation +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Fix bugs in filename validation -packages: Cabal -prs: #7429 #7479 -issues: #7426 - -description: { - -- Relative paths starting with single-character directories are now properly allowed -- `cabal check` rejects paths which are invalid on Windows or in tarballs - -} diff --git a/changelog.d/pp-orders b/changelog.d/pp-orders deleted file mode 100644 index 62bcd044513..00000000000 --- a/changelog.d/pp-orders +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Allow preprocessors to register a reordering -packages: Cabal -issues: #55 #1906 -significance: significant - -description: { - -- Changes the PreProcessor type to include a field ppOrdering so that modules are presented to the preprocessor in the right order (w.r.t. dependencies) - -} diff --git a/changelog.d/pr-5672 b/changelog.d/pr-5672 deleted file mode 100644 index 1648da484b6..00000000000 --- a/changelog.d/pr-5672 +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Add "prompt" strategy when symlinking binaries. -prs: #5672 diff --git a/changelog.d/pr-6295-hsc2hs-options b/changelog.d/pr-6295-hsc2hs-options deleted file mode 100644 index d91fa3d5c33..00000000000 --- a/changelog.d/pr-6295-hsc2hs-options +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Add `hsc2hs-options`, for specifying additional options to pass to `hsc2hs` -prs: #6295 diff --git a/changelog.d/pr-6972 b/changelog.d/pr-6972 deleted file mode 100644 index 98bfb87ff68..00000000000 --- a/changelog.d/pr-6972 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Make extra-packages work properly -packages: cabal-install -prs: #6972 diff --git a/changelog.d/pr-7250 b/changelog.d/pr-7250 deleted file mode 100644 index 75f12f73a50..00000000000 --- a/changelog.d/pr-7250 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Fix test --enable-coverage for multi-package projects -packages: Cabal -prs: #7250 #7467 -issues: #5433 #5213 #7200 -description: { - -- Fix `cabal test --enable-coverage` for multi-package projects by invoking `hpc markup --include=` and listing only modules of libraries of the single tested package. - -} diff --git a/changelog.d/pr-7252 b/changelog.d/pr-7252 deleted file mode 100644 index dad31b99266..00000000000 --- a/changelog.d/pr-7252 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Include cmm-sources when linking shared objects -packages: Cabal -prs: #7252 -issues: #7182 - -description: { - -- Previously `cmm-sources` were not included in the final link when building a library as a shared object. Fix this. - -} - diff --git a/changelog.d/pr-7262 b/changelog.d/pr-7262 deleted file mode 100644 index b00f2cabfec..00000000000 --- a/changelog.d/pr-7262 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Bugfix - stop creating spurious dirs on `init` -packages: cabal-install -prs: #7262 -issues: #6772 - -description { - -- Add `TESTING.md` to `cabal-install` providing instructions for locally `cabal-install` testing, - along with corresponding entry in `CONTRIBUTING.md`. -- Base directory output on package type when using the `init` command. - -} \ No newline at end of file diff --git a/changelog.d/pr-7283 b/changelog.d/pr-7283 deleted file mode 100644 index eca1f4f65f1..00000000000 --- a/changelog.d/pr-7283 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Avoid resource exhaustion in `cabal init` -packages: cabal-install -prs: #7283 -issues: #5115 - -description: { - -- Read file contents strictly to avoid resource exhaustion in `cabal init`. -- Ignore UTF-8 decoding errors. - -} \ No newline at end of file diff --git a/changelog.d/pr-7295 b/changelog.d/pr-7295 deleted file mode 100644 index ffae11fe84d..00000000000 --- a/changelog.d/pr-7295 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Add 'preferred-versions' support for LocalIndexRepo -packages: cabal-install -prs: #7295 -issues: #7294 - -description: { - -- Previously, the only repo-index-type that reads the preferred-versions file is `RepoRemote`. - `LocalIndexRepo` now also supports parsing `preferred-versions` file, main purpose is to write tests. - As a nice side-effect, users can provide their own overlay over package sets to restrict or prefer certain package versions. - -} - diff --git a/changelog.d/pr-7296 b/changelog.d/pr-7296 deleted file mode 100644 index 2dbd0a0576d..00000000000 --- a/changelog.d/pr-7296 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Add 'preferred-versions' support for LocalIndexRepo -packages: cabal-install -prs: #7296 -issues: #7249 #5603 - -description: { - -- `cabal outdated` honours the 'preferred-versions' file which might deprecate or prefer certain - versions of packages. In particular, if the only newer version of a package has been deprecated, - `cabal outdated` should not report that there are newer versions available. -} diff --git a/changelog.d/pr-7344 b/changelog.d/pr-7344 deleted file mode 100644 index dc5eb40044a..00000000000 --- a/changelog.d/pr-7344 +++ /dev/null @@ -1,24 +0,0 @@ -synopsis: Cabal init rewrite -pr: #7344 -issues: #7273 #7256 #7255 #7251 #6758 #6864 #1074 -significance: significant -description: { - -- Restructures the `cabal init` command to fix historical - issues. All flags are preserved. - - Codebases for interactive and non-interactive flags - are disentangled. - - Data structures now exploit relevant stanza structure - and formatters only care about stanza data - - Heuristics and prompts have a pure and impure implementation. - -- Sets default behavior to be `--interactive` as opposed to - `--non-interactive`. - -- Rewrites tests to achieve 98% coverage - - Golden files now test every stanza individually - - Every flag is covered by a unit test - - Interactive, simple, and non-interactive workflows are - covered. - -} \ No newline at end of file diff --git a/changelog.d/pr-7349 b/changelog.d/pr-7349 deleted file mode 100644 index 5c792075d0b..00000000000 --- a/changelog.d/pr-7349 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Add language extensions for GHC 9.2 -pr: #7349 -issues: #7312 -description: { Add support for new language extensions added in 9.2 } \ No newline at end of file diff --git a/changelog.d/pr-7352 b/changelog.d/pr-7352 deleted file mode 100644 index 74f188af4ea..00000000000 --- a/changelog.d/pr-7352 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Set -Wno-prepositive-qualified-module in Paths_*.hs -packages: Cabal -prs: #7352 diff --git a/changelog.d/pr-7358 b/changelog.d/pr-7358 deleted file mode 100644 index 9aea015d6ea..00000000000 --- a/changelog.d/pr-7358 +++ /dev/null @@ -1,21 +0,0 @@ -synopsis: Expose `cabal-install` as library -prs: #7358 -issues: #7224 #6090 #4798 #3781 #1597 -significance: significant -description { - -- Exposes `cabal-install` as a library, bumping the `cabal-install` cabal version to 2.2, and removing the dogfooding framework surrounding `cabal-install` to facilitate easier testing. - -- Moves `cabal-install-solver` out to its own directory, and treats it as its own separate project. Addresses #6090, #7224, and #3781 - -- Enable HPC coverage - - - absorb `cabal-install-solver-dsl` module into the test modules, and - incorporate it into its own test target. - - - Splits out `cabal-install` unit tests from long-running tests. - - - Adds proper subcomponent coverage masking so we can finally generate - baseline coverage reports for `cabal-install`. - -} \ No newline at end of file diff --git a/changelog.d/pr-7392 b/changelog.d/pr-7392 deleted file mode 100644 index 23d9b065eb3..00000000000 --- a/changelog.d/pr-7392 +++ /dev/null @@ -1,44 +0,0 @@ -synopsis: Prefer canonicalized path when guessing tools from GHC path -packages: Cabal -prs: #7392 -issues: #7390 - -description: { - -Motivation ----------- -Often times, the user facing `ghc` binary is -symlinked by other forces, such as the package manager, -tooling like ghcup etc. As such, the naming convention -(version suffix in particular) may not align with the -assumptions made in Cabal and it may find an incorrect ghc-pkg. - -See: - - https://github.com/haskell/cabal/issues/7390 - - https://gitlab.haskell.org/ghc/ghc/-/issues/18807 - - https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/73 - -Solution --------- -Guessing the ghc-pkg path is already a hack and will be solved -more appropriately in the future, see - - https://gitlab.haskell.org/ghc/ghc/-/merge_requests/4214 - - https://gitlab.haskell.org/ghc/ghc/-/snippets/2710 -These patches will solve the issue for future GHC versions. - -As such, this patch provides a workaround for -older, already existing GHC versions by first always -following the symbolic link of the ghc binary (if it is one) -and prefering its target directory as the guess lookup -location. - -Rationale ---------- -The canonicalized path of the ghc binary usually points to the -bin/ directory unpacked from a bindist, which is less likely to be -tampered with by distributions and tools. As such, prefering the -canoncialized path should get us more robust results. - -} - - diff --git a/changelog.d/pr-7402 b/changelog.d/pr-7402 deleted file mode 100644 index 07a0e2221b8..00000000000 --- a/changelog.d/pr-7402 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: changes to cabal v2-configure -packages: cabal-install -prs: #7402 -issues: #5591 #7180 #7405 - -description: { - -- Removes the --dry-run part of the v2-configure command -- Adds --enable-append and --disable-append flags to v2-configure, which toggle the option for the new configuration to be appended to the old config file -- Adds --enable-backup and --disable-backup flags to v2-configure, which toggle the backup feature for the configuration file - -} diff --git a/changelog.d/pr-7407 b/changelog.d/pr-7407 deleted file mode 100644 index 13ccffc270a..00000000000 --- a/changelog.d/pr-7407 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: --dry-run and --only-download effect v2-configure, v2-freeze, v2-run, and v2-exec -pr: #7407 -issues: #7379 -description: { v2-configure, v2-freeze, v2-run, and v2-exec now behave expectedly under the --dry-run and --only-download flags } diff --git a/changelog.d/pr-7413 b/changelog.d/pr-7413 deleted file mode 100644 index 8cdedd40534..00000000000 --- a/changelog.d/pr-7413 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Fix instantiating an indefinite Backpack from Hackage with an inplace package -packages: cabal-install -prs: #7413 -issues: #6835 -description: { - -Previously, cabal-install would always attempt to put instantiations of indefinite packages from Hackage in -the global package store, even if they were instantiated with inplace packages. This would not work -and GHC would complain about packages being missing from the package database. We have fixed the -instantiation algorithm to correctly inplace packages in these situations, removing one of the last -blockers to widespread use of Backpack packages on Hackage. - -} diff --git a/changelog.d/pr-7424 b/changelog.d/pr-7424 deleted file mode 100644 index 867e9d62389..00000000000 --- a/changelog.d/pr-7424 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: standalone tests for cabal init -packages: cabal-install -prs: #7424 -issues: #7410 - -description: { -- changes the behaviour of the --tests flag for cabal init, - see https://github.com/haskell/cabal/issues/7410#issuecomment-849913926 -- adds a new value TestSuite for the PackageType type -} \ No newline at end of file diff --git a/changelog.d/pr-7440 b/changelog.d/pr-7440 deleted file mode 100644 index 6e7f64c0f41..00000000000 --- a/changelog.d/pr-7440 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Print error message if not freeze file can be found -packages: cabal-install -prs: #7440 -issues: #7406 -description: { - -Instead of ignoring a missing .freeze file, abort execution and print an error message. - -} diff --git a/changelog.d/pr-7470 b/changelog.d/pr-7470 deleted file mode 100644 index cd8fd9dfb2d..00000000000 --- a/changelog.d/pr-7470 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: adds a verbosity flag "+nowarn", to suppress all warnings -packages: cabal-install -prs: #7470 -issues: #7286 \ No newline at end of file diff --git a/changelog.d/pr-7470-backport b/changelog.d/pr-7470-backport deleted file mode 100644 index 4775abf0beb..00000000000 --- a/changelog.d/pr-7470-backport +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: removes the warnings for extraneous versions -packages: cabal-install -prs: #7470 -issues: #7286 \ No newline at end of file diff --git a/changelog.d/pr-7473 b/changelog.d/pr-7473 deleted file mode 100644 index 6cdfbd796b1..00000000000 --- a/changelog.d/pr-7473 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Provide more context in error messages -packages: cabal-install-solver -prs: #7473 -issues: #7468 - -description: { - -- Error messages for misspelled extensions and languages now provide additional context. -- The error messages will provide a suggested fix if the misspelled extension or language is similar enough - to known languages and extensions. - -} diff --git a/changelog.d/pr-7493 b/changelog.d/pr-7493 deleted file mode 100644 index 00f3033c1c2..00000000000 --- a/changelog.d/pr-7493 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Fix `cabal test --enable-library-coverage` for other-modules -packages: Cabal -prs: #7493 -issues: #5213 -description: { - -- Fix `cabal test --enable-library-coverage` for libraries with nonempty other-modules field. -- Due to a hack, this breaks coverage whenever the used Haskell compiler is called 't' (for a non-hacky fix we should rework HPC directories, possibly enabling multilib in the process, see #6440 and #6397). - -} diff --git a/changelog.d/pr-7526-lazily-decode-cache-files b/changelog.d/pr-7526-lazily-decode-cache-files deleted file mode 100644 index 4cdb3acc204..00000000000 --- a/changelog.d/pr-7526-lazily-decode-cache-files +++ /dev/null @@ -1,7 +0,0 @@ -synopsis: lazily decode cache files for checking invalidation -prs: #7516 -issues: #7466 -packages: cabal-install -description { -- This yields a significant 15% speedup on rebuilding build plans for projects with lots of individual cabal packages. -} \ No newline at end of file diff --git a/changelog.d/pr-7536 b/changelog.d/pr-7536 deleted file mode 100644 index 26b139ab6d6..00000000000 --- a/changelog.d/pr-7536 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Add fields extra-libraries-static and extra-lib-dirs-static -packages: Cabal -prs: #7536 -issues: #7399 #6688 diff --git a/changelog.d/pr-7550 b/changelog.d/pr-7550 deleted file mode 100644 index e95e220acdc..00000000000 --- a/changelog.d/pr-7550 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Add --open flag to `cabal haddock` -packages: cabal-install -prs: #7550 -issues: #7366 diff --git a/changelog.d/pr-7561 b/changelog.d/pr-7561 deleted file mode 100644 index 80095608308..00000000000 --- a/changelog.d/pr-7561 +++ /dev/null @@ -1,7 +0,0 @@ -synopsis: defer build-tools-depends choices as well as setup choices -prs: #7532 #7561 -description { - -- extends the existing solver pass that defers solving setup depends until top-level goals are solved to also defer build-tool-depends goals until top level goals are solved. -- constraints at the top level (on versions, flags, stanzas, etc) are applied first and only then are attempts made to build the less-constrained qualified goals, significantly streamlining the production of valid build plans. -} \ No newline at end of file diff --git a/changelog.d/pr-7572 b/changelog.d/pr-7572 deleted file mode 100644 index 99b153baf06..00000000000 --- a/changelog.d/pr-7572 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Make cabal respect setgid permission bit when creating directories -packages: cabal-install Cabal -prs: #7572 -issues: #7560 - -description: { - -- Previously cabal would override an admin's choice to use setgid on the - .cabal directory by using hardcoded file and directory modes upon - creation. Instead we now take what the system decides and only add to - that set of permissions. - -} diff --git a/changelog.d/pr-7575 b/changelog.d/pr-7575 deleted file mode 100644 index 611a613dea8..00000000000 --- a/changelog.d/pr-7575 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Fix running GHCJS executables -packages: cabal-install -prs: #7575 -issues: #6175 #6361 diff --git a/changelog.d/pr-7581 b/changelog.d/pr-7581 deleted file mode 100644 index 1b667a5e12f..00000000000 --- a/changelog.d/pr-7581 +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Paths passed to GHC are now relative to the current working directory -packages: Cabal diff --git a/changelog.d/pr-7608 b/changelog.d/pr-7608 deleted file mode 100644 index 8ae05a58ab7..00000000000 --- a/changelog.d/pr-7608 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Glob expand extra-source-files when tracking for rebuild -packages: cabal-install -prs: #7608 -issues: #4746 - -description: { - -- Since 3.4, extra-source-files have been tracked by cabal-install in the rebuild-checking logic. However, this tracking did not, until this PR, take into account glob-expansion. - -} diff --git a/changelog.d/pr-7616 b/changelog.d/pr-7616 deleted file mode 100644 index 2d8520f19f6..00000000000 --- a/changelog.d/pr-7616 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Handle conditionals in duplicate module checks -packages: Cabal -prs: #7616 -issues: #4629 #7525 - -description: { - -Improves `cabal check` logic for duplicate modules to take into account conditional branches. If a module appears on both sides of an `if/else` clause in a cabal file, it is now correctly not reported as a duplicate. - -} diff --git a/changelog.d/pr-7621 b/changelog.d/pr-7621 deleted file mode 100644 index 4980160e3ae..00000000000 --- a/changelog.d/pr-7621 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Backtrack when no pkg-config is present -packages: Cabal -prs: #7621 -issues: #7448 - -description: { - -When solving for pkgconfig-depends, when pkg-config is not present, the cabal solver will now backtrack and try a different automatic flag and dependency configuration, just as it does if pkg-config is present, but does not contain the specified package. - -} diff --git a/changelog.d/pr-7625 b/changelog.d/pr-7625 deleted file mode 100644 index ff8c51f0253..00000000000 --- a/changelog.d/pr-7625 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: Support Git submodules in source-package-respository -packages: cabal-install -prs: #7625 -issues: #5536 -descripion: { -- Fetch all source-package-respositories with all the submodules -- Use `git reset --hard` instaed of `git checkout` for source-package-respositories -} \ No newline at end of file diff --git a/changelog.d/pr-7630 b/changelog.d/pr-7630 deleted file mode 100644 index b344c8f1fb3..00000000000 --- a/changelog.d/pr-7630 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Autoatically pipe auth from repo uris into curl transport. -packages: Cabal -prs: #7630 -issues: #4743 diff --git a/changelog.d/pr-7650 b/changelog.d/pr-7650 deleted file mode 100644 index 5a0e4e9c8b4..00000000000 --- a/changelog.d/pr-7650 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: Make Paths_ modules work with non-standard preludes again -pr: #7650 -issues: #5962 -significance: significant -description: { - -- Generate Paths_ module with qualified Data.List.last import so that compatibility with non-standard preludes is not regressed compared to cabal 3.4. -} \ No newline at end of file diff --git a/changelog.d/pr-7652 b/changelog.d/pr-7652 deleted file mode 100644 index 3d97adc5d55..00000000000 --- a/changelog.d/pr-7652 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Windows: redo the fix to breakage caused by new autoconf; the wrong fix made cabal sometimes fail with old autoconf -pr: #7652 #7651 -issues: #7649 #7494 -significance: significant -description: { - -- Reverts #7510 that failed on Windows when used with pre-generated scripts included in packages such as network, time, process. -- Adds a subtler fix/workaround for the deficiencies of new autoconf versions on Windows. -} \ No newline at end of file diff --git a/changelog.d/pr-7657 b/changelog.d/pr-7657 deleted file mode 100644 index f3b291c950a..00000000000 --- a/changelog.d/pr-7657 +++ /dev/null @@ -1,6 +0,0 @@ -synopsis: Regenerate bootstrap/ with GHC updated from 8.10.4 to 8.10.7 -pr: #7657 #7658 -description: { - -- This regenerates bootstrap plans using new package versions and also updating GHC from 8.10.4 to 8.10.7, as requested by GHC HQ. -} \ No newline at end of file diff --git a/changelog.d/pr-7676 b/changelog.d/pr-7676 deleted file mode 100644 index 83cdc8e768c..00000000000 --- a/changelog.d/pr-7676 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Add support for `--package-db` flags to v2 commands -packages: cabal-install -prs: #7676 -issues: #5773 diff --git a/changelog.d/pr-7688 b/changelog.d/pr-7688 deleted file mode 100644 index 7cf1dad5c28..00000000000 --- a/changelog.d/pr-7688 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Add code-generators field to test-suite stanza -packages: Cabal -prs: #7688 -issues: #4500 - -description: { - -Test-suite stanzas now may contain a `code-generators:` field that can be used to run executables as preprocessors which take existing locations of library code and cabal-generated ghc build flags, and output new modules for use in the test stanza. This can be used to automatically generate drivers for "discover" style tests, including doctests. - - -} diff --git a/changelog.d/pr-7764 b/changelog.d/pr-7764 deleted file mode 100644 index 89d1a3fb7a9..00000000000 --- a/changelog.d/pr-7764 +++ /dev/null @@ -1,17 +0,0 @@ -synopsis: Use ghc -flink-rts option when available -packages: Cabal -prs: #7764 #8111 -issues: #7763 -significance: significant - -description: { - -Previously Cabal did quite some headstands to link against libHSrts. -Note only this is complex but it couples very tightly to GHC's implementation. -Thankfully, as of GHC 9.0 GHC provides a -flink-rts flag for precisely this purpose. -Use it when available. - -It fixed a bug which make Cabal unusable to build foreign libraries for windows and ghc 9.0 or 9.2. -See - -} \ No newline at end of file diff --git a/changelog.d/pr-7783 b/changelog.d/pr-7783 deleted file mode 100644 index bbf8cda6f8d..00000000000 --- a/changelog.d/pr-7783 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Conditionals and imports in cabal.project files -packages: cabal-install -prs: #7783 -issues: #7556 -significance: significant - -description: { - -Cabal.project files now allow conditional logic on compiler version, arch, etc. as well as imports of other local or remote project of freeze files (both old and new style). - -} diff --git a/changelog.d/pr-7834 b/changelog.d/pr-7834 deleted file mode 100644 index 07090168e42..00000000000 --- a/changelog.d/pr-7834 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Improve error message when no test/benchmark is found -packages: cabal-install -prs: #7834 -issues: #5079 #5255 - -description: { - -When `cabal test` and the error message recommends setting `tests: True`, the next `cabal test` run is likely to fail with a solver error. The user might incorrectly conclude that setting `tests: True` made the problem worse, because the failure now occurs earlier (at solving time rather than at testing time). - -By including the fact that a plan failure is expected in the error message, hopefully users will be more confident that setting `tests: True` was the right move, so they will be able to focus on the true cause of the problem: the fact that no plan including the tests exists. - -} diff --git a/changelog.d/pr-7844 b/changelog.d/pr-7844 deleted file mode 100644 index c46b59d2cca..00000000000 --- a/changelog.d/pr-7844 +++ /dev/null @@ -1,8 +0,0 @@ -synopsis: Disable job management on Windows 7 -packages: Cabal -prs: #7844 -significance: significant - -description: { -- cabal now works on Windows 7 -} diff --git a/changelog.d/pr-7851 b/changelog.d/pr-7851 deleted file mode 100644 index 6f251064fcd..00000000000 --- a/changelog.d/pr-7851 +++ /dev/null @@ -1,21 +0,0 @@ -synopsis: Better support for scripts -packages: cabal-install -prs: #7851 #7925 #7938 #7990 #7997 -issues: #7842 #7073 #6354 #6149 #5508 #5698 - -description: { - -- Script support improved or added across relevant commands. -- `cabal run script` will now cache results and will not do a fresh build every time. -- `cabal build script` added. It will build the cache for script. -- `cabal repl script` added. It will open a repl for script using the cache if available. -- `cabal clean script` added. It will clean the cache for script. -- `cabal clean` will now remove script caches for which there is no marching script. -- `cabal list-bin` now works with scripts -- The name of the generated script executable has been changed from "script" to - "cabal-script-" for easier process management. -- Reduce the default verbosity of scripts, so that the build output doesn't interfere with the script output. -- Scripts now support a project metadata block that allows them to use options - that would normally be set in a cabal.project file. - -} diff --git a/changelog.d/pr-7873 b/changelog.d/pr-7873 deleted file mode 100644 index f80d95b5c68..00000000000 --- a/changelog.d/pr-7873 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: cabal init now takes an optional argument and treats it as root directory for the new package -packages: cabal-install -prs: #7873 -issues: #7871 diff --git a/changelog.d/pr-7903 b/changelog.d/pr-7903 deleted file mode 100644 index 23e17e7e4a0..00000000000 --- a/changelog.d/pr-7903 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: silence warning about world-file field being unrecognised for flat config files -packages: cabal-install -prs: #7903 -issues: #7894 \ No newline at end of file diff --git a/changelog.d/pr-7922 b/changelog.d/pr-7922 deleted file mode 100644 index 80647cbee97..00000000000 --- a/changelog.d/pr-7922 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: raise lower bound of process and remove compatibility shims -packages: Cabal Cabal-tests cabal-testsuite -prs: #7922 diff --git a/changelog.d/pr-7929 b/changelog.d/pr-7929 deleted file mode 100644 index c2b7a71fa03..00000000000 --- a/changelog.d/pr-7929 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: fix Ctrl-C handling during package download -packages: cabal-install -prs: #7929 -issues: #6322 diff --git a/changelog.d/pr-7933 b/changelog.d/pr-7933 deleted file mode 100644 index 447ec038cb7..00000000000 --- a/changelog.d/pr-7933 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: changes the cabal check warning about long synopsis, so it warns only synopsis bigger than the set size -packages: Cabal -prs: #7933 -issues: #7932 \ No newline at end of file diff --git a/changelog.d/pr-7934 b/changelog.d/pr-7934 deleted file mode 100644 index 239f7dd2842..00000000000 --- a/changelog.d/pr-7934 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Fix the timestamp shown during cabal update -packages: cabal-install -prs: #7934 diff --git a/changelog.d/pr-7948 b/changelog.d/pr-7948 deleted file mode 100644 index 1ed1f9726e2..00000000000 --- a/changelog.d/pr-7948 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Remove Distribution.Client.Compat.FilePerms -packages: cabal-install -prs: #7948 - -description: { - -- Remove the module Distribution.Client.Compat.FilePerms, since it's - both dead code and duplicates code from Distribution.Compat.CopyFile. - -} diff --git a/changelog.d/pr-7949 b/changelog.d/pr-7949 deleted file mode 100644 index ca243f63c3b..00000000000 --- a/changelog.d/pr-7949 +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Remove bootstrapping plan files from version control, and simplify bootstrap update Makefile targets. -prs: #7949 diff --git a/changelog.d/pr-7955 b/changelog.d/pr-7955 deleted file mode 100644 index f39c1be47fa..00000000000 --- a/changelog.d/pr-7955 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Remove deprecated file finding functions -packages: Cabal -prs: #7955 diff --git a/changelog.d/pr-7970 b/changelog.d/pr-7970 deleted file mode 100644 index ba32f9949db..00000000000 --- a/changelog.d/pr-7970 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Avoid malformed range requests -packages: cabal-install -prs: #7970 -issues: #5952 -description: { - -- Don't send malformed range requests. Should make fetching from head.hackage and other "unstable" overlays more reliable. - -} diff --git a/changelog.d/pr-7973 b/changelog.d/pr-7973 deleted file mode 100644 index e6b2e620188..00000000000 --- a/changelog.d/pr-7973 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Apply local options only to local packages -packages: cabal-install -prs: #7973 -issues: #7998 - -description: { -- Command-line `ghc-options` only applies to local packages -- `program-options` stanza only applies to local packages -} diff --git a/changelog.d/pr-8005 b/changelog.d/pr-8005 deleted file mode 100644 index 736157886d3..00000000000 --- a/changelog.d/pr-8005 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Allow glob-star matches with literal filenames (no extensions) -packages: Cabal -prs: #8005 -issues: #5883 -description: { - -- Cabal file glob syntax extended to allow matches of the form dir/**/FileNoExtension - -} diff --git a/changelog.d/pr-8023 b/changelog.d/pr-8023 deleted file mode 100644 index b19f81ae1df..00000000000 --- a/changelog.d/pr-8023 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Flatten duplicate warnings about experimental features -packages: Cabal -prs: #8023 -issues: -description: { - -- Make builds that use experimental Cabal language features less noisy. At -v1 - (normal) we show just first instance of use of experimental cabal language -features, along with count of further occurences in the same file. - -} diff --git a/changelog.d/pr-8061 b/changelog.d/pr-8061 deleted file mode 100644 index 7b4b342f729..00000000000 --- a/changelog.d/pr-8061 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Derive Eq for DependencyMap -packages: Cabal-syntax -prs: #8061 -issues: #7849 diff --git a/changelog.d/pr-8062 b/changelog.d/pr-8062 deleted file mode 100644 index a1eac9ff3f4..00000000000 --- a/changelog.d/pr-8062 +++ /dev/null @@ -1,16 +0,0 @@ -synopsis: Support GHC 9.4's `clang`-based Windows toolchain -packages: Cabal -prs: #8062 - -description { - -- As the `lld` linker used by GHC 9.4 and later on Windows does not support - object merging, it is now an error to enable `--enable-library-for-ghci` on - Windows with such compilers. Note that this flag is merely enables an - optimisation and can safely be disabled if you encounter this error. - -- `Cabal` will now use `llvm-ar`'s `L` modifier if available when building - static archives. This enables static library merging which is the behavior - required by GHC 9.4 and later on Windows. - -} diff --git a/changelog.d/pr-8065 b/changelog.d/pr-8065 deleted file mode 100644 index 98b88af4566..00000000000 --- a/changelog.d/pr-8065 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Add support for the 64-bit S390X architecture -prs: #8065 -packages: Cabal Cabal-syntax diff --git a/changelog.d/pr-8089 b/changelog.d/pr-8089 deleted file mode 100644 index bba65696f04..00000000000 --- a/changelog.d/pr-8089 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Fix Cabal not finding public sublibraries of installed packages -packages: Cabal -prs: #8089 -issues: #7270 - -description: { - -Fix bug in lookup of installed sublibraries with nonexact dependencies (ie. when -not using --exact-configuration). That is the mode of operation of distribution -packages, so this should allow distros to package Cabal packages with multiple -libraries. - -} diff --git a/changelog.d/pr-8096 b/changelog.d/pr-8096 deleted file mode 100644 index d73179b20b7..00000000000 --- a/changelog.d/pr-8096 +++ /dev/null @@ -1,3 +0,0 @@ -synopsis: Add wasm32-wasi to recognized arch/os -prs: #8096 -packages: Cabal Cabal-syntax diff --git a/changelog.d/pr-8115 b/changelog.d/pr-8115 deleted file mode 100644 index 157ca9fdf3e..00000000000 --- a/changelog.d/pr-8115 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Make type field optional for tests and benchmarks -packages: Cabal Cabal-syntax -prs: #8115 -issues: #7459 -description: { - -Allow the omission of the `type` field in `test-suite` and `benchmark` stanzas -when the type can be inferred by the presence of `main-is` or `test-module`. - -} diff --git a/changelog.d/pr-8117 b/changelog.d/pr-8117 deleted file mode 100644 index 7ba3b11a6e7..00000000000 --- a/changelog.d/pr-8117 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Remove the Generic instance of LicenseId -packages: Cabal -prs: #8117 -issues: #8074 -significance: significant - -description: { - -- The `Generic` instance of LicenseId is removed, due to the extraordinary amount of memory required to compile - the Generic instances of large sum types in GHC. -} diff --git a/changelog.d/pr-8127 b/changelog.d/pr-8127 deleted file mode 100644 index 8059bf7b38b..00000000000 --- a/changelog.d/pr-8127 +++ /dev/null @@ -1,9 +0,0 @@ -synopsis: Update the SPDX License List to version 3.16 -packages: Cabal-syntax -prs: #8127 -issues: #8126 -description: { - -The LicenseId and LicenseExceptionId types are updated to reflect the SPDX License List version 3.16 (2022-02-06). - -} diff --git a/changelog.d/pr-8140 b/changelog.d/pr-8140 deleted file mode 100644 index e479ca44007..00000000000 --- a/changelog.d/pr-8140 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Improve error message for empty --allow-newer= -packages: Cabal cabal-install -prs: #8140 -issues: #7740 -description: { - -Instead of internal error, the message now explains that empty argument for ---allow-newer= is not allowed and reminds what --allow-newer (with the empty -argument) means. - -} diff --git a/changelog.d/pr-8170 b/changelog.d/pr-8170 deleted file mode 100644 index 3a71e36c276..00000000000 --- a/changelog.d/pr-8170 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Update the list of known GHC extensions to match GHC 9.2 -packages: Cabal-syntax -prs: #8170 -issues: #8168 - -description: { - -- Add OverloadedRecordUpdate and undocumented AlternativeLayoutRule, - AlternativeLayoutRuleTransitional, RelaxedLayout to KnownExtension. - -} diff --git a/changelog.d/pr-8223 b/changelog.d/pr-8223 deleted file mode 100644 index 6d456ee5b80..00000000000 --- a/changelog.d/pr-8223 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Future compat for liftA2 being exported from Prelude -packages: Cabal-syntax -prs: #8823 - -description: { - -- liftA2 will be exported from Prelude in the future(see https://github.com/haskell/core-libraries-committee/issues/50). - Cabal-syntax was future-proofed to have no warnings when that happens. - -} diff --git a/changelog.d/pr-8272 b/changelog.d/pr-8272 deleted file mode 100644 index 4a915f0ab52..00000000000 --- a/changelog.d/pr-8272 +++ /dev/null @@ -1,10 +0,0 @@ -synopsis: Build release archives (and validate) with GHC 9.2.3 -packages: cabal-install -prs: #8272 -issues: #8271 - -description: { - -- The release binaries are now built with GHC 9.2.3, which fixes some minor snags - -} diff --git a/changelog.d/pr-8310 b/changelog.d/pr-8310 deleted file mode 100644 index dd34f3fcdcf..00000000000 --- a/changelog.d/pr-8310 +++ /dev/null @@ -1,7 +0,0 @@ -synopsis: Remove the GHC version upper bound when deciding whether to filter GHC arguments -pr: #8310 #8260 -description: { - -- Previously, for unknown new versions of GHC, it was not filtering GHC arguments at all, while now it filters them in the same way as for the last known GHC version. This seems a better default and it's one less place to update at release time. Perhaps erroring out or emitting a warning would be safer, but we already emit a general warning elsewhere. - -} \ No newline at end of file diff --git a/changelog.d/remove-experimental-multilibs-warning b/changelog.d/remove-experimental-multilibs-warning deleted file mode 100644 index 2530a15e685..00000000000 --- a/changelog.d/remove-experimental-multilibs-warning +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Unmarked "visibility: public" and "build-depends: pkg:lib" syntaxes as experimental, allowing Hackage upload of packages exposing or using multiple public libraries -packages: Cabal -prs: #8089 -issues: #6801 #7286 diff --git a/changelog.d/spelling-suggestion b/changelog.d/spelling-suggestion deleted file mode 100644 index 69fb04c1f6f..00000000000 --- a/changelog.d/spelling-suggestion +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Alert user and suggest command on spelling mistakes -packages: Cabal cabal-install diff --git a/changelog.d/sync-repo-darcs b/changelog.d/sync-repo-darcs deleted file mode 100644 index 3bbd63c2c18..00000000000 --- a/changelog.d/sync-repo-darcs +++ /dev/null @@ -1,2 +0,0 @@ -synopsis: Sync repo darcs -prs: #7137 diff --git a/release-notes/Cabal-3.8.1.0.md b/release-notes/Cabal-3.8.1.0.md new file mode 100644 index 00000000000..b9d0bf1c966 --- /dev/null +++ b/release-notes/Cabal-3.8.1.0.md @@ -0,0 +1,169 @@ +Cabal 3.8.0.20220526 Changelog +--- + +### Significant changes + +- Cabal init rewrite [#1074](https://github.com/haskell/cabal/issues/1074) [#6758](https://github.com/haskell/cabal/issues/6758) [#6864](https://github.com/haskell/cabal/issues/6864) [#7251](https://github.com/haskell/cabal/issues/7251) [#7255](https://github.com/haskell/cabal/issues/7255) [#7256](https://github.com/haskell/cabal/issues/7256) [#7273](https://github.com/haskell/cabal/issues/7273) + + - Restructures the `cabal init` command to fix historical + issues. All flags are preserved. + - Codebases for interactive and non-interactive flags + are disentangled. + - Data structures now exploit relevant stanza structure + and formatters only care about stanza data + - Heuristics and prompts have a pure and impure implementation. + + - Sets default behavior to be `--interactive` as opposed to + `--non-interactive`. + + - Rewrites tests to achieve 98% coverage + - Golden files now test every stanza individually + - Every flag is covered by a unit test + - Interactive, simple, and non-interactive workflows are + covered. + +- Windows: redo the fix to breakage caused by new autoconf; the wrong fix made cabal sometimes fail with old autoconf [#7494](https://github.com/haskell/cabal/issues/7494) [#7649](https://github.com/haskell/cabal/issues/7649) + + - Reverts #7510 that failed on Windows when used with pre-generated scripts included in packages such as network, time, process. + - Adds a subtler fix/workaround for the deficiencies of new autoconf versions on Windows. + +- Windows: rewrite paths to configure [#7494](https://github.com/haskell/cabal/issues/7494) [#7649](https://github.com/haskell/cabal/issues/7649) + +- Expose `cabal-install` as library [#1597](https://github.com/haskell/cabal/issues/1597) [#3781](https://github.com/haskell/cabal/issues/3781) [#4798](https://github.com/haskell/cabal/issues/4798) [#6090](https://github.com/haskell/cabal/issues/6090) [#7224](https://github.com/haskell/cabal/issues/7224) [#7358](https://github.com/haskell/cabal/pull/7358) + +- Enabled foreign library building on apple silicon [#7837](https://github.com/haskell/cabal/issues/7837) [#8227](https://github.com/haskell/cabal/issues/8227) [#8232](https://github.com/haskell/cabal/pull/8232) + + - Enabled foreign library building on apple silicon + - Updated error message for foreign library builds on unsupported platforms + +- Allow preprocessors to register a reordering [#55](https://github.com/haskell/cabal/issues/55) [#1906](https://github.com/haskell/cabal/issues/1906) + + - Changes the PreProcessor type to include a field ppOrdering so that modules are presented to the preprocessor in the right order (w.r.t. dependencies) + +- Use ghc -flink-rts option when available [#7763](https://github.com/haskell/cabal/issues/7763) [#7764](https://github.com/haskell/cabal/pull/7764) [#8111](https://github.com/haskell/cabal/pull/8111) + + Previously Cabal did quite some headstands to link against libHSrts. + Note only this is complex but it couples very tightly to GHC's implementation. + Thankfully, as of GHC 9.0 GHC provides a -flink-rts flag for precisely this purpose. + Use it when available. + + It fixed a bug which make Cabal unusable to build foreign libraries for windows and ghc 9.0 or 9.2. + See + +- Remove the Generic instance of LicenseId [#8074](https://github.com/haskell/cabal/issues/8074) [#8117](https://github.com/haskell/cabal/pull/8117) + + - The `Generic` instance of LicenseId is removed, due to the extraordinary amount of memory required to compile + the Generic instances of large sum types in GHC. + + +### Other changes + +- Handle option argument parse errors without 'error' [#7573](https://github.com/haskell/cabal/issues/7573) [#7579](https://github.com/haskell/cabal/pull/7579) + + - Errors parsing arguments such as `-v=3` no longer result in + stack traces. + - `Distribution.ReadE.readEOrFail` was removed. + +- Fix bugs in filename validation [#7426](https://github.com/haskell/cabal/issues/7426) [#7429](https://github.com/haskell/cabal/pull/7429) [#7479](https://github.com/haskell/cabal/pull/7479) + + - Relative paths starting with single-character directories are now properly allowed + - `cabal check` rejects paths which are invalid on Windows or in tarballs + +- Fix test --enable-coverage for multi-package projects [#5213](https://github.com/haskell/cabal/issues/5213) [#5433](https://github.com/haskell/cabal/issues/5433) [#7200](https://github.com/haskell/cabal/issues/7200) [#7250](https://github.com/haskell/cabal/pull/7250) [#7467](https://github.com/haskell/cabal/pull/7467) + + - Fix `cabal test --enable-coverage` for multi-package projects by invoking `hpc markup --include=` and listing only modules of libraries of the single tested package. + +- Make cabal respect setgid permission bit when creating directories [#7560](https://github.com/haskell/cabal/issues/7560) [#7572](https://github.com/haskell/cabal/pull/7572) + + - Previously cabal would override an admin's choice to use setgid on the + .cabal directory by using hardcoded file and directory modes upon + creation. Instead we now take what the system decides and only add to + that set of permissions. + +- Handle conditionals in duplicate module checks [#4629](https://github.com/haskell/cabal/issues/4629) [#7525](https://github.com/haskell/cabal/issues/7525) [#7616](https://github.com/haskell/cabal/pull/7616) + + Improves `cabal check` logic for duplicate modules to take into account conditional branches. If a module appears on both sides of an `if/else` clause in a cabal file, it is now correctly not reported as a duplicate. + +- Backtrack when no pkg-config is present [#7448](https://github.com/haskell/cabal/issues/7448) [#7621](https://github.com/haskell/cabal/pull/7621) + + When solving for pkgconfig-depends, when pkg-config is not present, the cabal solver will now backtrack and try a different automatic flag and dependency configuration, just as it does if pkg-config is present, but does not contain the specified package. + +- Add code-generators field to test-suite stanza [#4500](https://github.com/haskell/cabal/issues/4500) [#7688](https://github.com/haskell/cabal/pull/7688) + + Test-suite stanzas now may contain a `code-generators:` field that can be used to run executables as preprocessors which take existing locations of library code and cabal-generated ghc build flags, and output new modules for use in the test stanza. This can be used to automatically generate drivers for "discover" style tests, including doctests. + +- Allow glob-star matches with literal filenames (no extensions) [#5883](https://github.com/haskell/cabal/issues/5883) [#8005](https://github.com/haskell/cabal/pull/8005) + + - Cabal file glob syntax extended to allow matches of the form dir/**/FileNoExtension + +- Flatten duplicate warnings about experimental features [#8023](https://github.com/haskell/cabal/pull/8023) + + - Make builds that use experimental Cabal language features less noisy. At -v1 + (normal) we show just first instance of use of experimental cabal language + features, along with count of further occurences in the same file. + +- Fix Cabal not finding public sublibraries of installed packages [#7270](https://github.com/haskell/cabal/issues/7270) [#8089](https://github.com/haskell/cabal/pull/8089) + + Fix bug in lookup of installed sublibraries with nonexact dependencies (ie. when + not using --exact-configuration). That is the mode of operation of distribution + packages, so this should allow distros to package Cabal packages with multiple + libraries. + +- Make type field optional for tests and benchmarks [#7459](https://github.com/haskell/cabal/issues/7459) [#8115](https://github.com/haskell/cabal/pull/8115) + + Allow the omission of the `type` field in `test-suite` and `benchmark` stanzas + when the type can be inferred by the presence of `main-is` or `test-module`. + +- Improve error message for empty --allow-newer= [#7740](https://github.com/haskell/cabal/issues/7740) [#8140](https://github.com/haskell/cabal/pull/8140) + + Instead of internal error, the message now explains that empty argument for + + argument) means. + +- Create Cabal-syntax for .cabal files [#7559](https://github.com/haskell/cabal/issues/7559) [#7620](https://github.com/haskell/cabal/pull/7620) +- Fix haddock command via Setup.hs for internal libraries [#1919](https://github.com/haskell/cabal/issues/1919) [#7827](https://github.com/haskell/cabal/pull/7827) +- `ghc-options` and `--with-gcc` are now passed to GHC when compiling C and C++ sources [#4439](https://github.com/haskell/cabal/issues/4439) [#5440](https://github.com/haskell/cabal/pull/5440) [#7874](https://github.com/haskell/cabal/pull/7874) +- 'cabal check' to fail when no upper bounds for base or Cabal are present in setup dependencies [#4683](https://github.com/haskell/cabal/issues/4683) [#5370](https://github.com/haskell/cabal/pull/5370) [#7409](https://github.com/haskell/cabal/pull/7409) +- --repl-options doesn’t split on whitespace [#6190](https://github.com/haskell/cabal/issues/6190) [#7799](https://github.com/haskell/cabal/pull/7799) +- '--repl-no-load' option skips startup modules load in REPL [#7541](https://github.com/haskell/cabal/issues/7541) [#7578](https://github.com/haskell/cabal/pull/7578) +- Add -c alias for --constraint command line flag [#7765](https://github.com/haskell/cabal/issues/7765) [#7766](https://github.com/haskell/cabal/pull/7766) +- Add "prompt" strategy when symlinking binaries. [#5672](https://github.com/haskell/cabal/pull/5672) +- Add fields extra-libraries-static and extra-lib-dirs-static [#6688](https://github.com/haskell/cabal/issues/6688) [#7399](https://github.com/haskell/cabal/issues/7399) [#7536](https://github.com/haskell/cabal/pull/7536) +- Paths passed to GHC are now relative to the current working directory +- Autoatically pipe auth from repo uris into curl transport. [#4743](https://github.com/haskell/cabal/issues/4743) [#7630](https://github.com/haskell/cabal/pull/7630) +- raise lower bound of process and remove compatibility shims [#7922](https://github.com/haskell/cabal/pull/7922) +- changes the cabal check warning about long synopsis, so it warns only synopsis bigger than the set size [#7932](https://github.com/haskell/cabal/issues/7932) [#7933](https://github.com/haskell/cabal/pull/7933) +- Remove bootstrapping plan files from version control, and simplify bootstrap update Makefile targets. [#7949](https://github.com/haskell/cabal/pull/7949) +- Remove deprecated file finding functions [#7955](https://github.com/haskell/cabal/pull/7955) +- Support GHC 9.4's `clang`-based Windows toolchain [#8062](https://github.com/haskell/cabal/pull/8062) +- Add support for the 64-bit S390X architecture [#8065](https://github.com/haskell/cabal/pull/8065) +- Add wasm32-wasi to recognized arch/os [#8096](https://github.com/haskell/cabal/pull/8096) +- Unmarked "visibility: public" and "build-depends: pkg:lib" syntaxes as experimental, allowing Hackage upload of packages exposing or using multiple public libraries [#6801](https://github.com/haskell/cabal/issues/6801) [#7286](https://github.com/haskell/cabal/issues/7286) [#8089](https://github.com/haskell/cabal/pull/8089) +- Sync repo darcs [#7137](https://github.com/haskell/cabal/pull/7137) + +- *Cabal-syntax* Derive Eq for DependencyMap [#7849](https://github.com/haskell/cabal/issues/7849) [#8061](https://github.com/haskell/cabal/pull/8061) +- *Cabal-syntax* Allow trailing whitespace after flags in cabal.project [#7279](https://github.com/haskell/cabal/issues/7279) [#8006](https://github.com/haskell/cabal/pull/8006) +- *Cabal-syntax* Update the SPDX License List to version 3.16 [#8126](https://github.com/haskell/cabal/issues/8126) [#8127](https://github.com/haskell/cabal/pull/8127) + + The LicenseId and LicenseExceptionId types are updated to reflect the SPDX License List version 3.16 (2022-02-06). + +- *Cabal-syntax* Future compat for liftA2 being exported from Prelude [#8823](https://github.com/haskell/cabal/pull/8823) + + - liftA2 will be exported from Prelude in the future(see https://github.com/haskell/core-libraries-committee/issues/50). + Cabal-syntax was future-proofed to have no warnings when that happens. + +- *Cabal-syntax* cabal init -n: avoid extra blank lines [#8236](https://github.com/haskell/cabal/issues/8236) [#8292](https://github.com/haskell/cabal/pull/8292) + +- Added fields :pkg-field:`extra-libraries-static` and + :pkg-field:`extra-lib-dirs-static` to allow Haskell libraries to remember + linker flags needed for fully static linking of system libraries into executables. [#7536](https://github.com/haskell/cabal/pull/7536) + +- The existing field :pkg-field:`pkgconfig-depends` can used to append the relevant + output of ``pkg-config --libs --static`` to these new fields automatically. + When :pkg-field:`extra-libraries-static` is not given, it defaults to + :pkg-field:`extra-libraries`. When :pkg-field:`extra-lib-dirs-static` is not + given, it defaults to :pkg-field:`extra-lib-dirs`. [#7536](https://github.com/haskell/cabal/pull/7536) + +- Remove the GHC version upper bound when deciding whether to filter GHC arguments + + - Previously, for unknown new versions of GHC, it was not filtering GHC arguments at all, while now it filters them in the same way as for the last known GHC version. This seems a better default and it's one less place to update at release time. Perhaps erroring out or emitting a warning would be safer, but we already emit a general warning elsewhere. \ No newline at end of file diff --git a/release-notes/cabal-install-3.8.1.0.md b/release-notes/cabal-install-3.8.1.0.md new file mode 100644 index 00000000000..aa4e0192e25 --- /dev/null +++ b/release-notes/cabal-install-3.8.1.0.md @@ -0,0 +1,234 @@ +cabal-install 3.8.0.20220526 Changelog +--- + +### Significant changes + +- `cabal init` rewrite [#1074](https://github.com/haskell/cabal/issues/1074) [#6758](https://github.com/haskell/cabal/issues/6758) [#6864](https://github.com/haskell/cabal/issues/6864) [#7251](https://github.com/haskell/cabal/issues/7251) [#7255](https://github.com/haskell/cabal/issues/7255) [#7256](https://github.com/haskell/cabal/issues/7256) [#7273](https://github.com/haskell/cabal/issues/7273) + + - Restructures the `cabal init` command to fix historical + issues. All flags are preserved. + - Codebases for interactive and non-interactive flags + are disentangled. + - Data structures now exploit relevant stanza structure + and formatters only care about stanza data. + - Heuristics and prompts have a pure and impure implementation. + + - Sets default behavior to be `--interactive` as opposed to + `--non-interactive`. + + - Rewrites tests to achieve 98% coverage + - Golden files now test every stanza individually. + - Every flag is covered by a unit test. + - Interactive, simple, and non-interactive workflows are + covered. + +- Windows: rewrite paths to configure [#7494](https://github.com/haskell/cabal/issues/7494) [#7649](https://github.com/haskell/cabal/issues/7649) + +- Expose `cabal-install` as library [#1597](https://github.com/haskell/cabal/issues/1597) [#3781](https://github.com/haskell/cabal/issues/3781) [#4798](https://github.com/haskell/cabal/issues/4798) [#6090](https://github.com/haskell/cabal/issues/6090) [#7224](https://github.com/haskell/cabal/issues/7224) [#7358](https://github.com/haskell/cabal/pull/7358) + +- Conditionals and imports in `cabal.project` files [#7556](https://github.com/haskell/cabal/issues/7556) [#7783](https://github.com/haskell/cabal/pull/7783) + + `cabal.project` files now allow conditional logic on compiler version, arch, etc. as well as imports of other local or remote project of freeze files (both old and new style). + +- Split out package `Cabal-syntax` for `.cabal` file syntax and parsing [#7559](https://github.com/haskell/cabal/issues/7559) [#7620](https://github.com/haskell/cabal/pull/7620) + +- Build release archives (and validate) with GHC 9.2.3 [#8271](https://github.com/haskell/cabal/issues/8271) [#8272](https://github.com/haskell/cabal/pull/8272) + + - The release binaries are now built with GHC 9.2.3, which fixes some minor snags + + +### Other changes + +- Remove `world` file functionality [#6767](https://github.com/haskell/cabal/issues/6767) [#7746](https://github.com/haskell/cabal/pull/7746) + + In `v1-install`, `world` was used to trace what packages have been + installed, and re-install everything that is listed in it on-demand. However, in + `v2-install`, this is no longer needed, and outdated. + Additionally, `world` code-path is probably not up-to-date, remove it instead of + having partial features. + + - Don't generate `world` file in `~/.cabal` when `v1-install` is executed. + + - Don't ever read `world` from `~/.cabal`. + + - Remove meta-target `world` from `v1-install`. + +- A default configuration is no longer written when a config file is given explicitly [#7705](https://github.com/haskell/cabal/issues/7705) [#7715](https://github.com/haskell/cabal/pull/7715) + + - When no config file exists, `cabal` commands will create a default one. + + - This behavior is discontinued now when the config file is given explicitly + via the `--config-file` option or the `CABAL_CONFIG` environment variable. + + - If no config file is given explicitly, and the default config file + (relative to `CABAL_DIR`) does not exist, it is created as it used to be. + +- Use `nroff -man | less` instead of `man` as backend for `cabal man` [#7714](https://github.com/haskell/cabal/issues/7714) [#7726](https://github.com/haskell/cabal/pull/7726) + + The previous implementation of `cabal man` used `man` as backend to + view the generated manpage file. However, macOS' and BSD's `man` does + not accept a file as input, so `cabal man` was broken on macOS and + BSD. + + The issue has been fixed by piping the generated manpage through + `nroff -man` and then into `$PAGER` which defaults to `less`. Thus, + `cabal man` now works both on Linux and macOS/BSD. + + NB: `cabal man` requires `nroff` to be installed which is the case for + standard setups (but may not be case on slim setups like VMs used in + CI). Note that `nroff` is not necessarily a prerequisite of a package + containing `man`. + +- Use `Win32 >= 2.8` to get `Win32.sYNCHRONIZE` [#7835](https://github.com/haskell/cabal/issues/7835) [#7982](https://github.com/haskell/cabal/pull/7982) + + #7982 also completes a changelog entry for `Cabal-3.6.1.0`, noting it is required for `cabal-install >= 3.6`. + +- Handle option argument parse errors without `error` [#7573](https://github.com/haskell/cabal/issues/7573) [#7579](https://github.com/haskell/cabal/pull/7579) + + - Errors parsing arguments such as `-v=3` no longer result in + stack traces. + - `Distribution.ReadE.readEOrFail` was removed. + +- Add `preferred-versions` support for `LocalIndexRepo` [#7294](https://github.com/haskell/cabal/issues/7294) [#7295](https://github.com/haskell/cabal/pull/7295) + + - Previously, the only repo-index-type that reads the preferred-versions file was `RepoRemote`. + `LocalIndexRepo` now also supports parsing `preferred-versions` file, main purpose is to write tests. + As a nice side-effect, users can provide their own overlay over package sets to restrict or prefer certain package versions. + +- Add `preferred-versions` support for `cabal outdated` [#5603](https://github.com/haskell/cabal/issues/5603) [#7249](https://github.com/haskell/cabal/issues/7249) [#7296](https://github.com/haskell/cabal/pull/7296) + + - `cabal outdated` honours the `preferred-versions` file which might deprecate or prefer certain + versions of packages. In particular, if the only newer version of a package has been deprecated, + `cabal outdated` should not report that there are newer versions available. + +- Changes to `cabal v2-configure` [#5591](https://github.com/haskell/cabal/issues/5591) [#7180](https://github.com/haskell/cabal/issues/7180) [#7405](https://github.com/haskell/cabal/issues/7405) [#7402](https://github.com/haskell/cabal/pull/7402) + + - removes the `--dry-run` part of the `v2-configure` command + - add `--enable-append` and `--disable-append` flags to `v2-configure`, which toggle the option for the new configuration to be appended to the old config file + - add `--enable-backup` and `--disable-backup` flags to `v2-configure`, which toggle the backup feature for the configuration file + +- Standalone tests for `cabal init` [#7410](https://github.com/haskell/cabal/issues/7410) [#7424](https://github.com/haskell/cabal/pull/7424) + + - change the behaviour of the `--tests` flag for `cabal init`, + see https://github.com/haskell/cabal/issues/7410#issuecomment-849913926 + - add a new value `TestSuite` for the `PackageType` type + +- `cabal outdated --v2-freeze-file` prints error message if no freeze file can be found [#7406](https://github.com/haskell/cabal/issues/7406) [#7440](https://github.com/haskell/cabal/pull/7440) + + Instead of ignoring a missing `.freeze` file, abort execution and print an error message. + +- Make `cabal` respect `setgid` permission bit when creating directories [#7560](https://github.com/haskell/cabal/issues/7560) [#7572](https://github.com/haskell/cabal/pull/7572) + + - Previously `cabal` would override an admin's choice to use setgid on the + `.cabal` directory by using hardcoded file and directory modes upon + creation. Instead we now take what the system decides and only add to + that set of permissions. + +- Glob expand `extra-source-files` when tracking for rebuild [#4746](https://github.com/haskell/cabal/issues/4746) [#7608](https://github.com/haskell/cabal/pull/7608) + + - Since 3.4, `extra-source-files` have been tracked by cabal-install in the rebuild-checking logic. However, this tracking did not, until this PR, take into account glob-expansion. + +- Improve error message when no test/benchmark is found [#5079](https://github.com/haskell/cabal/issues/5079) [#5255](https://github.com/haskell/cabal/issues/5255) [#7834](https://github.com/haskell/cabal/pull/7834) + + When `cabal test` and the error message recommends setting `tests: True`, the next `cabal test` run is likely to fail with a solver error. The user might incorrectly conclude that setting `tests: True` made the problem worse, because the failure now occurs earlier (at solving time rather than at testing time). + + By including the fact that a plan failure is expected in the error message, hopefully users will be more confident that setting `tests: True` was the right move, so they will be able to focus on the true cause of the problem: the fact that no plan including the tests exists. + +- Better support for scripts [#5508](https://github.com/haskell/cabal/issues/5508) [#5698](https://github.com/haskell/cabal/issues/5698) [#6149](https://github.com/haskell/cabal/issues/6149) [#6354](https://github.com/haskell/cabal/issues/6354) [#7073](https://github.com/haskell/cabal/issues/7073) [#7842](https://github.com/haskell/cabal/issues/7842) [#7851](https://github.com/haskell/cabal/pull/7851) [#7925](https://github.com/haskell/cabal/pull/7925) [#7938](https://github.com/haskell/cabal/pull/7938) [#7990](https://github.com/haskell/cabal/pull/7990) [#7997](https://github.com/haskell/cabal/pull/7997) + + - Script support improved or added across relevant commands. + - `cabal run script` will now cache results and will not do a fresh build every time. + - `cabal build script` added: It will build the cache for script. + - `cabal repl script` added: It will open a repl for script using the cache if available. + - `cabal clean script` added: It will clean the cache for script. + - `cabal clean` will now remove script caches for which there is no marching script. + - `cabal list-bin` now works with scripts + - The name of the generated script executable has been changed from "script" to + "cabal-script-" for easier process management. + - Reduce the default verbosity of scripts, so that the build output doesn't interfere with the script output. + - Scripts now support a project metadata block that allows them to use options + that would normally be set in a cabal.project file. + +- Remove `Distribution.Client.Compat.FilePerms` [#7948](https://github.com/haskell/cabal/pull/7948) + + - Remove the module `Distribution.Client.Compat.FilePerms`, since it's + both dead code and duplicates code from `Distribution.Compat.CopyFile`. + +- Avoid malformed range requests [#5952](https://github.com/haskell/cabal/issues/5952) [#7970](https://github.com/haskell/cabal/pull/7970) + + - Don't send malformed range requests. Should make fetching from head.hackage and other "unstable" overlays more reliable. + +- Apply local options only to local packages [#7998](https://github.com/haskell/cabal/issues/7998) [#7973](https://github.com/haskell/cabal/pull/7973) + + - Command-line `ghc-options` only applies to local packages + - `program-options` stanza only applies to local packages + +- Improve error message for empty `--allow-newer=` [#7740](https://github.com/haskell/cabal/issues/7740) [#8140](https://github.com/haskell/cabal/pull/8140) + + Instead of internal error, the message now explains that empty argument for + `--allow-newer=` is not allowed and reminds what `--allow-newer` (with the empty + argument) means. + +- `cabal check` now fails when no upper bounds for `base` or `Cabal` are present in setup dependencies [#4683](https://github.com/haskell/cabal/issues/4683) [#5370](https://github.com/haskell/cabal/pull/5370) [#7409](https://github.com/haskell/cabal/pull/7409) + +- Fix `v2-haddock` results in "unexpected status" [#6679](https://github.com/haskell/cabal/issues/6679) [#7843](https://github.com/haskell/cabal/pull/7843) + +- Fix that cabal v2 commands (`install`, `repl`, `run`) use duplicate global config and rebuild libs twice in the store [#6907](https://github.com/haskell/cabal/issues/6907) [#7753](https://github.com/haskell/cabal/pull/7753) [#7759](https://github.com/haskell/cabal/pull/7759) + +- `--repl-no-load` option skips startup modules load in REPL [#7541](https://github.com/haskell/cabal/issues/7541) [#7578](https://github.com/haskell/cabal/pull/7578) + +- Fix post-checkout-command crash when 0 exit status bug [#7641](https://github.com/haskell/cabal/issues/7641) [#7847](https://github.com/haskell/cabal/pull/7847) + +- Fix `list-bin` to only choose the selected component [#7679](https://github.com/haskell/cabal/issues/7679) [#7791](https://github.com/haskell/cabal/pull/7791) + +- `cabal sdist` works in projects with `extra-packages` [#7698](https://github.com/haskell/cabal/issues/7698) + +- Add `-c` alias for `--constraint` command line flag [#7765](https://github.com/haskell/cabal/issues/7765) [#7766](https://github.com/haskell/cabal/pull/7766) + +- Ensure that `v2-sdist` command respects the `--ignore-project` flag [#7965](https://github.com/haskell/cabal/issues/7965) [#8109](https://github.com/haskell/cabal/pull/8109) + +- Make enable/disable nix flags easier to read [#8036](https://github.com/haskell/cabal/issues/8036) [#8054](https://github.com/haskell/cabal/pull/8054) + +- Add "prompt" strategy when symlinking binaries. [#5672](https://github.com/haskell/cabal/pull/5672) + +- Add a verbosity flag `+nowarn`, to suppress all warnings [#7286](https://github.com/haskell/cabal/issues/7286) [#7470](https://github.com/haskell/cabal/pull/7470) + +- Lazily decode cache files for checking invalidation [#7466](https://github.com/haskell/cabal/issues/7466) [#7516](https://github.com/haskell/cabal/pull/7516) + +- Add `--open` flag to `cabal haddock` [#7366](https://github.com/haskell/cabal/issues/7366) [#7550](https://github.com/haskell/cabal/pull/7550) + +- Defer `build-tools-depends` choices as well as setup choices [#7532](https://github.com/haskell/cabal/pull/7532) [#7561](https://github.com/haskell/cabal/pull/7561) + +- Fix running GHCJS executables [#6175](https://github.com/haskell/cabal/issues/6175) [#6361](https://github.com/haskell/cabal/issues/6361) [#7575](https://github.com/haskell/cabal/pull/7575) + +- Support Git submodules in `source-package-respository` [#5536](https://github.com/haskell/cabal/issues/5536) [#7625](https://github.com/haskell/cabal/pull/7625) + +- Add support for `--package-db` flags to v2 commands [#5773](https://github.com/haskell/cabal/issues/5773) [#7676](https://github.com/haskell/cabal/pull/7676) + +- `cabal init` now takes an optional argument and treats it as root directory for the new package [#7871](https://github.com/haskell/cabal/issues/7871) [#7873](https://github.com/haskell/cabal/pull/7873) + +- Silence warning about `world`-file field being unrecognised for flat config files [#7894](https://github.com/haskell/cabal/issues/7894) [#7903](https://github.com/haskell/cabal/pull/7903) + +- Fix Ctrl-C handling during package download [#6322](https://github.com/haskell/cabal/issues/6322) [#7929](https://github.com/haskell/cabal/pull/7929) + +- Fix the timestamp shown during `cabal update` [#7934](https://github.com/haskell/cabal/pull/7934) + +- Sync darcs repos [#7137](https://github.com/haskell/cabal/pull/7137) + +- `cabal-install-solver`: Provide more context in error messages [#7468](https://github.com/haskell/cabal/issues/7468) [#7473](https://github.com/haskell/cabal/pull/7473) + + - Error messages for misspelled extensions and languages now provide additional context. + - The error messages will provide a suggested fix if the misspelled extension or language is similar enough + to known languages and extensions. + +- cabal init -i should autodetect author name and maintainer email (fix #8255) [#8255](https://github.com/haskell/cabal/issues/8255) [#8267](https://github.com/haskell/cabal/pull/8267) + +- cabal init -i: add the GHC2021 language option [#8265](https://github.com/haskell/cabal/issues/8265) [#8277](https://github.com/haskell/cabal/pull/8277) + +### Internal changes + +- Remove bootstrapping plan files from version control, and simplify bootstrap update `Makefile` targets. [#7949](https://github.com/haskell/cabal/pull/7949) + +- CI setup + + - Remove Travis scripts [#6959](https://github.com/haskell/cabal/pull/6959)