Loading bin/ruby-build +20 −18 Original line number Diff line number Diff line Loading @@ -300,42 +300,40 @@ http() { local file="$3" [ -n "$url" ] || return 1 if type curl &>/dev/null; then if type aria2c &>/dev/null; then "http_${method}_aria2c" "$url" "$file" elif type curl &>/dev/null; then "http_${method}_curl" "$url" "$file" elif type wget &>/dev/null; then "http_${method}_wget" "$url" "$file" else echo "error: please install \`curl\` or \`wget\` and try again" >&2 echo "error: please install \`aria2c\`, \`curl\` or \`wget\` and try again" >&2 exit 1 fi } http_head_aria2c() { aria2c --dry-run ${ARIA2_OPTS} "$1" >&4 2>&1 } http_get_aria2c() { aria2c -o "${2:--}" ${ARIA2_OPTS} "$1" } http_head_curl() { options="" [ -n "${IPV4}" ] && options="--ipv4" [ -n "${IPV6}" ] && options="--ipv6" curl -qsILf ${options} "$1" >&4 2>&1 curl -qsILf ${CURL_OPTS} "$1" >&4 2>&1 } http_get_curl() { options="" [ -n "${IPV4}" ] && options="--ipv4" [ -n "${IPV6}" ] && options="--ipv6" curl -q -o "${2:--}" -sSLf ${options} "$1" curl -q -o "${2:--}" -sSLf ${CURL_OPTS} "$1" } http_head_wget() { options="" [ -n "${IPV4}" ] && options="--inet4-only" [ -n "${IPV6}" ] && options="--inet6-only" wget -q --spider ${options} "$1" >&4 2>&1 wget -q --spider ${WGET_OPTS} "$1" >&4 2>&1 } http_get_wget() { options="" [ -n "${IPV4}" ] && options="--inet4-only" [ -n "${IPV6}" ] && options="--inet6-only" wget -nv ${options} -O "${2:--}" "$1" wget -nv ${WGET_OPTS} -O "${2:--}" "$1" } fetch_tarball() { Loading Loading @@ -1239,6 +1237,10 @@ if [ -n "$RUBY_BUILD_SKIP_MIRROR" ] || ! has_checksum_support compute_sha2; then unset RUBY_BUILD_MIRROR_URL fi ARIA2_OPTS="${RUBY_BUILD_ARIA2_OPTS} ${IPV4+--disable-ipv6=true} ${IPV6+--disable-ipv6=false}" CURL_OPTS="${RUBY_BUILD_CURL_OPTS} ${IPV4+--ipv4} ${IPV6+--ipv6}" WGET_OPTS="${RUBY_BUILD_WGET_OPTS} ${IPV4+--inet4-only} ${IPV6+--inet6-only}" SEED="$(date "+%Y%m%d%H%M%S").$$" LOG_PATH="${TMP}/ruby-build.${SEED}.log" RUBY_BIN="${PREFIX_PATH}/bin/ruby" Loading test/build.bats +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ export -n RUBY_CONFIGURE_OPTS setup() { mkdir -p "$INSTALL_ROOT" stub md5 false stub curl false stub aria2c false } executable() { Loading test/cache.bats +12 −11 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ load test_helper export RUBY_BUILD_SKIP_MIRROR=1 export RUBY_BUILD_CACHE_PATH="$TMP/cache" export RUBY_BUILD_ARIA2_OPTS= setup() { mkdir "$RUBY_BUILD_CACHE_PATH" Loading @@ -10,19 +11,19 @@ setup() { @test "packages are saved to download cache" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/without-checksum assert_success assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] unstub curl unstub aria2c } @test "cached package without checksum" { stub curl stub aria2c cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$RUBY_BUILD_CACHE_PATH" Loading @@ -31,13 +32,13 @@ setup() { assert_success assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] unstub curl unstub aria2c } @test "cached package with valid checksum" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl stub aria2c cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$RUBY_BUILD_CACHE_PATH" Loading @@ -47,7 +48,7 @@ setup() { assert [ -x "${INSTALL_ROOT}/bin/package" ] assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] unstub curl unstub aria2c unstub shasum } Loading @@ -57,8 +58,8 @@ setup() { local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub shasum true "echo invalid" "echo $checksum" stub curl "-*I* : true" \ "-q -o * -*S* https://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" stub aria2c "--dry-run * : true" \ "-o * https://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$2" touch "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" Loading @@ -69,13 +70,13 @@ setup() { assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] assert diff -q "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" "${FIXTURE_ROOT}/package-1.0.0.tar.gz" unstub curl unstub aria2c unstub shasum } @test "nonexistent cache directory is ignored" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" export RUBY_BUILD_CACHE_PATH="${TMP}/nonexistent" Loading @@ -85,5 +86,5 @@ setup() { assert [ -x "${INSTALL_ROOT}/bin/package" ] refute [ -d "$RUBY_BUILD_CACHE_PATH" ] unstub curl unstub aria2c } test/checksum.bats +18 −17 Original line number Diff line number Diff line Loading @@ -3,106 +3,107 @@ load test_helper export RUBY_BUILD_SKIP_MIRROR=1 export RUBY_BUILD_CACHE_PATH= export RUBY_BUILD_ARIA2_OPTS= @test "package URL without checksum" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/without-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c } @test "package URL with valid checksum" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "package URL with invalid checksum" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-invalid-checksum assert_failure refute [ -f "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "package URL with checksum but no shasum support" { stub shasum false stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "package URL with valid md5 checksum" { stub md5 true "echo 83e6d7725e20166024a1eb74cde80677" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-md5-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub md5 } @test "package URL with md5 checksum but no md5 support" { stub md5 false stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-md5-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub md5 } @test "package with invalid checksum" { stub shasum true "echo invalid" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-checksum assert_failure refute [ -f "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "existing tarball in build location is reused" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl false stub aria2c false stub wget false export -n RUBY_BUILD_CACHE_PATH Loading @@ -125,7 +126,7 @@ DEF stub shasum true \ "echo invalid" \ "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" export -n RUBY_BUILD_CACHE_PATH export RUBY_BUILD_BUILD_PATH="${TMP}/build" Loading @@ -144,7 +145,7 @@ DEF } @test "package URL with checksum of unexpected length" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" run_inline_definition <<DEF install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.gz#checksum_of_unexpected_length" copy Loading test/fetch.bats +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ setup() { } @test "failed download displays error message" { stub curl false stub aria2c false install_fixture definitions/without-checksum assert_failure Loading Loading
bin/ruby-build +20 −18 Original line number Diff line number Diff line Loading @@ -300,42 +300,40 @@ http() { local file="$3" [ -n "$url" ] || return 1 if type curl &>/dev/null; then if type aria2c &>/dev/null; then "http_${method}_aria2c" "$url" "$file" elif type curl &>/dev/null; then "http_${method}_curl" "$url" "$file" elif type wget &>/dev/null; then "http_${method}_wget" "$url" "$file" else echo "error: please install \`curl\` or \`wget\` and try again" >&2 echo "error: please install \`aria2c\`, \`curl\` or \`wget\` and try again" >&2 exit 1 fi } http_head_aria2c() { aria2c --dry-run ${ARIA2_OPTS} "$1" >&4 2>&1 } http_get_aria2c() { aria2c -o "${2:--}" ${ARIA2_OPTS} "$1" } http_head_curl() { options="" [ -n "${IPV4}" ] && options="--ipv4" [ -n "${IPV6}" ] && options="--ipv6" curl -qsILf ${options} "$1" >&4 2>&1 curl -qsILf ${CURL_OPTS} "$1" >&4 2>&1 } http_get_curl() { options="" [ -n "${IPV4}" ] && options="--ipv4" [ -n "${IPV6}" ] && options="--ipv6" curl -q -o "${2:--}" -sSLf ${options} "$1" curl -q -o "${2:--}" -sSLf ${CURL_OPTS} "$1" } http_head_wget() { options="" [ -n "${IPV4}" ] && options="--inet4-only" [ -n "${IPV6}" ] && options="--inet6-only" wget -q --spider ${options} "$1" >&4 2>&1 wget -q --spider ${WGET_OPTS} "$1" >&4 2>&1 } http_get_wget() { options="" [ -n "${IPV4}" ] && options="--inet4-only" [ -n "${IPV6}" ] && options="--inet6-only" wget -nv ${options} -O "${2:--}" "$1" wget -nv ${WGET_OPTS} -O "${2:--}" "$1" } fetch_tarball() { Loading Loading @@ -1239,6 +1237,10 @@ if [ -n "$RUBY_BUILD_SKIP_MIRROR" ] || ! has_checksum_support compute_sha2; then unset RUBY_BUILD_MIRROR_URL fi ARIA2_OPTS="${RUBY_BUILD_ARIA2_OPTS} ${IPV4+--disable-ipv6=true} ${IPV6+--disable-ipv6=false}" CURL_OPTS="${RUBY_BUILD_CURL_OPTS} ${IPV4+--ipv4} ${IPV6+--ipv6}" WGET_OPTS="${RUBY_BUILD_WGET_OPTS} ${IPV4+--inet4-only} ${IPV6+--inet6-only}" SEED="$(date "+%Y%m%d%H%M%S").$$" LOG_PATH="${TMP}/ruby-build.${SEED}.log" RUBY_BIN="${PREFIX_PATH}/bin/ruby" Loading
test/build.bats +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ export -n RUBY_CONFIGURE_OPTS setup() { mkdir -p "$INSTALL_ROOT" stub md5 false stub curl false stub aria2c false } executable() { Loading
test/cache.bats +12 −11 Original line number Diff line number Diff line Loading @@ -3,6 +3,7 @@ load test_helper export RUBY_BUILD_SKIP_MIRROR=1 export RUBY_BUILD_CACHE_PATH="$TMP/cache" export RUBY_BUILD_ARIA2_OPTS= setup() { mkdir "$RUBY_BUILD_CACHE_PATH" Loading @@ -10,19 +11,19 @@ setup() { @test "packages are saved to download cache" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/without-checksum assert_success assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] unstub curl unstub aria2c } @test "cached package without checksum" { stub curl stub aria2c cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$RUBY_BUILD_CACHE_PATH" Loading @@ -31,13 +32,13 @@ setup() { assert_success assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] unstub curl unstub aria2c } @test "cached package with valid checksum" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl stub aria2c cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$RUBY_BUILD_CACHE_PATH" Loading @@ -47,7 +48,7 @@ setup() { assert [ -x "${INSTALL_ROOT}/bin/package" ] assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] unstub curl unstub aria2c unstub shasum } Loading @@ -57,8 +58,8 @@ setup() { local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub shasum true "echo invalid" "echo $checksum" stub curl "-*I* : true" \ "-q -o * -*S* https://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" stub aria2c "--dry-run * : true" \ "-o * https://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$2" touch "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" Loading @@ -69,13 +70,13 @@ setup() { assert [ -e "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ] assert diff -q "${RUBY_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" "${FIXTURE_ROOT}/package-1.0.0.tar.gz" unstub curl unstub aria2c unstub shasum } @test "nonexistent cache directory is ignored" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" export RUBY_BUILD_CACHE_PATH="${TMP}/nonexistent" Loading @@ -85,5 +86,5 @@ setup() { assert [ -x "${INSTALL_ROOT}/bin/package" ] refute [ -d "$RUBY_BUILD_CACHE_PATH" ] unstub curl unstub aria2c }
test/checksum.bats +18 −17 Original line number Diff line number Diff line Loading @@ -3,106 +3,107 @@ load test_helper export RUBY_BUILD_SKIP_MIRROR=1 export RUBY_BUILD_CACHE_PATH= export RUBY_BUILD_ARIA2_OPTS= @test "package URL without checksum" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/without-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c } @test "package URL with valid checksum" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "package URL with invalid checksum" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-invalid-checksum assert_failure refute [ -f "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "package URL with checksum but no shasum support" { stub shasum false stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "package URL with valid md5 checksum" { stub md5 true "echo 83e6d7725e20166024a1eb74cde80677" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-md5-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub md5 } @test "package URL with md5 checksum but no md5 support" { stub md5 false stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-md5-checksum assert_success assert [ -x "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub md5 } @test "package with invalid checksum" { stub shasum true "echo invalid" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" install_fixture definitions/with-checksum assert_failure refute [ -f "${INSTALL_ROOT}/bin/package" ] unstub curl unstub aria2c unstub shasum } @test "existing tarball in build location is reused" { stub shasum true "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl false stub aria2c false stub wget false export -n RUBY_BUILD_CACHE_PATH Loading @@ -125,7 +126,7 @@ DEF stub shasum true \ "echo invalid" \ "echo ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" export -n RUBY_BUILD_CACHE_PATH export RUBY_BUILD_BUILD_PATH="${TMP}/build" Loading @@ -144,7 +145,7 @@ DEF } @test "package URL with checksum of unexpected length" { stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3" stub aria2c "-o * http://example.com/* : cp $FIXTURE_ROOT/\${3##*/} \$2" run_inline_definition <<DEF install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.gz#checksum_of_unexpected_length" copy Loading
test/fetch.bats +1 −1 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ setup() { } @test "failed download displays error message" { stub curl false stub aria2c false install_fixture definitions/without-checksum assert_failure Loading