From 0052cec2b7e39652bd52cd4978ed47d2daa5af68 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 15 Jun 2012 23:24:01 -0400 Subject: add lsof build deps Check for it in configure; and add a --force option for people without it who want to live dangerously. --- Assistant.hs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'Assistant.hs') diff --git a/Assistant.hs b/Assistant.hs index b72f9a7e7..4042c6ede 100644 --- a/Assistant.hs +++ b/Assistant.hs @@ -49,8 +49,10 @@ import Assistant.DaemonStatus import Assistant.Watcher import Assistant.Committer import Assistant.SanityChecker +import qualified Annex import qualified Utility.Daemon import Utility.LogFile +import qualified Build.SysConfig as SysConfig import Control.Concurrent @@ -64,7 +66,12 @@ startDaemon foreground pidfile <- fromRepo gitAnnexPidFile go $ Utility.Daemon.daemonize logfd (Just pidfile) False where - go a = withThreadState $ \st -> do + go a + | SysConfig.lsof = start a + | otherwise = + ifM (Annex.getState Annex.force) + (start a, needlsof) + start a = withThreadState $ \st -> do dstatus <- startDaemonStatus liftIO $ a $ do changechan <- newChangeChan @@ -78,5 +85,17 @@ startDaemon foreground _ <- forkIO $ sanityCheckerThread st dstatus changechan watchThread st dstatus changechan + -- this message is optimised away when lsof is available + needlsof = error $ unlines + [ "The lsof command is needed for watch mode to be safe." + , "But this build of git-annex was made without lsof available. Giving up..." + , "" + , "You can use --force if lsof is available now. Please make very sure it is." + , "If run with --force and without lsof available, files can be added to the" + , "annex while a process still has them opened for writing. This can" + , "corrupt data in the annex, and make fsck complain." + , "Use the --force with caution, Luke!" + ] + stopDaemon :: Annex () stopDaemon = liftIO . Utility.Daemon.stopDaemon =<< fromRepo gitAnnexPidFile -- cgit v1.2.3