diff --git a/Remote/Web.hs b/Remote/Web.hs index 71591b7aa0..d3d140d73b 100644 --- a/Remote/Web.hs +++ b/Remote/Web.hs @@ -14,10 +14,9 @@ module Remote.Web ( import Control.Monad.State (liftIO) import Control.Exception import System.FilePath -import Network.Curl.Easy -import Network.Curl.Opts -import Network.Curl.Types -import Network.Curl.Code +import Network.Browser +import Network.HTTP +import Network.URI import Types import Types.Remote @@ -31,6 +30,8 @@ import PresenceLog import LocationLog import Locations +type URLString = String + remote :: RemoteType Annex remote = RemoteType { typename = "web", @@ -111,13 +112,19 @@ checkKey' (u:us) = do urlexists :: URLString -> IO Bool urlexists url = do - curl <- initialize - _ <- setopt curl (CurlURL url) - _ <- setopt curl (CurlNoBody True) - _ <- setopt curl (CurlFailOnError True) - _ <- setopt curl (CurlFollowLocation True) - res <- perform curl - return $ res == CurlOK + case parseURI url of + Nothing -> return False + Just u -> do + (_, r) <- Network.Browser.browse $ do + setErrHandler ignore + setOutHandler ignore + setAllowRedirects True + request (mkRequest HEAD u :: Request_String) + case rspCode r of + (2,_,_) -> return True + _ -> return False + where + ignore = const $ return () download :: [URLString] -> FilePath -> Annex Bool download [] _ = return False diff --git a/debian/changelog b/debian/changelog index 8f559bb028..37d03ceb20 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ git-annex (3.20110703) UNRELEASED; urgency=low hard link made to it. * uninit: Use unannex in --fast mode, to support unannexing multiple files that link to the same content. + * Drop the dependency on the haskell curl bindings, use regular haskell HTTP. -- Joey Hess Mon, 04 Jul 2011 15:50:21 -0400 diff --git a/debian/control b/debian/control index 07a9e4bbb2..4347233841 100644 --- a/debian/control +++ b/debian/control @@ -9,8 +9,8 @@ Build-Depends: libghc-pcre-light-dev, libghc-sha-dev, libghc-dataenc-dev, + libghc-http-dev, libghc-utf8-string-dev, - libghc-curl-dev, libghc-hs3-dev (>= 0.5.6), libghc-testpack-dev [any-i386 any-amd64], ikiwiki, diff --git a/doc/install.mdwn b/doc/install.mdwn index 23a0da902d..38963695b8 100644 --- a/doc/install.mdwn +++ b/doc/install.mdwn @@ -25,7 +25,7 @@ To build and use git-annex, you will need: * [dataenc](http://hackage.haskell.org/package/dataenc) * [TestPack](http://hackage.haskell.org/cgi-bin/hackage-scripts/package/testpack) * [QuickCheck 2](http://hackage.haskell.org/package/QuickCheck) - * [curl](http://hackage.haskell.org/package/curl) + * [HTTP](http://hackage.haskell.org/package/HTTP) * [hS3](http://hackage.haskell.org/package/hS3) (optional, but recommended) * Shell commands * [git](http://git-scm.com/) diff --git a/doc/install/Fedora.mdwn b/doc/install/Fedora.mdwn index 0050295e86..7814eec940 100644 --- a/doc/install/Fedora.mdwn +++ b/doc/install/Fedora.mdwn @@ -9,6 +9,7 @@ sudo cabal install pcre-light sudo cabal install quickcheck sudo cabal install SHA sudo cabal install dataenc +sudo cabal install HTTP sudo cabal install hS3 git clone git://git-annex.branchable.com/ diff --git a/doc/install/OSX.mdwn b/doc/install/OSX.mdwn index 81ffe1d035..ade4fa30e8 100644 --- a/doc/install/OSX.mdwn +++ b/doc/install/OSX.mdwn @@ -7,6 +7,7 @@ sudo cabal install pcre-light sudo cabal install quickcheck sudo cabal install SHA sudo cabal install dataenc +sudo cabal install HTTP sudo cabal install hS3 # optional # optional: this will enable the gnu tools, (to give sha224sum etc..., it does not override the BSD userland) diff --git a/git-annex.cabal b/git-annex.cabal index d5a066cdff..f7a2bde858 100644 --- a/git-annex.cabal +++ b/git-annex.cabal @@ -30,14 +30,14 @@ Executable git-annex Main-Is: git-annex.hs Build-Depends: haskell98, MissingH, hslogger, directory, filepath, unix, containers, utf8-string, network, mtl, bytestring, old-locale, time, - pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, curl, + pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, HTTP base < 5 Executable git-annex-shell Main-Is: git-annex-shell.hs Build-Depends: haskell98, MissingH, hslogger, directory, filepath, unix, containers, utf8-string, network, mtl, bytestring, old-locale, time, - pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, curl, + pcre-light, extensible-exceptions, dataenc, SHA, process, hS3, HTTP base < 5 Executable git-union-merge