@@ -129,15 +129,16 @@ main = do
129129 globalPackageMaintainers = Map. unionsWith Set. union [ Map. singleton p (Set. singleton m) | (m,ps) <- Map. toList (packageMaintainers config), p <- Set. toList ps ]
130130
131131 pkgs <- runParIO $ flip parMapM (Map. toAscList db) $ \ (name, vs) -> do
132- defs <- forM (Set. toAscList vs) $ \ v -> liftIO $ do
132+ defs <- fmap concat . forM (Set. toAscList vs) $ \ v -> liftIO $ do
133133 let pkgId :: PackageIdentifier
134134 pkgId = PackageIdentifier name v
135135
136136 (descr, cabalSHA256) <- readPackage hackageRepository pkgId
137137 meta <- readPackageMeta hackageRepository pkgId
138138
139- let isInDefaultPackageSet, isHydraEnabled, isBroken :: Bool
139+ let isInDefaultPackageSet, isInExtraPackageSet, isHydraEnabled, isBroken :: Bool
140140 isInDefaultPackageSet = (== Just v) (Map. lookup name generatedDefaultPackageSet)
141+ isInExtraPackageSet = maybe False (Set. member v) (Map. lookup name extraPackageSet)
141142 isHydraEnabled = isInDefaultPackageSet && not (isBroken || name `Set.member` dontDistributePackages config)
142143 isBroken = any (withinRange v) [ vr | Dependency pn vr _ <- brokenPackages config, pn == name ]
143144
@@ -151,8 +152,11 @@ main = do
151152 flagAssignment :: FlagAssignment -- We don't use the flags from Stackage Nightly here, because
152153 flagAssignment = configureCabalFlags pkgId -- they are chosen specifically for GHC 7.10.2.
153154
154- attr :: String
155- attr = if isInDefaultPackageSet then unPackageName name else mangle pkgId
155+ attrDefault :: String
156+ attrDefault = unPackageName name
157+
158+ attrExtra :: String
159+ attrExtra = mangle pkgId
156160
157161 drv :: Derivation
158162 drv = fromGenericPackageDescription haskellResolver nixpkgsResolver targetPlatform (compilerInfo config) flagAssignment [] descr
@@ -167,8 +171,18 @@ main = do
167171
168172 overrides :: Doc
169173 overrides = fcat $ punctuate space [ pPrint b <> semi | b <- Set. toList (view (dependencies . each) drv `Set.union` view extraFunctionArgs drv), not (isFromHackage b) ]
170- return $ render $ nest 2 $
171- hang (doubleQuotes (text attr) <+> equals <+> text " callPackage" ) 2 (parens (pPrint drv)) <+> (braces overrides <> semi)
174+
175+ renderFromAttr :: String -> String
176+ renderFromAttr attr = render $ nest 2 $
177+ hang (doubleQuotes (text attr) <+> equals <+> text " callPackage" ) 2 (parens (pPrint drv)) <+> (braces overrides <> semi)
178+
179+ resDefault :: [ String ]
180+ resDefault = [ renderFromAttr attrDefault | isInDefaultPackageSet ]
181+
182+ resExtra :: [ String ]
183+ resExtra = [ renderFromAttr attrExtra | isInExtraPackageSet || not isInDefaultPackageSet ]
184+
185+ return $ resDefault ++ resExtra
172186
173187 return (intercalate " \n\n " defs)
174188
0 commit comments