clean up from windows porting

This commit is contained in:
Joey Hess 2013-05-11 18:23:41 -04:00
parent d6bf05a66d
commit 18bdff3fae
28 changed files with 57 additions and 72 deletions

View file

@ -24,11 +24,6 @@ module Annex.Branch (
) where
import qualified Data.ByteString.Lazy.Char8 as L
#ifdef __ANDROID__
import System.Posix.Env (getEnv)
#else
import System.Environment (getEnvironment)
#endif
import Common.Annex
import Annex.BranchState
@ -45,6 +40,7 @@ import Git.FilePath
import Annex.CatFile
import Annex.Perms
import qualified Annex
import Utility.Env
{- Name of the branch that is used to store git-annex's information. -}
name :: Git.Ref

View file

@ -33,8 +33,6 @@ import Utility.TempFile
import Logs.Location
import Utility.InodeCache
import System.PosixCompat.Files
{- Absolute FilePaths of Files in the tree that are associated with a key. -}
associatedFiles :: Key -> Annex [FilePath]
associatedFiles key = do

View file

@ -27,8 +27,6 @@ import Utility.InodeCache
import Utility.CopyFile
import Annex.Perms
import System.PosixCompat.Files
{- Uses git ls-files to find files that need to be committed, and stages
- them into the index. Returns True if some changes were staged. -}
stageDirect :: Annex Bool

View file

@ -10,16 +10,10 @@
module Annex.Environment where
import Common.Annex
#ifndef __WINDOWS__
import Utility.Env
import Utility.UserInfo
#endif
import qualified Git.Config
#ifndef __WINDOWS__
import System.Posix.Env
#endif
import Network.BSD
{- Checks that the system's environment allows git to function.
- Git requires a GECOS username, or suitable git configuration, or
- environment variables. -}
@ -41,7 +35,7 @@ checkEnvironmentIO =
where
#ifndef __ANDROID__
-- existing environment is not overwritten
ensureEnv var val = setEnv var val False
ensureEnv var val = void $ setEnv var val False
#else
-- Environment setting is broken on Android, so this is dealt with
-- in runshell instead.

View file

@ -19,8 +19,6 @@ import qualified Git.UpdateIndex
import qualified Annex.Queue
import Git.Types
import System.PosixCompat.Files
type LinkTarget = String
{- Checks if a file is a link to a key. -}

View file

@ -22,7 +22,6 @@ import qualified Annex
import Config
import System.Posix.Types
import System.PosixCompat.Files
withShared :: (SharedRepository -> Annex a) -> Annex a
withShared a = maybe startup a =<< Annex.getState Annex.shared

View file

@ -14,9 +14,6 @@ module Annex.Ssh (
) where
import qualified Data.Map as M
#ifndef __WINDOWS__
import System.Posix.Env
#endif
import Common.Annex
import Annex.LockPool
@ -24,6 +21,7 @@ import Annex.Perms
import qualified Build.SysConfig as SysConfig
import qualified Annex
import Config
import Utility.Env
{- Generates parameters to ssh to a given host (or user@host) on a given
- port, with connection caching. -}
@ -78,11 +76,7 @@ sshCacheDir
)
| otherwise = return Nothing
where
#ifndef __WINDOWS__
gettmpdir = liftIO $ getEnv "GIT_ANNEX_TMP_DIR"
#else
gettmpdir = return Nothing
#endif
usetmpdir tmpdir = liftIO $ catchMaybeIO $ do
createDirectoryIfMissing True tmpdir
return tmpdir

View file

@ -17,6 +17,7 @@ import Config.Files
import Utility.FileMode
import Utility.Shell
import Utility.TempFile
import Utility.Env
#ifdef darwin_HOST_OS
import Utility.OSX
@ -24,8 +25,6 @@ import Utility.OSX
import Utility.FreeDesktop
#endif
import System.Posix.Env
standaloneAppBase :: IO (Maybe FilePath)
standaloneAppBase = getEnv "GIT_ANNEX_APP_BASE"

View file

@ -32,10 +32,10 @@ import qualified Remote as Remote
import Remote.List
import Utility.FileMode
import Utility.Shell
import Utility.Env
import Network.Protocol.XMPP
import qualified Data.Text as T
import System.Posix.Env
import System.Posix.Types
import System.Process (std_in, std_out, std_err)
import Control.Concurrent

View file

@ -18,7 +18,6 @@ import qualified Build.SysConfig as SysConfig
import Data.Digest.Pure.SHA
import qualified Data.ByteString.Lazy as L
import Data.Char
import System.PosixCompat.Files
type SHASize = Int

View file

@ -12,8 +12,6 @@ import Types.Backend
import Types.Key
import Types.KeySource
import System.PosixCompat.Files
backends :: [Backend]
backends = [backend]

View file

@ -9,8 +9,6 @@
module Command.TransferKeys where
import System.PosixCompat.Files
import Common.Annex
import Command
import Annex.Content

View file

@ -158,7 +158,11 @@ firstRun listenhost = do
sendurlback v _origout _origerr url _htmlshim = putMVar v url
openBrowser :: Maybe FilePath -> FilePath -> String -> Maybe Handle -> Maybe Handle -> IO ()
#ifdef __ANDROID__
openBrowser mcmd htmlshim realurl outh errh = do
#else
openBrowser mcmd htmlshim _realurl outh errh = do
#endif
hPutStrLn (fromMaybe stdout outh) $ "Launching web browser on " ++ url
hFlush stdout
environ <- cleanEnvironment

View file

@ -16,8 +16,8 @@ import "MissingH" System.Path as X
import System.FilePath as X
import System.Directory as X
import System.IO as X hiding (FilePath)
import System.PosixCompat.Files as X
#ifndef mingw32_HOST_OS
import System.Posix.Files as X
import System.Posix.IO as X
#endif
import System.Exit as X

View file

@ -15,11 +15,9 @@ import Utility.FileMode
import Crypto
import Types.Remote (RemoteConfig, RemoteConfigKey)
import Remote.Helper.Encryptable (remoteCipher, embedCreds)
import Utility.Env (setEnv)
import System.Environment
#ifndef mingw32_HOST_OS
import System.Posix.Env (setEnv)
#endif
import qualified Data.ByteString.Lazy.Char8 as L
import qualified Data.Map as M
import Utility.Base64
@ -115,7 +113,7 @@ setEnvCredPair (l, p) storage = do
set penv p
where
(uenv, penv) = credPairEnvironment storage
set var val = setEnv var val True
set var val = void $ setEnv var val True
#else
setEnvCredPair _ _ = error "setEnvCredPair TODO"
#endif

View file

@ -11,13 +11,13 @@ module Git.CurrentRepo where
#ifndef __WINDOWS__
import System.Posix.Directory (changeWorkingDirectory)
import System.Posix.Env (getEnv, unsetEnv)
#endif
import Common
import Git.Types
import Git.Construct
import qualified Git.Config
import Utility.Env
{- Gets the current git repository.
-
@ -51,7 +51,7 @@ get = do
v <- getEnv s
case v of
Just d -> do
unsetEnv s
void $ unsetEnv s
Just <$> absPath d
Nothing -> return Nothing
#else

View file

@ -7,7 +7,7 @@
module Git.Index where
import System.Posix.Env (setEnv, unsetEnv, getEnv)
import Utility.Env
{- Forces git to use the specified index file.
-

View file

@ -20,7 +20,6 @@ import Utility.Percentage
import Utility.QuickCheck
import System.Posix.Types
import System.PosixCompat.Files
import Data.Time.Clock
import Data.Time.Clock.POSIX
import Data.Time

20
Test.hs
View file

@ -13,7 +13,6 @@ import Test.QuickCheck.Test
import System.Posix.Directory (changeWorkingDirectory)
import System.Posix.Files
import System.Posix.Env
import Control.Exception.Extensible
import qualified Data.Map as M
import System.IO.HVFS (SystemFS(..))
@ -53,6 +52,7 @@ import qualified Utility.Verifiable
import qualified Utility.Process
import qualified Utility.Misc
import qualified Utility.InodeCache
import qualified Utility.Env
main :: IO ()
main = do
@ -726,7 +726,7 @@ test_bup_remote = "git-annex bup remote" ~: intmpclonerepo $ when Build.SysConfi
test_crypto :: Test
test_crypto = "git-annex crypto" ~: intmpclonerepo $ when Build.SysConfig.gpg $ do
-- force gpg into batch mode for the tests
setEnv "GPG_BATCH" "1" True
void $ Utility.Env.setEnv "GPG_BATCH" "1" True
Utility.Gpg.testTestHarness @? "test harness self-test failed"
Utility.Gpg.testHarness $ do
createDirectory "dir"
@ -947,20 +947,20 @@ prepare = do
-- and so does git_annex_output. Make sure that the just-built
-- git annex is used.
cwd <- getCurrentDirectory
p <- getEnvDefault "PATH" ""
setEnv "PATH" (cwd ++ ":" ++ p) True
setEnv "TOPDIR" cwd True
p <- Utility.Env.getEnvDefault "PATH" ""
void $ Utility.Env.setEnv "PATH" (cwd ++ ":" ++ p) True
void $Utility.Env.setEnv "TOPDIR" cwd True
-- Avoid git complaining if it cannot determine the user's email
-- address, or exploding if it doesn't know the user's name.
setEnv "GIT_AUTHOR_EMAIL" "test@example.com" True
setEnv "GIT_AUTHOR_NAME" "git-annex test" True
setEnv "GIT_COMMITTER_EMAIL" "test@example.com" True
setEnv "GIT_COMMITTER_NAME" "git-annex test" True
void $ Utility.Env.setEnv "GIT_AUTHOR_EMAIL" "test@example.com" True
void $ Utility.Env.setEnv "GIT_AUTHOR_NAME" "git-annex test" True
void $ Utility.Env.setEnv "GIT_COMMITTER_EMAIL" "test@example.com" True
void $ Utility.Env.setEnv "GIT_COMMITTER_NAME" "git-annex test" True
changeToTmpDir :: FilePath -> IO ()
changeToTmpDir t = do
-- Hack alert. Threading state to here was too much bother.
topdir <- getEnvDefault "TOPDIR" ""
topdir <- Utility.Env.getEnvDefault "TOPDIR" ""
changeWorkingDirectory $ topdir ++ "/" ++ t
tmpdir :: String

View file

@ -14,8 +14,9 @@ import Utility.LogFile
#ifndef __WINDOWS__
import System.Posix
#endif
#else
import System.Posix.Types
#endif
{- Run an action as a daemon, with all output sent to a file descriptor.
-

View file

@ -10,28 +10,35 @@
module Utility.Env where
#ifdef __WINDOWS__
import qualified System.Environment as E
import Utility.Exception
import qualified System.Environment as E
#else
import qualified System.Posix.Env as E
import qualified System.Posix.Env as PE
#endif
{- Posix getEnv is faster than the one in System.Environment,
- so use when available. -}
getEnv :: String -> IO (Maybe String)
#ifndef __WINDOWS__
getEnv = E.getEnv
getEnv = PE.getEnv
#else
getEnv = catchMaybeIO . E.getEnv
#endif
getEnvDefault :: String -> String -> IO String
#ifndef __WINDOWS__
getEnvDefault = E.getEnvDefault
getEnvDefault = PE.getEnvDefault
#else
getEnvDefault var fallback = fromMaybe fallback <$> getEnv var
#endif
getEnvironment :: IO [(String, String)]
#ifndef __WINDOWS__
getEnvironment = PE.getEnvironment
#else
getEnvironment = E.getEnvironment
#endif
{- Returns True if it could successfully set the environment variable.
-
- There is, apparently, no way to do this in Windows. Instead,
@ -39,8 +46,18 @@ getEnvDefault var fallback = fromMaybe fallback <$> getEnv var
setEnv :: String -> String -> Bool -> IO Bool
#ifndef __WINDOWS__
setEnv var val overwrite = do
E.setEnv var val overwrite
PE.setEnv var val overwrite
return True
#else
setEnv _ _ _ = return False
#endif
{- Returns True if it could successfully unset the environment variable. -}
unsetEnv :: String -> IO Bool
#ifndef __WINDOWS__
unsetEnv var = do
PE.unsetEnv var
return True
#else
unsetEnv _ _ _ = return False
#endif

View file

@ -12,9 +12,10 @@ module Utility.FileMode where
import Common
import Control.Exception (bracket)
import Utility.Exception
import System.PosixCompat.Types
import System.PosixCompat.Files
#ifndef __WINDOWS__
import System.Posix.Files
#endif
import Foreign (complement)
{- Applies a conversion function to a file's mode. -}

View file

@ -13,11 +13,9 @@ import System.Posix.Types
import Control.Applicative
import Control.Concurrent
import Control.Exception (bracket)
#ifndef mingw32_HOST_OS
import System.Posix.Env (setEnv, unsetEnv, getEnv)
#endif
import Common
import Utility.Env
newtype KeyIds = KeyIds [String]
deriving (Ord, Eq)
@ -229,7 +227,7 @@ testHarness a = do
setup = do
base <- getTemporaryDirectory
dir <- mktmpdir $ base </> "gpgtmpXXXXXX"
setEnv var dir True
void $ setEnv var dir True
_ <- pipeStrict [Params "--import -q"] $ unlines
[testSecretKey, testKey]
return dir

View file

@ -9,7 +9,6 @@ module Utility.InodeCache where
import Common
import System.PosixCompat.Types
import System.PosixCompat.Files
import Utility.QuickCheck
data InodeCachePrim = InodeCachePrim FileID FileOffset EpochTime

View file

@ -12,7 +12,6 @@ module Utility.LogFile where
import Common
import System.Posix.Types
import System.PosixCompat.Files
openLog :: FilePath -> IO Fd
#ifndef __WINDOWS__

View file

@ -11,9 +11,9 @@ module Utility.Lsof where
import Common
import Build.SysConfig as SysConfig
import Utility.Env
import System.Posix.Types
import System.Posix.Env
data LsofOpenMode = OpenReadWrite | OpenReadOnly | OpenWriteOnly | OpenUnknown
deriving (Show, Eq)
@ -32,7 +32,7 @@ setupLsof = do
when (isAbsolute cmd) $ do
path <- getSearchPath
let path' = takeDirectory cmd : path
setEnv "PATH" (intercalate [searchPathSeparator] path') True
void $ setEnv "PATH" (intercalate [searchPathSeparator] path') True
{- Checks each of the files in a directory to find open files.
- Note that this will find hard links to files elsewhere that are open. -}

View file

@ -20,7 +20,6 @@ import Network.URI
import qualified Network.Browser as Browser
import Network.HTTP
import Data.Either
import System.PosixCompat.Files
import qualified Build.SysConfig

View file

@ -14,7 +14,6 @@ module Utility.UserInfo (
) where
import Control.Applicative
import System.Posix.Types
import System.PosixCompat
import Utility.Env