From 543ffa5b9ff2291682f0987e352994c0b25dffac Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 3 May 2013 14:08:26 -0400 Subject: [PATCH] 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. --- Annex/Environment.hs | 18 +++++++++++++----- standalone/android/runshell | 21 ++++++++++----------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/Annex/Environment.hs b/Annex/Environment.hs index 9e59453605..d0cd93c2c2 100644 --- a/Annex/Environment.hs +++ b/Annex/Environment.hs @@ -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 diff --git a/standalone/android/runshell b/standalone/android/runshell index 68a4d6588f..0bd193b74d 100755 --- a/standalone/android/runshell +++ b/standalone/android/runshell @@ -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"