git.iko.soy/typeable/cabal2nix
on master help sign in
hackage4nix: disable Hydra builds for all "old" Haskell packages
e82ffbfPeter Simons
src/hackage4nix.hs+10−6
@@ -109,16 +109,21 @@ updateNixPkgs paths = do
109 msgDebug $ "scanning " ++ show fileOrDir
109 msgDebug $ "scanning " ++ show fileOrDir
110 flip discoverNixFiles fileOrDir $ \file -> do
110 flip discoverNixFiles fileOrDir $ \file -> do
111 nix' <- io (readFile file) >>= parseNixFile file
111 nix' <- io (readFile file) >>= parseNixFile file
112− flip (maybe (return ())) nix' $ \nix -> do
112+ flip (maybe (return ())) nix' $ \nix ->
113 modify (Set.insert nix)
113 modify (Set.insert nix)
114− -- Re-generate all Haskell packgaes in-place (unless
114+ -- Re-generate all Haskell packages in-place (unless
115 -- 'regenerateDerivation' decided that this particular package
115 -- 'regenerateDerivation' decided that this particular package
116 -- shouldn't be touched.
116 -- 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)
117 get >>= \pkgset -> forM_ (Set.toList pkgset) $ \nix -> do
122 get >>= \pkgset -> forM_ (Set.toList pkgset) $ \nix -> do
118 let Pkg deriv path regenerate = nix
123 let Pkg deriv path regenerate = nix
119 maints = maintainers (metaSection deriv)
124 maints = maintainers (metaSection deriv)
120 plats = platforms (metaSection deriv)
125 plats = platforms (metaSection deriv)
121− hplats = hydraPlatforms (metaSection deriv)
126+ hplats = if isLatest deriv then hydraPlatforms (metaSection deriv) else ["self.stdenv.lib.platforms.none"]
122 when regenerate $ do
127 when regenerate $ do
123 msgDebug ("re-generate " ++ path)
128 msgDebug ("re-generate " ++ path)
124 pkg <- getCabalPackage (pname deriv) (version deriv)
129 pkg <- getCabalPackage (pname deriv) (version deriv)
@@ -131,7 +136,7 @@ updateNixPkgs paths = do
131 meta = metaSection deriv'
136 meta = metaSection deriv'
132 plats' = if null plats then platforms meta else plats
137 plats' = if null plats then platforms meta else plats
133 deriv'' = deriv' { metaSection = meta
138 deriv'' = deriv' { metaSection = meta
134− { maintainers = maints -- ++ ["andres","simons"]
139+ { maintainers = maints
135 , platforms = plats'
140 , platforms = plats'
136 , hydraPlatforms = hplats
141 , hydraPlatforms = hplats
137 }
142 }
@@ -140,8 +145,7 @@ updateNixPkgs paths = do
140 -- Discover available updates and print the appropriate cabal2nix
145 -- Discover available updates and print the appropriate cabal2nix
141 -- command line to the console for the user to execute at his/her
146 -- command line to the console for the user to execute at his/her
142 -- discretion.
147 -- discretion.
143− pkgset <- gets selectLatestVersions
144− updates' <- forM (Set.elems pkgset) $ \pkg -> do
148+ updates' <- forM (Set.elems latestVersions) $ \pkg -> do
145 let Pkg deriv _ _ = pkg
149 let Pkg deriv _ _ = pkg
146 updates <- discoverUpdates (pname deriv) (version deriv)
150 updates <- discoverUpdates (pname deriv) (version deriv)
147 return (pkg,updates)
151 return (pkg,updates)