标签: repo

  • 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