diff options
-rw-r--r-- | Annex/Init.hs | 29 | ||||
-rw-r--r-- | debian/changelog | 1 |
2 files changed, 29 insertions, 1 deletions
diff --git a/Annex/Init.hs b/Annex/Init.hs index 03915904e..65e9aa474 100644 --- a/Annex/Init.hs +++ b/Annex/Init.hs @@ -41,6 +41,7 @@ import Utility.UserInfo import Utility.FileMode import Annex.Perms import System.Posix.User +import qualified Utility.LockFile.Posix as Posix #endif genDescription :: Maybe String -> Annex String @@ -74,9 +75,11 @@ initialize mdescription = do u <- getUUID describeUUID u =<< genDescription mdescription --- Everything except for uuid setup. +-- Everything except for uuid setup, shared clone setup, and initial +-- description. initialize' :: Annex () initialize' = do + checkLockSupport checkFifoSupport checkCrippledFileSystem unlessM isBare $ @@ -167,6 +170,24 @@ checkCrippledFileSystem = whenM probeCrippledFileSystem $ do setConfig (ConfigKey "core.symlinks") (Git.Config.boolConfig False) +probeLockSupport :: Annex Bool +probeLockSupport = do +#ifdef mingw32_HOST_OS + return True +#else + tmp <- fromRepo gitAnnexTmpMiscDir + let f = tmp </> "lockprobe" + createAnnexDirectory tmp + mode <- annexFileMode + liftIO $ do + nukeFile f + ok <- catchBoolIO $ do + Posix.dropLock =<< Posix.lockExclusive (Just mode) f + return True + nukeFile f + return ok +#endif + probeFifoSupport :: Annex Bool probeFifoSupport = do #ifdef mingw32_HOST_OS @@ -188,6 +209,12 @@ probeFifoSupport = do return $ either (const False) isNamedPipe ms #endif +checkLockSupport :: Annex () +checkLockSupport = unlessM probeLockSupport $ do + warning "Detected a filesystem without POSIX fcntl lock support." + warning "Enabling annex.pidlock." + setConfig (annexConfig "pidlock") (Git.Config.boolConfig True) + checkFifoSupport :: Annex () checkFifoSupport = unlessM probeFifoSupport $ do warning "Detected a filesystem without fifo support." diff --git a/debian/changelog b/debian/changelog index 764823e6c..1504c83ca 100644 --- a/debian/changelog +++ b/debian/changelog @@ -29,6 +29,7 @@ git-annex (5.20151102.2) UNRELEASED; urgency=medium that were missed before. * Added annex.pidlock and annex.pidlocktimeout configuration to support filesystems where POSIX fcntl locks cannot be used. + * init: Automatically enable annex.pidlock when necessary. -- Joey Hess <id@joeyh.name> Wed, 04 Nov 2015 12:50:20 -0400 |