git.iko.soy/typeable/cabal2nix
on master help sign in
hackage2nix: add auto-jailbreaking and stop hard-coding configureFlags

Configure flags are no longer listed specified in the generated expression unless they're explicitly specified in the Cabal2Nix.Flags module. Furthermore, any package that finalizePackageDescription reports as having unsatisfied dependencies in the generated package set gets an automatic jailbreak. Combined, these two changes fixed 806 builds and broke none.

commit2a1a10f38f21f27e6555b399db131380af1cf7ff authorPeter Simons <simons@cryp.to> dateWed 14 Jan 2015, 17:45 (12 years ago) parent02b880d
1 file changed+3−2
src/hackage2nix.hs+3−2
src/hackage2nix.hs+3−2
@@ -104,9 +104,10 @@ generatePackageSet hackage nixpkgs = do
104104
105105 -- TODO: Include list of broken dependencies in the generated output.
106106 descr = hackage Map.! name Map.! version
107− (_, _, drv') = cabal2nix resolver descr
107+ (missingDeps, _, drv') = cabal2nix resolver descr
108108 drv = drv' { src = srcSpec, editedCabalFile = if revision drv == 0 then "" else cabalFileHash
109109 , metaSection = (metaSection drv') { broken = not (Set.null missing) } -- Missing Haskell dependencies!
110+ , jailbreak = not (null missingDeps) -- Dependency constraints aren't fulfilled
110111 }
111112
112113 missing :: Set String
@@ -178,7 +179,7 @@ extraPackages =
178179cabal2nix :: (Dependency -> Bool) -> GenericPackageDescription -> ([Dependency], FlagAssignment, Derivation)
179180cabal2nix resolver cabal = (missingDeps, flags, drv)
180181 where
181− drv = (cabal2nix' descr) { configureFlags = [ "-f" ++ (if b then "" else "-") ++ n | (FlagName n, b) <- flags ] }
182+ drv = (cabal2nix' descr) -- { configureFlags = [ "-f" ++ (if b then "" else "-") ++ n | (FlagName n, b) <- flags ] }
182183
183184 Right (descr, flags) = finalize (if null missingDeps then resolver else const True) cabal
184185