mirror of
https://github.com/rbenv/ruby-build.git
synced 2025-06-28 06:31:02 +02:00
Merge branch 'no-resume-download'
This commit is contained in:
commit
d36e88c59e
4 changed files with 71 additions and 22 deletions
|
@ -227,7 +227,7 @@ http_head_curl() {
|
|||
}
|
||||
|
||||
http_get_curl() {
|
||||
curl -C - -o "${2:--}" -qsSLf "$1"
|
||||
curl -q -o "${2:--}" -sSLf "$1"
|
||||
}
|
||||
|
||||
http_head_wget() {
|
||||
|
@ -235,7 +235,7 @@ http_head_wget() {
|
|||
}
|
||||
|
||||
http_get_wget() {
|
||||
wget -nv -c -O "${2:--}" "$1"
|
||||
wget -nv -O "${2:--}" "$1"
|
||||
}
|
||||
|
||||
fetch_tarball() {
|
||||
|
@ -261,7 +261,7 @@ fetch_tarball() {
|
|||
tar_args="${tar_args/z/j}"
|
||||
fi
|
||||
|
||||
if ! symlink_tarball_from_cache "$package_filename" "$checksum"; then
|
||||
if ! reuse_existing_tarball "$package_filename" "$checksum"; then
|
||||
echo "Downloading ${package_filename}..." >&2
|
||||
http head "$mirror_url" &&
|
||||
download_tarball "$mirror_url" "$package_filename" "$checksum" ||
|
||||
|
@ -278,13 +278,19 @@ fetch_tarball() {
|
|||
} >&4 2>&1
|
||||
}
|
||||
|
||||
symlink_tarball_from_cache() {
|
||||
[ -n "$RUBY_BUILD_CACHE_PATH" ] || return 1
|
||||
|
||||
reuse_existing_tarball() {
|
||||
local package_filename="$1"
|
||||
local cached_package_filename="${RUBY_BUILD_CACHE_PATH}/$package_filename"
|
||||
local checksum="$2"
|
||||
|
||||
# Reuse existing file in build location
|
||||
if [ -e "$package_filename" ] && verify_checksum "$package_filename" "$checksum"; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Reuse previously downloaded file in cache location
|
||||
[ -n "$RUBY_BUILD_CACHE_PATH" ] || return 1
|
||||
local cached_package_filename="${RUBY_BUILD_CACHE_PATH}/$package_filename"
|
||||
|
||||
[ -e "$cached_package_filename" ] || return 1
|
||||
verify_checksum "$cached_package_filename" "$checksum" >&4 2>&1 || return 1
|
||||
ln -s "$cached_package_filename" "$package_filename" >&4 2>&1 || return 1
|
||||
|
|
|
@ -11,7 +11,7 @@ setup() {
|
|||
|
||||
@test "packages are saved to download cache" {
|
||||
stub md5 true
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/without-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
@ -59,7 +59,7 @@ setup() {
|
|||
|
||||
stub md5 true "echo invalid" "echo $checksum"
|
||||
stub curl "-*I* : true" \
|
||||
"-C - -o * -*S* http://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$4"
|
||||
"-q -o * -*S* http://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3"
|
||||
|
||||
touch "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz"
|
||||
|
||||
|
@ -76,7 +76,7 @@ setup() {
|
|||
|
||||
@test "nonexistent cache directory is ignored" {
|
||||
stub md5 true
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
export RUBY_BUILD_CACHE_PATH="${TMP}/nonexistent"
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ export RUBY_BUILD_CACHE_PATH=
|
|||
|
||||
@test "package URL without checksum" {
|
||||
stub md5 true
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/without-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
@ -20,7 +20,7 @@ export RUBY_BUILD_CACHE_PATH=
|
|||
|
||||
@test "package URL with valid checksum" {
|
||||
stub md5 true "echo 83e6d7725e20166024a1eb74cde80677"
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
@ -33,7 +33,7 @@ export RUBY_BUILD_CACHE_PATH=
|
|||
|
||||
@test "package URL with invalid checksum" {
|
||||
stub md5 true "echo 83e6d7725e20166024a1eb74cde80677"
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/with-invalid-checksum
|
||||
[ "$status" -eq 1 ]
|
||||
|
@ -46,7 +46,7 @@ export RUBY_BUILD_CACHE_PATH=
|
|||
|
||||
@test "package URL with checksum but no MD5 support" {
|
||||
stub md5 false
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
@ -59,7 +59,7 @@ export RUBY_BUILD_CACHE_PATH=
|
|||
|
||||
@test "package with invalid checksum" {
|
||||
stub md5 true "echo invalid"
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
[ "$status" -eq 1 ]
|
||||
|
@ -68,3 +68,46 @@ export RUBY_BUILD_CACHE_PATH=
|
|||
unstub curl
|
||||
unstub md5
|
||||
}
|
||||
|
||||
@test "existing tarball in build location is reused" {
|
||||
stub md5 true "echo 83e6d7725e20166024a1eb74cde80677"
|
||||
stub curl false
|
||||
stub wget false
|
||||
|
||||
export -n RUBY_BUILD_CACHE_PATH
|
||||
export RUBY_BUILD_BUILD_PATH="${TMP}/build"
|
||||
|
||||
mkdir -p "$RUBY_BUILD_BUILD_PATH"
|
||||
ln -s "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$RUBY_BUILD_BUILD_PATH"
|
||||
|
||||
run_inline_definition <<DEF
|
||||
install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.gz#83e6d7725e20166024a1eb74cde80677" copy
|
||||
DEF
|
||||
|
||||
assert_success
|
||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
||||
|
||||
unstub md5
|
||||
}
|
||||
|
||||
@test "existing tarball in build location is discarded if not matching checksum" {
|
||||
stub md5 true \
|
||||
"echo invalid" \
|
||||
"echo 83e6d7725e20166024a1eb74cde80677"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
export -n RUBY_BUILD_CACHE_PATH
|
||||
export RUBY_BUILD_BUILD_PATH="${TMP}/build"
|
||||
|
||||
mkdir -p "$RUBY_BUILD_BUILD_PATH"
|
||||
touch "${RUBY_BUILD_BUILD_PATH}/package-1.0.0.tar.gz"
|
||||
|
||||
run_inline_definition <<DEF
|
||||
install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.gz#83e6d7725e20166024a1eb74cde80677" copy
|
||||
DEF
|
||||
|
||||
assert_success
|
||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
||||
|
||||
unstub md5
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ export RUBY_BUILD_MIRROR_URL=http://mirror.example.com
|
|||
|
||||
@test "package URL without checksum bypasses mirror" {
|
||||
stub md5 true
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/without-checksum
|
||||
echo "$output" >&2
|
||||
|
@ -22,7 +22,7 @@ export RUBY_BUILD_MIRROR_URL=http://mirror.example.com
|
|||
|
||||
@test "package URL with checksum but no MD5 support bypasses mirror" {
|
||||
stub md5 false
|
||||
stub curl "-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
@ -39,7 +39,7 @@ export RUBY_BUILD_MIRROR_URL=http://mirror.example.com
|
|||
|
||||
stub md5 true "echo $checksum"
|
||||
stub curl "-*I* $mirror_url : true" \
|
||||
"-C - -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$4"
|
||||
"-q -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3"
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
@ -56,7 +56,7 @@ export RUBY_BUILD_MIRROR_URL=http://mirror.example.com
|
|||
|
||||
stub md5 true "echo $checksum"
|
||||
stub curl "-*I* $mirror_url : false" \
|
||||
"-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
"-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
@ -73,8 +73,8 @@ export RUBY_BUILD_MIRROR_URL=http://mirror.example.com
|
|||
|
||||
stub md5 true "echo invalid" "echo $checksum"
|
||||
stub curl "-*I* $mirror_url : true" \
|
||||
"-C - -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$4" \
|
||||
"-C - -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${6##*/} \$4"
|
||||
"-q -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" \
|
||||
"-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
echo "$output" >&2
|
||||
|
@ -92,7 +92,7 @@ export RUBY_BUILD_MIRROR_URL=http://mirror.example.com
|
|||
|
||||
stub md5 true "echo $checksum"
|
||||
stub curl "-*I* : true" \
|
||||
"-C - -o * -*S* http://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$4" \
|
||||
"-q -o * -*S* http://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" \
|
||||
|
||||
install_fixture definitions/with-checksum
|
||||
[ "$status" -eq 0 ]
|
||||
|
|
Loading…
Reference in a new issue