Skip to content

Commit 09cea16

Browse files
committed
hackage2nix: Always print extraVersions
1 parent 30d5c33 commit 09cea16

File tree

1 file changed

+19
-6
lines changed

1 file changed

+19
-6
lines changed

hackage2nix/Main.hs

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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,17 @@ 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 = if isInDefaultPackageSet then [ renderFromAttr attrDefault ] else []
181+
182+
resExtra :: [ String ]
183+
resExtra = if isInExtraPackageSet || (not isInDefaultPackageSet) then [ renderFromAttr attrExtra ] else []
184+
return $ resDefault ++ resExtra
172185

173186
return (intercalate "\n\n" defs)
174187

0 commit comments

Comments
 (0)