split out setEnv to avoid adding dep
Windows needs the setenv package in custom-setup, but I don't want to pull it in on unix, which would probably break some builds and need more work. Instead, split out setEnv to a separate module. Quite likely, unix-compat will get a portable environment layer, and then both modules can be removed from here. This commit was sponsored by Øyvind Andersen Holm.
This commit is contained in:
parent
ea12fb38f4
commit
8d68112be5
10 changed files with 53 additions and 30 deletions
|
@ -14,6 +14,7 @@ import Utility.UserInfo
|
|||
import qualified Git.Config
|
||||
import Config
|
||||
import Utility.Env
|
||||
import Utility.Env.Set
|
||||
|
||||
{- Checks that the system's environment allows git to function.
|
||||
- Git requires a GECOS username, or suitable git configuration, or
|
||||
|
|
|
@ -15,6 +15,7 @@ import qualified Annex
|
|||
import Assistant.Alert
|
||||
import Assistant.DaemonStatus
|
||||
import Utility.Env
|
||||
import Utility.Env.Set
|
||||
import Types.Distribution
|
||||
import Types.Transfer
|
||||
import Logs.Web
|
||||
|
|
|
@ -12,6 +12,7 @@ import Git.Types
|
|||
import Git.Construct
|
||||
import qualified Git.Config
|
||||
import Utility.Env
|
||||
import Utility.Env.Set
|
||||
|
||||
{- Gets the current git repository.
|
||||
-
|
||||
|
|
|
@ -10,6 +10,7 @@ module Git.Index where
|
|||
import Common
|
||||
import Git
|
||||
import Utility.Env
|
||||
import Utility.Env.Set
|
||||
|
||||
indexEnv :: String
|
||||
indexEnv = "GIT_INDEX_FILE"
|
||||
|
|
11
Test.hs
11
Test.hs
|
@ -95,6 +95,7 @@ import qualified Utility.Process
|
|||
import qualified Utility.Misc
|
||||
import qualified Utility.InodeCache
|
||||
import qualified Utility.Env
|
||||
import qualified Utility.Env.Set
|
||||
import qualified Utility.Matcher
|
||||
import qualified Utility.Exception
|
||||
import qualified Utility.Hash
|
||||
|
@ -142,7 +143,7 @@ runner = Just go
|
|||
subenv = "GIT_ANNEX_TEST_SUBPROCESS"
|
||||
runsubprocesstests opts Nothing = do
|
||||
pp <- Annex.Path.programPath
|
||||
Utility.Env.setEnv subenv "1" True
|
||||
Utility.Env.Set.setEnv subenv "1" True
|
||||
ps <- getArgs
|
||||
(Nothing, Nothing, Nothing, pid) <-createProcess (proc pp ps)
|
||||
exitcode <- waitForProcess pid
|
||||
|
@ -1931,9 +1932,9 @@ ensuretmpdir = do
|
|||
isolateGitConfig :: IO a -> IO a
|
||||
isolateGitConfig a = Utility.Tmp.withTmpDir "testhome" $ \tmphome -> do
|
||||
tmphomeabs <- absPath tmphome
|
||||
Utility.Env.setEnv "HOME" tmphomeabs True
|
||||
Utility.Env.setEnv "XDG_CONFIG_HOME" tmphomeabs True
|
||||
Utility.Env.setEnv "GIT_CONFIG_NOSYSTEM" "1" True
|
||||
Utility.Env.Set.setEnv "HOME" tmphomeabs True
|
||||
Utility.Env.Set.setEnv "XDG_CONFIG_HOME" tmphomeabs True
|
||||
Utility.Env.Set.setEnv "GIT_CONFIG_NOSYSTEM" "1" True
|
||||
a
|
||||
|
||||
cleanup :: FilePath -> IO ()
|
||||
|
@ -2119,7 +2120,7 @@ setTestMode testmode = do
|
|||
currdir <- getCurrentDirectory
|
||||
p <- Utility.Env.getEnvDefault "PATH" ""
|
||||
|
||||
mapM_ (\(var, val) -> Utility.Env.setEnv var val True)
|
||||
mapM_ (\(var, val) -> Utility.Env.Set.setEnv var val True)
|
||||
-- Ensure that the just-built git annex is used.
|
||||
[ ("PATH", currdir ++ [searchPathSeparator] ++ p)
|
||||
, ("TOPDIR", currdir)
|
||||
|
|
|
@ -16,7 +16,6 @@ import Control.Applicative
|
|||
import Data.Maybe
|
||||
import Prelude
|
||||
import qualified System.Environment as E
|
||||
import qualified System.SetEnv
|
||||
#else
|
||||
import qualified System.Posix.Env as PE
|
||||
#endif
|
||||
|
@ -42,29 +41,6 @@ getEnvironment = PE.getEnvironment
|
|||
getEnvironment = E.getEnvironment
|
||||
#endif
|
||||
|
||||
{- Sets an environment variable. To overwrite an existing variable,
|
||||
- overwrite must be True.
|
||||
-
|
||||
- On Windows, setting a variable to "" unsets it. -}
|
||||
setEnv :: String -> String -> Bool -> IO ()
|
||||
#ifndef mingw32_HOST_OS
|
||||
setEnv var val overwrite = PE.setEnv var val overwrite
|
||||
#else
|
||||
setEnv var val True = System.SetEnv.setEnv var val
|
||||
setEnv var val False = do
|
||||
r <- getEnv var
|
||||
case r of
|
||||
Nothing -> setEnv var val True
|
||||
Just _ -> return ()
|
||||
#endif
|
||||
|
||||
unsetEnv :: String -> IO ()
|
||||
#ifndef mingw32_HOST_OS
|
||||
unsetEnv = PE.unsetEnv
|
||||
#else
|
||||
unsetEnv = System.SetEnv.unsetEnv
|
||||
#endif
|
||||
|
||||
{- Adds the environment variable to the input environment. If already
|
||||
- present in the list, removes the old value.
|
||||
-
|
||||
|
|
40
Utility/Env/Set.hs
Normal file
40
Utility/Env/Set.hs
Normal file
|
@ -0,0 +1,40 @@
|
|||
{- portable environment variables
|
||||
-
|
||||
- Copyright 2013 Joey Hess <id@joeyh.name>
|
||||
-
|
||||
- License: BSD-2-clause
|
||||
-}
|
||||
|
||||
{-# LANGUAGE CPP #-}
|
||||
|
||||
module Utility.Env.Set where
|
||||
|
||||
#ifdef mingw32_HOST_OS
|
||||
import qualified System.Environment as E
|
||||
import qualified System.SetEnv
|
||||
#else
|
||||
import qualified System.Posix.Env as PE
|
||||
#endif
|
||||
|
||||
{- Sets an environment variable. To overwrite an existing variable,
|
||||
- overwrite must be True.
|
||||
-
|
||||
- On Windows, setting a variable to "" unsets it. -}
|
||||
setEnv :: String -> String -> Bool -> IO ()
|
||||
#ifndef mingw32_HOST_OS
|
||||
setEnv var val overwrite = PE.setEnv var val overwrite
|
||||
#else
|
||||
setEnv var val True = System.SetEnv.setEnv var val
|
||||
setEnv var val False = do
|
||||
r <- getEnv var
|
||||
case r of
|
||||
Nothing -> setEnv var val True
|
||||
Just _ -> return ()
|
||||
#endif
|
||||
|
||||
unsetEnv :: String -> IO ()
|
||||
#ifndef mingw32_HOST_OS
|
||||
unsetEnv = PE.unsetEnv
|
||||
#else
|
||||
unsetEnv = System.SetEnv.unsetEnv
|
||||
#endif
|
|
@ -15,6 +15,7 @@ import qualified Build.SysConfig as SysConfig
|
|||
import System.Posix.Types
|
||||
import qualified System.Posix.IO
|
||||
import Utility.Env
|
||||
import Utility.Env.Set
|
||||
#endif
|
||||
import Utility.Tmp
|
||||
import Utility.Format (decode_c)
|
||||
|
|
|
@ -11,7 +11,7 @@ module Utility.Lsof where
|
|||
|
||||
import Common
|
||||
import Build.SysConfig as SysConfig
|
||||
import Utility.Env
|
||||
import Utility.Env.Set
|
||||
|
||||
import System.Posix.Types
|
||||
|
||||
|
|
|
@ -995,6 +995,7 @@ Executable git-annex
|
|||
Utility.Dot
|
||||
Utility.DottedVersion
|
||||
Utility.Env
|
||||
Utility.Env.Set
|
||||
Utility.Exception
|
||||
Utility.ExternalSHA
|
||||
Utility.FileMode
|
||||
|
|
Loading…
Reference in a new issue