From 29bd5aaff9c3877073073a0017957776bcb17674 Mon Sep 17 00:00:00 2001
From: Edsko de Vries <edsko@well-typed.com>
Date: Tue, 25 Aug 2015 12:42:10 +0100
Subject: [PATCH] Change old Hackage URIs to new Hackage URIs

This is necessary because otherwise doing a secure update will result in errors
such as

Unexpected response (4,0,4)for http://hackage.haskell.orgpackages/archive/root.json

Alternative we could set up redirections for these in Hackage, but what's the
point?
---
 cabal-install/Distribution/Client/Config.hs | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/cabal-install/Distribution/Client/Config.hs b/cabal-install/Distribution/Client/Config.hs
index 00ec3b1614..ebc6030146 100644
--- a/cabal-install/Distribution/Client/Config.hs
+++ b/cabal-install/Distribution/Client/Config.hs
@@ -76,6 +76,8 @@ import Distribution.ParseUtils
          , parseFilePathQ, parseTokenQ )
 import Distribution.Client.ParseUtils
          ( parseFields, ppFields, ppSection )
+import Distribution.Client.HttpUtils
+         ( isOldHackageURI )
 import qualified Distribution.ParseUtils as ParseUtils
          ( Field(..) )
 import qualified Distribution.Text as Text
@@ -503,10 +505,9 @@ defaultRemoteRepo = RemoteRepo name uri () False
 --
 addInfoForKnownRepos :: RemoteRepo -> RemoteRepo
 addInfoForKnownRepos repo@RemoteRepo{ remoteRepoName = "hackage.haskell.org" } =
-    repo {
-      --remoteRepoRootKeys --TODO: when this list is empty, fill in known crypto credentials
-      remoteRepoShouldTryHttps = True
-    }
+    tryHttps $ if isOldHackageURI (remoteRepoURI repo) then defaultRemoteRepo else repo
+  where
+    tryHttps       r = r { remoteRepoShouldTryHttps = True }
 addInfoForKnownRepos other = other
 
 --
-- 
GitLab