diff --git a/cabal-install/Distribution/Client/IndexUtils.hs b/cabal-install/Distribution/Client/IndexUtils.hs index 773ea3b84e159752e67ddf64141b865622fb8726..947b3f48304b40fc753b55547473494a48aba17c 100644 --- a/cabal-install/Distribution/Client/IndexUtils.hs +++ b/cabal-install/Distribution/Client/IndexUtils.hs @@ -19,6 +19,7 @@ module Distribution.Client.IndexUtils ( getIndexFileAge, getInstalledPackages, + indexBaseName, Configure.getInstalledPackagesMonitorFiles, getSourcePackages, getSourcePackagesMonitorFiles, diff --git a/cabal-install/Distribution/Client/Update.hs b/cabal-install/Distribution/Client/Update.hs index 6622b5023d1e81b3ed0fbd81fba71c6fe460d7da..73561a63f69f07ae8815964b74368f1ec7134b86 100644 --- a/cabal-install/Distribution/Client/Update.hs +++ b/cabal-install/Distribution/Client/Update.hs @@ -26,7 +26,7 @@ import Distribution.Client.FetchUtils import Distribution.Client.IndexUtils.Timestamp import Distribution.Client.IndexUtils ( updateRepoIndexCache, Index(..), writeIndexTimestamp - , currentIndexTimestamp ) + , currentIndexTimestamp, indexBaseName ) import Distribution.Client.JobControl ( newParallelJobControl, spawnJob, collectJob ) import Distribution.Client.Setup @@ -40,7 +40,8 @@ import Distribution.Simple.Utils import qualified Data.ByteString.Lazy as BS import Distribution.Client.GZipUtils (maybeDecompress) -import System.FilePath (dropExtension) +import System.Directory (setModificationTime) +import System.FilePath ((<.>), dropExtension) import Data.Maybe (mapMaybe) import Data.Time (getCurrentTime) import Control.Monad @@ -75,7 +76,8 @@ updateRepo verbosity updateFlags repoCtxt repo = do RepoRemote{..} -> do downloadResult <- downloadIndex transport verbosity repoRemote repoLocalDir case downloadResult of - FileAlreadyInCache -> return () + FileAlreadyInCache -> + setModificationTime (indexBaseName repo <.> "tar") =<< getCurrentTime FileDownloaded indexPath -> do writeFileAtomic (dropExtension indexPath) . maybeDecompress =<< BS.readFile indexPath @@ -95,7 +97,7 @@ updateRepo verbosity updateFlags repoCtxt repo = do -- (If all access to the cache goes through hackage-security this can go) case updated of Sec.NoUpdates -> - return () + setModificationTime (indexBaseName repo <.> "tar") =<< getCurrentTime Sec.HasUpdates -> updateRepoIndexCache verbosity index -- TODO: This will print multiple times if there are multiple