mirror of
https://github.com/pyenv/pyenv.git
synced 2025-01-24 17:31:30 +00:00
Merge pull request #1146 from pyenv/http-client-based-on-envvar
Allow overriding HTTP client type based on environment variable
This commit is contained in:
commit
d6ba379e08
8 changed files with 27 additions and 58 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
||||
|
|
|
@ -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" {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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" {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:?}"/*
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue