diff --git a/cabal-install/Distribution/Client/Upload.hs b/cabal-install/Distribution/Client/Upload.hs index 10e247d40ae919995eafe0fd4e42c5482990ef60..cdb756820a6e1cf6e156c63a136eb7a556d40c1d 100644 --- a/cabal-install/Distribution/Client/Upload.hs +++ b/cabal-install/Distribution/Client/Upload.hs @@ -15,7 +15,7 @@ import Distribution.Client.Config import qualified Distribution.Client.BuildReports.Anonymous as BuildReport import qualified Distribution.Client.BuildReports.Upload as BuildReport -import Network.URI (URI(uriPath), parseURI, parseRelativeReference, relativeTo) +import Network.URI (URI(uriPath), parseURI) import System.IO (hFlush, stdin, stdout, hGetEcho, hSetEcho) import Control.Exception (bracket) @@ -26,9 +26,6 @@ import Control.Monad (forM_, when) type Auth = Maybe (String, String) -uploadReference :: URI -Just uploadReference = parseRelativeReference "/upload" - checkURI :: URI Just checkURI = parseURI "http://hackage.haskell.org/cgi-bin/hackage-scripts/check-pkg" @@ -39,7 +36,10 @@ upload transport verbosity repos mUsername mPassword paths = do [] -> die $ "Cannot upload. No remote repositories are configured." rs -> remoteRepoTryUpgradeToHttps transport (last rs) let targetRepoURI = remoteRepoURI targetRepo - uploadURI = uploadReference `relativeTo` targetRepoURI + rootIfEmpty x = if null x then "/" else x + uploadURI = targetRepoURI { + uriPath = rootIfEmpty (uriPath targetRepoURI) FilePath.Posix.</> "upload" + } Username username <- maybe promptUsername return mUsername Password password <- maybe promptPassword return mPassword let auth = Just (username,password)