summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-06-03 18:24:17 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-06-07 10:24:38 -0400
commit9bb58799d2ce58f6aef772df79ad26210403aded (patch)
tree1af932ec6a6d123018a4520db874efdfbba92857
parentda26ffe795f1861783c1b031ed93f9fa59550f85 (diff)
downloadhaskell-9bb58799d2ce58f6aef772df79ad26210403aded.tar.gz
Hadrian: Delete target symlink in createFileLinkUntracked
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 e8bf7933e8..a1386e68fc 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.