Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions Cabal/ChangeLog.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# 3.14.0.0 [Hécate](mailto:[email protected]) September 2024
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.14.0.0.md

# 3.12.1.0 [Artem Pelenitsyn](mailto:[email protected]) June 2024
* See https://github.com/haskell/cabal/blob/master/release-notes/Cabal-3.12.1.0.md

Expand Down
13 changes: 13 additions & 0 deletions changelog.d/configure-messages
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
synopsis: clarify Cabal "configure" messages
packages: Cabal
prs: #9476

synopsis: {

Cabal can issue a number of error messages referencing "Setup configure",
but it simply references "configure" which could mean any of three
things (Setup configure, the package's "configure" script, or "cabal
configure"). This has recently caught out even Cabal devs. Clarify these
messages.

}
4 changes: 4 additions & 0 deletions changelog.d/issue-10046
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
synopsis: Bug fix - Don't pass --coverage-for for non-dependency libs of testsuite
packages: cabal-install
issues: #10046
prs: #10250
4 changes: 4 additions & 0 deletions changelog.d/issue-10051
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
synopsis: Added `--all` and `--haddock-all` switches to `haddock-project` subcommand
packages: cabal-install
issues: #10051
prs: #2272
20 changes: 20 additions & 0 deletions changelog.d/issue-10166
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
synopsis: Include package version when passing `--promised-dependency` flag
packages: Cabal Cabal-syntax
prs: #10248
issues: #10166

description: {

The --promised dependency flag now expects an argument in format

```
NAME-VER[:COMPONENT_NAME]=CID`
```

rather than

```
NAME[:COMPONENT_NAME]=CID
```

}
23 changes: 23 additions & 0 deletions changelog.d/issue-4816
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
synopsis: Add support for building profiled dynamic way
packages: Cabal Cabal-syntax cabal-install
prs: #9900
issues: #4816

description: {
Add support for profiled dynamic way

New options for cabal.project and ./Setup interface:

* `profiling-shared`: Enable building profiling dynamic way
* Passing `--enable-profiling` and `--enable-executable-dynamic` builds
profiled dynamic executables.

Support for using `profiling-shared` is guarded behind a constraint
which ensures you are using `Cabal >= 3.13`.

In the cabal file:

* `ghc-prof-shared-options`, for passing options when building in
profiling dynamic way

}
26 changes: 26 additions & 0 deletions changelog.d/issue-4816-2
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
synopsis: Fix interaction of `--*-shared` and `--*-executable-dynamic` options.
packages: cabal-install
prs: #9900
issues: #10050

description: {

If you explicitly request `--disable-shared` it should disable the building of
a shared library and override any automatic ways this option is turned on.

Passing `--enable-executable-dynamic` turns on `--enable-shared` if the option is
not specified explicitly.

Before this patch, writing `--disable-shared` on its own would not disable the building of shared libraries. Writing `--disable-shared` and `--disable-executable-dynamic` would disable shared library
creation (despite `--disable-executable-dynamic` being the default).

Now:

* If you specify `--enable-shared` then shared objects are built.
* If you specify `--disabled-shared` then shared objects are not built.
* If you don't explicitly specify whether you want to build shared libraries then
* `--enable-executable-dynamic` will automatically turn on building shared libraries
* `--enable-executable-dynamic --enable-profiling` will automatically turn on building
shared profiling libraries (if supported by your compiler).

}
17 changes: 17 additions & 0 deletions changelog.d/issue-8817
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
synopsis: Neutral field to add files to sdist
packages: Cabal Cabal-syntax
prs: #10107
issues: #8817
significance: significant

description: {

Adds the `extra-files` field to the cabal file specification. This is like
the other `extra-*` fields in that it is copied with the `sdist` command,
except there are no other semantics. Compare to:

* `extra-source-files`: Tracked by `cabal build`.

* `extra-doc-files`: Copied by Haddock to the html directory.

}
39 changes: 39 additions & 0 deletions changelog.d/issue-9702
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
synopsis: Working directory support for Cabal
packages: Cabal-syntax Cabal cabal-install
prs: #9718
issues: #9702

description: {

The Cabal library is now able to handle a passed-in working directory, instead
of always relying on the current working directory of the parent process.

In order to achieve this, the `SymbolicPath` abstraction was fleshed out, and
all fields of `PackageDescription` that, if relative, should be interpreted
with respect to e.g. the package root, use `SymbolicPath` instead of `FilePath`.

This means that many library functions in `Cabal` take an extra argument of type
`Maybe (SymbolicPath CWD (Dir "Package))`, which is an optional (relative or
absolute) path to the package root (if relative, relative to the current working
directory). In addition, many functions that used to manipulate `FilePath`s now
manipulate `SymbolicPath`s, require explicit conversion using e.g. `getSymbolicPath`.

To illustrate with file searching, the `Cabal` library defines:

```haskell
findFileCwd
:: forall dir1 dir2 file
. Verbosity
-> Maybe (SymbolicPath CWD (Dir dir1))
-- ^ working directory
-> [SymbolicPath dir1 (Dir dir2)]
-- ^ search directories
-> RelativePath dir2 File
-- ^ filename
-> IO (SymbolicPath dir1 File)
```

See Note [Symbolic paths] in `Distribution.Utils.Path` for further information
on the design of this API.
}

12 changes: 12 additions & 0 deletions changelog.d/pr-10089
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
synopsis: `curl` transport now supports Basic authentication
packages: cabal-install
prs: #10089

description: {

- The `curl` HTTP transport previously only supported the HTTP Digest
authentication scheme. Basic authentication is now supported
when using HTTPS; Curl will use the scheme offered by the server.
The `wget` transport already supports HTTPS.

}
14 changes: 14 additions & 0 deletions changelog.d/pr-10103
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
synopsis: Enhance error detection for cabal root project files, including broken symlinks

packages: cabal-install

prs: #10103

issues: #9937

description: {

- Added proper detection and reporting for issues with cabal root project files. Previously, these files were silently ignored if they were broken symlinks. Now, `cabal` will exit
with an error in such case.

}
10 changes: 10 additions & 0 deletions changelog.d/pr-10115
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
synopsis: Let cabal init remember chosen language within current session
packages: cabal-install
prs: #10115
issues: #10096

description: {

When cabal init asks for a language, the last choice will be used as the new default for the current session.

}
10 changes: 10 additions & 0 deletions changelog.d/pr-10122
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
synopsis: Clarify error message when pkg-config is not found
packages: cabal-install-solver
prs: #10122

description: {

- The error message when pkg-config is not found or querying it fails will no
longer incorrectly claim that the package is missing in the database.

}
12 changes: 12 additions & 0 deletions changelog.d/pr-10128
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
synopsis: Add flag ignore-build-tools
packages: Cabal
prs: #10128

description: {

- Adds flag --ignore-build-tools which allows a user to ignore the tool
dependencies declared in build-tool-depends. For general use, this flag
should never be needed, but it may be useful for packagers.

}

10 changes: 10 additions & 0 deletions changelog.d/pr-10217
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
synopsis: Do not try to build dynamic executables on Windows
packages: Cabal
prs: #10217

description: {

- Cabal will now exit with a descriptive error message instead of attempting to
build a dynamic executable on Windows.

}
13 changes: 13 additions & 0 deletions changelog.d/pr-10240
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
synopsis: Filter out dinitial-unique and dunique-increment from package hash
packages: cabal-install
prs: #10122

description: {

`-dinitial-unique` and `-dunique-increment` are now filtered out when computing the
store hash of a package.

These options shouldn't affect the output of the package and hence
shouldn't affect the store hash of a package.

}
8 changes: 8 additions & 0 deletions changelog.d/pr-10245
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
synopsis: Add MultilineStrings extension
packages: Cabal-syntax
prs: #10245
description: {

- adds support for the `MultilineStrings` language extension (GHC proposal #637)

}
12 changes: 12 additions & 0 deletions changelog.d/pr-10261
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
synopsis: Warn about git:// protocol
packages: cabal-install
prs: #10261

description: {

`cabal check` will warn about insecure git:// protocol in `source-repository`.

See [Git Book](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols#_the_cons_4)
for an explanation.

}
25 changes: 25 additions & 0 deletions changelog.d/pr-8717
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
synopsis: Always pass `ghc-options` to GHC
packages: Cabal
prs: #8717
issues:

description: {

Previously, options set in the package field `ghc-options` would not be passed
to GHC during the link phase for shared objects (where multiple `.o` or
`.dyn_o` files are merged into a single object file). This made it impossible
to use `ghc-options` to use a different linker by setting (for example)
`ghc-options: -optl-fuse-ld=mold -optlm-fuse-ld=mold`; the options would be
dropped in the link phase, falling back to the default linker.

It was possible to work around this by duplicating the `ghc-options` to
`ghc-shared-options`, which _are_ passed in the shared link phase, but that had
the (undocumented and unfortunate) side-effect of disabling the GHC
`-dynamic-too` flag, effectively doubling compilation times when
`ghc-shared-options` are set.

Now, `ghc-options` are combined with `ghc-shared-options` (to accurately
reflect the documentation on this feature) and the fact that
`ghc-shared-options` disables `-dynamic-too` is documented.

}
31 changes: 31 additions & 0 deletions changelog.d/pr-9177
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
synopsis: Enable recompilation avoidance during Haddock generation
packages: cabal-install
prs: #9177
issues: #9175

description: {

* Haddock no longer writes compilation files by default, so we do not need to
pass tmp dirs for `-hidir`, `-stubdir`, and `-odir` via `--optghc`. Indeed, we
do not *want* to do so, since it results in recompilation for every invocation
of Haddock via Cabal. We now stop this from happening for Haddock versions
2.28 and greater, since that is when Hi Haddock was introduced.

* We no longer define the `__HADDOCK_VERSION__` macro when invoking GHC through
Haddock, since doing so essentially guarantees recompilation during
documentation generation. We audited all uses of `__HADDOCK_VERSION__` in
hackage, ensuring there was a reasonable path forward to migrate away from
using `__HADDOCK_VERSION__` for each, while generating the same documentation
as it did before.
If you are a user of `__HADDOCK_VERSION__`, please take a look at the
discussion in https://github.com/haskell/cabal/pull/9177 and reach out to us
if your use case is not covered.

* Rename the `--haddock-lib` flag to `--haddock-resources-dir` (and
`haddock-lib:` cabal.project field to `haddock-resources-dir:`), and add this
flag to the users guide since it was missing an entry.

* `documentation: true` or `--enable-documentation` now implies `-haddock` for
GHC.

}
19 changes: 19 additions & 0 deletions changelog.d/pr-9551
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
synopsis: Introduce SetupHooks
packages: Cabal
prs: #9551
description: {
Introduction of a new build type: Hooks.
This build type, intended as replacement to the Custom build type, integrates
better with the rest of the ecosystem (`cabal-install`, Haskell Language Server).

The motivation and full design of this new build-type are specified in the
Haskell Foundation Tech Proposal
[Replacing the Cabal Custom build-type](https://github.com/haskellfoundation/tech-proposals/pull/60).

Package authors willing to use this feature should declare `build-type: Hooks`
in their `.cabal` file, declare a custom-setup stanza with a dependency on the
`Cabal-hooks` package, and define a module `SetupHooks` that exports a value
`setupHooks :: SetupHooks`, using the API exported by `Distribution.Simple.SetupHooks`
from the `Cabal-hooks` package. Refer to the Haddock documentation of
`Distribution.Simple.SetupHooks` for example usage.
}
9 changes: 9 additions & 0 deletions changelog.d/pr-9740
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
synopsis: Add language extension NamedDefaults
packages: Cabal-syntax
prs: #9740

description: {

- adds support for the `NamedDefaults` language extension (GHC proposal #409)

}
21 changes: 21 additions & 0 deletions changelog.d/pr-9821
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
synopsis: `haddock-project` support for subcomponents
packages: cabal-install
prs: #9821
issues:
significance: significant

description: {

- `haddock-project` handles sublibraries, test suites and benchmarks.
- `haddock` receives `--package-name` flag whcih allows to set names of
components which are included in the main `index.html` file.
- added `--use-unicode` flag to `haddock` and `haddock-project` commands.
- The directory structure of `./dist-newstyle` has changed. `haddock`
subcommand will install `package:sublib` component in a directory
`package/sublib` under `l/sublib/doc/html/`. This is important for
`haddock-project` command and in the future might will be useful for hackage
support of sublibraries. See
https://github.com/haskell/cabal/pull/9821#discussion_r1548557115.

}

Loading
Loading