Skip to content

Commit 7614e7c

Browse files
committed
Add migration guide for haskell#9718
PR haskell#9718 and related PRs reshuffled and refactored Cabal API. This patch adds a simple migration guide for Cabal library users. Authored-by: Maxim Ivanov
1 parent dc083a7 commit 7614e7c

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

release-notes/Cabal-3.14.0.0.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,59 @@ Cabal and Cabal-syntax 3.14.0.0 changelog and release notes
155155
configure"). This has recently caught out even Cabal devs. Clarify these
156156
messages. [#9476](https://github.com/haskell/cabal/pull/9476)
157157

158+
- In [#9718](https://github.com/haskell/cabal/pull/9718) constructors
159+
`PackageDB`: `GlobalPackageDB`, `UserPackageDB`, `SpecificPackageDB` have
160+
been moved to an auxiliary datatatype `PackageDBX`.
161+
162+
Change imports:
163+
164+
```haskell
165+
import Distribution.Simple.Compiler
166+
(PackageDB, PackageDBX (GlobalPackageDB,
167+
UserPackageDB,
168+
SpecificPackageDB))
169+
```
170+
171+
- **Fields of `ConfigFlags`, `BuildFlags`, `InstallFlags`, `TestFlags`,
172+
`BenchmarkFlags`, `HaddockFlags`, `HscolourFlags`, `SDistFlags`,
173+
`CopyFlags`, `RegisterFlags`, `CleanFlags`, `ReplFlags`**
174+
175+
These fields have partially moved to `*CommonFlags`. Use corresponding
176+
pattern synonyms and/or Monoid instance of `CommonSetupFlags`.
177+
178+
Example for haddock command:
179+
180+
```diff
181+
import Distribution.Simple.Setup (HaddockFlags(..))
182+
+import Distribution.Simple.Setup.Common (CommonSetupFlags(..))
183+
184+
example =
185+
someHaddockFlags
186+
- { haddockVerbosity = a
187+
- , haddockTargets = b
188+
}
189+
+ { haddockCommonFlags = mempty
190+
+ { setupVerbosity = a
191+
+ , setupTargets = b
192+
+ }
193+
}
194+
```
195+
196+
- **Additions to `SymbolicPath`, `RelativePath`**
197+
198+
Module
199+
[Distribution.Utils.Path](https://hackage.haskell.org/package/Cabal-syntax-3.14.0.0/docs/Distribution-Utils-Path.html),
200+
now provides more nuanced API that Cabal uses to keep track of filepath
201+
locations. (Hopefully, avoiding confusion which things should go where and
202+
how.)
203+
204+
In your specific circumstance, you'll need to decide how much of that nuance
205+
to keep. The function `getSymbolicPath` discards all of it, getting back the
206+
raw `FilePath`; but see the linked module's haddocks for caveats and less
207+
drastic options.
208+
209+
It may help to introduce a `CompatSymPath` typeclass.
210+
158211
- Update the SPDX License List to version 3.25
159212

160213
The LicenseId and LicenseExceptionId types are updated to reflect the SPDX

0 commit comments

Comments
 (0)