@@ -129,15 +129,16 @@ main = do
129
129
globalPackageMaintainers = Map. unionsWith Set. union [ Map. singleton p (Set. singleton m) | (m,ps) <- Map. toList (packageMaintainers config), p <- Set. toList ps ]
130
130
131
131
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
133
133
let pkgId :: PackageIdentifier
134
134
pkgId = PackageIdentifier name v
135
135
136
136
(descr, cabalSHA256) <- readPackage hackageRepository pkgId
137
137
meta <- readPackageMeta hackageRepository pkgId
138
138
139
- let isInDefaultPackageSet, isHydraEnabled, isBroken :: Bool
139
+ let isInDefaultPackageSet, isInExtraPackageSet, isHydraEnabled, isBroken :: Bool
140
140
isInDefaultPackageSet = (== Just v) (Map. lookup name generatedDefaultPackageSet)
141
+ isInExtraPackageSet = maybe False (Set. member v) (Map. lookup name extraPackageSet)
141
142
isHydraEnabled = isInDefaultPackageSet && not (isBroken || name `Set.member` dontDistributePackages config)
142
143
isBroken = any (withinRange v) [ vr | Dependency pn vr _ <- brokenPackages config, pn == name ]
143
144
@@ -151,8 +152,11 @@ main = do
151
152
flagAssignment :: FlagAssignment -- We don't use the flags from Stackage Nightly here, because
152
153
flagAssignment = configureCabalFlags pkgId -- they are chosen specifically for GHC 7.10.2.
153
154
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
156
160
157
161
drv :: Derivation
158
162
drv = fromGenericPackageDescription haskellResolver nixpkgsResolver targetPlatform (compilerInfo config) flagAssignment [] descr
@@ -167,8 +171,17 @@ main = do
167
171
168
172
overrides :: Doc
169
173
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 = if isInDefaultPackageSet then [ renderFromAttr attrDefault ] else []
181
+
182
+ resExtra :: [ String ]
183
+ resExtra = if isInExtraPackageSet || (not isInDefaultPackageSet) then [ renderFromAttr attrExtra ] else []
184
+ return $ resDefault ++ resExtra
172
185
173
186
return (intercalate " \n\n " defs)
174
187
0 commit comments