@@ -103,34 +103,43 @@ discoverUpdates name vers = do
103103
104104updateNixPkgs :: [FilePath] -> Hackage4Nix ()
105105updateNixPkgs paths = do
106− msgDebug $ "updating = " ++ show paths
107− forM_ paths $ \fileOrDir ->
106+ -- Traverse the given directorcy structure and discover all available
107+ -- Haskell packages.
108+ forM_ paths $ \fileOrDir -> do
109+ msgDebug $ "scanning " ++ show fileOrDir
108110 flip discoverNixFiles fileOrDir $ \file -> do
109111 nix' <- io (readFile file) >>= parseNixFile file
110112 flip (maybe (return ())) nix' $ \nix -> do
111− let Pkg deriv path regenerate = nix
112− maints = maintainers (metaSection deriv)
113− plats = platforms (metaSection deriv)
114− hplats = hydraPlatforms (metaSection deriv)
115113 modify (Set.insert nix)
116− when regenerate $ do
117− msgDebug ("re-generate " ++ path)
118− pkg <- getCabalPackage (pname deriv) (version deriv)
119− let deriv' = (cabal2nix pkg) { sha256 = sha256 deriv
120− , runHaddock = runHaddock deriv
121− , doCheck = doCheck deriv
122− , jailbreak = jailbreak deriv
123− , hyperlinkSource = hyperlinkSource deriv
124− }
125− meta = metaSection deriv'
126− plats' = if null plats then platforms meta else plats
127− deriv'' = deriv' { metaSection = meta
128− { maintainers = maints -- ++ ["andres","simons"]
129− , platforms = plats'
130− , hydraPlatforms = hplats
131− }
132− }
133− io $ writeFile path (show (disp (normalize deriv'')))
114+ -- Re-generate all Haskell packgaes in-place (unless
115+ -- 'regenerateDerivation' decided that this particular package
116+ -- shouldn't be touched.
117+ get >>= \pkgset -> forM_ (Set.toList pkgset) $ \nix -> do
118+ let Pkg deriv path regenerate = nix
119+ maints = maintainers (metaSection deriv)
120+ plats = platforms (metaSection deriv)
121+ hplats = hydraPlatforms (metaSection deriv)
122+ when regenerate $ do
123+ msgDebug ("re-generate " ++ path)
124+ pkg <- getCabalPackage (pname deriv) (version deriv)
125+ let deriv' = (cabal2nix pkg) { sha256 = sha256 deriv
126+ , runHaddock = runHaddock deriv
127+ , doCheck = doCheck deriv
128+ , jailbreak = jailbreak deriv
129+ , hyperlinkSource = hyperlinkSource deriv
130+ }
131+ meta = metaSection deriv'
132+ plats' = if null plats then platforms meta else plats
133+ deriv'' = deriv' { metaSection = meta
134+ { maintainers = maints -- ++ ["andres","simons"]
135+ , platforms = plats'
136+ , hydraPlatforms = hplats
137+ }
138+ }
139+ io $ writeFile path (show (disp (normalize deriv'')))
140+ -- Discover available updates and print the appropriate cabal2nix
141+ -- command line to the console for the user to execute at his/her
142+ -- discretion.
134143 pkgset <- gets selectLatestVersions
135144 updates' <- forM (Set.elems pkgset) $ \pkg -> do
136145 let Pkg deriv _ _ = pkg