diff --git a/Build/BundledPrograms.hs b/Build/BundledPrograms.hs index 570af4adf9..ae4beedf70 100644 --- a/Build/BundledPrograms.hs +++ b/Build/BundledPrograms.hs @@ -30,7 +30,7 @@ bundledPrograms = catMaybes #ifndef mingw32_HOST_OS , Just "sh" #endif - , ifset SysConfig.gpg "gpg" + , SysConfig.gpg , ifset SysConfig.curl "curl" , ifset SysConfig.wget "wget" , ifset SysConfig.bup "bup" diff --git a/Build/Configure.hs b/Build/Configure.hs index 65ba375bf9..399af9da8c 100644 --- a/Build/Configure.hs +++ b/Build/Configure.hs @@ -31,7 +31,9 @@ tests = , TestCase "curl" $ testCmd "curl" "curl --version >/dev/null" , TestCase "wget" $ testCmd "wget" "wget --version >/dev/null" , TestCase "bup" $ testCmd "bup" "bup --version >/dev/null" - , TestCase "gpg" $ testCmd "gpg" "gpg --version >/dev/null" + , TestCase "gpg" $ maybeSelectCmd "gpg" + [ ("gpg", "--version >/dev/null") + , ("gpg2", "--version >/dev/null") ] , TestCase "lsof" $ findCmdPath "lsof" "lsof" , TestCase "ssh connection caching" getSshConnectionCaching ] ++ shaTestCases diff --git a/Test.hs b/Test.hs index 1274f974ba..f063b91800 100644 --- a/Test.hs +++ b/Test.hs @@ -732,7 +732,7 @@ test_bup_remote env = "git-annex bup remote" ~: intmpclonerepo env $ when Build. -- gpg is not a build dependency, so only test when it's available test_crypto :: TestEnv -> Test -test_crypto env = "git-annex crypto" ~: intmpclonerepo env $ when Build.SysConfig.gpg $ do +test_crypto env = "git-annex crypto" ~: intmpclonerepo env $ whenM (Utility.Path.inPath Utility.Gpg.gpgcmd) $ do #ifndef __WINDOWS__ Utility.Gpg.testTestHarness @? "test harness self-test failed" Utility.Gpg.testHarness $ do diff --git a/Utility/Gpg.hs b/Utility/Gpg.hs index aa4a7af732..33a26e2726 100644 --- a/Utility/Gpg.hs +++ b/Utility/Gpg.hs @@ -17,10 +17,16 @@ import System.Path import Common import Utility.Env +import qualified Build.SysConfig as SysConfig newtype KeyIds = KeyIds [String] deriving (Ord, Eq) +{- If a specific gpg command was found at configure time, use it. + - Otherwise, try to run gpg. -} +gpgcmd :: FilePath +gpgcmd = fromMaybe "gpg" SysConfig.gpg + stdParams :: [CommandParam] -> IO [String] stdParams params = do #ifndef __WINDOWS__ @@ -44,7 +50,7 @@ stdParams params = do readStrict :: [CommandParam] -> IO String readStrict params = do params' <- stdParams params - withHandle StdoutHandle createProcessSuccess (proc "gpg" params') $ \h -> do + withHandle StdoutHandle createProcessSuccess (proc gpgcmd params') $ \h -> do hSetBinaryMode h True hGetContentsStrict h @@ -53,7 +59,7 @@ readStrict params = do pipeStrict :: [CommandParam] -> String -> IO String pipeStrict params input = do params' <- stdParams params - withBothHandles createProcessSuccess (proc "gpg" params') $ \(to, from) -> do + withBothHandles createProcessSuccess (proc gpgcmd params') $ \(to, from) -> do hSetBinaryMode to True hSetBinaryMode from True hPutStr to input @@ -84,7 +90,7 @@ feedRead params passphrase feeder reader = do params' <- stdParams $ [Param "--batch"] ++ passphrasefd ++ params closeFd frompipe `after` - withBothHandles createProcessSuccess (proc "gpg" params') go + withBothHandles createProcessSuccess (proc gpgcmd params') go where go (to, from) = do void $ forkIO $ do diff --git a/debian/changelog b/debian/changelog index 43bb13c141..b3bea55ab0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -6,6 +6,7 @@ git-annex (4.20130517) UNRELEASED; urgency=low catching exceptions. * Fix a zombie that could result when running a process like gpg to read and write to it. + * Allow building with gpg2. -- Joey Hess Fri, 17 May 2013 11:17:03 -0400 diff --git a/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn b/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn index 958727bb9b..9bfe3ee3bb 100644 --- a/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn +++ b/doc/bugs/git_annex_fork_bombs_on_gpg_file.mdwn @@ -21,3 +21,5 @@ add tinco.gpg .. (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) (gpg) ..etc recv (resource unavailable or something) .. + +> [[done]]; fixed 3 bugs! --[[Joey]]