summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-06-03 22:24:17 (GMT)
committerBen Gamari <ben@smart-cactus.org>2019-06-03 22:38:21 (GMT)
commit29478eb3b83b05420fa04a9324c6a0b9e0f85382 (patch)
treec729e4a16f9512eea9dc6b56c639a574c743e6de
parent799b1d26977b5841aa580e07c8f8e65356eed785 (diff)
downloadghc-wip/hadrian-delete-symlinks.zip
ghc-wip/hadrian-delete-symlinks.tar.gz
ghc-wip/hadrian-delete-symlinks.tar.bz2
Hadrian: Delete target symlink in createFileLinkUntrackedwip/hadrian-delete-symlinks
Previously createFileLinkUntracked would fail if the symlink already existed.
-rw-r--r--hadrian/src/Hadrian/Utilities.hs5
1 files changed, 4 insertions, 1 deletions
diff --git a/hadrian/src/Hadrian/Utilities.hs b/hadrian/src/Hadrian/Utilities.hs
index e8bf793..a1386e6 100644
--- a/hadrian/src/Hadrian/Utilities.hs
+++ b/hadrian/src/Hadrian/Utilities.hs
@@ -34,6 +34,7 @@ module Hadrian.Utilities (
Dynamic, fromDynamic, toDyn, TypeRep, typeOf
) where
+import Control.Applicative
import Control.Monad.Extra
import Data.Char
import Data.Dynamic (Dynamic, fromDynamic, toDyn)
@@ -296,7 +297,9 @@ createFileLinkUntracked linkTarget link = do
let dir = takeDirectory link
liftIO $ IO.createDirectoryIfMissing True dir
putProgressInfo =<< renderCreateFileLink linkTarget link
- quietly . liftIO $ IO.createFileLink linkTarget link
+ quietly . liftIO $ do
+ IO.removeFile link <|> return ()
+ IO.createFileLink linkTarget link
-- | Link a file tracking the link target. Create the target directory if
-- missing.