Commit 302a822d authored by Sam Stephenson's avatar Sam Stephenson
Browse files

Try to download files from RUBY_BUILD_MIRROR_URL first

parent 5d2e4360
Loading
Loading
Loading
Loading
+24 −12
Original line number Diff line number Diff line
@@ -179,14 +179,20 @@ retrieve_url() {
fetch_tarball() {
  local package_name="$1"
  local package_url="$2"
  local mirror_url

  local checksum="${package_url#*\#}"
  if [ -n "$checksum" ]; then
    package_url="${package_url%%#*}"

    if [ -n "$RUBY_BUILD_MIRROR_URL" ]; then
      mirror_url="${RUBY_BUILD_MIRROR_URL}/$checksum"
    fi
  fi

  local package_filename="${package_name}.tar.gz"
  symlink_tarball_from_cache "$package_filename" "$checksum" ||
  download_tarball "$mirror_url" "$package_filename" "$checksum" ||
  download_tarball "$package_url" "$package_filename" "$checksum"

  { tar xzvf "$package_filename"
@@ -195,34 +201,34 @@ fetch_tarball() {
}

symlink_tarball_from_cache() {
  if [ -n "$RUBY_BUILD_CACHE_PATH" ]; then
  [ -n "$RUBY_BUILD_CACHE_PATH" ] || return 1

  local package_filename="$1"
  local cached_package_filename="${RUBY_BUILD_CACHE_PATH}/$package_filename"
  local checksum="$2"

    if verify_checksum "$cached_package_filename" "$checksum"; then
      ln -s "$cached_package_filename" "$package_filename" >&4 2>&1
      return 0
    fi
  fi
  return 1
  { verify_checksum "$cached_package_filename" "$checksum"
    ln -s "$cached_package_filename" "$package_filename"
  } >&4 2>&1 || return 1
}

download_tarball() {
  local package_url="$1"
  [ -n "$package_url" ] || return 1

  local package_filename="$2"
  local checksum="$3"

  echo "Downloading ${package_url}..." >&2
  { retrieve_url "$package_url" > "$package_filename"
    verify_checksum "$package_filename" "$checksum"
  } >&4 2>&1
  } >&4 2>&1 || return 1

  if [ -n "$RUBY_BUILD_CACHE_PATH" ]; then
    local cached_package_filename="${RUBY_BUILD_CACHE_PATH}/$package_filename"
    { mv "$package_filename" "$cached_package_filename"
      ln -s "$cached_package_filename" "$package_filename"
    } >&4 2>&1
    } >&4 2>&1 || return 1
  fi
}

@@ -546,6 +552,12 @@ else
  unset RUBY_BUILD_CACHE_PATH
fi

if [ -z "$RUBY_BUILD_MIRROR_URL" ]; then
  RUBY_BUILD_MIRROR_URL="http://cloud.github.com/downloads/sstephenson/ruby-build-download-mirror"
else
  RUBY_BUILD_MIRROR_URL="${RUBY_BUILD_MIRROR_URL%/}"
fi

SEED="$(date "+%Y%m%d%H%M%S").$$"
LOG_PATH="${TMP}/ruby-build.${SEED}.log"
RUBY_BIN="${PREFIX_PATH}/bin/ruby"