move thirdparty program installation for standalone bundle into haskell program

This allows it to use Build.SysConfig to always install the programs
configure detected. Amoung other fixes, this ensures the right uuid
generator and checksum programs are installed.

I also cleaned up the handling of lsof's path; configure now checks for
it in PATH, but falls back to looking for it in sbin directories.
This commit is contained in:
Joey Hess 2012-12-14 15:52:44 -04:00
parent 1a10f109c1
commit 82617b92e9
7 changed files with 136 additions and 27 deletions

View file

@ -2,9 +2,14 @@
module Build.TestConfig where
import Utility.Path
import Utility.Monad
import System.IO
import System.Cmd
import System.Exit
import System.FilePath
import System.Directory
type ConfigKey = String
data ConfigValue =
@ -98,6 +103,23 @@ searchCmd success failure cmdsparams = search cmdsparams
then success c
else search cs
{- Finds a command, either in PATH or perhaps in a sbin directory not in
- PATH. If it's in PATH the config is set to just the command name,
- but if it's found outside PATH, the config is set to the full path to
- the command. -}
findCmdPath :: ConfigKey -> String -> Test
findCmdPath k command = do
ifM (inPath command)
( return $ Config k $ MaybeStringConfig $ Just command
, do
r <- getM find ["/usr/sbin", "/sbin", "/usr/local/sbin"]
return $ Config k $ MaybeStringConfig r
)
where
find d =
let f = d </> command
in ifM (doesFileExist f) ( return (Just f), return Nothing )
quiet :: String -> String
quiet s = s ++ " >/dev/null 2>&1"