work around git/environment/gecos/android suck

I don't know why, but I can't seem to set the environment variables inside
git-annex to work around the git error caused by android's crappy username
and hostname settings. This workaround works, and that's all that's good
about it.
This commit is contained in:
Joey Hess 2013-05-03 14:08:26 -04:00
parent 1b3b1675ab
commit 543ffa5b9f
2 changed files with 23 additions and 16 deletions

View file

@ -5,6 +5,8 @@
- Licensed under the GNU GPL version 3 or higher.
-}
{-# LANGUAGE CPP #-}
module Annex.Environment where
import Common.Annex
@ -27,8 +29,14 @@ checkEnvironmentIO :: IO ()
checkEnvironmentIO = do
whenM (null <$> myUserGecos) $ do
username <- myUserName
-- existing environment is not overwritten
setEnv "GIT_AUTHOR_NAME" username False
setEnv "GIT_COMMITTER_NAME" username False
hostname <- getHostName
setEnv "EMAIL" (username ++ "@" ++ hostname) False
ensureEnv "GIT_AUTHOR_NAME" username
ensureEnv "GIT_COMMITTER_NAME" username
where
#ifndef __ANDROID__
-- existing environment is not overwritten
ensureEnv var val = setEnv var val False
#else
-- Environment setting is broken on Android, so this is dealt with
-- in runshell instead.
ensureEnv _ _ = noop
#endif

View file

@ -58,10 +58,10 @@ buildtree () {
}
install () {
if ! $cmd mkdir -p "$HOME"; then
$cmd echo "mkdir of $HOME failed!"
fi
if $cmd test ! -e "$base/bin/git-annex"; then
if ! $cmd mkdir -p "$HOME"; then
$cmd echo "mkdir of $HOME failed!"
fi
if ! buildtree > $HOME/git-annex-install.log 2>&1; then
$cmd echo "Installation failed! Please report a bug and attach $HOME/git-annex-install.log"
$cmd sh
@ -86,7 +86,7 @@ run () {
export ORIG_GIT_TEMPLATE_DIR
GIT_TEMPLATE_DIR="$base/templates"
export GIT_TEMPLATE_DIR
# Indicate which variables were exported above.
GIT_ANNEX_STANDLONE_ENV="GIT_EXEC_PATH GIT_TEMPLATE_DIR"
export GIT_ANNEX_STANDLONE_ENV
@ -98,18 +98,17 @@ run () {
# /tmp probably doesn't exist, so also use it as TMPDIR
TMPDIR=$GIT_ANNEX_TMP_DIR
export TMPDIR
if $cmd test ! -e "$HOME/.gitconfig"; then
git config --global user.email "git-annex@android"
git config --global user.name "android"
fi
if $cmd test "$1"; then
cmd="$1"
shift 1
exec "$cmd" "$@"
else
# Ensure home directory exists, even if it got deleted
# somehow.
if ! $cmd mkdir -p "$HOME"; then
$cmd echo "mkdir of $HOME failed!"
fi
# As good a start point as any.
cd "$HOME"