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