diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build index 040213f2..8108e9fb 100755 --- a/plugins/python-build/bin/python-build +++ b/plugins/python-build/bin/python-build @@ -330,21 +330,22 @@ http() { local file="$3" [ -n "$url" ] || return 1 - 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 - # SSL Certificate error with older wget that does not support Server Name Indication (#60) - if [[ "$(wget --version 2>/dev/null || true)" = "GNU Wget 1.1"[0-3]* ]]; then - echo "python-build: wget (< 1.14) doesn't support Server Name Indication. Please install curl (>= 7.18.1) and try again" >&2 - return 1 - fi - "http_${method}_wget" "$url" "$file" + local http_client + if [ -n "${PYTHON_BUILD_HTTP_CLIENT}" ]; then + http_client="http_${method}_${PYTHON_BUILD_HTTP_CLIENT}" else - echo "error: please install \`aria2c\`, \`curl\` or \`wget\` and try again" >&2 - exit 1 + if type aria2c &>/dev/null; then + http_client="http_${method}_aria2c" + elif type curl &>/dev/null; then + http_client="http_${method}_curl" + elif type wget &>/dev/null; then + http_client="http_${method}_wget" + else + echo "error: please install \`aria2c\`, \`curl\` or \`wget\` and try again" >&2 + exit 1 + fi fi + "${http_client}" "$url" "$file" } http_head_aria2c() { @@ -2039,6 +2040,14 @@ ARIA2_OPTS="${PYTHON_BUILD_ARIA2_OPTS} ${IPV4+--disable-ipv6=true} ${IPV6+--disa CURL_OPTS="${PYTHON_BUILD_CURL_OPTS} ${IPV4+--ipv4} ${IPV6+--ipv6}" WGET_OPTS="${PYTHON_BUILD_WGET_OPTS} ${IPV4+--inet4-only} ${IPV6+--inet6-only}" +if [ -z "${PYTHON_BUILD_HTTP_CLIENT}" ] && ! type aria2c &>/dev/null && ! type curl &>/dev/null; then + # SSL Certificate error with older wget that does not support Server Name Indication (#60) + if [[ "$(wget --version 2>/dev/null || true)" = "GNU Wget 1.1"[0-3]* ]]; then + echo "python-build: wget (< 1.14) doesn't support Server Name Indication. Please install curl (>= 7.18.1) and try again" >&2 + return 1 + fi +fi + # Add an option to build a debug version of Python (#11) if [ -n "$DEBUG" ]; then package_option python configure --with-pydebug diff --git a/plugins/python-build/test/build.bats b/plugins/python-build/test/build.bats index 3526aa27..0b4d1453 100644 --- a/plugins/python-build/test/build.bats +++ b/plugins/python-build/test/build.bats @@ -8,7 +8,6 @@ export CC=cc export -n PYTHON_CONFIGURE_OPTS setup() { - ensure_not_found_in_path aria2c mkdir -p "$INSTALL_ROOT" stub md5 false stub curl false diff --git a/plugins/python-build/test/cache.bats b/plugins/python-build/test/cache.bats index 88b3f89d..2baef589 100644 --- a/plugins/python-build/test/cache.bats +++ b/plugins/python-build/test/cache.bats @@ -3,10 +3,8 @@ load test_helper export PYTHON_BUILD_SKIP_MIRROR=1 export PYTHON_BUILD_CACHE_PATH="$TMP/cache" -export PYTHON_BUILD_CURL_OPTS= setup() { - ensure_not_found_in_path aria2c mkdir "$PYTHON_BUILD_CACHE_PATH" } diff --git a/plugins/python-build/test/checksum.bats b/plugins/python-build/test/checksum.bats index 04973a97..f80d5ae2 100644 --- a/plugins/python-build/test/checksum.bats +++ b/plugins/python-build/test/checksum.bats @@ -3,11 +3,6 @@ load test_helper export PYTHON_BUILD_SKIP_MIRROR=1 export PYTHON_BUILD_CACHE_PATH= -export PYTHON_BUILD_CURL_OPTS= - -setup() { - ensure_not_found_in_path aria2c -} @test "package URL without checksum" { diff --git a/plugins/python-build/test/fetch.bats b/plugins/python-build/test/fetch.bats index c131e688..a2a41759 100644 --- a/plugins/python-build/test/fetch.bats +++ b/plugins/python-build/test/fetch.bats @@ -3,10 +3,8 @@ load test_helper export PYTHON_BUILD_SKIP_MIRROR=1 export PYTHON_BUILD_CACHE_PATH= -export PYTHON_BUILD_ARIA2_OPTS= setup() { - ensure_not_found_in_path aria2c export PYTHON_BUILD_BUILD_PATH="${TMP}/source" mkdir -p "${PYTHON_BUILD_BUILD_PATH}" } @@ -21,6 +19,8 @@ setup() { } @test "using aria2c if available" { + export PYTHON_BUILD_ARIA2_OPTS= + export PYTHON_BUILD_HTTP_CLIENT="aria2c" stub aria2c "--allow-overwrite=true --no-conf=true -o * http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$4" install_fixture definitions/without-checksum diff --git a/plugins/python-build/test/mirror.bats b/plugins/python-build/test/mirror.bats index 038a920a..62ed38c0 100644 --- a/plugins/python-build/test/mirror.bats +++ b/plugins/python-build/test/mirror.bats @@ -4,11 +4,6 @@ load test_helper export PYTHON_BUILD_SKIP_MIRROR= export PYTHON_BUILD_CACHE_PATH= export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com -export PYTHON_BUILD_CURL_OPTS= - -setup() { - ensure_not_found_in_path aria2c -} @test "package URL without checksum bypasses mirror" { diff --git a/plugins/python-build/test/pyenv_ext.bats b/plugins/python-build/test/pyenv_ext.bats index ae9f72ab..5f6d5037 100644 --- a/plugins/python-build/test/pyenv_ext.bats +++ b/plugins/python-build/test/pyenv_ext.bats @@ -5,11 +5,11 @@ export PYTHON_BUILD_CACHE_PATH="$TMP/cache" export MAKE=make export MAKE_OPTS="-j 2" export CC=cc +export PYTHON_BUILD_HTTP_CLIENT="curl" export TMP_FIXTURES="$TMP/fixtures" setup() { - ensure_not_found_in_path aria2c mkdir -p "$INSTALL_ROOT" stub md5 false stub curl false diff --git a/plugins/python-build/test/test_helper.bash b/plugins/python-build/test/test_helper.bash index 1ad42d58..f959dd19 100644 --- a/plugins/python-build/test/test_helper.bash +++ b/plugins/python-build/test/test_helper.bash @@ -1,4 +1,6 @@ export TMP="$BATS_TEST_DIRNAME/tmp" +export RUBY_BUILD_CURL_OPTS= +export RUBY_BUILD_HTTP_CLIENT="curl" if [ "$FIXTURE_ROOT" != "$BATS_TEST_DIRNAME/fixtures" ]; then export FIXTURE_ROOT="$BATS_TEST_DIRNAME/fixtures" @@ -9,35 +11,6 @@ if [ "$FIXTURE_ROOT" != "$BATS_TEST_DIRNAME/fixtures" ]; then export PATH fi -remove_command_from_path() { - OLDIFS="${IFS}" - local cmd="$1" - local path - local paths=() - IFS=: - for path in ${PATH}; do - if [ -e "${path}/${cmd}" ]; then - local tmp_path="$(mktemp -d "${TMP}/path.XXXXX")" - ln -fs "${path}"/* "${tmp_path}" - rm -f "${tmp_path}/${cmd}" - paths["${#paths[@]}"]="${tmp_path}" - else - paths["${#paths[@]}"]="${path}" - fi - done - export PATH="${paths[*]}" - IFS="${OLDIFS}" -} - -ensure_not_found_in_path() { - local cmd - for cmd; do - if command -v "${cmd}" 1>/dev/null 2>&1; then - remove_command_from_path "${cmd}" - fi - done -} - teardown() { rm -fr "${TMP:?}"/* }