on master help sign in
Delete previous results when unregistering
8f74bbeMichael Snoyman
Stackage/GhcPkg.hs+7−4
@@ -28,15 +28,16 @@ setupPackageDatabase
28 -> FilePath -- ^ documentation root
28 -> FilePath -- ^ documentation root
29 -> (ByteString -> IO ()) -- ^ logging
29 -> (ByteString -> IO ()) -- ^ logging
30 -> Map PackageName Version -- ^ packages and versions to be installed
30 -> Map PackageName Version -- ^ packages and versions to be installed
31+ -> (PackageIdentifier -> IO ()) -- ^ callback to be used when unregistering a package
31 -> IO (Set PackageName) -- ^ packages remaining in the database after cleanup
32 -> IO (Set PackageName) -- ^ packages remaining in the database after cleanup
32−setupPackageDatabase mdb docDir log' toInstall = do
33+setupPackageDatabase mdb docDir log' toInstall onUnregister = do
33 registered1 <- getRegisteredPackages flags
34 registered1 <- getRegisteredPackages flags
34 forM_ registered1 $ \pi@(PackageIdentifier name version) ->
35 forM_ registered1 $ \pi@(PackageIdentifier name version) ->
35 case lookup name toInstall of
36 case lookup name toInstall of
36− Just version' | version /= version' -> unregisterPackage log' docDir flags pi
37+ Just version' | version /= version' -> unregisterPackage log' onUnregister docDir flags pi
37 _ -> return ()
38 _ -> return ()
38 broken <- getBrokenPackages flags
39 broken <- getBrokenPackages flags
39− forM_ broken $ unregisterPackage log' docDir flags
40+ forM_ broken $ unregisterPackage log' onUnregister docDir flags
40 foldMap (\(PackageIdentifier name _) -> singletonSet name)
41 foldMap (\(PackageIdentifier name _) -> singletonSet name)
41 <$> getRegisteredPackages flags
42 <$> getRegisteredPackages flags
42 where
43 where
@@ -78,10 +79,12 @@ parsePackageIdent = fmap fst .
78
79
79-- | Unregister a package.
80-- | Unregister a package.
80unregisterPackage :: (ByteString -> IO ()) -- ^ log func
81unregisterPackage :: (ByteString -> IO ()) -- ^ log func
82+ -> (PackageIdentifier -> IO ()) -- ^ callback to be used when unregistering a package
81 -> FilePath -- ^ doc directory
83 -> FilePath -- ^ doc directory
82 -> [String] -> PackageIdentifier -> IO ()
84 -> [String] -> PackageIdentifier -> IO ()
83−unregisterPackage log' docDir flags ident@(PackageIdentifier name _) = do
85+unregisterPackage log' onUnregister docDir flags ident@(PackageIdentifier name _) = do
84 log' $ "Unregistering " ++ encodeUtf8 (display ident) ++ "\n"
86 log' $ "Unregistering " ++ encodeUtf8 (display ident) ++ "\n"
87+ onUnregister ident
85 void (readProcessWithExitCode
88 void (readProcessWithExitCode
86 "ghc-pkg"
89 "ghc-pkg"
87 ("unregister": flags ++ ["--force", unpack $ display name])
90 ("unregister": flags ++ ["--force", unpack $ display name])
Stackage/PerformBuild.hs+1
@@ -198,6 +198,7 @@ performBuild' pb@PerformBuild {..} = withBuildDir $ \builddir -> do
198 (pbDocDir pb)
198 (pbDocDir pb)
199 pbLog
199 pbLog
200 (ppVersion <$> bpPackages pbPlan)
200 (ppVersion <$> bpPackages pbPlan)
201+ (deletePreviousResults pb)
201
202
202 forM_ packageMap $ \pi -> void $ async $ singleBuild pb registeredPackages
203 forM_ packageMap $ \pi -> void $ async $ singleBuild pb registeredPackages
203 SingleBuild
204 SingleBuild