From: simonmar Date: Tue, 8 Nov 2005 14:18:35 +0000 (+0000) Subject: [project @ 2005-11-08 14:18:35 by simonmar] X-Git-Tag: Initial_conversion_from_CVS_complete~58 X-Git-Url: http://git.megacz.com/?a=commitdiff_plain;h=d76ab8dde14aedffd323034506bb4deae8855f60;hp=033418425ff8b4591580bf2bc4476b7ecc203ba6;p=ghc-hetmet.git [project @ 2005-11-08 14:18:35 by simonmar] when GHC_PACKAGE_PATH is set, treat the database at the bottom of the stack as the "global" one, ie. the one we modify by default. This means that GHC_PACKAGE_PATH can be used to set up a virtual GHC package environment into which packages can be installed using Cabal, without setting anything other than GHC_PACKAGE_PATH. --- diff --git a/ghc/utils/ghc-pkg/Main.hs b/ghc/utils/ghc-pkg/Main.hs index 04170c4..2f8be45 100644 --- a/ghc/utils/ghc-pkg/Main.hs +++ b/ghc/utils/ghc-pkg/Main.hs @@ -314,6 +314,10 @@ getPkgDatabases modify flags = do | otherwise -> cs where cs = parseSearchPath path + -- The "global" database is always the one at the bottom of the stack. + -- This is the database we modify by default. + virt_global_conf = last env_stack + -- -f flags on the command line add to the database stack, unless any -- of them are present in the stack already. let flag_stack = filter (`notElem` env_stack) @@ -327,10 +331,10 @@ getPkgDatabases modify flags = do then return flag_stack else let go (FlagUser : fs) = modifying user_conf - go (FlagGlobal : fs) = modifying global_conf + go (FlagGlobal : fs) = modifying virt_global_conf go (FlagConfig f : fs) = modifying f go (_ : fs) = go fs - go [] = modifying global_conf + go [] = modifying virt_global_conf modifying f | f `elem` flag_stack = return (dropWhile (/= f) flag_stack)