Skip to content

Commit a54f9d2

Browse files
committed
Get HPC working for cabal-install
* Strips away dogfooding framework and zinza templates * Splits out tests into targets by as a function of running time * Delete TESTING.md as it no longer applies * Bump cabal-install.cabal to its dev template settings (base >= 4.10, Cabal 2.2) * Remove Paths_cabal_install (blocks HPC generation) * Add `long-tests` target to split out unit-tests and long-running DVCS tests.
1 parent 54696c1 commit a54f9d2

File tree

11 files changed

+276
-1607
lines changed

11 files changed

+276
-1607
lines changed

cabal-install/TESTING.md

Lines changed: 0 additions & 24 deletions
This file was deleted.

cabal-install/cabal-install.cabal

Lines changed: 184 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
Cabal-Version: >= 1.10
2-
-- NOTE: This file is autogenerated from 'cabal-install.cabal.pp'.
3-
-- DO NOT EDIT MANUALLY.
4-
-- To update this file, edit 'cabal-install.cabal.pp' and run
5-
-- 'make cabal-install-prod' in the project's root folder.
1+
Cabal-Version: 2.2
2+
63
Name: cabal-install
74
Version: 3.5.0.0
85
Synopsis: The command-line interface for Cabal and Hackage.
@@ -12,68 +9,57 @@ Description:
129
and installation of Haskell libraries and programs.
1310
homepage: http://www.haskell.org/cabal/
1411
bug-reports: https://github.com/haskell/cabal/issues
15-
License: BSD3
12+
License: BSD-3-Clause
1613
License-File: LICENSE
1714
Author: Cabal Development Team (see AUTHORS file)
1815
Maintainer: Cabal Development Team <[email protected]>
1916
Copyright: 2003-2020, Cabal Development Team
2017
Category: Distribution
2118
Build-type: Simple
2219
Extra-Source-Files:
23-
README.md bash-completion/cabal changelog
20+
README.md
21+
bash-completion/cabal
22+
changelog
2423

2524
source-repository head
2625
type: git
2726
location: https://github.com/haskell/cabal/
2827
subdir: cabal-install
2928

3029
Flag native-dns
31-
description: Enable use of the [resolv](https://hackage.haskell.org/package/resolv) & [windns](https://hackage.haskell.org/package/windns) packages for performing DNS lookups
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
3233
default: True
3334
manual: True
3435

35-
Flag debug-expensive-assertions
36-
description: Enable expensive assertions for testing or debugging
37-
default: False
38-
manual: True
39-
40-
Flag debug-conflict-sets
41-
description: Add additional information to ConflictSets
42-
default: False
43-
manual: True
44-
45-
Flag debug-tracetree
46-
description: Compile in support for tracetree (used to debug the solver)
47-
default: False
48-
manual: True
49-
5036
Flag lukko
5137
description: Use @lukko@ for file-locking
5238
default: True
5339
manual: True
5440

55-
executable cabal
56-
main-is: Main.hs
57-
hs-source-dirs: main
58-
default-language: Haskell2010
59-
ghc-options: -Wall -fwarn-tabs -fwarn-incomplete-uni-patterns -fwarn-incomplete-record-updates
60-
if impl(ghc >= 8.0)
61-
ghc-options: -Wcompat
62-
-Wnoncanonical-monad-instances
63-
if impl(ghc < 8.8)
64-
ghc-options: -Wnoncanonical-monadfail-instances
41+
common warnings
42+
ghc-options: -Wall -Wcompat -Wnoncanonical-monad-instances
43+
if impl(ghc < 8.8)
44+
ghc-options: -Wnoncanonical-monadfail-instances
45+
if impl(ghc >=8.10)
46+
ghc-options: -Wunused-packages
6547

66-
if impl(ghc >=8.10)
67-
ghc-options: -Wunused-packages
48+
common base-dep
49+
build-depends: base >=4.10 && <4.16
6850

51+
common cabal-dep
52+
build-depends: Cabal ^>=3.5
6953

70-
ghc-options: -rtsopts -threaded
54+
common cabal-install-solver-dep
55+
build-depends: cabal-install-solver ^>=3.5
7156

72-
-- On AIX, some legacy BSD operations such as flock(2) are provided by libbsd.a
73-
if os(aix)
74-
extra-libraries: bsd
75-
hs-source-dirs: src
76-
other-modules:
57+
library
58+
import: warnings, base-dep, cabal-dep, cabal-install-solver-dep
59+
default-language: Haskell2010
60+
61+
hs-source-dirs: src
62+
exposed-modules:
7763
-- this modules are moved from Cabal
7864
-- they are needed for as long until cabal-install moves to parsec parser
7965
Distribution.Deprecated.ParseUtils
@@ -205,72 +191,12 @@ executable cabal
205191
Distribution.Client.Win32SelfUpgrade
206192
Distribution.Client.World
207193

208-
hs-source-dirs: cabal-install-solver/src-assertion
209-
other-modules:
210-
Distribution.Client.Utils.Assertion
211-
212-
hs-source-dirs: cabal-install-solver/src
213-
other-modules:
214-
Distribution.Solver.Compat.Prelude
215-
Distribution.Solver.Modular
216-
Distribution.Solver.Modular.Assignment
217-
Distribution.Solver.Modular.Builder
218-
Distribution.Solver.Modular.Configured
219-
Distribution.Solver.Modular.ConfiguredConversion
220-
Distribution.Solver.Modular.ConflictSet
221-
Distribution.Solver.Modular.Cycles
222-
Distribution.Solver.Modular.Dependency
223-
Distribution.Solver.Modular.Explore
224-
Distribution.Solver.Modular.Flag
225-
Distribution.Solver.Modular.Index
226-
Distribution.Solver.Modular.IndexConversion
227-
Distribution.Solver.Modular.LabeledGraph
228-
Distribution.Solver.Modular.Linking
229-
Distribution.Solver.Modular.Log
230-
Distribution.Solver.Modular.Message
231-
Distribution.Solver.Modular.PSQ
232-
Distribution.Solver.Modular.Package
233-
Distribution.Solver.Modular.Preference
234-
Distribution.Solver.Modular.RetryLog
235-
Distribution.Solver.Modular.Solver
236-
Distribution.Solver.Modular.Tree
237-
Distribution.Solver.Modular.Validate
238-
Distribution.Solver.Modular.Var
239-
Distribution.Solver.Modular.Version
240-
Distribution.Solver.Modular.WeightedPSQ
241-
Distribution.Solver.Types.ComponentDeps
242-
Distribution.Solver.Types.ConstraintSource
243-
Distribution.Solver.Types.DependencyResolver
244-
Distribution.Solver.Types.Flag
245-
Distribution.Solver.Types.InstSolverPackage
246-
Distribution.Solver.Types.InstalledPreference
247-
Distribution.Solver.Types.LabeledPackageConstraint
248-
Distribution.Solver.Types.OptionalStanza
249-
Distribution.Solver.Types.PackageConstraint
250-
Distribution.Solver.Types.PackageFixedDeps
251-
Distribution.Solver.Types.PackageIndex
252-
Distribution.Solver.Types.PackagePath
253-
Distribution.Solver.Types.PackagePreferences
254-
Distribution.Solver.Types.PkgConfigDb
255-
Distribution.Solver.Types.Progress
256-
Distribution.Solver.Types.ResolverPackage
257-
Distribution.Solver.Types.Settings
258-
Distribution.Solver.Types.SolverId
259-
Distribution.Solver.Types.SolverPackage
260-
Distribution.Solver.Types.SourcePackage
261-
Distribution.Solver.Types.Variable
262-
263-
other-modules:
264-
Paths_cabal_install
265-
266194
build-depends:
267195
async >= 2.0 && < 2.3,
268196
array >= 0.4 && < 0.6,
269-
base >= 4.8 && < 4.15,
270197
base16-bytestring >= 0.1.1 && < 1.1.0.0,
271198
binary >= 0.7.3 && < 0.9,
272199
bytestring >= 0.10.6.0 && < 0.12,
273-
Cabal == 3.5.*,
274200
containers >= 0.5.6.2 && < 0.7,
275201
cryptohash-sha256 >= 0.11 && < 0.12,
276202
deepseq >= 1.4.1.1 && < 1.5,
@@ -296,10 +222,6 @@ executable cabal
296222
regex-base >= 0.94.0.0 && <0.95,
297223
regex-posix >= 0.96.0.0 && <0.97
298224

299-
if !impl(ghc >= 8.0)
300-
build-depends: fail == 4.9.*
301-
build-depends: semigroups >= 0.18.3 && <0.20
302-
303225
if flag(native-dns)
304226
if os(windows)
305227
build-depends: windns >= 0.1.0 && < 0.2
@@ -314,16 +236,163 @@ executable cabal
314236

315237
if flag(lukko)
316238
build-depends: lukko >= 0.1 && <0.2
317-
else
318-
build-depends: base >= 4.10
319239

320-
if flag(debug-expensive-assertions)
321-
cpp-options: -DDEBUG_EXPENSIVE_ASSERTIONS
322240

323-
if flag(debug-conflict-sets)
324-
cpp-options: -DDEBUG_CONFLICT_SETS
325-
build-depends: base >= 4.8
241+
executable cabal
242+
import: warnings, base-dep, cabal-dep, cabal-install-solver-dep
243+
main-is: Main.hs
244+
hs-source-dirs: main
245+
default-language: Haskell2010
246+
247+
ghc-options: -rtsopts -threaded
248+
249+
-- On AIX, some legacy BSD operations such as flock(2) are provided by libbsd.a
250+
if os(aix)
251+
extra-libraries: bsd
252+
253+
build-depends:
254+
cabal-install,
255+
directory,
256+
filepath
257+
258+
-- Small, fast running tests.
259+
--
260+
Test-Suite unit-tests
261+
import: warnings, base-dep, cabal-dep, cabal-install-solver-dep
262+
default-language: Haskell2010
263+
ghc-options: -rtsopts -threaded
264+
265+
type: exitcode-stdio-1.0
266+
main-is: UnitTests.hs
267+
hs-source-dirs: tests
268+
other-modules:
269+
UnitTests.Distribution.Client.ArbitraryInstances
270+
UnitTests.Distribution.Client.BuildReport
271+
UnitTests.Distribution.Client.Targets
272+
UnitTests.Distribution.Client.Get
273+
UnitTests.Distribution.Client.Glob
274+
UnitTests.Distribution.Client.GZipUtils
275+
UnitTests.Distribution.Client.Init
276+
UnitTests.Distribution.Client.Store
277+
UnitTests.Distribution.Client.Tar
278+
UnitTests.Distribution.Client.TreeDiffInstances
279+
UnitTests.Distribution.Client.UserConfig
280+
UnitTests.Distribution.Client.ProjectConfig
281+
UnitTests.Distribution.Client.JobControl
282+
UnitTests.Distribution.Client.IndexUtils.Timestamp
283+
UnitTests.Distribution.Client.InstallPlan
284+
UnitTests.Distribution.Solver.Modular.Builder
285+
UnitTests.Distribution.Solver.Modular.RetryLog
286+
UnitTests.Distribution.Solver.Modular.Solver
287+
UnitTests.Distribution.Solver.Modular.DSL
288+
UnitTests.Distribution.Solver.Modular.DSL.TestCaseUtils
289+
UnitTests.Distribution.Solver.Modular.WeightedPSQ
290+
UnitTests.Distribution.Solver.Types.OptionalStanza
291+
UnitTests.Options
292+
UnitTests.TempTestDir
293+
294+
build-depends:
295+
array,
296+
bytestring,
297+
cabal-install,
298+
Cabal-tree-diff,
299+
Cabal-QuickCheck,
300+
containers,
301+
directory,
302+
filepath,
303+
mtl,
304+
network-uri >= 2.6.2.0 && <2.6.4.0,
305+
random,
306+
tar,
307+
time,
308+
zlib,
309+
tasty >= 1.2.3 && <1.4,
310+
tasty-golden >=2.3.1.1 && <2.4,
311+
tasty-quickcheck,
312+
tasty-hunit >= 0.10,
313+
tree-diff,
314+
QuickCheck >= 2.14 && <2.15
315+
316+
317+
-- Tests to run with a limited stack and heap size
318+
--
319+
Test-Suite memory-usage-tests
320+
import: warnings, base-dep, cabal-dep, cabal-install-solver-dep
321+
type: exitcode-stdio-1.0
322+
main-is: MemoryUsageTests.hs
323+
hs-source-dirs: tests
324+
default-language: Haskell2010
325+
326+
ghc-options: -threaded "-with-rtsopts=-M4M -K1K"
327+
328+
other-modules:
329+
UnitTests.Distribution.Solver.Modular.DSL
330+
UnitTests.Distribution.Solver.Modular.DSL.TestCaseUtils
331+
UnitTests.Distribution.Solver.Modular.MemoryUsage
332+
UnitTests.Options
333+
334+
build-depends:
335+
cabal-install,
336+
containers,
337+
tasty >= 1.2.3 && <1.4,
338+
tasty-hunit >= 0.10
339+
340+
341+
-- Integration tests that use the cabal-install code directly
342+
-- but still build whole projects
343+
test-suite integration-tests2
344+
import: warnings, base-dep, cabal-dep, cabal-install-solver-dep
345+
ghc-options: -rtsopts -threaded
346+
type: exitcode-stdio-1.0
347+
main-is: IntegrationTests2.hs
348+
hs-source-dirs: tests
349+
default-language: Haskell2010
350+
351+
build-depends:
352+
bytestring,
353+
cabal-install,
354+
containers,
355+
directory,
356+
filepath,
357+
tasty >= 1.2.3 && <1.4,
358+
tasty-hunit >= 0.10,
359+
tagged
360+
361+
test-suite long-tests
362+
import: warnings, base-dep, cabal-dep, cabal-install-solver-dep
363+
ghc-options: -rtsopts -threaded
364+
type: exitcode-stdio-1.0
365+
hs-source-dirs: tests
366+
main-is: LongTests.hs
367+
default-language: Haskell2010
368+
369+
other-modules:
370+
UnitTests.Distribution.Client.ArbitraryInstances
371+
UnitTests.Distribution.Client.Described
372+
UnitTests.Distribution.Client.DescribedInstances
373+
UnitTests.Distribution.Client.FileMonitor
374+
UnitTests.Distribution.Client.VCS
375+
UnitTests.Distribution.Solver.Modular.DSL
376+
UnitTests.Distribution.Solver.Modular.QuickCheck
377+
UnitTests.Distribution.Solver.Modular.QuickCheck.Utils
378+
UnitTests.Options
379+
UnitTests.TempTestDir
326380

327-
if flag(debug-tracetree)
328-
cpp-options: -DDEBUG_TRACETREE
329-
build-depends: tracetree >= 0.1 && < 0.2
381+
build-depends:
382+
Cabal-QuickCheck,
383+
Cabal-described,
384+
cabal-install,
385+
containers,
386+
deepseq >= 1.2,
387+
directory,
388+
filepath,
389+
hashable,
390+
mtl,
391+
network-uri >= 2.6.2.0 && <2.6.4.0,
392+
random,
393+
tagged,
394+
tasty >= 1.2.3 && <1.4,
395+
tasty-hunit >= 0.10,
396+
tasty-quickcheck,
397+
QuickCheck >= 2.14 && <2.15,
398+
pretty-show >= 1.6.15

0 commit comments

Comments
 (0)