git.iko.soy/typeable/cabal2nix
on master help sign in
hackage2nix: properly enabled/disable builds in LTS package sets
commit9e3c3c3ac351c8369896b44000cc4b5c4c8fca9f authorPeter Simons <simons@cryp.to> dateTue 15 Sep 2015, 16:05 (11 years ago) parentab292f2
1 file changed+21−7
hackage2nix/src/Main.hs+21−7
hackage2nix/src/Main.hs+21−7
@@ -182,12 +182,18 @@ main = do
182182 hPutStrLn h "}"
183183
184184 void $ runParIO $ flip parMapM snapshots $ \Snapshot {..} -> liftIO $ do
185− let ltsConfigFile :: FilePath
185+ let allPackages :: PackageSet
186+ allPackages = Map.delete "Cabal" $ Map.delete "rts" $ Map.fromList
187+ [ (name, Stackage.version spec) | (PackageName name, spec) <- Map.toList packages ] `Map.union` generatedDefaultPackageSet
188+
189+ ltsConfigFile :: FilePath
186190 ltsConfigFile = nixpkgsRepository </> "pkgs/development/haskell-modules/configuration-" ++ show (pPrint snapshot) ++ ".nix"
187− putStrLn ("writing " ++ ltsConfigFile)
191+
188192 withFile ltsConfigFile WriteMode $ \h -> do
189193 hPutStrLn h "{ pkgs }:"
190194 hPutStrLn h ""
195+ hPutStrLn h "with import ./lib.nix { inherit pkgs; };"
196+ hPutStrLn h ""
191197 hPutStrLn h ("self: super: assert super.ghc.name == " ++ show (display compiler) ++ "; {")
192198 hPutStrLn h ""
193199 hPutStrLn h " # core libraries provided by the compiler"
@@ -195,11 +201,19 @@ main = do
195201 unless (n == "ghc") (hPutStrLn h (" " ++ n ++ " = null;"))
196202 hPutStrLn h ""
197203 hPutStrLn h (" # " ++ show (pPrint snapshot) ++ " packages")
198− forM_ (Map.toList packages) $ \(PackageName name, spec) -> do
199− let isInDefaultPackageSet :: Bool
200− isInDefaultPackageSet = maybe False (== Stackage.version spec) (Map.lookup name generatedDefaultPackageSet)
201− unless (isInDefaultPackageSet || name `elem` ["Cabal","rts"]) $
202− hPutStrLn h (" " ++ show name ++ " = super." ++ show (mangle (PackageIdentifier (PackageName name) (Stackage.version spec))) ++ ";")
204+ forM_ (Map.toList allPackages) $ \(name, v) -> do
205+ let pkgId = PackageIdentifier (PackageName name) v
206+
207+ isInDefaultPackageSet :: Bool
208+ isInDefaultPackageSet = maybe False (== v) (Map.lookup name generatedDefaultPackageSet)
209+
210+ isInStackage :: Bool
211+ isInStackage = isJust (Map.lookup (PackageName name) packages)
212+ case (isInStackage,isInDefaultPackageSet) of
213+ (True,True) -> return () -- build is visible and enabled
214+ (True,False) -> hPutStrLn h (" " ++ show name ++ " = doDistribute super." ++ show (mangle pkgId) ++ ";")
215+ (False,True) -> hPutStrLn h (" " ++ show name ++ " = dontDistribute super." ++ show name ++ ";")
216+ (False,False) -> fail ("logic error processing " ++ display pkgId ++ " in " ++ show (pPrint snapshot))
203217 hPutStrLn h ""
204218 hPutStrLn h "}"
205219