From 3c0e6480d5057dd616457a0ac0458e60946c9849 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" <ezyang@cs.stanford.edu> Date: Tue, 27 Jan 2015 10:26:49 -0800 Subject: [PATCH] Version test whether or not to use single-file package database, helps #2320 some more. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu> (cherry picked from commit 61fdb06c7df8b77886a8f1a848340ea7bad85461) --- Cabal/Distribution/Simple/Build.hs | 16 +++++++++------- Cabal/Distribution/Simple/GHC.hs | 1 + Cabal/Distribution/Simple/GHCJS.hs | 3 +++ Cabal/Distribution/Simple/LHC.hs | 1 + Cabal/Distribution/Simple/Program/HcPkg.hs | 1 + 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Cabal/Distribution/Simple/Build.hs b/Cabal/Distribution/Simple/Build.hs index e4920446b2..d6ced9824a 100644 --- a/Cabal/Distribution/Simple/Build.hs +++ b/Cabal/Distribution/Simple/Build.hs @@ -450,15 +450,17 @@ createInternalPackageDB verbosity lbi distPref = do LHC -> createWith $ LHC.hcPkgInfo (withPrograms lbi) _ -> return packageDB where - dbDir = distPref </> "package.conf.inplace" - packageDB = SpecificPackageDB dbDir + dbPath = distPref </> "package.conf.inplace" + packageDB = SpecificPackageDB dbPath createWith hpi = do - dir_exists <- doesDirectoryExist dbDir + dir_exists <- doesDirectoryExist dbPath if dir_exists - then removeDirectoryRecursive dbDir - else do file_exists <- doesFileExist dbDir - when file_exists $ removeFile dbDir - HcPkg.init hpi verbosity dbDir + then removeDirectoryRecursive dbPath + else do file_exists <- doesFileExist dbPath + when file_exists $ removeFile dbPath + if HcPkg.useSingleFileDb hpi + then writeFile dbPath "[]" + else HcPkg.init hpi verbosity dbPath return packageDB addInternalBuildTools :: PackageDescription -> LocalBuildInfo -> BuildInfo diff --git a/Cabal/Distribution/Simple/GHC.hs b/Cabal/Distribution/Simple/GHC.hs index 69588dd72b..a630e503a6 100644 --- a/Cabal/Distribution/Simple/GHC.hs +++ b/Cabal/Distribution/Simple/GHC.hs @@ -1039,6 +1039,7 @@ hcPkgInfo conf = HcPkg.HcPkgInfo { HcPkg.hcPkgProgram = ghcPkgProg , HcPkg.noPkgDbStack = v < [6,9] , HcPkg.noVerboseFlag = v < [6,11] , HcPkg.flagPackageConf = v < [7,5] + , HcPkg.useSingleFileDb = v < [7,9] } where v = versionBranch ver diff --git a/Cabal/Distribution/Simple/GHCJS.hs b/Cabal/Distribution/Simple/GHCJS.hs index dc84419e57..94807bd37b 100644 --- a/Cabal/Distribution/Simple/GHCJS.hs +++ b/Cabal/Distribution/Simple/GHCJS.hs @@ -879,9 +879,12 @@ hcPkgInfo conf = HcPkg.HcPkgInfo { HcPkg.hcPkgProgram = ghcjsPkgProg , HcPkg.noPkgDbStack = False , HcPkg.noVerboseFlag = False , HcPkg.flagPackageConf = False + , HcPkg.useSingleFileDb = v < [7,9] } where + v = versionBranch ver Just ghcjsPkgProg = lookupProgram ghcjsPkgProgram conf + Just ver = programVersion ghcjsPkgProg -- | Get the JavaScript file name and command and arguments to run a -- program compiled by GHCJS diff --git a/Cabal/Distribution/Simple/LHC.hs b/Cabal/Distribution/Simple/LHC.hs index fd115e87b3..c0bc5952e7 100644 --- a/Cabal/Distribution/Simple/LHC.hs +++ b/Cabal/Distribution/Simple/LHC.hs @@ -794,6 +794,7 @@ hcPkgInfo conf = HcPkg.HcPkgInfo { HcPkg.hcPkgProgram = lhcPkgProg , HcPkg.noPkgDbStack = False , HcPkg.noVerboseFlag = False , HcPkg.flagPackageConf = False + , HcPkg.useSingleFileDb = True } where Just lhcPkgProg = lookupProgram lhcPkgProgram conf diff --git a/Cabal/Distribution/Simple/Program/HcPkg.hs b/Cabal/Distribution/Simple/Program/HcPkg.hs index 4eae5241ec..a2276fff11 100644 --- a/Cabal/Distribution/Simple/Program/HcPkg.hs +++ b/Cabal/Distribution/Simple/Program/HcPkg.hs @@ -73,6 +73,7 @@ data HcPkgInfo = HcPkgInfo , noPkgDbStack :: Bool -- ^ no package DB stack supported , noVerboseFlag :: Bool -- ^ hc-pkg does not support verbosity flags , flagPackageConf :: Bool -- ^ use package-conf option instead of package-db + , useSingleFileDb :: Bool -- ^ requires single file package database } -- | Call @hc-pkg@ to initialise a package database at the location {path}. -- GitLab