Skip to content

Commit c10974d

Browse files
authored
Merge pull request #5602 from fgaz/new-install/warn-symlink
Warn when failing to symlink an exe in new-install This provides a partial fix/improvement to #5491
2 parents 6ef2523 + 1379f54 commit c10974d

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

cabal-install/Distribution/Client/CmdInstall.hs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,8 @@ import Distribution.Utils.Generic
107107
( writeFileAtomic )
108108
import Distribution.Text
109109
( simpleParse )
110+
import Distribution.Pretty
111+
( prettyShow )
110112

111113
import Control.Exception
112114
( catch )
@@ -586,16 +588,21 @@ symlinkBuiltPackage :: Verbosity
586588
, [(ComponentTarget, [TargetSelector])] )
587589
-> IO ()
588590
symlinkBuiltPackage verbosity mkSourceBinDir destDir (pkg, components) =
589-
traverse_ (symlinkBuiltExe verbosity (mkSourceBinDir pkg) destDir) exes
591+
traverse_ symlinkAndWarn exes
590592
where
591593
exes = catMaybes $ (exeMaybe . fst) <$> components
592594
exeMaybe (ComponentTarget (CExeName exe) _) = Just exe
593595
exeMaybe _ = Nothing
596+
symlinkAndWarn exe = do
597+
success <- symlinkBuiltExe verbosity (mkSourceBinDir pkg) destDir exe
598+
unless success $ warn verbosity $ "Symlink for "
599+
<> prettyShow exe
600+
<> " already exists. Not overwriting."
594601

595602
-- | Symlink a specific exe.
596603
symlinkBuiltExe :: Verbosity -> FilePath -> FilePath -> UnqualComponentName -> IO Bool
597604
symlinkBuiltExe verbosity sourceDir destDir exe = do
598-
notice verbosity $ "Symlinking " ++ unUnqualComponentName exe
605+
notice verbosity $ "Symlinking " ++ prettyShow exe
599606
symlinkBinary
600607
destDir
601608
sourceDir

0 commit comments

Comments
 (0)