git.iko.soy/typeable/cabal2nix
on master help sign in
Enable benchmarks during Cabal post-processing.

This is necessary to detect any potentially missing Haskell dependencies of the benchmark suite. Note that we can, in theory, compile the package itself with benchmarks disabled, but in practice the generated Nix expression is invalid because it expects function arguments that the Haskell package set does not provide.

commitbf8a622b7ce2c714cf82fd70c33721a10eac3ae3 authorPeter Simons <simons@cryp.to> dateThu 2 Mar 2017, 09:15 (10 years ago) parent2e065b4
1 file changed+10−1
src/Distribution/Nixpkgs/Haskell/FromCabal.hs+10−1
src/Distribution/Nixpkgs/Haskell/FromCabal.hs+10−1
@@ -40,7 +40,7 @@ fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flag
4040 -- We have to call the Cabal finalizer several times with different resolver
4141 -- functions, and this convenience function makes our code shorter.
4242 finalize :: HaskellResolver -> Either [Dependency] (PackageDescription,FlagAssignment)
43− finalize resolver = finalizePackageDescription flags resolver arch compiler constraints (enableTests genDesc)
43+ finalize resolver = finalizePackageDescription flags resolver arch compiler constraints (enableBenchmarks (enableTests genDesc))
4444
4545 descr :: PackageDescription; missingDeps :: [Dependency]
4646 (descr,missingDeps) = case finalize jailbrokenResolver of
@@ -132,3 +132,12 @@ enableTests gd = gd { condTestSuites = flaggedTests }
132132
133133 enableTest :: TestSuite -> TestSuite
134134 enableTest t = t { testEnabled = True }
135+
136+enableBenchmarks :: GenericPackageDescription -> GenericPackageDescription
137+enableBenchmarks gd = gd { condBenchmarks = flaggedBenchmarks }
138+ where
139+ flaggedBenchmarks :: [(String, CondTree ConfVar [Dependency] Benchmark)]
140+ flaggedBenchmarks = map (second (mapTreeData enableBenchmark)) (condBenchmarks gd)
141+
142+ enableBenchmark :: Benchmark -> Benchmark
143+ enableBenchmark t = t { benchmarkEnabled = True }