Add -Wunused-packages to the packages (#9663)
[cabal.git] / cabal-install / cabal-install.cabal
blob38401ed7adb3d1b8f51169ab0f1ec314ed930d84
1 Cabal-Version:      2.2
3 Name:               cabal-install
4 Version:            3.11.0.0
5 Synopsis:           The command-line interface for Cabal and Hackage.
6 Description:
7     The \'cabal\' command-line program simplifies the process of managing
8     Haskell software by automating the fetching, configuration, compilation
9     and installation of Haskell libraries and programs.
10 homepage:           http://www.haskell.org/cabal/
11 bug-reports:        https://github.com/haskell/cabal/issues
12 License:            BSD-3-Clause
13 License-File:       LICENSE
14 Author:             Cabal Development Team (see AUTHORS file)
15 Maintainer:         Cabal Development Team <cabal-devel@haskell.org>
16 Copyright:          2003-2023, Cabal Development Team
17 Category:           Distribution
18 Build-type:         Simple
19 Extra-Source-Files:
20   README.md
21   bash-completion/cabal
22   changelog
24 source-repository head
25   type:     git
26   location: https://github.com/haskell/cabal/
27   subdir:   cabal-install
29 Flag native-dns
30   description:
31     Enable use of the [resolv](https://hackage.haskell.org/package/resolv)
32     & [windns](https://hackage.haskell.org/package/windns) packages for performing DNS lookups
33   default:      True
34   manual:       True
36 Flag lukko
37   description:  Use @lukko@ for file-locking
38   default:      True
39   manual:       True
41 common warnings
42     ghc-options: -Wall -Wcompat -Wnoncanonical-monad-instances -Wincomplete-uni-patterns -Wincomplete-record-updates
44     if impl(ghc < 8.8)
45       ghc-options: -Wnoncanonical-monadfail-instances
47     if impl(ghc >=9.0)
48       -- Warning: even though introduced with GHC 8.10, -Wunused-packages
49       -- gives false positives with GHC 8.10.
50       ghc-options: -Wunused-packages
52 common base-dep
53     build-depends: base >=4.10 && <4.20
55 common cabal-dep
56     build-depends: Cabal ^>=3.11
58 common cabal-syntax-dep
59     build-depends: Cabal-syntax ^>=3.11
61 common cabal-install-solver-dep
62     build-depends: cabal-install-solver ^>=3.11
64 library
65     import: warnings, base-dep, cabal-dep, cabal-syntax-dep, cabal-install-solver-dep
66     default-language: Haskell2010
67     default-extensions: TypeOperators
69     hs-source-dirs:   src
70     other-modules:
71         Paths_cabal_install
72     exposed-modules:
73         -- this modules are moved from Cabal
74         -- they are needed for as long until cabal-install moves to parsec parser
75         Distribution.Deprecated.ParseUtils
76         Distribution.Deprecated.ReadP
77         Distribution.Deprecated.ViewAsFieldDescr
79         Distribution.Client.BuildReports.Anonymous
80         Distribution.Client.BuildReports.Lens
81         Distribution.Client.BuildReports.Storage
82         Distribution.Client.BuildReports.Types
83         Distribution.Client.BuildReports.Upload
84         Distribution.Client.Check
85         Distribution.Client.CmdBench
86         Distribution.Client.CmdBuild
87         Distribution.Client.CmdClean
88         Distribution.Client.CmdConfigure
89         Distribution.Client.CmdErrorMessages
90         Distribution.Client.CmdExec
91         Distribution.Client.CmdFreeze
92         Distribution.Client.CmdHaddock
93         Distribution.Client.CmdHaddockProject
94         Distribution.Client.CmdInstall
95         Distribution.Client.CmdInstall.ClientInstallFlags
96         Distribution.Client.CmdInstall.ClientInstallTargetSelector
97         Distribution.Client.CmdLegacy
98         Distribution.Client.CmdListBin
99         Distribution.Client.CmdOutdated
100         Distribution.Client.CmdRepl
101         Distribution.Client.CmdRun
102         Distribution.Client.CmdSdist
103         Distribution.Client.CmdTest
104         Distribution.Client.CmdUpdate
105         Distribution.Client.Compat.Directory
106         Distribution.Client.Compat.ExecutablePath
107         Distribution.Client.Compat.Orphans
108         Distribution.Client.Compat.Prelude
109         Distribution.Client.Compat.Semaphore
110         Distribution.Client.Compat.Tar
111         Distribution.Client.Config
112         Distribution.Client.Configure
113         Distribution.Client.Dependency
114         Distribution.Client.Dependency.Types
115         Distribution.Client.DistDirLayout
116         Distribution.Client.Errors
117         Distribution.Client.Fetch
118         Distribution.Client.FetchUtils
119         Distribution.Client.FileMonitor
120         Distribution.Client.Freeze
121         Distribution.Client.GZipUtils
122         Distribution.Client.GenBounds
123         Distribution.Client.Get
124         Distribution.Client.Glob
125         Distribution.Client.GlobalFlags
126         Distribution.Client.Haddock
127         Distribution.Client.HashValue
128         Distribution.Client.HttpUtils
129         Distribution.Client.IndexUtils
130         Distribution.Client.IndexUtils.ActiveRepos
131         Distribution.Client.IndexUtils.IndexState
132         Distribution.Client.IndexUtils.Timestamp
133         Distribution.Client.Init
134         Distribution.Client.Init.Defaults
135         Distribution.Client.Init.FileCreators
136         Distribution.Client.Init.FlagExtractors
137         Distribution.Client.Init.Format
138         Distribution.Client.Init.Interactive.Command
139         Distribution.Client.Init.NonInteractive.Command
140         Distribution.Client.Init.NonInteractive.Heuristics
141         Distribution.Client.Init.Licenses
142         Distribution.Client.Init.Prompt
143         Distribution.Client.Init.Simple
144         Distribution.Client.Init.Types
145         Distribution.Client.Init.Utils
146         Distribution.Client.Install
147         Distribution.Client.InstallPlan
148         Distribution.Client.InstallSymlink
149         Distribution.Client.JobControl
150         Distribution.Client.List
151         Distribution.Client.Main
152         Distribution.Client.Manpage
153         Distribution.Client.ManpageFlags
154         Distribution.Client.Nix
155         Distribution.Client.NixStyleOptions
156         Distribution.Client.PackageHash
157         Distribution.Client.ParseUtils
158         Distribution.Client.ProjectBuilding
159         Distribution.Client.ProjectBuilding.UnpackedPackage
160         Distribution.Client.ProjectBuilding.PackageFileMonitor
161         Distribution.Client.ProjectBuilding.Types
162         Distribution.Client.ProjectConfig
163         Distribution.Client.ProjectConfig.Legacy
164         Distribution.Client.ProjectConfig.Types
165         Distribution.Client.ProjectFlags
166         Distribution.Client.ProjectOrchestration
167         Distribution.Client.ProjectPlanOutput
168         Distribution.Client.ProjectPlanning
169         Distribution.Client.ProjectPlanning.SetupPolicy
170         Distribution.Client.ProjectPlanning.Types
171         Distribution.Client.RebuildMonad
172         Distribution.Client.Reconfigure
173         Distribution.Client.ReplFlags
174         Distribution.Client.Run
175         Distribution.Client.Sandbox
176         Distribution.Client.Sandbox.PackageEnvironment
177         Distribution.Client.SavedFlags
178         Distribution.Client.ScriptUtils
179         Distribution.Client.Security.DNS
180         Distribution.Client.Security.HTTP
181         Distribution.Client.Setup
182         Distribution.Client.SetupWrapper
183         Distribution.Client.Signal
184         Distribution.Client.SolverInstallPlan
185         Distribution.Client.SourceFiles
186         Distribution.Client.SrcDist
187         Distribution.Client.Store
188         Distribution.Client.Tar
189         Distribution.Client.TargetProblem
190         Distribution.Client.TargetSelector
191         Distribution.Client.Targets
192         Distribution.Client.Types
193         Distribution.Client.Types.AllowNewer
194         Distribution.Client.Types.BuildResults
195         Distribution.Client.Types.ConfiguredId
196         Distribution.Client.Types.ConfiguredPackage
197         Distribution.Client.Types.Credentials
198         Distribution.Client.Types.InstallMethod
199         Distribution.Client.Types.OverwritePolicy
200         Distribution.Client.Types.PackageLocation
201         Distribution.Client.Types.PackageSpecifier
202         Distribution.Client.Types.ReadyPackage
203         Distribution.Client.Types.Repo
204         Distribution.Client.Types.RepoName
205         Distribution.Client.Types.SourcePackageDb
206         Distribution.Client.Types.SourceRepo
207         Distribution.Client.Types.WriteGhcEnvironmentFilesPolicy
208         Distribution.Client.Upload
209         Distribution.Client.Utils
210         Distribution.Client.Utils.Json
211         Distribution.Client.Utils.Parsec
212         Distribution.Client.VCS
213         Distribution.Client.Version
214         Distribution.Client.Win32SelfUpgrade
216     build-depends:
217         async      >= 2.0      && < 2.3,
218         array      >= 0.4      && < 0.6,
219         base16-bytestring >= 0.1.1 && < 1.1.0.0,
220         binary     >= 0.7.3    && < 0.9,
221         bytestring >= 0.10.6.0 && < 0.13,
222         containers >= 0.5.6.2  && < 0.8,
223         cryptohash-sha256 >= 0.11 && < 0.12,
224         directory  >= 1.3.7.0  && < 1.4,
225         echo       >= 0.1.3    && < 0.2,
226         edit-distance >= 0.2.2 && < 0.3,
227         exceptions >= 0.10.4   && < 0.11,
228         filepath   >= 1.4.0.0  && < 1.6,
229         hashable   >= 1.0      && < 1.5,
230         HTTP       >= 4000.1.5 && < 4000.5,
231         mtl        >= 2.0      && < 2.4,
232         network-uri >= 2.6.0.2 && < 2.7,
233         pretty     >= 1.1      && < 1.2,
234         process    >= 1.2.3.0  && < 1.7,
235         random     >= 1.2      && < 1.3,
236         stm        >= 2.0      && < 2.6,
237         tar        >= 0.5.0.3  && < 0.7,
238         time       >= 1.5.0.1  && < 1.13,
239         zlib       >= 0.5.3    && < 0.8,
240         hackage-security >= 0.6.2.0 && < 0.7,
241         text       >= 1.2.3    && < 1.3 || >= 2.0 && < 2.2,
242         parsec     >= 3.1.13.0 && < 3.2,
243         open-browser >= 0.2.1.0 && < 0.3,
244         regex-base  >= 0.94.0.0 && <0.95,
245         regex-posix >= 0.96.0.0 && <0.97,
246         safe-exceptions >= 0.1.7.0 && < 0.2,
247         semaphore-compat >= 1.0.0 && < 1.1
249     if flag(native-dns)
250       if os(windows)
251         build-depends: windns      >= 0.1.0 && < 0.2
252       else
253         build-depends: resolv      >= 0.1.1 && < 0.3
255     if os(windows)
256       -- newer directory for symlinks
257       build-depends: Win32 >= 2.8 && < 3, directory >=1.3.1.0
258     else
259       build-depends: unix >= 2.5 && < 2.9
261     if flag(lukko)
262       build-depends: lukko >= 0.1 && <0.2
264     -- pull in process version with fixed waitForProcess error
265     if impl(ghc >=8.2)
266       build-depends: process >= 1.6.15.0
269 executable cabal
270     import: warnings, base-dep
271     main-is: Main.hs
272     hs-source-dirs: main
273     default-language: Haskell2010
275     ghc-options: -rtsopts -threaded
277     -- On AIX, some legacy BSD operations such as flock(2) are provided by libbsd.a
278     if os(aix)
279         extra-libraries: bsd
281     build-depends:
282         cabal-install
284 -- Small, fast running tests.
286 test-suite unit-tests
287     import: warnings, base-dep, cabal-dep, cabal-syntax-dep, cabal-install-solver-dep
288     default-language: Haskell2010
289     default-extensions: TypeOperators
290     ghc-options: -rtsopts -threaded
292     type: exitcode-stdio-1.0
293     main-is: UnitTests.hs
294     hs-source-dirs: tests
295     other-modules:
296       UnitTests.Distribution.Client.ArbitraryInstances
297       UnitTests.Distribution.Client.BuildReport
298       UnitTests.Distribution.Client.Configure
299       UnitTests.Distribution.Client.FetchUtils
300       UnitTests.Distribution.Client.Get
301       UnitTests.Distribution.Client.Glob
302       UnitTests.Distribution.Client.GZipUtils
303       UnitTests.Distribution.Client.IndexUtils
304       UnitTests.Distribution.Client.IndexUtils.Timestamp
305       UnitTests.Distribution.Client.Init
306       UnitTests.Distribution.Client.Init.Golden
307       UnitTests.Distribution.Client.Init.Interactive
308       UnitTests.Distribution.Client.Init.NonInteractive
309       UnitTests.Distribution.Client.Init.Simple
310       UnitTests.Distribution.Client.Init.Utils
311       UnitTests.Distribution.Client.Init.FileCreators
312       UnitTests.Distribution.Client.InstallPlan
313       UnitTests.Distribution.Client.JobControl
314       UnitTests.Distribution.Client.ProjectConfig
315       UnitTests.Distribution.Client.ProjectPlanning
316       UnitTests.Distribution.Client.Store
317       UnitTests.Distribution.Client.Tar
318       UnitTests.Distribution.Client.Targets
319       UnitTests.Distribution.Client.TreeDiffInstances
320       UnitTests.Distribution.Client.UserConfig
321       UnitTests.Distribution.Solver.Modular.Builder
322       UnitTests.Distribution.Solver.Modular.RetryLog
323       UnitTests.Distribution.Solver.Modular.Solver
324       UnitTests.Distribution.Solver.Modular.DSL
325       UnitTests.Distribution.Solver.Modular.DSL.TestCaseUtils
326       UnitTests.Distribution.Solver.Modular.WeightedPSQ
327       UnitTests.Distribution.Solver.Types.OptionalStanza
328       UnitTests.Options
330     build-depends:
331           array,
332           bytestring,
333           cabal-install,
334           Cabal-tree-diff,
335           Cabal-QuickCheck,
336           Cabal-tests,
337           containers,
338           directory,
339           filepath,
340           mtl,
341           network-uri >= 2.6.2.0 && <2.7,
342           random,
343           tar,
344           time,
345           zlib,
346           tasty >= 1.2.3 && <1.6,
347           tasty-golden >=2.3.1.1 && <2.4,
348           tasty-quickcheck,
349           tasty-hunit >= 0.10,
350           tree-diff,
351           QuickCheck >= 2.14.3 && <2.15
354 -- Tests to run with a limited stack and heap size
355 -- The test suite name must be keep short cause a longer one
356 -- could make the build generating paths which exceeds the windows
357 -- max path limit (still a problem for some ghc versions)
358 test-suite mem-use-tests
359   import: warnings, base-dep, cabal-dep, cabal-syntax-dep, cabal-install-solver-dep
360   type: exitcode-stdio-1.0
361   main-is: MemoryUsageTests.hs
362   hs-source-dirs: tests
363   default-language: Haskell2010
365   ghc-options: -threaded -rtsopts "-with-rtsopts=-M16M -K1K"
367   other-modules:
368     UnitTests.Distribution.Solver.Modular.DSL
369     UnitTests.Distribution.Solver.Modular.DSL.TestCaseUtils
370     UnitTests.Distribution.Solver.Modular.MemoryUsage
371     UnitTests.Options
373   build-depends:
374         cabal-install,
375         containers,
376         tasty >= 1.2.3 && <1.6,
377         tasty-hunit >= 0.10
380 -- Integration tests that use the cabal-install code directly
381 -- but still build whole projects
382 test-suite integration-tests2
383   import: warnings, base-dep, cabal-dep, cabal-syntax-dep, cabal-install-solver-dep
384   ghc-options: -rtsopts -threaded
385   type: exitcode-stdio-1.0
386   main-is: IntegrationTests2.hs
387   hs-source-dirs: tests
388   default-language: Haskell2010
390   build-depends:
391         bytestring,
392         cabal-install,
393         containers,
394         directory,
395         filepath,
396         tasty >= 1.2.3 && <1.6,
397         tasty-hunit >= 0.10,
398         tagged
400 test-suite long-tests
401   import: warnings, base-dep, cabal-dep, cabal-syntax-dep, cabal-install-solver-dep
402   ghc-options: -rtsopts -threaded
403   type: exitcode-stdio-1.0
404   hs-source-dirs: tests
405   main-is: LongTests.hs
406   default-language: Haskell2010
408   other-modules:
409     UnitTests.Distribution.Client.ArbitraryInstances
410     UnitTests.Distribution.Client.Described
411     UnitTests.Distribution.Client.DescribedInstances
412     UnitTests.Distribution.Client.FileMonitor
413     UnitTests.Distribution.Client.VCS
414     UnitTests.Distribution.Solver.Modular.DSL
415     UnitTests.Distribution.Solver.Modular.QuickCheck
416     UnitTests.Distribution.Solver.Modular.QuickCheck.Utils
417     UnitTests.Options
419   build-depends:
420         Cabal-QuickCheck,
421         Cabal-described,
422         Cabal-tests,
423         cabal-install,
424         containers,
425         directory,
426         filepath,
427         hashable,
428         mtl,
429         network-uri >= 2.6.2.0 && <2.7,
430         random,
431         tagged,
432         tasty >= 1.2.3 && <1.6,
433         tasty-expected-failure,
434         tasty-hunit >= 0.10,
435         tasty-quickcheck,
436         QuickCheck >= 2.14 && <2.15,
437         pretty-show >= 1.6.15