mirror of
https://github.com/pyenv/pyenv.git
synced 2024-11-29 03:02:51 -05:00
Import recent changes from ruby-build 20160130
This commit is contained in:
parent
f2f703d6d9
commit
c8ab429d7b
11 changed files with 195 additions and 145 deletions
|
@ -5,6 +5,7 @@
|
||||||
# Usage: pyenv install [-f] [-kvp] <version>
|
# Usage: pyenv install [-f] [-kvp] <version>
|
||||||
# pyenv install [-f] [-kvp] <definition-file>
|
# pyenv install [-f] [-kvp] <definition-file>
|
||||||
# pyenv install -l|--list
|
# pyenv install -l|--list
|
||||||
|
# pyenv install --version
|
||||||
#
|
#
|
||||||
# -l/--list List all available versions
|
# -l/--list List all available versions
|
||||||
# -f/--force Install even if the version appears to be installed already
|
# -f/--force Install even if the version appears to be installed already
|
||||||
|
@ -14,8 +15,9 @@
|
||||||
#
|
#
|
||||||
# -k/--keep Keep source tree in $PYENV_BUILD_ROOT after installation
|
# -k/--keep Keep source tree in $PYENV_BUILD_ROOT after installation
|
||||||
# (defaults to $PYENV_ROOT/sources)
|
# (defaults to $PYENV_ROOT/sources)
|
||||||
# -v/--verbose Verbose mode: print compilation status to stdout
|
|
||||||
# -p/--patch Apply a patch from stdin before building
|
# -p/--patch Apply a patch from stdin before building
|
||||||
|
# -v/--verbose Verbose mode: print compilation status to stdout
|
||||||
|
# --version Show version of python-build
|
||||||
# -g/--debug Build a debug version
|
# -g/--debug Build a debug version
|
||||||
#
|
#
|
||||||
# For detailed information on installing Python versions with
|
# For detailed information on installing Python versions with
|
||||||
|
@ -25,10 +27,6 @@
|
||||||
set -e
|
set -e
|
||||||
[ -n "$PYENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
if [ -z "$PYENV_ROOT" ]; then
|
|
||||||
PYENV_ROOT="${HOME}/.pyenv"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add `share/python-build/` directory from each pyenv plugin to the list of
|
# Add `share/python-build/` directory from each pyenv plugin to the list of
|
||||||
# paths where build definitions are looked up.
|
# paths where build definitions are looked up.
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
@ -40,6 +38,14 @@ shopt -u nullglob
|
||||||
|
|
||||||
# Provide pyenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo --list
|
||||||
|
echo --force
|
||||||
|
echo --skip-existing
|
||||||
|
echo --keep
|
||||||
|
echo --patch
|
||||||
|
echo --verbose
|
||||||
|
echo --version
|
||||||
|
echo --debug
|
||||||
exec python-build --definitions
|
exec python-build --definitions
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ set -e
|
||||||
|
|
||||||
# Provide pyenv completions
|
# Provide pyenv completions
|
||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
|
echo --force
|
||||||
exec pyenv versions --bare
|
exec pyenv versions --bare
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -22,10 +23,6 @@ usage() {
|
||||||
[ -z "$1" ] || exit "$1"
|
[ -z "$1" ] || exit "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ -z "$PYENV_ROOT" ]; then
|
|
||||||
PYENV_ROOT="${HOME}/.pyenv"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
|
||||||
usage 0
|
usage 0
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -2,17 +2,19 @@
|
||||||
#
|
#
|
||||||
# Usage: python-build [-kvp] <definition> <prefix>
|
# Usage: python-build [-kvp] <definition> <prefix>
|
||||||
# python-build --definitions
|
# python-build --definitions
|
||||||
|
# python-build --version
|
||||||
#
|
#
|
||||||
# -k/--keep Do not remove source tree after installation
|
# -k/--keep Do not remove source tree after installation
|
||||||
# -v/--verbose Verbose mode: print compilation status to stdout
|
|
||||||
# -p/--patch Apply a patch from stdin before building
|
# -p/--patch Apply a patch from stdin before building
|
||||||
|
# -v/--verbose Verbose mode: print compilation status to stdout
|
||||||
# -4/--ipv4 Resolve names to IPv4 addresses only
|
# -4/--ipv4 Resolve names to IPv4 addresses only
|
||||||
# -6/--ipv6 Resolve names to IPv6 addresses only
|
# -6/--ipv6 Resolve names to IPv6 addresses only
|
||||||
# --definitions List all built-in definitions
|
# --definitions List all built-in definitions
|
||||||
|
# --version Show version of python-build
|
||||||
# -g/--debug Build a debug version
|
# -g/--debug Build a debug version
|
||||||
#
|
#
|
||||||
|
|
||||||
PYTHON_BUILD_VERSION="20151028"
|
PYTHON_BUILD_VERSION="20160130"
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
OLDIFS="$IFS"
|
||||||
|
|
||||||
|
@ -99,6 +101,11 @@ os_information() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_mac() {
|
||||||
|
[ "$(uname -s)" = "Darwin" ] || return 1
|
||||||
|
[ $# -eq 0 ] || [ "$(osx_version)" "$@" ]
|
||||||
|
}
|
||||||
|
|
||||||
# 9.1 -> 901
|
# 9.1 -> 901
|
||||||
# 10.9 -> 1009
|
# 10.9 -> 1009
|
||||||
# 10.10 -> 1010
|
# 10.10 -> 1010
|
||||||
|
@ -262,24 +269,39 @@ compute_md5() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
has_checksum_support() {
|
||||||
|
local checksum_command="$1"
|
||||||
|
local has_checksum_var="HAS_CHECKSUM_SUPPORT_${checksum_command}"
|
||||||
|
|
||||||
|
if [ -z "${!has_checksum_var+defined}" ]; then
|
||||||
|
printf -v "$has_checksum_var" "$(echo test | "$checksum_command" >/dev/null; echo $?)"
|
||||||
|
fi
|
||||||
|
return "${!has_checksum_var}"
|
||||||
|
}
|
||||||
|
|
||||||
verify_checksum() {
|
verify_checksum() {
|
||||||
# If there's no SHA2 support, return success
|
local checksum_command
|
||||||
[ -n "$HAS_SHA2_SUPPORT" ] || return 0
|
local filename="$1"
|
||||||
local checksum_command="compute_sha2"
|
local expected_checksum="$(echo "$2" | tr [A-Z] [a-z])"
|
||||||
|
|
||||||
# If the specified filename doesn't exist, return success
|
# If the specified filename doesn't exist, return success
|
||||||
local filename="$1"
|
|
||||||
[ -e "$filename" ] || return 0
|
[ -e "$filename" ] || return 0
|
||||||
|
|
||||||
# If there's no expected checksum, return success
|
case "${#expected_checksum}" in
|
||||||
local expected_checksum=`echo "$2" | tr [A-Z] [a-z]`
|
0) return 0 ;; # empty checksum; return success
|
||||||
[ -n "$expected_checksum" ] || return 0
|
32) checksum_command="compute_md5" ;;
|
||||||
|
64) checksum_command="compute_sha2" ;;
|
||||||
|
*)
|
||||||
|
{ echo
|
||||||
|
echo "unexpected checksum length: ${#expected_checksum} (${expected_checksum})"
|
||||||
|
echo "expected 0 (no checksum), 32 (MD5), or 64 (SHA2-256)"
|
||||||
|
echo
|
||||||
|
} >&4
|
||||||
|
return 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
# If the checksum length is 32 chars, assume MD5, otherwise SHA2
|
# If chosen provided checksum algorithm isn't supported, return success
|
||||||
if [ "${#expected_checksum}" -eq 32 ]; then
|
has_checksum_support "$checksum_command" || return 0
|
||||||
[ -n "$HAS_MD5_SUPPORT" ] || return 0
|
|
||||||
checksum_command="compute_md5"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If the computed checksum is empty, return failure
|
# If the computed checksum is empty, return failure
|
||||||
local computed_checksum=`echo "$($checksum_command < "$filename")" | tr [A-Z] [a-z]`
|
local computed_checksum=`echo "$($checksum_command < "$filename")" | tr [A-Z] [a-z]`
|
||||||
|
@ -350,18 +372,19 @@ fetch_tarball() {
|
||||||
package_url="${package_url%%#*}"
|
package_url="${package_url%%#*}"
|
||||||
|
|
||||||
if [ -n "$PYTHON_BUILD_MIRROR_URL" ]; then
|
if [ -n "$PYTHON_BUILD_MIRROR_URL" ]; then
|
||||||
mirror_url="${PYTHON_BUILD_MIRROR_URL}/$checksum"
|
if [[ -z "$PYTHON_BUILD_DEFAULT_MIRROR" || $package_url != */www.python.org/* ]]; then
|
||||||
|
mirror_url="${PYTHON_BUILD_MIRROR_URL}/$checksum"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local tar_args="xzf"
|
local tar_args="xzf"
|
||||||
local package_filename="${package_name}.tar.gz"
|
local package_filename="${package_name}.tar.gz"
|
||||||
|
|
||||||
if [ "$package_url" != "${package_url%tgz}" ]; then
|
|
||||||
package_filename="${package_filename%tar.gz}tgz"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$package_url" != "${package_url%bz2}" ]; then
|
if [ "$package_url" != "${package_url%bz2}" ]; then
|
||||||
|
if ! type -p bzip2 >/dev/null; then
|
||||||
|
echo "warning: bzip2 not found; consider installing \`bzip2\` package" >&4
|
||||||
|
fi
|
||||||
package_filename="${package_filename%.gz}.bz2"
|
package_filename="${package_filename%.gz}.bz2"
|
||||||
tar_args="${tar_args/z/j}"
|
tar_args="${tar_args/z/j}"
|
||||||
fi
|
fi
|
||||||
|
@ -389,19 +412,6 @@ fetch_tarball() {
|
||||||
} >&4 2>&1
|
} >&4 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
fetch_nightly_tarball() {
|
|
||||||
local package_name="$1"
|
|
||||||
local package_url="$2"
|
|
||||||
local package_pattern="$3"
|
|
||||||
fetch_tarball "$1" "$2"
|
|
||||||
if [ ! -e "${package_name}" ]; then
|
|
||||||
local nightly_package_name="$(echo ${package_pattern})"
|
|
||||||
if [ -e "${nightly_package_name}" ]; then
|
|
||||||
ln -fs "${nightly_package_name}" "${package_name}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
reuse_existing_tarball() {
|
reuse_existing_tarball() {
|
||||||
local package_filename="$1"
|
local package_filename="$1"
|
||||||
local checksum="$2"
|
local checksum="$2"
|
||||||
|
@ -683,7 +693,7 @@ build_package_standard() {
|
||||||
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
||||||
export CFLAGS="$CFLAGS ${!PACKAGE_CFLAGS}"
|
export CFLAGS="$CFLAGS ${!PACKAGE_CFLAGS}"
|
||||||
fi
|
fi
|
||||||
if [ -z "$CC" ] && [ "$(uname -s)" = "Darwin" ] && [ "$(osx_version)" -ge 1010 ]; then
|
if [ -z "$CC" ] && is_mac -ge 1010; then
|
||||||
export CC=clang
|
export CC=clang
|
||||||
fi
|
fi
|
||||||
${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \
|
${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \
|
||||||
|
@ -718,9 +728,7 @@ build_package_ree_installer() {
|
||||||
build_package_auto_tcltk
|
build_package_auto_tcltk
|
||||||
|
|
||||||
local options=""
|
local options=""
|
||||||
if [[ "Darwin" = "$(uname)" ]]; then
|
is_mac && options="--no-tcmalloc"
|
||||||
options="--no-tcmalloc"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local option
|
local option
|
||||||
for option in $RUBY_CONFIGURE_OPTS ${RUBY_CONFIGURE_OPTS_ARRAY[@]}; do
|
for option in $RUBY_CONFIGURE_OPTS ${RUBY_CONFIGURE_OPTS_ARRAY[@]}; do
|
||||||
|
@ -742,7 +750,20 @@ build_package_rbx() {
|
||||||
mkdir -p vendor
|
mkdir -p vendor
|
||||||
ln -s "$RUBY_BUILD_CACHE_PATH" vendor/prebuilt
|
ln -s "$RUBY_BUILD_CACHE_PATH" vendor/prebuilt
|
||||||
fi
|
fi
|
||||||
RUBYOPT="-rubygems $RUBYOPT" ./configure --prefix="$PREFIX_PATH" $RUBY_CONFIGURE_OPTS "${RUBY_CONFIGURE_OPTS_ARRAY[@]}"
|
|
||||||
|
local opt
|
||||||
|
local -a configure_opts
|
||||||
|
for opt in "${RUBY_CONFIGURE_OPTS_ARRAY[@]}"; do
|
||||||
|
if [[ $opt == --with-openssl-dir=* ]]; then
|
||||||
|
local openssl_dir="${opt#*=}"
|
||||||
|
configure_opts[${#configure_opts[@]}]="--with-lib-dir=${openssl_dir}/lib"
|
||||||
|
configure_opts[${#configure_opts[@]}]="--with-include-dir=${openssl_dir}/include"
|
||||||
|
else
|
||||||
|
configure_opts[${#configure_opts[@]}]="$opt"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
RUBYOPT="-rubygems $RUBYOPT" ./configure --prefix="$PREFIX_PATH" $RUBY_CONFIGURE_OPTS "${configure_opts[@]}"
|
||||||
rake install
|
rake install
|
||||||
fix_rbx_gem_binstubs "$PREFIX_PATH"
|
fix_rbx_gem_binstubs "$PREFIX_PATH"
|
||||||
fix_rbx_irb "$PREFIX_PATH"
|
fix_rbx_irb "$PREFIX_PATH"
|
||||||
|
@ -804,29 +825,10 @@ build_package_jruby() {
|
||||||
fix_jruby_shebangs
|
fix_jruby_shebangs
|
||||||
}
|
}
|
||||||
|
|
||||||
graal_architecture() {
|
|
||||||
if [ "$(uname -m)" != "x86_64" ]; then
|
|
||||||
echo "no nightly builds available" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
case "$(uname -s)" in
|
|
||||||
"Darwin") echo "macosx-x86_64";;
|
|
||||||
"Linux") echo "linux-x86_64";;
|
|
||||||
*)
|
|
||||||
echo "no nightly builds available" >&2
|
|
||||||
exit 1;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
install_jruby_launcher() {
|
install_jruby_launcher() {
|
||||||
# If this version of JRuby has been modified for Graal, don't overwrite the
|
cd "${PREFIX_PATH}/bin"
|
||||||
# launcher scripts
|
{ ./ruby gem install jruby-launcher
|
||||||
if ! grep -q graalvm "${PREFIX_PATH}/bin/jruby"; then
|
} >&4 2>&1
|
||||||
cd "${PREFIX_PATH}/bin"
|
|
||||||
{ ./ruby gem install jruby-launcher
|
|
||||||
} >&4 2>&1
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fix_jruby_shebangs() {
|
fix_jruby_shebangs() {
|
||||||
|
@ -1065,7 +1067,7 @@ require_gcc() {
|
||||||
echo "and try again."
|
echo "and try again."
|
||||||
echo
|
echo
|
||||||
|
|
||||||
if [ "$(uname -s)" = "Darwin" ]; then
|
if is_mac; then
|
||||||
colorize 1 "DETAILS"
|
colorize 1 "DETAILS"
|
||||||
echo ": Apple no longer includes the official GCC compiler with Xcode"
|
echo ": Apple no longer includes the official GCC compiler with Xcode"
|
||||||
echo "as of version 4.2. Instead, the \`gcc\` executable is a symlink to"
|
echo "as of version 4.2. Instead, the \`gcc\` executable is a symlink to"
|
||||||
|
@ -1100,7 +1102,7 @@ require_gcc() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export CC="$gcc"
|
export CC="$gcc"
|
||||||
if [ "$(uname -s)" = "Darwin" ] && [ "$(osx_version)" -ge 1010 ]; then
|
if is_mac -ge 1010; then
|
||||||
export MACOSX_DEPLOYMENT_TARGET=10.9
|
export MACOSX_DEPLOYMENT_TARGET=10.9
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -1157,7 +1159,7 @@ verify_gcc() {
|
||||||
|
|
||||||
require_llvm() {
|
require_llvm() {
|
||||||
local llvm_version="$1"
|
local llvm_version="$1"
|
||||||
if [ "$(uname -s)" = "Darwin" ] && [ "$(osx_version)" -ge 1010 ]; then
|
if is_mac -ge 1010; then
|
||||||
if [[ "$PYTHON_CONFIGURE_OPTS" != *--llvm-* ]]; then
|
if [[ "$PYTHON_CONFIGURE_OPTS" != *--llvm-* ]]; then
|
||||||
case "$llvm_version" in
|
case "$llvm_version" in
|
||||||
3.2 )
|
3.2 )
|
||||||
|
@ -1274,7 +1276,7 @@ use_homebrew_yaml() {
|
||||||
has_broken_mac_readline() {
|
has_broken_mac_readline() {
|
||||||
# Mac OS X 10.4 has broken readline.
|
# Mac OS X 10.4 has broken readline.
|
||||||
# https://github.com/yyuu/pyenv/issues/23
|
# https://github.com/yyuu/pyenv/issues/23
|
||||||
[ "$(uname -s)" = "Darwin" ] &&
|
is_mac &&
|
||||||
! configured_with_package_dir "python" "readline/rlconf.h" &&
|
! configured_with_package_dir "python" "readline/rlconf.h" &&
|
||||||
! use_homebrew_readline
|
! use_homebrew_readline
|
||||||
}
|
}
|
||||||
|
@ -1292,7 +1294,7 @@ use_homebrew_readline() {
|
||||||
}
|
}
|
||||||
|
|
||||||
has_broken_mac_openssl() {
|
has_broken_mac_openssl() {
|
||||||
[ "$(uname -s)" = "Darwin" ] &&
|
is_mac &&
|
||||||
[[ "$(/usr/bin/openssl version 2>/dev/null || true)" = "OpenSSL 0.9.8"?* ]] &&
|
[[ "$(/usr/bin/openssl version 2>/dev/null || true)" = "OpenSSL 0.9.8"?* ]] &&
|
||||||
! use_homebrew_openssl
|
! use_homebrew_openssl
|
||||||
}
|
}
|
||||||
|
@ -1366,7 +1368,7 @@ build_package_ldflags_dirs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
build_package_auto_tcltk() {
|
build_package_auto_tcltk() {
|
||||||
if [ "Darwin" = "$(uname -s)" ] && [ ! -d /usr/include/X11 ]; then
|
if is_mac && [ ! -d /usr/include/X11 ]; then
|
||||||
if [ -d /opt/X11/include ]; then
|
if [ -d /opt/X11/include ]; then
|
||||||
if [[ "$CPPFLAGS" != *-I/opt/X11/include* ]]; then
|
if [[ "$CPPFLAGS" != *-I/opt/X11/include* ]]; then
|
||||||
export CPPFLAGS="-I/opt/X11/include $CPPFLAGS"
|
export CPPFLAGS="-I/opt/X11/include $CPPFLAGS"
|
||||||
|
@ -1788,27 +1790,16 @@ fi
|
||||||
|
|
||||||
if [ -z "$PYTHON_BUILD_MIRROR_URL" ]; then
|
if [ -z "$PYTHON_BUILD_MIRROR_URL" ]; then
|
||||||
PYTHON_BUILD_MIRROR_URL="https://yyuu.github.io/pythons"
|
PYTHON_BUILD_MIRROR_URL="https://yyuu.github.io/pythons"
|
||||||
|
PYTHON_BUILD_DEFAULT_MIRROR=1
|
||||||
else
|
else
|
||||||
PYTHON_BUILD_MIRROR_URL="${PYTHON_BUILD_MIRROR_URL%/}"
|
PYTHON_BUILD_MIRROR_URL="${PYTHON_BUILD_MIRROR_URL%/}"
|
||||||
|
PYTHON_BUILD_DEFAULT_MIRROR=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$PYTHON_BUILD_SKIP_MIRROR" ]; then
|
if [ -n "$PYTHON_BUILD_SKIP_MIRROR" ] || ! has_checksum_support compute_sha2; then
|
||||||
unset PYTHON_BUILD_MIRROR_URL
|
unset PYTHON_BUILD_MIRROR_URL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if echo test | compute_sha2 >/dev/null; then
|
|
||||||
HAS_SHA2_SUPPORT=1
|
|
||||||
else
|
|
||||||
unset HAS_SHA2_SUPPORT
|
|
||||||
unset PYTHON_BUILD_MIRROR_URL
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo test | compute_md5 >/dev/null; then
|
|
||||||
HAS_MD5_SUPPORT=1
|
|
||||||
else
|
|
||||||
unset HAS_MD5_SUPPORT
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add an option to build a debug version of Python (#11)
|
# Add an option to build a debug version of Python (#11)
|
||||||
if [ -n "$DEBUG" ]; then
|
if [ -n "$DEBUG" ]; then
|
||||||
package_option python configure --with-pydebug
|
package_option python configure --with-pydebug
|
||||||
|
@ -1820,7 +1811,7 @@ package_option python configure --libdir="${PREFIX_PATH}/lib"
|
||||||
# python-build: Set `RPATH` if `--enable-shared` was given (#65, #66, #82)
|
# python-build: Set `RPATH` if `--enable-shared` was given (#65, #66, #82)
|
||||||
if [[ "$CONFIGURE_OPTS" == *"--enable-shared"* ]] || [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-shared"* ]]; then
|
if [[ "$CONFIGURE_OPTS" == *"--enable-shared"* ]] || [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-shared"* ]]; then
|
||||||
# The ld on Darwin embeds the full paths to each dylib by default
|
# The ld on Darwin embeds the full paths to each dylib by default
|
||||||
if [[ "$LDFLAGS" != *"-rpath="* ]] && [[ "Darwin" != "$(uname -s)" ]]; then
|
if [[ "$LDFLAGS" != *"-rpath="* ]] && ! is_mac; then
|
||||||
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib ${LDFLAGS}"
|
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib ${LDFLAGS}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -1832,7 +1823,7 @@ fi
|
||||||
|
|
||||||
# Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
|
# Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
|
||||||
if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
|
if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
|
||||||
if [[ "Darwin" != "$(uname -s)" ]]; then
|
if ! is_mac; then
|
||||||
echo "python-build: framework installation is not supported." >&2
|
echo "python-build: framework installation is not supported." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -1852,7 +1843,7 @@ fi
|
||||||
|
|
||||||
# Build against universal SDK (#219, #220)
|
# Build against universal SDK (#219, #220)
|
||||||
if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]]; then
|
if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]]; then
|
||||||
if [[ "Darwin" != "$(uname -s)" ]]; then
|
if ! is_mac; then
|
||||||
echo "python-build: universal installation is not supported." >&2
|
echo "python-build: universal installation is not supported." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -1885,7 +1876,7 @@ if [ -n "${PIP_VERSION}" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Set MACOSX_DEPLOYMENT_TARGET from the product version of OS X (#219, #220)
|
# Set MACOSX_DEPLOYMENT_TARGET from the product version of OS X (#219, #220)
|
||||||
if [[ "Darwin" == "$(uname -s)" ]]; then
|
if is_mac; then
|
||||||
if [ -z "${MACOSX_DEPLOYMENT_TARGET}" ]; then
|
if [ -z "${MACOSX_DEPLOYMENT_TARGET}" ]; then
|
||||||
MACOS_VERSION="$(sw_vers -productVersion 2>/dev/null || true)"
|
MACOS_VERSION="$(sw_vers -productVersion 2>/dev/null || true)"
|
||||||
MACOS_VERSION_ARRAY=(${MACOS_VERSION//\./ })
|
MACOS_VERSION_ARRAY=(${MACOS_VERSION//\./ })
|
||||||
|
|
|
@ -10,30 +10,28 @@ setup() {
|
||||||
|
|
||||||
|
|
||||||
@test "packages are saved to download cache" {
|
@test "packages are saved to download cache" {
|
||||||
stub shasum true
|
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/without-checksum
|
install_fixture definitions/without-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
assert_success
|
||||||
|
assert [ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@test "cached package without checksum" {
|
@test "cached package without checksum" {
|
||||||
stub shasum true
|
|
||||||
stub curl
|
stub curl
|
||||||
|
|
||||||
cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$PYTHON_BUILD_CACHE_PATH"
|
cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$PYTHON_BUILD_CACHE_PATH"
|
||||||
|
|
||||||
install_fixture definitions/without-checksum
|
install_fixture definitions/without-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
assert_success
|
||||||
|
assert [ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,9 +42,10 @@ setup() {
|
||||||
cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$PYTHON_BUILD_CACHE_PATH"
|
cp "${FIXTURE_ROOT}/package-1.0.0.tar.gz" "$PYTHON_BUILD_CACHE_PATH"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
[ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
assert [ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -64,10 +63,11 @@ setup() {
|
||||||
touch "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz"
|
touch "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
[ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
diff -q "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" "${FIXTURE_ROOT}/package-1.0.0.tar.gz"
|
assert [ -e "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" ]
|
||||||
|
assert diff -q "${PYTHON_BUILD_CACHE_PATH}/package-1.0.0.tar.gz" "${FIXTURE_ROOT}/package-1.0.0.tar.gz"
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -75,16 +75,15 @@ setup() {
|
||||||
|
|
||||||
|
|
||||||
@test "nonexistent cache directory is ignored" {
|
@test "nonexistent cache directory is ignored" {
|
||||||
stub shasum true
|
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
export PYTHON_BUILD_CACHE_PATH="${TMP}/nonexistent"
|
export PYTHON_BUILD_CACHE_PATH="${TMP}/nonexistent"
|
||||||
|
|
||||||
install_fixture definitions/without-checksum
|
install_fixture definitions/without-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
[ ! -d "$PYTHON_BUILD_CACHE_PATH" ]
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
refute [ -d "$PYTHON_BUILD_CACHE_PATH" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,15 +6,14 @@ export PYTHON_BUILD_CACHE_PATH=
|
||||||
|
|
||||||
|
|
||||||
@test "package URL without checksum" {
|
@test "package URL without checksum" {
|
||||||
stub shasum true
|
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/without-checksum
|
install_fixture definitions/without-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,8 +22,9 @@ export PYTHON_BUILD_CACHE_PATH=
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -36,8 +36,9 @@ export PYTHON_BUILD_CACHE_PATH=
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-invalid-checksum
|
install_fixture definitions/with-invalid-checksum
|
||||||
[ "$status" -eq 1 ]
|
|
||||||
[ ! -f "${INSTALL_ROOT}/bin/package" ]
|
assert_failure
|
||||||
|
refute [ -f "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -49,8 +50,9 @@ export PYTHON_BUILD_CACHE_PATH=
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -62,8 +64,9 @@ export PYTHON_BUILD_CACHE_PATH=
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-md5-checksum
|
install_fixture definitions/with-md5-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub md5
|
unstub md5
|
||||||
|
@ -75,8 +78,9 @@ export PYTHON_BUILD_CACHE_PATH=
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-md5-checksum
|
install_fixture definitions/with-md5-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub md5
|
unstub md5
|
||||||
|
@ -88,8 +92,9 @@ export PYTHON_BUILD_CACHE_PATH=
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 1 ]
|
|
||||||
[ ! -f "${INSTALL_ROOT}/bin/package" ]
|
assert_failure
|
||||||
|
refute [ -f "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -111,7 +116,7 @@ install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.g
|
||||||
DEF
|
DEF
|
||||||
|
|
||||||
assert_success
|
assert_success
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub shasum
|
unstub shasum
|
||||||
}
|
}
|
||||||
|
@ -133,7 +138,20 @@ install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.g
|
||||||
DEF
|
DEF
|
||||||
|
|
||||||
assert_success
|
assert_success
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub shasum
|
unstub shasum
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@test "package URL with checksum of unexpected length" {
|
||||||
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
|
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
|
||||||
|
DEF
|
||||||
|
|
||||||
|
assert_failure
|
||||||
|
refute [ -f "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
assert_output_contains "unexpected checksum length: 29 (checksum_of_unexpected_length)"
|
||||||
|
assert_output_contains "expected 0 (no checksum), 32 (MD5), or 64 (SHA2-256)"
|
||||||
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ NUM_DEFINITIONS="$(find "$BATS_TEST_DIRNAME"/../share/python-build -maxdepth 1 -
|
||||||
|
|
||||||
@test "custom PYTHON_BUILD_ROOT: nonexistent" {
|
@test "custom PYTHON_BUILD_ROOT: nonexistent" {
|
||||||
export PYTHON_BUILD_ROOT="$TMP"
|
export PYTHON_BUILD_ROOT="$TMP"
|
||||||
assert [ ! -e "${PYTHON_BUILD_ROOT}/share/python-build" ]
|
refute [ -e "${PYTHON_BUILD_ROOT}/share/python-build" ]
|
||||||
run python-build --definitions
|
run python-build --definitions
|
||||||
assert_success ""
|
assert_success ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.gz#invalid" copy
|
install_package "package-1.0.0" "http://example.com/packages/package-1.0.0.tar.gz#invalid_64_character_checksum_0000000000000000000000000000000000" copy
|
||||||
|
|
|
@ -52,5 +52,5 @@ rehashed
|
||||||
after.
|
after.
|
||||||
OUT
|
OUT
|
||||||
|
|
||||||
assert [ ! -d "${PYENV_ROOT}/versions/3.2.1" ]
|
refute [ -d "${PYENV_ROOT}/versions/3.2.1" ]
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,9 @@ export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com
|
||||||
|
|
||||||
install_fixture definitions/without-checksum
|
install_fixture definitions/without-checksum
|
||||||
echo "$output" >&2
|
echo "$output" >&2
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -25,8 +26,9 @@ export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com
|
||||||
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
stub curl "-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -42,8 +44,9 @@ export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com
|
||||||
"-q -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3"
|
"-q -o * -*S* $mirror_url : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -59,8 +62,9 @@ export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com
|
||||||
"-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
"-q -o * -*S* http://example.com/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -78,8 +82,9 @@ export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
echo "$output" >&2
|
echo "$output" >&2
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
@ -95,8 +100,28 @@ export PYTHON_BUILD_MIRROR_URL=http://mirror.example.com
|
||||||
"-q -o * -*S* https://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" \
|
"-q -o * -*S* https://?*/$checksum : cp $FIXTURE_ROOT/package-1.0.0.tar.gz \$3" \
|
||||||
|
|
||||||
install_fixture definitions/with-checksum
|
install_fixture definitions/with-checksum
|
||||||
[ "$status" -eq 0 ]
|
|
||||||
[ -x "${INSTALL_ROOT}/bin/package" ]
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
|
unstub curl
|
||||||
|
unstub shasum
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@test "package URL with ruby-lang CDN with default mirror URL will bypasses mirror" {
|
||||||
|
export PYTHON_BUILD_MIRROR_URL=
|
||||||
|
local checksum="ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5"
|
||||||
|
|
||||||
|
stub shasum true "echo $checksum"
|
||||||
|
stub curl "-q -o * -*S* https://www.python.org/* : cp $FIXTURE_ROOT/\${5##*/} \$3"
|
||||||
|
|
||||||
|
run_inline_definition <<DEF
|
||||||
|
install_package "package-1.0.0" "https://www.python.org/packages/package-1.0.0.tar.gz#ba988b1bb4250dee0b9dd3d4d722f9c64b2bacfc805d1b6eba7426bda72dd3c5" copy
|
||||||
|
DEF
|
||||||
|
|
||||||
|
assert_success
|
||||||
|
assert [ -x "${INSTALL_ROOT}/bin/package" ]
|
||||||
|
|
||||||
unstub curl
|
unstub curl
|
||||||
unstub shasum
|
unstub shasum
|
||||||
|
|
|
@ -141,6 +141,14 @@ OUT
|
||||||
run pyenv-install --complete
|
run pyenv-install --complete
|
||||||
assert_success
|
assert_success
|
||||||
assert_output <<OUT
|
assert_output <<OUT
|
||||||
|
--list
|
||||||
|
--force
|
||||||
|
--skip-existing
|
||||||
|
--keep
|
||||||
|
--patch
|
||||||
|
--verbose
|
||||||
|
--version
|
||||||
|
--debug
|
||||||
|
|
||||||
${PYENV_ROOT}/plugins/bar/share/python-build
|
${PYENV_ROOT}/plugins/bar/share/python-build
|
||||||
${PYENV_ROOT}/plugins/foo/share/python-build
|
${PYENV_ROOT}/plugins/foo/share/python-build
|
||||||
|
|
|
@ -71,6 +71,12 @@ assert() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
refute() {
|
||||||
|
if "$@"; then
|
||||||
|
flunk "expected to fail: $@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
flunk() {
|
flunk() {
|
||||||
{ if [ "$#" -eq 0 ]; then cat -
|
{ if [ "$#" -eq 0 ]; then cat -
|
||||||
else echo "$@"
|
else echo "$@"
|
||||||
|
|
Loading…
Reference in a new issue