diff --git a/Cabal-hooks/CHANGELOG.md b/Cabal-hooks/CHANGELOG.md index 4085c8b8ba8..2143a41771f 100644 --- a/Cabal-hooks/CHANGELOG.md +++ b/Cabal-hooks/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog for `Cabal-hooks` +## 3.14.2 - April 2025 + * No changes + ## 3.14 – November 2024 * Initial release of the `Hooks` API. diff --git a/Cabal-syntax/ChangeLog.md b/Cabal-syntax/ChangeLog.md index 205dcdb9cf0..15eaf05e88b 100644 --- a/Cabal-syntax/ChangeLog.md +++ b/Cabal-syntax/ChangeLog.md @@ -1 +1 @@ -Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.1.0.md +Please see https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md diff --git a/Cabal/ChangeLog.md b/Cabal/ChangeLog.md index ba5c56e1705..9481418c91c 100644 --- a/Cabal/ChangeLog.md +++ b/Cabal/ChangeLog.md @@ -1,3 +1,6 @@ +# 3.14.2.0 [Mikolaj Konarski](mailto:mikolaj@well-typed.com) April 2025 +* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.2.0.md + # 3.14.1.0 [Hécate](mailto:hecate+github@glitchbra.in) November 2024 * See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.1.0.md diff --git a/cabal-install-solver/ChangeLog.md b/cabal-install-solver/ChangeLog.md index 64dfd69e966..e98218e072c 100644 --- a/cabal-install-solver/ChangeLog.md +++ b/cabal-install-solver/ChangeLog.md @@ -1 +1 @@ -Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.1.0.md +Please see https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.2.0.md diff --git a/cabal-install/changelog b/cabal-install/changelog index 47a798c0be1..63f64ddfe49 100644 --- a/cabal-install/changelog +++ b/cabal-install/changelog @@ -1,5 +1,8 @@ -*-change-log-*- +3.14.2.0 Mikolaj Konarski April 2025 + * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.2.0.md + 3.14.1.0 Hécate November 2024 * See https://github.com/haskell/cabal/blob/master/release-notes/cabal-install-3.14.1.0.md diff --git a/changelog.d/pr-10493 b/changelog.d/pr-10493 deleted file mode 100644 index ec4beabe2df..00000000000 --- a/changelog.d/pr-10493 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Remove descriptions for sandbox in replCommand -packages: Cabal -prs: #10493 -issues: #10482 -significance: significant - -description: { - -- Text provided by `Setup.hs repl --help` contained outdated information concerning sandbox, which have now been removed. - -} \ No newline at end of file diff --git a/changelog.d/pr-10546 b/changelog.d/pr-10546 deleted file mode 100644 index db0951505f0..00000000000 --- a/changelog.d/pr-10546 +++ /dev/null @@ -1,82 +0,0 @@ ---- -synopsis: Deduplicate "using configuration from" message -packages: [cabal-install-solver] -prs: 10546 ---- - -## Using Configuration From Message Changes - -Deduplicates and sorts the list of configuration files and URIs printed with the -"using configuration from" message. This message is shown when there's a build -failure. We can trigger that message by using a non-existant package in the -project, "no-pkg-dir". - -If an import is repeated in a `.project` or `.config` file it only imported once -but if the same import is made from an imported file then it was being repeated -in the message. Additional problems were not showing the project first and -mixing configuration files and URIs together. - -* The test set up: - - ``` - $ cat cabal.project - cat cabal.project - packages: no-pkg-dir - import: z-empty.config - import: an-extra.config - import: an-extra.config - import: a-very-extra.config - import: a-very-extra.config - import: https://www.stackage.org/lts-21.25/cabal.config - import: https://www.stackage.org/lts-21.25/cabal.config - - $ cat an-extra.config - import: https://www.stackage.org/lts-21.25/cabal.config - import: https://www.stackage.org/lts-21.25/cabal.config - - $ cat a-very-extra.config - import: https://www.stackage.org/lts-21.25/cabal.config - import: https://www.stackage.org/lts-21.25/cabal.config - - $ cat z-empty.config - - This file is intentionally empty, just this comment. - ``` - -* Before the fix: - - ``` - $ ~/.ghcup/bin/cabal-3.12.1.0 build all --dry-run - When using configuration from: - - a-very-extra.config - - an-extra.config - - cabal.project - - https://www.stackage.org/lts-21.25/cabal.config - - https://www.stackage.org/lts-21.25/cabal.config - - https://www.stackage.org/lts-21.25/cabal.config - - z-empty.config - The following errors occurred: - - The package location 'no-pkg-dir' does not exist. - ``` - -* After the fix: - - ``` - $ cabal build all --dry-run - When using configuration from: - - cabal.project - - a-very-extra.config - - an-extra.config - - z-empty.config - - https://www.stackage.org/lts-21.25/cabal.config - The following errors occurred: - - The package location 'no-pkg-dir' does not exist. - ``` - -## Ord ProjectConfigPath Instance Changes - -Adds a custom `Ord` instance for `ProjectConfigPath` that sorts URIs after local -file paths and longer file paths after shorter ones as measured by the number of -path segments. If still equal, then sorting is lexical. The project itself, a -single element root path, compared to any of the configuration paths it imports, -should always sort first. Comparing one project root path against another is -done lexically. diff --git a/changelog.d/pr-10554 b/changelog.d/pr-10554 deleted file mode 100644 index 569bba5e0d8..00000000000 --- a/changelog.d/pr-10554 +++ /dev/null @@ -1,12 +0,0 @@ ---- -synopsis: Adds more version range checks to `cabal check`. -packages: [Cabal-syntax, Cabal] -prs: 10554 -issues: 9806 ---- - -For dependencies, warns about and checks that version range bounds for: - -- lower bounds are inclusive, don't use (>) -- upper bounds are exclusive, don't use (<=) -- upper bounds don't have trailing zeros, don't end with (*.0). diff --git a/changelog.d/pr-10616 b/changelog.d/pr-10616 deleted file mode 100644 index 89d6bc1d985..00000000000 --- a/changelog.d/pr-10616 +++ /dev/null @@ -1,11 +0,0 @@ ---- -synopsis: "OpenBSD `--strip-unneeded` sometimes strips too much" -packages: [Cabal] -prs: 10616 ---- - -OpenBSD's `--strip-unneeded` thinks some symbols are unneeded that are in fact -needed when C bits are involved, so suppress its use. - -Taken from the OpenBSD ports repo (https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/ghc/patches/patch-libraries_Cabal_Cabal_Distribution_Simple_Program_Strip_hs); -brought to our attention by maerwald. diff --git a/changelog.d/pr-10725 b/changelog.d/pr-10725 deleted file mode 100644 index 07ebe4e263f..00000000000 --- a/changelog.d/pr-10725 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Honour the `-working-dir` flag when executing testsuite executables. -packages: Cabal -prs: #10725 -issues: #10704 -significance: - -description: { - -Honour the `-working-dir` flag when executing testsuite executables. This fixes a -regression in Cabal-3.14.0.0. - -} diff --git a/changelog.d/pr-10728 b/changelog.d/pr-10728 deleted file mode 100644 index d8cee5a84eb..00000000000 --- a/changelog.d/pr-10728 +++ /dev/null @@ -1,14 +0,0 @@ -synopsis: Fix `file+noindex` URI usage on Windows -packages: cabal-install -prs: #10728 #10746 -issues: #10703 -significance: - -description: { - -- `file+noindex` repositories in Windows systems must use the format - `file+noindex:C:/path/to/repo`. This is the only syntax for DOS paths fully - supported by the `network-uri` package, which Cabal uses to interpret URIs in - repository stanzas. - -} diff --git a/changelog.d/pr-10730 b/changelog.d/pr-10730 deleted file mode 100644 index e313e8f2283..00000000000 --- a/changelog.d/pr-10730 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Create `noindex.cache` file if missing -packages: cabal-install -prs: #10730 -issues: #9891 -significance: - -description: { - -- Local+noindex repositories will have their `noindex.cache` file created the first time they are accessed. - -} diff --git a/changelog.d/pr-10731 b/changelog.d/pr-10731 deleted file mode 100644 index 7cc8054901f..00000000000 --- a/changelog.d/pr-10731 +++ /dev/null @@ -1,4 +0,0 @@ -synopsis: Fix regression where build-tool-depends are not used -packages: cabal-install -prs: #10731 -issues: #10633 #10692 diff --git a/changelog.d/pr-10783 b/changelog.d/pr-10783 deleted file mode 100644 index a8efcf12cda..00000000000 --- a/changelog.d/pr-10783 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: GHC arguments are no longer swallowed by enabling documentation -packages: Cabal -prs: #10783 -issues: #10782 -significance: significant - -description: { - -- Arguments to GHC are now properly concatenated with `-haddock` if documentation is enabled. - -} diff --git a/changelog.d/pr-10800 b/changelog.d/pr-10800 deleted file mode 100644 index 5c92176dc30..00000000000 --- a/changelog.d/pr-10800 +++ /dev/null @@ -1,12 +0,0 @@ -synopsis: Fix regression where 'build' folder was created in CWD when running a standlone script. -packages: cabal-install -prs: #10800 -issues: #10772 -significance: - -description: { - -Fix a regression where the `build` folder was created in the current directory -when running a standalone script. - -} diff --git a/changelog.d/pr-10826 b/changelog.d/pr-10826 deleted file mode 100644 index 6dbc33217a4..00000000000 --- a/changelog.d/pr-10826 +++ /dev/null @@ -1,11 +0,0 @@ -synopsis: Prepend the global extra paths to the `ProgramDb` sooner -packages: cabal-install -prs: #10826 -issues: #9800 -significance: significant - -description: { - -- The initial configuration of programs was done without the `extra-prog-path` from the global cabal configuration. This meant that in some cases, some executables were not found. In particular this manifested as Windows users who didn't add the MSYS2 paths to the global PATH couldn't make use of `pkg-config`. - -} diff --git a/changelog.d/pr-10827.md b/changelog.d/pr-10827.md deleted file mode 100644 index 9fb5b7b8328..00000000000 --- a/changelog.d/pr-10827.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -synopsis: "Fix duplicate environment variables in test and benchmark runs" -packages: [Cabal, cabal-install] -prs: 10827 -issues: 10718 ---- - -Cabal no longer creates duplicate environment variables when running test -suites, benchmarks, or internal executables. Previously, when setting up the -environment for these processes, Cabal would append the overridden environment -to the existing environment, creating duplicates of the same variable. diff --git a/changelog.d/pr-10828.md b/changelog.d/pr-10828.md deleted file mode 100644 index 9e78761441a..00000000000 --- a/changelog.d/pr-10828.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -synopsis: Set _datadir to an absolute path when running tests -packages: [Cabal] -prs: 10828 -issues: [10717] ---- - -Fix a regression where `_datadir` was set to a relative path. This -caused issues when running testsuites which changed the working directory and -accessed datafiles. diff --git a/changelog.d/pr-10841.md b/changelog.d/pr-10841.md deleted file mode 100644 index ab1cf038867..00000000000 --- a/changelog.d/pr-10841.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -synopsis: Fix `cabal repl --enable-multi-repl` when only specifying some targets from a package. -packages: [Cabal] -prs: 10841 -issues: [10775] ---- - -Fix a bug `cabal repl --enable-multi-repl` where the repl would fail to start if you -only specified some targets to be loaded. - -In particular, if you are using internal libraries you may be affected by this bug. diff --git a/changelog.d/pr-9997 b/changelog.d/pr-9997 deleted file mode 100644 index 592e29c0963..00000000000 --- a/changelog.d/pr-9997 +++ /dev/null @@ -1,15 +0,0 @@ -synopsis: Suppress ghc-pkg warnings emitted when an empty packages is being registered -packages: Cabal -prs: #9997 - -description: { - -When a package contains a library that has no modules, `./Setup register` -tries to register the library with fields `haddock-interfaces:` and -`haddock-html:` pointing at non-existent files or directories, and `ghc-pkg -register` warns about them. - -To suppress the warnings prevent these fields from being generated when -there are no modules. - -} diff --git a/changelog.d/solver-api-change-fixup-3.14 b/changelog.d/solver-api-change-fixup-3.14 deleted file mode 100644 index 05561d5f495..00000000000 --- a/changelog.d/solver-api-change-fixup-3.14 +++ /dev/null @@ -1,13 +0,0 @@ -synopsis: Revert renaming from #10546 -packages: cabal-install-solver -prs: #10546 - -description: { - -https://github.com/haskell/cabal/pull/10546 changed the Solver API by -renaming a function and was backported to 3.14 in -https://github.com/haskell/cabal/pull/10753. In particular, -`docProjectConfigPaths` was renamed to `docProjectConfigFiles`. -This change reverts the renaming but not anything else from #10546. - -} diff --git a/release-notes/Cabal-3.14.0.0.md b/release-notes/Cabal-3.14.0.0.md index 004a462db8f..e8bbc987257 100644 --- a/release-notes/Cabal-3.14.0.0.md +++ b/release-notes/Cabal-3.14.0.0.md @@ -88,8 +88,6 @@ Cabal and Cabal-syntax 3.14.0.0 changelog and release notes - Add `OrPatterns` extension (GHC proposal #958) [#10339](https://github.com/haskell/cabal/pull/10339) -### Other changes - - Add flag `--ignore-build-tools` [#10128](https://github.com/haskell/cabal/pull/10128) - Adds flag `--ignore-build-tools` which allows a user to ignore the tool diff --git a/release-notes/Cabal-3.14.2.0.md b/release-notes/Cabal-3.14.2.0.md new file mode 100644 index 00000000000..3b700eb3542 --- /dev/null +++ b/release-notes/Cabal-3.14.2.0.md @@ -0,0 +1,60 @@ +Cabal and Cabal-syntax 3.14.2.0 changelog and release notes +--- + +### Significant changes + +- GHC arguments are no longer swallowed by enabling documentation [#10782](https://github.com/haskell/cabal/issues/10782) [#10783](https://github.com/haskell/cabal/pull/10783) + + Arguments to GHC are now properly concatenated with `-haddock` if documentation is enabled. + +- Honour the `-working-dir` flag when executing testsuite executables. [#10704](https://github.com/haskell/cabal/issues/10704) [#10725](https://github.com/haskell/cabal/pull/10725) + + Honour the `-working-dir` flag when executing testsuite executables. This fixes a + regression in Cabal-3.14.0.0. + +- Fix duplicate environment variables in test and benchmark runs [#10718](https://github.com/haskell/cabal/issues/10718) [#10827](https://github.com/haskell/cabal/pull/10827) + + Cabal no longer creates duplicate environment variables when running test + suites, benchmarks, or internal executables. Previously, when setting up the + environment for these processes, Cabal would append the overridden environment + to the existing environment, creating duplicates of the same variable. + +- Set `_datadir` to an absolute path when running tests [#10717](https://github.com/haskell/cabal/issues/10717) [#10828](https://github.com/haskell/cabal/pull/10828) + + Fix a regression where `_datadir` was set to a relative path. This + caused issues when running testsuites which changed the working directory and + accessed datafiles. + +### Other changes + +- Remove descriptions for sandbox in replCommand [#10482](https://github.com/haskell/cabal/issues/10482) [#10493](https://github.com/haskell/cabal/pull/10493) + + Text provided by `Setup.hs repl --help` contained outdated information concerning sandbox, which have now been removed. + +- Adds more version range checks to `cabal check`. [#9806](https://github.com/haskell/cabal/issues/9806) [#10554](https://github.com/haskell/cabal/pull/10554) + + For dependencies, warns about and checks that version range bounds for: + + - lower bounds are inclusive, don't use (>) + - upper bounds are exclusive, don't use (<=) + - upper bounds don't have trailing zeros, don't end with (*.0). + +- OpenBSD `--strip-unneeded` sometimes strips too much [#10616](https://github.com/haskell/cabal/pull/10616) + + OpenBSD's `--strip-unneeded` thinks some symbols are unneeded that are in fact + needed when C bits are involved, so suppress its use. + + Taken from the OpenBSD ports repo (https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/ports/lang/ghc/patches/patch-libraries_Cabal_Cabal_Distribution_Simple_Program_Strip_hs); + brought to our attention by maerwald. + + +- Suppress ghc-pkg warnings emitted when an empty packages is being registered [#9997](https://github.com/haskell/cabal/pull/9997) + + When a package contains a library that has no modules, `./Setup register` + tries to register the library with fields `haddock-interfaces:` and + `haddock-html:` pointing at non-existent files or directories, and `ghc-pkg + register` warns about them. + + To suppress the warnings prevent these fields from being generated when + there are no modules. + diff --git a/release-notes/cabal-install-3.14.2.0.md b/release-notes/cabal-install-3.14.2.0.md new file mode 100644 index 00000000000..2e8ea041d6d --- /dev/null +++ b/release-notes/cabal-install-3.14.2.0.md @@ -0,0 +1,103 @@ +## cabal-install and cabal-install-solver 3.14.2.0 changelog + +### Significant changes + +- Honour `extra-prog-path` from the the global configuration [#9800](https://github.com/haskell/cabal/issues/9800) [#10826](https://github.com/haskell/cabal/pull/10826) + + The initial configuration of programs was done without the `extra-prog-path` from the global cabal configuration. This meant that in some cases, some executables were not found. In particular this manifested as Windows users who didn't add the MSYS2 paths to the global PATH couldn't make use of `pkg-config`. + +- Fix regression where `build-tool-depends` is not used [#10633](https://github.com/haskell/cabal/issues/10633) [#10692](https://github.com/haskell/cabal/issues/10692) [#10731](https://github.com/haskell/cabal/pull/10731) + + Fixes a regression from 3.14.1.0 where a globally found executable would be found + rather than a dependency specified with `build-tool-depends`. + +- Fix `cabal repl --enable-multi-repl` when only specifying some targets from a package. [#10775](https://github.com/haskell/cabal/issues/10775) [#10841](https://github.com/haskell/cabal/pull/10841) + + Fix a bug `cabal repl --enable-multi-repl` where the repl would fail to start if you + only specified some targets to be loaded. + In particular, if you are using internal libraries you may be affected by this bug. + +### Other changes + +- Fix `file+noindex` URI usage on Windows [#10703](https://github.com/haskell/cabal/issues/10703) [#10728](https://github.com/haskell/cabal/pull/10728) [#10746](https://github.com/haskell/cabal/pull/10746) + + `file+noindex` repositories in Windows systems must use the format + `file+noindex:C:/path/to/repo`. This is the only syntax for DOS paths fully + supported by the `network-uri` package, which Cabal uses to interpret URIs in + repository stanzas. + +- Create `noindex.cache` file if missing [#9891](https://github.com/haskell/cabal/issues/9891) [#10730](https://github.com/haskell/cabal/pull/10730) + + Local+noindex repositories will have their `noindex.cache` file created the first time they are accessed. + +- Fix regression where 'build' folder was created in CWD when running a standlone script. [#10772](https://github.com/haskell/cabal/issues/10772) [#10800](https://github.com/haskell/cabal/pull/10800) + + Fix a regression where the `build` folder was created in the current directory + when running a standalone script. + +- Fix duplicate environment variables in test and benchmark runs [#10718](https://github.com/haskell/cabal/issues/10718) [#10827](https://github.com/haskell/cabal/pull/10827) + + Cabal no longer creates duplicate environment variables when running test + suites, benchmarks, or internal executables. Previously, when setting up the + environment for these processes, Cabal would append the overridden environment + to the existing environment, creating duplicates of the same variable. + +- Deduplicate the "using configuration from" message [#10546](https://github.com/haskell/cabal/pull/10546) + + Deduplicates and sorts the list of configuration files and URIs printed with the + "using configuration from" message. This message is shown when there's a build + failure. We can trigger that message by using a non-existant package in the + project, "no-pkg-dir". + + If an import is repeated in a `.project` or `.config` file it only imported once + but if the same import is made from an imported file then it was being repeated + in the message. Additional problems were not showing the project first and + mixing configuration files and URIs together. + + * Before the fix: + + ``` + $ ~/.ghcup/bin/cabal-3.12.1.0 build all --dry-run + When using configuration from: + - a-very-extra.config + - an-extra.config + - cabal.project + - https://www.stackage.org/lts-21.25/cabal.config + - https://www.stackage.org/lts-21.25/cabal.config + - https://www.stackage.org/lts-21.25/cabal.config + - z-empty.config + The following errors occurred: + - The package location 'no-pkg-dir' does not exist. + ``` + + * After the fix: + + ``` + $ cabal build all --dry-run + When using configuration from: + - cabal.project + - a-very-extra.config + - an-extra.config + - z-empty.config + - https://www.stackage.org/lts-21.25/cabal.config + The following errors occurred: + - The package location 'no-pkg-dir' does not exist. + ``` +- Add a custom `Ord` instance for `ProjectConfigPath` ([#10546](https://github.com/haskell/cabal/pull/10546)) + + The instance sorts URIs after local + file paths and longer file paths after shorter ones as measured by the number of + path segments. If still equal, then sorting is lexical. The project itself, a + single element root path, compared to any of the configuration paths it imports, + should always sort first. Comparing one project root path against another is + done lexically. + +### Unresolved Issues + +- Using the short git hashes in source-repository-package will no longer work [#10605](https://github.com/haskell/cabal/issues/10605) + + It has always been assumed, but not checked, that you will specify the + tag of a repository package using an unambiguous hash. If you encounter this + problem then replace your short hash with a full long hash for a backward and forward + compatible fix. +