git.iko.soy/typeable/cabal2nix
on master help sign in
hackage4nix: disable Hydra builds for all "old" Haskell packages

Old means that we have a newer version in Nixpkgs already. If there is a reason for the old package to still exist, i.e. because some other package is still referring to it, then Hydra will still build the package as a dependency, but we won't want to build old packages on their own right.

commite82ffbf303150c9121c426f6ff4c9d8fe41470dc authorPeter Simons <simons@cryp.to> dateSat 9 Aug 2014, 12:42 (12 years ago) parent62a2c9f
1 file changed+10−6
src/hackage4nix.hs+10−6
src/hackage4nix.hs+10−6
@@ -109,16 +109,21 @@ updateNixPkgs paths = do
109109 msgDebug $ "scanning " ++ show fileOrDir
110110 flip discoverNixFiles fileOrDir $ \file -> do
111111 nix' <- io (readFile file) >>= parseNixFile file
112− flip (maybe (return ())) nix' $ \nix -> do
112+ flip (maybe (return ())) nix' $ \nix ->
113113 modify (Set.insert nix)
114− -- Re-generate all Haskell packgaes in-place (unless
114+ -- Re-generate all Haskell packages in-place (unless
115115 -- 'regenerateDerivation' decided that this particular package
116116 -- shouldn't be touched.
117+ latestVersions <- gets selectLatestVersions
118+ let latestVersionMap :: [(String,Version)]
119+ latestVersionMap = [ (pname deriv, version deriv) | Pkg deriv _ _ <- Set.toList latestVersions ]
120+ let isLatest :: Derivation -> Bool
121+ isLatest deriv = maybe False (version deriv ==) (lookup (pname deriv) latestVersionMap)
117122 get >>= \pkgset -> forM_ (Set.toList pkgset) $ \nix -> do
118123 let Pkg deriv path regenerate = nix
119124 maints = maintainers (metaSection deriv)
120125 plats = platforms (metaSection deriv)
121− hplats = hydraPlatforms (metaSection deriv)
126+ hplats = if isLatest deriv then hydraPlatforms (metaSection deriv) else ["self.stdenv.lib.platforms.none"]
122127 when regenerate $ do
123128 msgDebug ("re-generate " ++ path)
124129 pkg <- getCabalPackage (pname deriv) (version deriv)
@@ -131,7 +136,7 @@ updateNixPkgs paths = do
131136 meta = metaSection deriv'
132137 plats' = if null plats then platforms meta else plats
133138 deriv'' = deriv' { metaSection = meta
134− { maintainers = maints -- ++ ["andres","simons"]
139+ { maintainers = maints
135140 , platforms = plats'
136141 , hydraPlatforms = hplats
137142 }
@@ -140,8 +145,7 @@ updateNixPkgs paths = do
140145 -- Discover available updates and print the appropriate cabal2nix
141146 -- command line to the console for the user to execute at his/her
142147 -- discretion.
143− pkgset <- gets selectLatestVersions
144− updates' <- forM (Set.elems pkgset) $ \pkg -> do
148+ updates' <- forM (Set.elems latestVersions) $ \pkg -> do
145149 let Pkg deriv _ _ = pkg
146150 updates <- discoverUpdates (pname deriv) (version deriv)
147151 return (pkg,updates)