@@ -35,16 +35,19 @@ type NixpkgsResolver = Identifier -> Maybe Binding
3535
3636fromGenericPackageDescription :: HaskellResolver -> NixpkgsResolver -> Platform -> CompilerInfo -> FlagAssignment -> [Constraint] -> GenericPackageDescription -> Derivation
3737fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flags constraints descr'' =
38+ -- TODO: This logic needs simplification and cleanup. :-(
3839 case finalize haskellResolver of
39− Left mismatch -> case finalize jailbrokenResolver of
40− Left missing -> case finalize (const True) of
41− Left missing' -> error $ "finalizePackageDescription complains about missing dependencies \
42− \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 mismatch [] flags descr
45− Right (descr,_) -> fromPackageDescription haskellResolver nixpkgsResolver [] [] flags descr
46−
40+ Left _ -> case finalize jailbrokenResolver of
41+ Left missing -> case finalize (const True) of
42+ Left missing' -> error $ "finalizePackageDescription complains about missing dependencies \
43+ \even though we told it that everything exists: " ++ show missing'
44+ Right (descr_,_) -> fromPackageDescription haskellResolver nixpkgsResolver True missing flags descr_
45+ Right _ -> fromPackageDescription haskellResolver nixpkgsResolver True [] flags descr
46+ Right _ -> fromPackageDescription haskellResolver nixpkgsResolver False [] flags descr
4747 where
48+ descr :: PackageDescription
49+ Right (descr,_) = finalize jailbrokenResolver
50+
4851 -- We have to call the Cabal finalizer several times with different resolver functions, and this
4952 -- convenience function makes our code shorter.
5053 finalize :: HaskellResolver -> Either [Dependency] (PackageDescription,FlagAssignment)
@@ -64,7 +67,7 @@ fromGenericPackageDescription haskellResolver nixpkgsResolver arch compiler flag
6467 enableTest :: TestSuite -> TestSuite
6568 enableTest t = t { testEnabled = True }
6669
67−fromPackageDescription :: HaskellResolver -> NixpkgsResolver -> [Dependency] -> [Dependency] -> FlagAssignment -> PackageDescription -> Derivation
70+fromPackageDescription :: HaskellResolver -> NixpkgsResolver -> Bool -> [Dependency] -> FlagAssignment -> PackageDescription -> Derivation
6871fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDeps flags (PackageDescription {..}) = normalize $ postProcess $ nullDerivation
6972 & isLibrary .~ isJust library
7073 & pkgid .~ package
@@ -79,7 +82,7 @@ fromPackageDescription haskellResolver nixpkgsResolver mismatchedDeps missingDep
7982 & configureFlags .~ mempty
8083 & cabalFlags .~ flags
8184 & runHaddock .~ maybe True (not . null . exposedModules) library
82− & jailbreak .~ not (null mismatchedDeps && null missingDeps)
85+ & jailbreak .~ (mismatchedDeps || not (null missingDeps))
8386 & doCheck .~ True
8487 & testTarget .~ mempty
8588 & hyperlinkSource .~ True