still can't express custom-setup deps

They need unix on non-windows, for Utility.Env, which Build.Configure uses,
but cabal can't express that in a custom-setup stanza.

To avoid this problem, Utility.Env would need to be moved into
unix-compat..
This commit is contained in:
Joey Hess 2017-11-14 14:59:51 -04:00
parent 061f5ddd43
commit 1b6cbb63e9
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
12 changed files with 32 additions and 60 deletions

View file

@ -14,7 +14,6 @@ import Utility.UserInfo
import qualified Git.Config import qualified Git.Config
import Config import Config
import Utility.Env import Utility.Env
import Utility.Env.Set
{- Checks that the system's environment allows git to function. {- Checks that the system's environment allows git to function.
- Git requires a GECOS username, or suitable git configuration, or - Git requires a GECOS username, or suitable git configuration, or

View file

@ -15,7 +15,6 @@ import qualified Annex
import Assistant.Alert import Assistant.Alert
import Assistant.DaemonStatus import Assistant.DaemonStatus
import Utility.Env import Utility.Env
import Utility.Env.Set
import Types.Distribution import Types.Distribution
import Types.Transfer import Types.Transfer
import Logs.Web import Logs.Web

View file

@ -7,7 +7,6 @@ module Build.Configure where
import Control.Applicative import Control.Applicative
import Control.Monad.IfElse import Control.Monad.IfElse
import Control.Monad import Control.Monad
import System.Directory
import Build.TestConfig import Build.TestConfig
import Build.Version import Build.Version
@ -19,6 +18,7 @@ import Utility.Env
import Utility.Exception import Utility.Exception
import qualified Git.Version import qualified Git.Version
import Utility.DottedVersion import Utility.DottedVersion
import Utility.Directory
tests :: [TestCase] tests :: [TestCase]
tests = tests =

View file

@ -7,10 +7,10 @@ module Build.TestConfig where
import Utility.Path import Utility.Path
import Utility.Monad import Utility.Monad
import Utility.SafeCommand import Utility.SafeCommand
import Utility.Directory
import System.IO import System.IO
import System.FilePath import System.FilePath
import System.Directory
type ConfigKey = String type ConfigKey = String
data ConfigValue = data ConfigValue =

View file

@ -12,7 +12,6 @@ import Git.Types
import Git.Construct import Git.Construct
import qualified Git.Config import qualified Git.Config
import Utility.Env import Utility.Env
import Utility.Env.Set
{- Gets the current git repository. {- Gets the current git repository.
- -

View file

@ -10,7 +10,6 @@ module Git.Index where
import Common import Common
import Git import Git
import Utility.Env import Utility.Env
import Utility.Env.Set
indexEnv :: String indexEnv :: String
indexEnv = "GIT_INDEX_FILE" indexEnv = "GIT_INDEX_FILE"

11
Test.hs
View file

@ -95,7 +95,6 @@ import qualified Utility.Process
import qualified Utility.Misc import qualified Utility.Misc
import qualified Utility.InodeCache import qualified Utility.InodeCache
import qualified Utility.Env import qualified Utility.Env
import qualified Utility.Env.Set
import qualified Utility.Matcher import qualified Utility.Matcher
import qualified Utility.Exception import qualified Utility.Exception
import qualified Utility.Hash import qualified Utility.Hash
@ -143,7 +142,7 @@ runner = Just go
subenv = "GIT_ANNEX_TEST_SUBPROCESS" subenv = "GIT_ANNEX_TEST_SUBPROCESS"
runsubprocesstests opts Nothing = do runsubprocesstests opts Nothing = do
pp <- Annex.Path.programPath pp <- Annex.Path.programPath
Utility.Env.Set.setEnv subenv "1" True Utility.Env.setEnv subenv "1" True
ps <- getArgs ps <- getArgs
(Nothing, Nothing, Nothing, pid) <-createProcess (proc pp ps) (Nothing, Nothing, Nothing, pid) <-createProcess (proc pp ps)
exitcode <- waitForProcess pid exitcode <- waitForProcess pid
@ -1932,9 +1931,9 @@ ensuretmpdir = do
isolateGitConfig :: IO a -> IO a isolateGitConfig :: IO a -> IO a
isolateGitConfig a = Utility.Tmp.withTmpDir "testhome" $ \tmphome -> do isolateGitConfig a = Utility.Tmp.withTmpDir "testhome" $ \tmphome -> do
tmphomeabs <- absPath tmphome tmphomeabs <- absPath tmphome
Utility.Env.Set.setEnv "HOME" tmphomeabs True Utility.Env.setEnv "HOME" tmphomeabs True
Utility.Env.Set.setEnv "XDG_CONFIG_HOME" tmphomeabs True Utility.Env.setEnv "XDG_CONFIG_HOME" tmphomeabs True
Utility.Env.Set.setEnv "GIT_CONFIG_NOSYSTEM" "1" True Utility.Env.setEnv "GIT_CONFIG_NOSYSTEM" "1" True
a a
cleanup :: FilePath -> IO () cleanup :: FilePath -> IO ()
@ -2120,7 +2119,7 @@ setTestMode testmode = do
currdir <- getCurrentDirectory currdir <- getCurrentDirectory
p <- Utility.Env.getEnvDefault "PATH" "" p <- Utility.Env.getEnvDefault "PATH" ""
mapM_ (\(var, val) -> Utility.Env.Set.setEnv var val True) mapM_ (\(var, val) -> Utility.Env.setEnv var val True)
-- Ensure that the just-built git annex is used. -- Ensure that the just-built git annex is used.
[ ("PATH", currdir ++ [searchPathSeparator] ++ p) [ ("PATH", currdir ++ [searchPathSeparator] ++ p)
, ("TOPDIR", currdir) , ("TOPDIR", currdir)

View file

@ -16,6 +16,7 @@ import Control.Applicative
import Data.Maybe import Data.Maybe
import Prelude import Prelude
import qualified System.Environment as E import qualified System.Environment as E
import qualified System.SetEnv
#else #else
import qualified System.Posix.Env as PE import qualified System.Posix.Env as PE
#endif #endif
@ -41,6 +42,29 @@ getEnvironment = PE.getEnvironment
getEnvironment = E.getEnvironment getEnvironment = E.getEnvironment
#endif #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 {- Adds the environment variable to the input environment. If already
- present in the list, removes the old value. - present in the list, removes the old value.
- -

View file

@ -1,40 +0,0 @@
{- 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

View file

@ -15,7 +15,6 @@ import qualified Build.SysConfig as SysConfig
import System.Posix.Types import System.Posix.Types
import qualified System.Posix.IO import qualified System.Posix.IO
import Utility.Env import Utility.Env
import Utility.Env.Set
#endif #endif
import Utility.Tmp import Utility.Tmp
import Utility.Format (decode_c) import Utility.Format (decode_c)

View file

@ -11,7 +11,7 @@ module Utility.Lsof where
import Common import Common
import Build.SysConfig as SysConfig import Build.SysConfig as SysConfig
import Utility.Env.Set import Utility.Env
import System.Posix.Types import System.Posix.Types

View file

@ -303,11 +303,6 @@ source-repository head
type: git type: git
location: git://git-annex.branchable.com/ location: git://git-annex.branchable.com/
custom-setup
Setup-Depends: base (>= 4.5), hslogger, split, unix-compat, process,
filepath, exceptions, bytestring, directory, IfElse, data-default,
utf8-string, Cabal
Executable git-annex Executable git-annex
Main-Is: git-annex.hs Main-Is: git-annex.hs
Build-Depends: Build-Depends:
@ -996,7 +991,6 @@ Executable git-annex
Utility.Dot Utility.Dot
Utility.DottedVersion Utility.DottedVersion
Utility.Env Utility.Env
Utility.Env.Set
Utility.Exception Utility.Exception
Utility.ExternalSHA Utility.ExternalSHA
Utility.FileMode Utility.FileMode