@@ -36,6 +36,7 @@ import General.Str
3636import Action.CmdLine
3737import General.Conduit
3838import Control.DeepSeq
39+ import Distribution.Package (mkPackageName , unPackageName )
3940
4041{-
4142
@@ -101,12 +102,12 @@ readHaskellOnline timing settings download = do
101102 hoogles <- download " haskell-hoogle.tar.gz" " https://hackage.haskell.org/packages/hoogle.tar.gz"
102103
103104 -- peakMegabytesAllocated = 2
104- setStackage <- Set. map strPack <$> (Set. union <$> setStackage stackageLts <*> setStackage stackageNightly)
105- setPlatform <- Set. map strPack <$> setPlatform platform
106- setGHC <- Set. map strPack <$> setGHC platform
105+ setStackage <- Set. map mkPackageName <$> (Set. union <$> setStackage stackageLts <*> setStackage stackageNightly)
106+ setPlatform <- Set. map mkPackageName <$> setPlatform platform
107+ setGHC <- Set. map mkPackageName <$> setGHC platform
107108
108109 cbl <- timed timing " Reading Cabal" $ parseCabalTarball settings cabals
109- let want = Set. insert (strPack " ghc" ) $ Set. unions [setStackage, setPlatform, setGHC]
110+ let want = Set. insert (mkPackageName " ghc" ) $ Set. unions [setStackage, setPlatform, setGHC]
110111 cbl <- pure $ flip Map. mapWithKey cbl $ \ name p ->
111112 p{packageTags =
112113 [(strPack " set" ,strPack " included-with-ghc" ) | name `Set.member` setGHC] ++
@@ -116,7 +117,7 @@ readHaskellOnline timing settings download = do
116117
117118 let source = do
118119 tar <- liftIO $ tarballReadFiles hoogles
119- forM_ tar $ \ (strPack . takeBaseName -> name, src) ->
120+ forM_ tar $ \ (mkPackageName . takeBaseName -> name, src) ->
120121 yield (name, hackagePackageURL name, src)
121122 pure (cbl, want, source)
122123
@@ -129,13 +130,13 @@ readHaskellDirs timing settings dirs = do
129130 -- We never distinguish on versions, so they are considered equal when reordering
130131 -- So put 2.0 first in the list and rely on stable sorting. A bit of a hack.
131132 let order a = second Down $ parseTrailingVersion a
132- let packages = map (strPack . takeBaseName &&& id ) $ sortOn (map order . splitDirectories) $ filter ((==) " .txt" . takeExtension) files
133+ let packages = map (mkPackageName . takeBaseName &&& id ) $ sortOn (map order . splitDirectories) $ filter ((==) " .txt" . takeExtension) files
133134 cabals <- mapM parseCabal $ filter ((==) " .cabal" . takeExtension) files
134135 let source = forM_ packages $ \ (name, file) -> do
135136 src <- liftIO $ bstrReadFile file
136137 dir <- liftIO $ canonicalizePath $ takeDirectory file
137138 let url = " file://" ++ [' /' | not $ " /" `isPrefixOf` dir] ++ replace " \\ " " /" dir ++ " /"
138- when (isJust $ bstrSplitInfix (bstrPack " @package " <> bstrPack (strUnpack name)) src) $
139+ when (isJust $ bstrSplitInfix (bstrPack " @package " <> bstrPack (unPackageName name)) src) $
139140 yield (name, url, lbstrFromChunks [src])
140141 pure (Map. union
141142 (Map. fromList cabals)
@@ -145,7 +146,7 @@ readHaskellDirs timing settings dirs = do
145146 parseCabal fp = do
146147 src <- bstrReadFile fp
147148 let pkg = readCabal settings src
148- pure (strPack $ takeBaseName fp, pkg)
149+ pure (mkPackageName $ takeBaseName fp, pkg)
149150
150151 generateBarePackage (name, file) =
151152 (name, mempty {packageTags = (strPack " set" , strPack " all" ) : sets})
@@ -158,16 +159,16 @@ readFregeOnline timing download = do
158159 frege <- download " frege-frege.txt" " http://try.frege-lang.org/hoogle-frege.txt"
159160 let source = do
160161 src <- liftIO $ bstrReadFile frege
161- yield (strPack " frege" , " http://google.com/" , lbstrFromChunks [src])
162- pure (Map. empty, Set. singleton $ strPack " frege" , source)
162+ yield (mkPackageName " frege" , " http://google.com/" , lbstrFromChunks [src])
163+ pure (Map. empty, Set. singleton $ mkPackageName " frege" , source)
163164
164165
165166readHaskellGhcpkg :: Timing -> Settings -> IO (Map. Map PkgName Package , Set. Set PkgName , ConduitT () (PkgName , URL , LBStr ) IO () )
166167readHaskellGhcpkg timing settings = do
167168 cbl <- timed timing " Reading ghc-pkg" $ readGhcPkg settings
168169 let source =
169170 forM_ (Map. toList cbl) $ \ (name,Package {.. }) -> whenJust packageDocs $ \ docs -> do
170- let file = docs </> strUnpack name <.> " txt"
171+ let file = docs </> unPackageName name <.> " txt"
171172 whenM (liftIO $ doesFileExist file) $ do
172173 src <- liftIO $ bstrReadFile file
173174 docs <- liftIO $ canonicalizePath docs
@@ -204,8 +205,8 @@ readHaskellHaddock timing settings docBaseDir = do
204205 cbl <- timed timing " Reading ghc-pkg" $ readGhcPkg settings
205206 let source =
206207 forM_ (Map. toList cbl) $ \ (name, p@ Package {.. }) -> do
207- let docs = docDir (strUnpack name) p
208- file = docBaseDir </> docs </> (strUnpack name) <.> " txt"
208+ let docs = docDir (unPackageName name) p
209+ file = docBaseDir </> docs </> unPackageName name <.> " txt"
209210 whenM (liftIO $ doesFileExist file) $ do
210211 src <- liftIO $ bstrReadFile file
211212 let url = [' /' | not $ all isPathSeparator $ take 1 docs] ++
@@ -250,7 +251,7 @@ actionGenerate g@Generate{..} = withTiming (if debug then Just $ replaceExtensio
250251 cbl <- evaluate $ Map. map (\ p -> p{packageDepends= [] }) cbl -- clear the memory, since the information is no longer used
251252 evaluate popularity
252253
253- want <- pure $ if include /= [] then Set. fromList $ map strPack include else want
254+ want <- pure $ if include /= [] then Set. fromList $ map mkPackageName include else want
254255 want <- pure $ case count of Nothing -> want; Just count -> Set. fromList $ take count $ Set. toList want
255256
256257 (stats, _) <- storeWriteFile database $ \ store -> do
@@ -263,7 +264,7 @@ actionGenerate g@Generate{..} = withTiming (if debug then Just $ replaceExtensio
263264 let warning msg = do modifyIORef itemWarn succ ; hPutStrLn warnings msg
264265
265266 let consume :: ConduitM (Int , (PkgName , URL , LBStr )) (Maybe Target , [Item ]) IO ()
266- consume = awaitForever $ \ (i, (strUnpack -> pkg, url, body)) -> do
267+ consume = awaitForever $ \ (i, (unPackageName -> pkg, url, body)) -> do
267268 timedOverwrite timing (" [" ++ show i ++ " /" ++ show (Set. size want) ++ " ] " ++ pkg) $
268269 parseHoogle (\ msg -> warning $ pkg ++ " :" ++ msg) url body
269270
@@ -273,12 +274,12 @@ actionGenerate g@Generate{..} = withTiming (if debug then Just $ replaceExtensio
273274 filterC (flip Set. member want . fst3) .|
274275 void ((|$|)
275276 (zipFromC 1 .| consume)
276- (do seen <- fmap Set. fromList $ mapMC (evaluate . force . strCopy . fst3) .| sinkList
277+ (do seen <- fmap Set. fromList $ mapMC (evaluate . force . fst3) .| sinkList
277278 let missing = [x | x <- Set. toList $ want `Set.difference` seen
278279 , fmap packageLibrary (Map. lookup x cbl) /= Just False ]
279280 liftIO $ putStrLn " "
280281 liftIO $ whenNormal $ when (missing /= [] ) $ do
281- putStrLn $ " Packages missing documentation: " ++ unwords (sortOn lower $ map strUnpack missing)
282+ putStrLn $ " Packages missing documentation: " ++ unwords (sortOn lower $ map unPackageName missing)
282283 liftIO $ when (Set. null seen) $
283284 exitFail " No packages were found, aborting (use no arguments to index all of Stackage)"
284285 -- synthesise things for Cabal packages that are not documented
0 commit comments