deal with Android's nonstandard shell location

This is so gratutious and pointless. It's a shame that everything we
learned about Unix portability and the importance of standards has been
thrown out the window by these guys.
This commit is contained in:
Joey Hess 2013-02-13 14:30:04 -04:00
parent 8c66801c78
commit f40180f033
5 changed files with 32 additions and 7 deletions

View file

@ -14,6 +14,7 @@ import Assistant.Install.AutoStart
import Assistant.Ssh
import Locations.UserConfig
import Utility.FileMode
import Utility.Shell
#ifdef darwin_HOST_OS
import Utility.OSX
@ -58,7 +59,7 @@ ensureInstalled = go =<< standaloneAppBase
sshdir <- sshDir
let shim = sshdir </> "git-annex-shell"
let content = unlines
[ "#!/bin/sh"
[ shebang
, "set -e"
, "exec", base </> "runshell" ++
" git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\""

View file

@ -10,6 +10,7 @@ module Assistant.Ssh where
import Common.Annex
import Utility.TempFile
import Utility.UserInfo
import Utility.Shell
import Git.Remote
import Data.Text (Text)
@ -155,7 +156,7 @@ addAuthorizedKeysCommand rsynconly dir pubkey = join "&&"
echoval v = "echo " ++ shellEscape v
wrapper = "~/.ssh/git-annex-shell"
script =
[ "#!/bin/sh"
[ shebang
, "set -e"
, "exec git-annex-shell -c \"$SSH_ORIGINAL_COMMAND\""
]

View file

@ -25,6 +25,7 @@ import qualified Git.Branch
import Locations.UserConfig
import qualified Types.Remote as Remote
import Utility.FileMode
import Utility.Shell
import Network.Protocol.XMPP
import qualified Data.Text as T
@ -141,7 +142,7 @@ xmppPush cid gitpush = runPush SendPack cid handleDeferred $ do
let wrapper = tmpdir </> "git-remote-xmpp"
program <- readProgramFile
writeFile wrapper $ unlines
[ "#!/bin/sh"
[ shebang
, "exec " ++ program ++ " xmppgit"
]
modifyFileMode wrapper $ addModes executeModes

10
Init.hs
View file

@ -21,6 +21,7 @@ import Logs.UUID
import Annex.Version
import Annex.UUID
import Utility.UserInfo
import Utility.Shell
genDescription :: Maybe String -> Annex String
genDescription (Just d) = return d
@ -92,7 +93,8 @@ preCommitHook :: Annex FilePath
preCommitHook = (</>) <$> fromRepo Git.localGitDir <*> pure "hooks/pre-commit"
preCommitScript :: String
preCommitScript =
"#!/bin/sh\n" ++
"# automatically configured by git-annex\n" ++
"git annex pre-commit .\n"
preCommitScript = unlines
[ shebang
, "# automatically configured by git-annex"
, "git annex pre-commit ."
]

20
Utility/Shell.hs Normal file
View file

@ -0,0 +1,20 @@
{- /bin/sh handling
-
- Copyright 2013 Joey Hess <joey@kitenet.net>
-
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE CPP #-}
module Utility.Shell where
shellPath :: FilePath
#ifndef WITH_ANDROID
shellPath = "/bin/sh"
#else
shellPath = "/system/bin/sh"
#endif
shebang :: String
shebang = "#!" ++ shellPath