git.iko.soy/typeable/cabal2nix
on master help sign in
FromCabal: prefer the PackageDescription generated by the jailbroken resolver
1f64f27Peter Simons
distribution-nixpkgs/src/Distribution/Nixpkgs/Haskell/FromCabal.hs+13−10
@@ -35,16 +35,19 @@ type NixpkgsResolver = Identifier -> Maybe Binding
35
35
36fromGenericPackageDescription :: HaskellResolver -> NixpkgsResolver -> Platform -> CompilerInfo -> FlagAssignment -> [Constraint] -> GenericPackageDescription -> Derivation
36fromGenericPackageDescription :: HaskellResolver -> NixpkgsResolver -> Platform -> CompilerInfo -> FlagAssignment -> [Constraint] -> GenericPackageDescription -> Derivation
37fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flags constraints descr'' =
37fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flags constraints descr'' =
38+ -- TODO: This logic needs simplification and cleanup. :-(
38 case finalize haskellResolver of
39 case finalize haskellResolver of
39− Left mismatch -> case finalize jailbrokenResolver of
40+ Left _ -> case finalize jailbrokenResolver of
40− Left missing -> case finalize (const True) of
41+ Left missing -> case finalize (const True) of
41− Left missing' -> error $ "finalizePackageDescription complains about missing dependencies \
42+ Left missing' -> error $ "finalizePackageDescription complains about missing dependencies \
42− \even though we told it that everything exists: " ++ show missing'
43+ \even though we told it that everything exists: " ++ show missing'
43− Right (descr,_) -> fromPackageDescription haskellResolver nixpkgsResolver mismatch missing flags descr
44+ Right (descr_,_) -> fromPackageDescription haskellResolver nixpkgsResolver True missing flags descr_
44− Right (descr,_) -> fromPackageDescription haskellResolver nixpkgsResolver mismatch [] flags descr
45+ Right _ -> fromPackageDescription haskellResolver nixpkgsResolver True [] flags descr
45− Right (descr,_) -> fromPackageDescription haskellResolver nixpkgsResolver [] [] flags descr
46+ Right _ -> fromPackageDescription haskellResolver nixpkgsResolver False [] flags descr
46−
47 where
47 where
48+ descr :: PackageDescription
49+ Right (descr,_) = finalize jailbrokenResolver
50+
48 -- We have to call the Cabal finalizer several times with different resolver functions, and this
51 -- We have to call the Cabal finalizer several times with different resolver functions, and this
49 -- convenience function makes our code shorter.
52 -- convenience function makes our code shorter.
50 finalize :: HaskellResolver -> Either [Dependency] (PackageDescription,FlagAssignment)
53 finalize :: HaskellResolver -> Either [Dependency] (PackageDescription,FlagAssignment)
@@ -64,7 +67,7 @@ fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flag
64 enableTest :: TestSuite -> TestSuite
67 enableTest :: TestSuite -> TestSuite
65 enableTest t = t { testEnabled = True }
68 enableTest t = t { testEnabled = True }
66
69
67−fromPackageDescription :: HaskellResolver -> NixpkgsResolver -> [Dependency] -> [Dependency] -> FlagAssignment -> PackageDescription -> Derivation
70+fromPackageDescription :: HaskellResolver -> NixpkgsResolver -> Bool -> [Dependency] -> FlagAssignment -> PackageDescription -> Derivation
68fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDeps flags (PackageDescription {..}) = normalize $ postProcess $ nullDerivation
71fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDeps flags (PackageDescription {..}) = normalize $ postProcess $ nullDerivation
69 & isLibrary .~ isJust library
72 & isLibrary .~ isJust library
70 & pkgid .~ package
73 & pkgid .~ package
@@ -79,7 +82,7 @@ fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDep
79 & configureFlags .~ mempty
82 & configureFlags .~ mempty
80 & cabalFlags .~ flags
83 & cabalFlags .~ flags
81 & runHaddock .~ maybe True (not . null . exposedModules) library
84 & runHaddock .~ maybe True (not . null . exposedModules) library
82− & jailbreak .~ not (null mismatchedDeps && null missingDeps)
85+ & jailbreak .~ (mismatchedDeps || not (null missingDeps))
83 & doCheck .~ True
86 & doCheck .~ True
84 & testTarget .~ mempty
87 & testTarget .~ mempty
85 & hyperlinkSource .~ True
88 & hyperlinkSource .~ True