Android repo sync issus: gnutls_handshake failed

The issus was caused by gnutls library,  if network bandwidth is low

 

Fix:

Build git with openssl from source:

cat git_build.sh

GIT_MAJOR=1.7.9
GIT_MINOR=7
GIT_VER=${GIT_MAJOR}.${GIT_MINOR}
GIT_NAME=git-${GIT_VER}

OPENSSL_VER=1.0.1i
OPENSSL_NAME=openssl-${OPENSSL_VER}

CURL_VER=7.38.0
CURL_NAME=curl-${CURL_VER}

EXPAT_VER=2.1.0
EXPAT_NAME=expat-${EXPAT_VER}

TARGET_DIR=/usr/local/git-${GIT_MAIN}
TARGET_DIR=/tmp/local

BUILD_OPENSSL=0
BUILD_CURL=0
BUILD_EXPAT=0
BUILD_GIT=1

if [ “${BUILD_OPENSSL}” == “1” ];then
  if [ ! -f ${OPENSSL_NAME}.tar.gz ];then
    wget http://www.openssl.org/source/${OPENSSL_NAME}.tar.gz
  fi

  if [ -d ${OPENSSL_NAME} ];then
    rm -rf ${OPENSSL_NAME}
  fi

  tar xvfz ${OPENSSL_NAME}.tar.gz
  cd ${OPENSSL_NAME}

  ./config no-shared no-dso –prefix=${TARGET_DIR}
  make -j4
  #make test
  sudo make install
  cd ..
fi

if [ “${BUILD_CURL}” == “1” ];then
  if [ ! -f ${CURL_NAME}.tar.gz ];then
    wget http://curl.haxx.se/download/${CURL_NAME}.tar.gz
  fi

  if [ -d ${CURL_NAME} ];then
    rm -rf ${CURL_NAME}
  fi

  tar xvfz ${CURL_NAME}.tar.gz
  cd  ${CURL_NAME}
  env PKG_CONFIG_PATH=${TARGET_DIR}/lib/pkgconfig ./configure  –disable-shared –prefix=${TARGET_DIR} –without-gnutls –with-ssl
  make -j4
  sudo make install
  cd ..
fi

if [ “${BUILD_EXPAT}” == “1” ];then
  if [ ! -f ${EXPAT_NAME}.tar.gz ];then
    wget http://sourceforge.net/projects/expat/files/expat/${EXPAT_VER}/${EXPAT_NAME}.tar.gz
  fi

  if [ -d ${EXPAT_NAME} ];then
    rm -rf ${EXPAT_NAME}
  fi
  tar xvfz ${EXPAT_NAME}.tar.gz
  cd ${EXPAT_NAME}
  ./configure –disable-shared –prefix=${TARGET_DIR}
  make
  sudo make install
fi

if [ “${BUILD_GIT}” == “1” ];then
  if [ ! -f v${GIT_VER}.tar.gz ];then
    wget http://github.com/git/git/archive/v${GIT_VER}.tar.gz
  fi

 
  if [ -d ${GIT_NAME} ];then
    rm -rf ${GIT_NAME}
  fi

  tar xvfz v${GIT_VER}.tar.gz
  cd ${GIT_NAME}
  make configure
 
  ./configure –prefix=${TARGET_DIR}  –with-curl –with-openssl=${TARGET_DIR} –with-lib=${TARGET_DIR}

  make -j4
  #make test
  sudo make install
fi