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