diff --git a/hadrian/src/Hadrian/Utilities.hs b/hadrian/src/Hadrian/Utilities.hs index 77b03f8e85f9a476572cf9fc697eea8051ca4a84..7d901c460233c4081260645f906ae00bff5a181d 100644 --- a/hadrian/src/Hadrian/Utilities.hs +++ b/hadrian/src/Hadrian/Utilities.hs @@ -19,6 +19,7 @@ module Hadrian.Utilities ( copyFile, copyFileUntracked, createFileLink, fixFile, makeExecutable, moveFile, removeFile, createDirectory, copyDirectory, moveDirectory, removeDirectory, removeFile_, writeFileChangedBS, + findExecutable, -- * Diagnostic info Colour (..), ANSIColour (..), putColoured, shouldUseColor, @@ -668,3 +669,7 @@ renderUnicorn ls = ponyPadding = " " boxLines :: [String] boxLines = ["", "", ""] ++ (lines . renderBox $ ls) + +-- Workaround for https://github.com/haskell/directory/issues/180 +findExecutable :: String -> IO (Maybe FilePath) +findExecutable exe = IO.catch (IO.findExecutable exe) $ \(_ :: IO.IOException) -> pure Nothing diff --git a/hadrian/src/Rules/Docspec.hs b/hadrian/src/Rules/Docspec.hs index 30f6a039eb7b2246990417bad0c26a77ef946e2e..8b07ffe80cabc78c7bf9437a88c70544c523e775 100644 --- a/hadrian/src/Rules/Docspec.hs +++ b/hadrian/src/Rules/Docspec.hs @@ -2,8 +2,6 @@ module Rules.Docspec ( docspecRules ) where -import System.Directory (findExecutable) - import Base import Context.Path import Settings.Builders.Common diff --git a/hadrian/src/Rules/Lint.hs b/hadrian/src/Rules/Lint.hs index 03fada799a72d7c2722327d5ff8ee5867880c612..0a3cc010d86dcf71c11e4e43a271d0e18e71421e 100644 --- a/hadrian/src/Rules/Lint.hs +++ b/hadrian/src/Rules/Lint.hs @@ -4,7 +4,6 @@ module Rules.Lint import Base import Settings.Builders.Common -import System.Directory (findExecutable) import System.Exit (exitFailure) lintRules :: Rules () diff --git a/hadrian/src/Settings/Builders/RunTest.hs b/hadrian/src/Settings/Builders/RunTest.hs index c0e7724c9de1f3fcfa9f91ebf2437b15ffb4424d..b2828651ba55dc40c9090e2cb2cec7db2d163d33 100644 --- a/hadrian/src/Settings/Builders/RunTest.hs +++ b/hadrian/src/Settings/Builders/RunTest.hs @@ -16,7 +16,6 @@ import Settings.Builders.Common import qualified Data.Set as Set import Flavour import qualified Context.Type as C -import System.Directory (findExecutable) import Settings.Program import qualified Context.Type