From 252871fea93813f31af46ee0b823199e9d913f3a Mon Sep 17 00:00:00 2001 From: Simon Hengel Date: Tue, 27 Nov 2012 20:56:58 +0100 Subject: [PATCH 1/6] Fix deprecation warnings --- yesod-test/Yesod/Test.hs | 5 +++-- yesod-test/yesod-test.cabal | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index f41b4834..64c3a691 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -81,6 +81,7 @@ where import qualified Test.Hspec () import qualified Test.Hspec.Core as Core +import qualified Test.Hspec.Runner as Runner import qualified Data.List as DL import qualified Data.Maybe as DY import qualified Data.ByteString.Char8 as BS8 @@ -108,7 +109,7 @@ import Data.Conduit.Pool (Pool) import Control.Monad.Trans.Control (MonadBaseControl) -- | The state used in 'describe' to build a list of specs -data SpecsData conn = SpecsData Application (Pool conn) [Core.Spec] +data SpecsData conn = SpecsData Application (Pool conn) [Core.SpecTree] -- | The specs state monad is where 'describe' runs. -- parameterized by a database connection. @@ -156,7 +157,7 @@ type CookieValue = ByteString runTests :: Application -> Pool conn -> SpecsConn conn -> IO () runTests app connection specsDef = do (SpecsData _ _ specs) <- ST.execStateT specsDef (SpecsData app connection []) - Core.hspec specs + (Runner.hspec . Core.fromSpecList) specs -- | Start describing a Tests suite keeping cookies and a reference to the tested 'Application' -- and 'ConnectionPool' diff --git a/yesod-test/yesod-test.cabal b/yesod-test/yesod-test.cabal index 2e5b732e..a3b7cf25 100644 --- a/yesod-test/yesod-test.cabal +++ b/yesod-test/yesod-test.cabal @@ -23,7 +23,7 @@ library , network >= 2.2 , http-types >= 0.7 && < 0.8 , HUnit >= 1.2 && < 1.3 - , hspec >= 1.3 + , hspec >= 1.4 , bytestring >= 0.9 , case-insensitive >= 0.2 , text From 054340ec10fa6d17b2a4f42c8e800ed7cbd9ad02 Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 28 Nov 2012 09:47:01 +0200 Subject: [PATCH 2/6] Version bumps --- yesod-core/yesod-core.cabal | 2 +- yesod-platform/yesod-platform.cabal | 108 +++++++++++++++------------- yesod/yesod.cabal | 2 +- 3 files changed, 62 insertions(+), 50 deletions(-) diff --git a/yesod-core/yesod-core.cabal b/yesod-core/yesod-core.cabal index d2dcaed2..f3124233 100644 --- a/yesod-core/yesod-core.cabal +++ b/yesod-core/yesod-core.cabal @@ -1,5 +1,5 @@ name: yesod-core -version: 1.1.6 +version: 1.1.6.1 license: MIT license-file: LICENSE author: Michael Snoyman diff --git a/yesod-platform/yesod-platform.cabal b/yesod-platform/yesod-platform.cabal index 6ee7a725..71610670 100644 --- a/yesod-platform/yesod-platform.cabal +++ b/yesod-platform/yesod-platform.cabal @@ -1,5 +1,5 @@ name: yesod-platform -version: 1.1.4.1 +version: FIXME license: MIT license-file: LICENSE author: Michael Snoyman @@ -14,82 +14,93 @@ homepage: http://www.yesodweb.com/ library build-depends: base >= 4 && < 5 - , SHA == 1.5.1 + , ReadArgs == 1.2.1 + , SHA == 1.6.1 , aeson == 0.6.0.2 , ansi-terminal == 0.5.5 , asn1-data == 0.7.1 , attoparsec == 0.10.2.0 - , attoparsec-conduit == 0.5.0.2 - , authenticate == 1.3.1.1 + , attoparsec-conduit == 0.5.0.3 + , authenticate == 1.3.2 , base-unicode-symbols == 0.2.2.4 , base64-bytestring == 1.0.0.0 + , basic-prelude == 0.3.1.0 , blaze-builder == 0.3.1.0 - , blaze-builder-conduit == 0.5.0.1 - , blaze-html == 0.5.1.0 - , blaze-markup == 0.5.1.1 + , blaze-builder-conduit == 0.5.0.3 + , blaze-html == 0.5.1.1 + , blaze-markup == 0.5.1.2 , byteorder == 1.0.3 , case-insensitive == 0.4.0.3 , cereal == 0.3.5.2 - , certificate == 1.2.8 + , certificate == 1.3.3 + , classy-prelude == 0.4.1 + , classy-prelude-conduit == 0.4.1 , clientsession == 0.8.0.1 - , conduit == 0.5.2.7 + , conduit == 0.5.5 , cookie == 0.4.0.1 , cprng-aes == 0.2.4 , cpu == 0.1.1 , crypto-api == 0.10.2 - , crypto-conduit == 0.4.0.1 - , crypto-pubkey-types == 0.1.1 - , cryptocipher == 0.3.5 - , cryptohash == 0.7.5 + , crypto-conduit == 0.4.1 + , crypto-pubkey-types == 0.2.0 + , cryptocipher == 0.3.6 + , cryptohash == 0.7.9 , css-text == 0.1.1 , data-default == 0.5.0 , date-cache == 0.3.0 , dlist == 0.5 - , email-validate == 0.2.8 + , email-validate == 0.3.2 , entropy == 0.2.1 , failure == 0.2.0.1 , fast-logger == 0.3.1 , file-embed == 0.0.4.6 - , filesystem-conduit == 0.5.0.1 - , hamlet == 1.1.1 + , filesystem-conduit == 0.5.0.2 + , fsnotify == 0.0.4 + , ghc-paths == 0.1.0.8 + , hamlet == 1.1.1.1 , hashable == 1.1.2.5 , hjsmin == 0.1.3 - , hspec == 1.3.0.1 - , hspec-expectations == 0.3.0.2 - , html-conduit == 0.1.0.2 - , http-conduit == 1.6.1.2 - , http-date == 0.0.2 + , hspec == 1.4.2 + , hspec-expectations == 0.3.0.3 + , html-conduit == 0.1.0.4 + , http-conduit == 1.8.4.3 + , http-date == 0.0.3 + , http-reverse-proxy == 0.1.0.6 , http-types == 0.7.3.0.1 - , language-javascript == 0.5.6 + , language-javascript == 0.5.7 , largeword == 1.0.3 , lifted-base == 0.2 , mime-mail == 0.4.1.2 , mime-types == 0.1.0.0 , monad-control == 0.3.1.4 - , monad-logger == 0.2.1 + , monad-logger == 0.2.3 , network-conduit == 0.6.1.1 + , optparse-applicative == 0.4.2 , path-pieces == 0.1.2 , pem == 0.1.1 - , persistent == 1.0.1.3 + , persistent == 1.0.2.2 , persistent-template == 1.0.0.2 , pool-conduit == 0.1.0.3 , primitive == 0.5.0.1 + , project-template == 0.1.0.1 , pureMD5 == 2.1.2.1 , pwstore-fast == 2.3 , ranges == 0.2.4 , resource-pool == 0.2.1.1 - , resourcet == 0.4.0.2 + , resourcet == 0.4.4 , safe == 0.3.3 , semigroups == 0.8.4.1 - , shakespeare == 1.0.1.4 - , shakespeare-css == 1.0.1.5 + , setenv == 0.1.0 + , shakespeare == 1.0.2 + , shakespeare-css == 1.0.2 , shakespeare-i18n == 1.0.0.2 - , shakespeare-js == 1.0.0.6 + , shakespeare-js == 1.1.0 , shakespeare-text == 1.0.0.5 - , silently == 1.2.0.2 + , silently == 1.2.4 , simple-sendfile == 0.2.8 - , skein == 0.1.0.9 + , skein == 0.1.0.10 , socks == 0.4.2 + , split == 0.2.1.1 , stringsearch == 0.3.6.4 , system-fileio == 0.3.10 , system-filepath == 0.4.7 @@ -97,8 +108,8 @@ library , tagsoup == 0.12.8 , tagstream-conduit == 0.5.3 , tar == 0.4.0.1 - , tls == 0.9.11 - , tls-extra == 0.4.7 + , tls == 1.0.2 + , tls-extra == 0.5.0 , transformers-base == 0.4.1 , unix-compat == 0.4.0.0 , unordered-containers == 0.2.2.1 @@ -108,27 +119,28 @@ library , vector == 0.10.0.1 , void == 0.5.8 , wai == 1.3.0.1 - , wai-app-static == 1.3.0.2 - , wai-extra == 1.3.0.3 + , wai-app-static == 1.3.0.4 + , wai-extra == 1.3.0.4 , wai-logger == 0.3.0 , wai-test == 1.3.0 - , warp == 1.3.4.1 - , xml-conduit == 1.0.3.1 + , warp == 1.3.5 + , word8 == 0.0.2 + , xml-conduit == 1.0.3.3 , xml-types == 0.3.3 , xss-sanitize == 0.3.2 - , yaml == 0.8.1 - , yesod == 1.1.2 - , yesod-auth == 1.1.1.2 - , yesod-core == 1.1.3.1 - , yesod-default == 1.1.0.2 - , yesod-form == 1.1.3 - , yesod-json == 1.1.0 + , yaml == 0.8.1.1 + , yesod == 1.1.4 + , yesod-auth == 1.1.1.7 + , yesod-core == 1.1.6 + , yesod-default == 1.1.2 + , yesod-form == 1.2.0.1 + , yesod-json == 1.1.2 , yesod-persistent == 1.1.0 - , yesod-routes == 1.1.0.2 - , yesod-static == 1.1.0.1 - , yesod-test == 0.3.0.1 - , zlib-bindings == 0.1.1.1 - , zlib-conduit == 0.5.0.1 + , yesod-routes == 1.1.1.1 + , yesod-static == 1.1.1.1 + , yesod-test == 0.3.1.1 + , zlib-bindings == 0.1.1.2 + , zlib-conduit == 0.5.0.3 exposed-modules: Yesod.Platform diff --git a/yesod/yesod.cabal b/yesod/yesod.cabal index ca10b74e..07d871f3 100644 --- a/yesod/yesod.cabal +++ b/yesod/yesod.cabal @@ -1,5 +1,5 @@ name: yesod -version: 1.1.4 +version: 1.1.4.1 license: MIT license-file: LICENSE author: Michael Snoyman From 77e87fe5243504fc256d96eea76917a99df3d21c Mon Sep 17 00:00:00 2001 From: Michael Snoyman Date: Wed, 28 Nov 2012 10:56:59 +0200 Subject: [PATCH 3/6] yesod-platform 1.1.5 --- yesod-platform/yesod-platform.cabal | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yesod-platform/yesod-platform.cabal b/yesod-platform/yesod-platform.cabal index 71610670..d2c6da71 100644 --- a/yesod-platform/yesod-platform.cabal +++ b/yesod-platform/yesod-platform.cabal @@ -1,5 +1,5 @@ name: yesod-platform -version: FIXME +version: 1.1.5 license: MIT license-file: LICENSE author: Michael Snoyman @@ -129,9 +129,9 @@ library , xml-types == 0.3.3 , xss-sanitize == 0.3.2 , yaml == 0.8.1.1 - , yesod == 1.1.4 - , yesod-auth == 1.1.1.7 - , yesod-core == 1.1.6 + , yesod == 1.1.4.1 + , yesod-auth == 1.1.2 + , yesod-core == 1.1.6.1 , yesod-default == 1.1.2 , yesod-form == 1.2.0.1 , yesod-json == 1.1.2 From ba27046afff51a4e778aa1c50e5e036c8b3e8a23 Mon Sep 17 00:00:00 2001 From: Simon Hengel Date: Thu, 29 Nov 2012 11:00:19 +0100 Subject: [PATCH 4/6] yesod-test: Remove redundant import --- yesod-test/Yesod/Test.hs | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/yesod-test/Yesod/Test.hs b/yesod-test/Yesod/Test.hs index 64c3a691..bc79cc2c 100644 --- a/yesod-test/Yesod/Test.hs +++ b/yesod-test/Yesod/Test.hs @@ -65,21 +65,6 @@ module Yesod.Test ( where --- In in Hspec < 1.3 the Example instance for IO () (== Assertion/Expectation) --- is orphan and only export from Test.Hspec.HUnit. --- --- In Hspec 1.3.* it is still orphan, but re-exported from Test.Hspec. --- --- Starting with Hspec 1.4.0 it is not orphan anymore. --- --- As we only support Hspec >= 1.3, we import Test.Hspec to bring the orphan --- instance into scope. This is better than importing Test.Hspec.HUnit, as --- Test.Hspec.HUnit may be removed in the future. --- --- As soon as we decide to drop support for Hspec 1.3.*, we can remove this --- comment and the following import. -import qualified Test.Hspec () - import qualified Test.Hspec.Core as Core import qualified Test.Hspec.Runner as Runner import qualified Data.List as DL From 2c8be21b058aec9bf0cf41275e02462058a7a94f Mon Sep 17 00:00:00 2001 From: Luite Stegeman Date: Sat, 1 Dec 2012 19:16:21 +0100 Subject: [PATCH 5/6] use the Cabal library to rebuild, even with --dev --- yesod/Devel.hs | 127 ++++++++++++++++--------------------------------- 1 file changed, 42 insertions(+), 85 deletions(-) diff --git a/yesod/Devel.hs b/yesod/Devel.hs index 95280674..693db75e 100644 --- a/yesod/Devel.hs +++ b/yesod/Devel.hs @@ -15,6 +15,7 @@ import qualified Distribution.Package as D import qualified Distribution.PackageDescription as D import qualified Distribution.PackageDescription.Parse as D import qualified Distribution.Simple.Build as D +import qualified Distribution.Simple.Compiler as D import qualified Distribution.Simple.Configure as D import qualified Distribution.Simple.LocalBuildInfo as D import qualified Distribution.Simple.Program as D @@ -28,11 +29,10 @@ import Control.Concurrent (forkIO, threadDelay) import Control.Concurrent.MVar (MVar, newEmptyMVar, takeMVar, tryPutMVar) import qualified Control.Exception as Ex -import Control.Monad (unless, void, - when, forever) - -import Control.Monad.Trans.State (evalStateT, get) +import Control.Monad (forever, unless, void, + when) import Control.Monad.IO.Class (liftIO) +import Control.Monad.Trans.State (evalStateT, get) import Data.Char (isNumber, isUpper) import qualified Data.List as L @@ -49,22 +49,16 @@ import System.FilePath (dropExtension, splitDirectories, takeExtension, ()) import System.FSNotify -import System.IO (hClose, hGetLine, - hIsEOF, hPutStrLn, - stderr, stdout) import System.IO.Error (isDoesNotExistError) import System.Posix.Types (EpochTime) import System.PosixCompat.Files (getFileStatus, modificationTime) import System.Process (ProcessHandle, - createProcess, + createProcess, env, getProcessExitCode, - proc, rawSystem, - readProcess, - runInteractiveProcess, + proc, readProcess, system, - terminateProcess, - env) + terminateProcess) import System.Timeout (timeout) import Build (getDeps, isNewerThan, @@ -73,13 +67,14 @@ import GhcBuild (buildPackage, getBuildFlags) import qualified Config as GHC -import SrcLoc (Located) -import Network.HTTP.ReverseProxy (waiProxyTo, ProxyDest (ProxyDest)) import Network (withSocketsDo) -import Network.Wai (responseLBS) +import Network.HTTP.Conduit (def, newManager) +import Network.HTTP.ReverseProxy (ProxyDest (ProxyDest), + waiProxyTo) import Network.HTTP.Types (status200) +import Network.Wai (responseLBS) import Network.Wai.Handler.Warp (run) -import Network.HTTP.Conduit (newManager, def) +import SrcLoc (Located) lockFile :: DevelOpts -> FilePath lockFile _opts = "yesod-devel/devel-terminate" @@ -109,10 +104,6 @@ data DevelOpts = DevelOpts getBuildDir :: DevelOpts -> String getBuildDir opts = fromMaybe "dist" (buildDir opts) -cabalCommand :: DevelOpts -> FilePath -cabalCommand opts | isCabalDev opts = "cabal-dev" - | otherwise = "cabal" - defaultDevelOpts :: DevelOpts defaultDevelOpts = DevelOpts False False False (-1) Nothing Nothing Nothing @@ -156,16 +147,16 @@ devel opts passThroughArgs = withManager $ \manager -> do -- outer loop re-reads the cabal file mainOuterLoop filesModified = do - cabal <- liftIO $ D.findPackageDesc "." - gpd <- liftIO $ D.readPackageDescription D.normal cabal - ldar <- liftIO lookupLdAr + ghcVer <- liftIO ghcVersion + cabal <- liftIO $ D.findPackageDesc "." + gpd <- liftIO $ D.readPackageDescription D.normal cabal + ldar <- liftIO lookupLdAr (hsSourceDirs, lib) <- liftIO $ checkCabalFile gpd liftIO $ removeFileIfExists (bd "setup-config") - liftIO $ configure cabal gpd opts + liftIO $ configure cabal ghcVer gpd opts liftIO $ removeFileIfExists "yesod-devel/ghcargs.txt" -- these files contain the wrong data after liftIO $ removeFileIfExists "yesod-devel/arargs.txt" -- the configure step, remove them to force liftIO $ removeFileIfExists "yesod-devel/ldargs.txt" -- a cabal build first - ghcVer <- liftIO ghcVersion rebuild <- liftIO $ mkRebuild gpd ghcVer cabal opts ldar mainInnerLoop hsSourceDirs filesModified cabal gpd lib ghcVer rebuild @@ -227,16 +218,15 @@ runBuildHook Nothing = return () cabal-dev uses the command-line tool, we can fall back to cabal-dev buildopts if required -} -configure :: FilePath -> D.GenericPackageDescription -> DevelOpts -> IO () -configure _cabalFile gpd opts - | isCabalDev opts = rawSystem (cabalCommand opts) args >> return () - | otherwise = do - lbi <- D.configure (gpd, hookedBuildInfo) configFlags - D.writePersistBuildConfig (getBuildDir opts) lbi -- fixme we could keep this in memory instead of file +configure :: FilePath -> String -> D.GenericPackageDescription -> DevelOpts -> IO () +configure _cabalFile ghcVer gpd opts = do + print (DSS.configPackageDBs configFlags) + lbi <- D.configure (gpd, hookedBuildInfo) configFlags + D.writePersistBuildConfig (getBuildDir opts) lbi -- fixme we could keep this in memory instead of file where hookedBuildInfo = (Nothing, []) - configFlags | forceCabal opts = config - | otherwise = config + configFlags0 | forceCabal opts = config + | otherwise = config { DSS.configProgramPaths = [ ("ar", "yesod-ar-wrapper") , ("ld", "yesod-ld-wrapper") @@ -245,33 +235,24 @@ configure _cabalFile gpd opts , DSS.configHcPkg = DSS.Flag "ghc-pkg" } + configFlags | isCabalDev opts = configFlags0 + { DSS.configPackageDBs = + + [ Nothing + , Just D.GlobalPackageDB + , Just $ D.SpecificPackageDB ("cabal-dev/packages-" ++ ghcVer ++ ".conf") + ] + } + | otherwise = configFlags0 + config = (DSS.defaultConfigFlags D.defaultProgramConfiguration) { DSS.configConfigurationsFlags = - [ (D.FlagName "devel", True) -- legaxy + [ (D.FlagName "devel", True) -- legacy , (D.FlagName "library-only", True) ] , DSS.configProfLib = DSS.Flag False , DSS.configUserInstall = DSS.Flag True } - cabalArgs - | isCabalDev opts = map ("--cabal-install-arg=" ++) as - | otherwise = as - where - as = - [ "-fdevel" -- legacy - , "-flibrary-only" - ] ++ wrapperArgs - wrapperArgs - | forceCabal opts = [] - | otherwise = - [ "--with-compiler=yesod-ghc-wrapper" - , "--with-hc-pkg=ghc-pkg" - , "--with-ld=yesod-ld-wrapper" - , "--with-ar=yesod-ar-wrapper" - ] - args :: [String] - args = "configure":cabalArgs ++ ["--disable-library-profiling" ] - removeFileIfExists :: FilePath -> IO () removeFileIfExists file = removeFile file `Ex.catch` handler @@ -302,15 +283,7 @@ rebuildGhc bf ld ar = do buildPackage bf ld ar rebuildCabal :: D.GenericPackageDescription -> DevelOpts -> IO Bool -rebuildCabal _gpd opts - | isCabalDev opts = do - let cmd = cabalCommand opts - putStrLn $ "Rebuilding application... (using " ++ cmd ++ ")" - exit <- (if verbose opts then rawSystem else rawSystemFilter) cmd ["build"] - return $ case exit of - ExitSuccess -> True - _ -> False - | otherwise = do +rebuildCabal _gpd opts = do putStrLn $ "Rebuilding application... (using Cabal library)" lbi <- getPersistBuildConfig opts -- fixme we could cache this from the configure step let buildFlags | verbose opts = DSS.defaultBuildFlags @@ -407,11 +380,12 @@ ghcVersion = fmap getNumber $ readProcess "runghc" ["--numeric-version", "0"] [] ghcPackageArgs :: DevelOpts -> String -> D.PackageDescription -> D.Library -> IO [String] ghcPackageArgs opts ghcVer cabal lib = do - lbi <- getPersistBuildConfig opts - cbi <- fromMaybeErr errCbi (D.libraryConfig lbi) - if isCabalDev opts - then return ("-hide-all-packages" : "-no-user-package-conf" : inplaceConf : selfPkgArg lbi : cabalDevConf : depArgs lbi cbi) - else return ("-hide-all-packages" : inplaceConf : selfPkgArg lbi : depArgs lbi cbi) + lbi <- getPersistBuildConfig opts + cbi <- fromMaybeErr errCbi (D.libraryConfig lbi) + if isCabalDev opts + then return ("-hide-all-packages" : "-no-user-package-conf" : inplaceConf + : selfPkgArg lbi : cabalDevConf : depArgs lbi cbi) + else return ("-hide-all-packages" : inplaceConf : selfPkgArg lbi : depArgs lbi cbi) where selfPkgArg lbi = pkgArg . D.inplacePackageId . D.package . D.localPkgDescr $ lbi pkgArg (D.InstalledPackageId pkgId) = "-package-id" ++ pkgId @@ -477,23 +451,6 @@ lookupLdAr' = do where look pgm pdb = fmap D.programPath (D.lookupProgram pgm pdb) --- | Acts like @rawSystem@, but filters out lines from the output that we're not interested in seeing. -rawSystemFilter :: String -> [String] -> IO ExitCode -rawSystemFilter command args = do - (inh, outh, errh, ph) <- runInteractiveProcess command args Nothing Nothing - hClose inh - let go handlein handleout = do - isEof <- hIsEOF handlein - if isEof - then hClose handlein - else do - line <- hGetLine handlein - unless ("Loading package " `L.isPrefixOf` line) $ hPutStrLn handleout line - go handlein handleout - _ <- forkIO $ go outh stdout - _ <- forkIO $ go errh stderr - waitForProcess' ph - -- | nonblocking version of @waitForProcess@ waitForProcess' :: ProcessHandle -> IO ExitCode waitForProcess' pid = go From a4ae1803f7987144cd8b57d276587681ddc67d09 Mon Sep 17 00:00:00 2001 From: Luite Stegeman Date: Sat, 1 Dec 2012 20:36:40 +0100 Subject: [PATCH 6/6] fix for Cabal library older than 1.16 --- yesod/Devel.hs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/yesod/Devel.hs b/yesod/Devel.hs index 693db75e..ab3826d2 100644 --- a/yesod/Devel.hs +++ b/yesod/Devel.hs @@ -220,7 +220,6 @@ runBuildHook Nothing = return () -} configure :: FilePath -> String -> D.GenericPackageDescription -> DevelOpts -> IO () configure _cabalFile ghcVer gpd opts = do - print (DSS.configPackageDBs configFlags) lbi <- D.configure (gpd, hookedBuildInfo) configFlags D.writePersistBuildConfig (getBuildDir opts) lbi -- fixme we could keep this in memory instead of file where @@ -234,17 +233,24 @@ configure _cabalFile ghcVer gpd opts = do ] , DSS.configHcPkg = DSS.Flag "ghc-pkg" } - +#if MIN_VERSION_Cabal(1,16,0) configFlags | isCabalDev opts = configFlags0 { DSS.configPackageDBs = - [ Nothing - , Just D.GlobalPackageDB - , Just $ D.SpecificPackageDB ("cabal-dev/packages-" ++ ghcVer ++ ".conf") + , Just D.GlobalPackageDB + , Just cabalDevPackageDb ] } +#else + configFlags | isCabalDev opts = configFlags0 + { DSS.configPackageDB = DSS.Flag cabalDevPackageDb + } +#endif | otherwise = configFlags0 + cabalDevPackageDb = D.SpecificPackageDB ("cabal-dev/packages-" ++ ghcVer ++ ".conf") + + config = (DSS.defaultConfigFlags D.defaultProgramConfiguration) { DSS.configConfigurationsFlags = [ (D.FlagName "devel", True) -- legacy