[project @ 2005-11-08 14:18:35 by simonmar]
authorsimonmar <unknown>
Tue, 8 Nov 2005 14:18:35 +0000 (14:18 +0000)
committersimonmar <unknown>
Tue, 8 Nov 2005 14:18:35 +0000 (14:18 +0000)
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.

ghc/utils/ghc-pkg/Main.hs

index 04170c4..2f8be45 100644 (file)
@@ -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)