on master help sign in
Delete libraries when unregistering
eef9c14Michael Snoyman
Stackage/GhcPkg.hs+11
@@ -85,9 +85,20 @@ unregisterPackage :: (ByteString -> IO ()) -- ^ log func
85unregisterPackage log' onUnregister docDir flags ident@(PackageIdentifier name _) = do
85unregisterPackage log' onUnregister docDir flags ident@(PackageIdentifier name _) = do
86 log' $ "Unregistering " ++ encodeUtf8 (display ident) ++ "\n"
86 log' $ "Unregistering " ++ encodeUtf8 (display ident) ++ "\n"
87 onUnregister ident
87 onUnregister ident
88+
89+ -- Delete libraries
90+ sourceProcessWithConsumer
91+ (proc "ghc-pkg" ("describe" : flags ++ [unpack $ display ident]))
92+ (CT.decodeUtf8
93+ $= CT.lines
94+ $= CL.mapMaybe parseLibraryDir
95+ $= CL.mapM_ (void . tryIO . removeTree))
96+
88 void (readProcessWithExitCode
97 void (readProcessWithExitCode
89 "ghc-pkg"
98 "ghc-pkg"
90 ("unregister": flags ++ ["--force", unpack $ display name])
99 ("unregister": flags ++ ["--force", unpack $ display name])
91 "")
100 "")
92
101
93 void $ tryIO $ removeTree $ docDir </> fpFromText (display ident)
102 void $ tryIO $ removeTree $ docDir </> fpFromText (display ident)
103+ where
104+ parseLibraryDir = fmap fpFromText . stripPrefix "library-dirs: "