diff -up cabal-install/Distribution/Client/IndexUtils.hs~ cabal-install/Distribution/Client/IndexUtils.hs
--- cabal-install/Distribution/Client/IndexUtils.hs~	2012-09-05 02:10:35.000000000 +0900
+++ cabal-install/Distribution/Client/IndexUtils.hs	2012-09-18 15:55:03.497921330 +0900
@@ -74,8 +74,7 @@ import System.IO.Error (isDoesNotExistEr
 import Distribution.Compat.Exception (catchIO)
 import System.Directory
          ( getModificationTime, doesFileExist )
-import System.Time
-         ( getClockTime, diffClockTimes, normalizeTimeDiff, TimeDiff(tdDay) )
+import Distribution.Compat.Time
 
 
 getInstalledPackages :: Verbosity -> Compiler
@@ -191,13 +190,11 @@ readRepoIndex verbosity repo =
 
     isOldThreshold = 15 --days
     warnIfIndexIsOld indexFile = do
-      indexTime   <- getModificationTime indexFile
-      currentTime <- getClockTime
-      let diff = normalizeTimeDiff (diffClockTimes currentTime indexTime)
-      when (tdDay diff >= isOldThreshold) $ case repoKind repo of
+      dt <- getFileAge indexFile
+      when (dt >= isOldThreshold) $ case repoKind repo of
         Left  remoteRepo -> warn verbosity $
              "The package list for '" ++ remoteRepoName remoteRepo
-          ++ "' is " ++ show (tdDay diff)  ++ " days old.\nRun "
+          ++ "' is " ++ show dt ++ " days old.\nRun "
           ++ "'cabal update' to get the latest list of available packages."
         Right _localRepo -> return ()
 
diff -up cabal-install/Distribution/Client/Tar.hs~ cabal-install/Distribution/Client/Tar.hs
--- cabal-install/Distribution/Client/Tar.hs~	2012-09-05 02:10:35.000000000 +0900
+++ cabal-install/Distribution/Client/Tar.hs	2012-09-18 15:51:32.105255334 +0900
@@ -87,8 +87,7 @@ import Distribution.Compat.FilePerms
          ( setFileExecutable )
 import System.Posix.Types
          ( FileMode )
-import System.Time
-         ( ClockTime(..) )
+import Distribution.Compat.Time
 import System.IO
          ( IOMode(ReadMode), openBinaryFile, hFileSize )
 import System.IO.Unsafe (unsafeInterleaveIO)
@@ -119,8 +118,6 @@ extractTarGzFile dir expected tar = do
 --
 
 type FileSize  = Int64
--- | The number of seconds since the UNIX epoch
-type EpochTime = Int64
 type DevMajor  = Int
 type DevMinor  = Int
 type TypeCode  = Char
@@ -896,8 +893,3 @@ recurseDirectories base (dir:dirs) = uns
     ignore ['.']      = True
     ignore ['.', '.'] = True
     ignore _          = False
-
-getModTime :: FilePath -> IO EpochTime
-getModTime path = do
-  (TOD s _) <- getModificationTime path
-  return $! fromIntegral s
diff -up cabal-install/cabal-install.cabal~ cabal-install/cabal-install.cabal
--- cabal-install/cabal-install.cabal~	2012-09-05 02:10:35.000000000 +0900
+++ cabal-install/cabal-install.cabal	2012-09-18 15:47:49.032543045 +0900
@@ -86,6 +86,7 @@ Executable cabal
         Distribution.Client.Install
         Distribution.Client.InstallPlan
         Distribution.Client.InstallSymlink
+        Distribution.Client.JobControl
         Distribution.Client.List
         Distribution.Client.PackageIndex
         Distribution.Client.PackageUtils
@@ -103,10 +104,11 @@ Executable cabal
         Distribution.Client.Win32SelfUpgrade
         Distribution.Compat.Exception
         Distribution.Compat.FilePerms
+        Distribution.Compat.Time
         Paths_cabal_install
 
     build-depends: base     >= 2        && < 5,
-                   Cabal    >= 1.15.0   && < 1.16,
+                   Cabal    >= 1.15.0   && < 1.17,
                    filepath >= 1.0      && < 1.4,
                    network  >= 1        && < 3,
                    HTTP     >= 4000.0.2 && < 4001,
@@ -135,5 +137,5 @@ Executable cabal
       build-depends: Win32 >= 2 && < 3
       cpp-options: -DWIN32
     else
-      build-depends: unix >= 1.0 && < 2.6
+      build-depends: unix >= 1.0 && < 2.7
     extensions: CPP
