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