1
0
mirror of https://github.com/pyenv/pyenv.git synced 2025-11-15 14:53:53 -05:00

Compare commits

...

10 Commits

Author SHA1 Message Date
Josh Friend
5cb9c9af2e v20150601 2015-06-01 21:48:44 -04:00
Josh Friend
d6230578ec Merge pull request #384 from yyuu/pypy-260
Add PyPy 2.6.0
2015-06-01 21:32:48 -04:00
Josh Friend
62bf3d9b61 Add PyPy 2.5.1 portable
related: #346
2015-06-01 21:25:14 -04:00
Josh Friend
55e6e7143a Add PyPy 2.6.0
fixes #383
2015-06-01 21:24:58 -04:00
Josh Friend
1e78acb701 Add python 3.5.0b2 2015-06-01 07:18:36 -04:00
Yamashita Yuu
648afe05a9 Import changes from ruby-build v20150519 2015-05-27 01:08:12 +09:00
Yamashita Yuu
9aee57d965 Fix test for adding shims in fish 2015-05-27 00:54:19 +09:00
Yamashita Yuu
ed684c239c Fix inverted condition for --altinstall of ensurepip (#255) 2015-05-27 00:49:23 +09:00
Yamashita Yuu
fe934642c5 Skip installint setuptools by ez_setup.py explicitly (fixes #381)
`pip` will install `setuptools` automatically.
2015-05-26 23:49:46 +09:00
Josh Friend
7c4c1757f7 add 3.5.0 beta1, remove alpha versions 2015-05-25 23:59:48 -04:00
17 changed files with 188 additions and 27 deletions

View File

@@ -1,5 +1,15 @@
## Version History ## Version History
#### 20150601
* python-build: Add PyPy 2.6.0
* python-build: Add PyPy 2.5.1 portable
* python-build: Add CPython 3.5.0 beta releases; 3.5.0b1 and 3.5.0b2
* python-build: Removed CPython 3.5.0 alpha releases
* python-build: Fix inverted condition for `--altinstall` of ensurepip (#255)
* python-build: Skip installing `setuptools` by `ez_setup.py` explicitly (fixes #381)
* python-build: Import changes from ruby-build v20150519
#### 20150524 #### 20150524
* pyenv: Improve `pyenv version`, if there is one missing (#290) * pyenv: Improve `pyenv version`, if there is one missing (#290)

View File

@@ -12,7 +12,7 @@
set -e set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
version="20150524" version="20150601"
if cd "$PYENV_ROOT" 2>/dev/null; then if cd "$PYENV_ROOT" 2>/dev/null; then
git_revision="$(git describe --tags HEAD 2>/dev/null || true)" git_revision="$(git describe --tags HEAD 2>/dev/null || true)"

View File

@@ -101,7 +101,7 @@ for option in "${OPTIONS[@]}"; do
exec python-build --version exec python-build --version
;; ;;
* ) * )
usage 1 usage 1 >&2
;; ;;
esac esac
done done
@@ -246,7 +246,7 @@ if [ "$STATUS" == "2" ]; then
echo " brew update && brew upgrade pyenv" echo " brew update && brew upgrade pyenv"
elif [ -d "${here}/.git" ]; then elif [ -d "${here}/.git" ]; then
printf ":\n\n" printf ":\n\n"
echo " cd ${here} && git pull" echo " cd ${here} && git pull && cd -"
else else
printf ".\n" printf ".\n"
fi fi

View File

@@ -6,11 +6,13 @@
# -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 # -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
# -4/--ipv4 Resolve names to IPv4 addresses only
# -6/--ipv6 Resolve names to IPv6 addresses only
# --definitions List all built-in definitions # --definitions List all built-in definitions
# -g/--debug Build a debug version # -g/--debug Build a debug version
# #
PYTHON_BUILD_VERSION="20141028" PYTHON_BUILD_VERSION="20150519"
set -E set -E
exec 3<&2 # preserve original stderr at fd 3 exec 3<&2 # preserve original stderr at fd 3
@@ -231,7 +233,7 @@ compute_sha2() {
output="$(shasum -a 256 -b)" || return 1 output="$(shasum -a 256 -b)" || return 1
echo "${output% *}" echo "${output% *}"
elif type openssl &>/dev/null; then elif type openssl &>/dev/null; then
local openssl="$(command -v "$(brew --prefix openssl 2>/dev/null)"/bin/openssl openssl | head -1)" local openssl="$(command -v "$(brew --prefix openssl 2>/dev/null || true)"/bin/openssl openssl | head -1)"
output="$("$openssl" dgst -sha256 2>/dev/null)" || return 1 output="$("$openssl" dgst -sha256 2>/dev/null)" || return 1
echo "${output##* }" echo "${output##* }"
elif type sha256sum &>/dev/null; then elif type sha256sum &>/dev/null; then
@@ -307,19 +309,31 @@ http() {
} }
http_head_curl() { http_head_curl() {
curl -qsILf "$1" >&4 2>&1 options=""
[ -n "${IPV4}" ] && options="--ipv4"
[ -n "${IPV6}" ] && options="--ipv6"
curl -qsILf ${options} "$1" >&4 2>&1
} }
http_get_curl() { http_get_curl() {
curl -q -o "${2:--}" -sSLf "$1" options=""
[ -n "${IPV4}" ] && options="--ipv4"
[ -n "${IPV6}" ] && options="--ipv6"
curl -q -o "${2:--}" -sSLf ${options} "$1"
} }
http_head_wget() { http_head_wget() {
wget -q --spider "$1" >&4 2>&1 options=""
[ -n "${IPV4}" ] && options="--inet4-only"
[ -n "${IPV6}" ] && options="--inet6-only"
wget -q --spider ${options} "$1" >&4 2>&1
} }
http_get_wget() { http_get_wget() {
wget -nv -O "${2:--}" "$1" options=""
[ -n "${IPV4}" ] && options="--inet4-only"
[ -n "${IPV6}" ] && options="--inet6-only"
wget -nv ${options} -O "${2:--}" "$1"
} }
fetch_tarball() { fetch_tarball() {
@@ -982,7 +996,7 @@ fix_rbx_gem_binstubs() {
binstub="${bindir}/${file##*/}" binstub="${bindir}/${file##*/}"
rm -f "$binstub" rm -f "$binstub"
{ echo "#!${bindir}/ruby" { echo "#!${bindir}/ruby"
cat "$file" grep -v '^#!' "$file"
} > "$binstub" } > "$binstub"
chmod +x "$binstub" chmod +x "$binstub"
done done
@@ -999,7 +1013,7 @@ fix_rbx_irb() {
} }
require_java7() { require_java7() {
local version="$(java -version 2>&1 | head -1)" local version="$(java -version 2>&1 | grep '\(java\|openjdk\) version' | head -1)"
if [[ $version != *1.[789]* ]]; then if [[ $version != *1.[789]* ]]; then
colorize 1 "ERROR" >&3 colorize 1 "ERROR" >&3
echo ": Java 7 required. Please install a 1.7-compatible JRE." >&3 echo ": Java 7 required. Please install a 1.7-compatible JRE." >&3
@@ -1117,6 +1131,19 @@ require_llvm() {
local llvm_config="${llvm_prefix}/bin/llvm-config" local llvm_config="${llvm_prefix}/bin/llvm-config"
if [ -x "$llvm_config" ]; then if [ -x "$llvm_config" ]; then
package_option python configure --llvm-config="$llvm_config" package_option python configure --llvm-config="$llvm_config"
else
{ echo
colorize 1 "ERROR"
echo ": Rubinius will not be able to compile using Apple's LLVM-based "
echo "build tools on OS X. You will need to install LLVM 3.5 first."
echo
colorize 1 "TO FIX THE PROBLEM"
echo ": Install Homebrew's llvm package with this"
echo -n "command: "
colorize 4 "brew install llvm"
echo
} >&3
return 1
fi fi
fi fi
fi fi
@@ -1528,12 +1555,12 @@ build_package_get_pip() {
build_package_ensurepip() { build_package_ensurepip() {
local ensurepip_opts local ensurepip_opts
if [[ "$PYTHON_MAKE_INSTALL_TARGET" != *"altinstall"* ]]; then # Install as `--altinstall` if the Python is installed as `altinstall` (#255)
if [[ "$PYTHON_MAKE_INSTALL_TARGET" == *"altinstall"* ]]; then
ensurepip_opts="--altinstall" ensurepip_opts="--altinstall"
fi fi
"$PYTHON_BIN" -m ensurepip $ensurepip_opts 1>/dev/null 2>&1 || { # FIXME: `--altinstall` with `get-pip.py`
build_package_ez_setup "$@" && build_package_get_pip "$@" "$PYTHON_BIN" -m ensurepip ${ensurepip_opts} 1>/dev/null 2>&1 || build_package_get_pip "$@" || return 1
} || return 1
} }
version() { version() {
@@ -1568,6 +1595,8 @@ unset VERBOSE
unset KEEP_BUILD_PATH unset KEEP_BUILD_PATH
unset HAS_PATCH unset HAS_PATCH
unset DEBUG unset DEBUG
unset IPV4
unset IPV6
PYTHON_BUILD_INSTALL_PREFIX="$(abs_dirname "$0")/.." PYTHON_BUILD_INSTALL_PREFIX="$(abs_dirname "$0")/.."
@@ -1600,6 +1629,12 @@ for option in "${OPTIONS[@]}"; do
"g" | "debug" ) "g" | "debug" )
DEBUG=true DEBUG=true
;; ;;
"4" | "ipv4")
IPV4=true
;;
"6" | "ipv6")
IPV6=true
;;
"version" ) "version" )
version version
exit 0 exit 0

View File

@@ -1,3 +0,0 @@
#require_gcc
install_package "readline-6.3" "http://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
install_package "Python-3.5.0a3" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a3.tgz#5521bdf9ae9af5b794cd65477bcb02a3" ldflags_dirs standard verify_py35 ensurepip

View File

@@ -1,3 +0,0 @@
#require_gcc
install_package "readline-6.3" "http://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
install_package "Python-3.5.0a4" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a4.tgz#34667f07604352a4a1ef4651dcb7f870" ldflags_dirs standard verify_py35 ensurepip

View File

@@ -1,3 +1,3 @@
#require_gcc #require_gcc
install_package "readline-6.3" "http://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline install_package "readline-6.3" "http://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
install_package "Python-3.5.0a1" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a1.tgz#f1ea32ce88ffff8787ea31302e00b05a" ldflags_dirs standard verify_py35 ensurepip install_package "Python-3.5.0b1" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b1.tgz#1a4f57ad2ec0dd9b17703e13b46b96256b55b28d9e6529005e72f3d660e3f8a1" ldflags_dirs standard verify_py35 ensurepip

View File

@@ -1,3 +1,3 @@
#require_gcc #require_gcc
install_package "readline-6.3" "http://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline install_package "readline-6.3" "http://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
install_package "Python-3.5.0a2" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0a2.tgz#8e72209d95f286efb33bf96a6593d475" ldflags_dirs standard verify_py35 ensurepip install_package "Python-3.5.0b2" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0b2.tgz#3487dbdea5b78ec25be73321e5d54f56d76e8de22bf818e2a529eeb9feb34fe8" ldflags_dirs standard verify_py35 ensurepip

View File

@@ -0,0 +1,44 @@
case "$(pypy_architecture 2>/dev/null || true)" in
"linux" )
if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
install_package "pypy-2.6.0-linux" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-linux.tar.bz2#6e0b052c40a59bf5a85ee239980bbcab8b031b4c2bc33b99efe1b072977d9910" "pypy" verify_py27 ensurepip
else
install_package "pypy-2.6.0-linux_i686-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-2.6.0-linux_i686-portable.tar.bz2#e01db0984f7fecd80dadfb1d5f65118e596e3984d12643b4d552e83f92bff549" "pypy" verify_py27 ensurepip
fi
;;
"linux-armel" )
require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" || true
install_package "pypy-2.6.0-linux-armel" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-linux-armel.tar.bz2#9d0cb9b15283f9c15f83c05293f8bd41d302c96090fd89b778f359df9bc8e619" "pypy" verify_py27 ensurepip
;;
"linux-armhf" )
if [[ "$(cat /etc/issue 2>/dev/null || true)" == "Raspbian"* ]]; then
install_package "pypy-2.6.0-linux-armhf-raspbian" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-linux-armhf-raspbian.tar.bz2#e9f6a16c3e21f38bd571adb33757649ceef3f2ebfdd6d37eea923ce26ea6728c" "pypy" verify_py27 ensurepip
else
require_distro "Ubuntu 13.04" || true
install_package "pypy-2.6.0-linux-armhf-raring" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-linux-armhf-raring.tar.bz2#ccb37a6d861b6dd69cd038337664885dcf91852a2ab6aef480dd7cfbda8de502" "pypy" verify_py27 ensurepip
fi
;;
"linux64" )
if require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" 1>/dev/null 2>&1; then
install_package "pypy-2.6.0-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-linux64.tar.bz2#f5d2b0e3594cec57e32d3e43a951041ec330e1e962a836be470d591633e51388" "pypy" verify_py27 ensurepip
else
install_package "pypy-2.6.0-linux_x86_64-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-2.6.0-linux_x86_64-portable.tar.bz2#97284b66476c5d1b17a62f5017569a0073730928e19f95b49d78d6bc60b69495" "pypy" verify_py27 ensurepip
fi
;;
"osx64" )
install_package "pypy-2.6.0-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-osx64.tar.bz2#77f1d056484e40e0a8e2e2b2b489eedfe785605ef36b144ffce05f7b748f6acd" "pypy" verify_py27 ensurepip
;;
"win32" )
# FIXME: never tested on Windows
install_zip "pypy-2.6.0-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-win32.zip#de907e7fef7b9b6ceccfc8aa5f4781ee3bc4a49b119d4b22ab5e25eab21c6e8d" "pypy" verify_py27 ensurepip
;;
* )
{ echo
colorize 1 "ERROR"
echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
echo "try 'pypy-2.6.0-src' to build from soruce."
echo
} >&2
exit 1
;;
esac

View File

@@ -0,0 +1,2 @@
require_gcc
install_package "pypy-2.6.0-src" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.6.0-src.tar.bz2#9bf353f22d25e97a85a6d3766619966055edea1ea1b2218445d683a8ad0399d9" "pypy_builder" verify_py27 ensurepip

View File

@@ -0,0 +1,16 @@
case "$(pypy_architecture 2>/dev/null || true)" in
"linux" )
install_package "pypy-2.5.1-linux_i686-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-2.5.1-linux_i686-portable.tar.bz2#ed532ddde3332d10faa59af49854cacbca458c597889352e619a87ab22363063" "pypy" verify_py27 ensurepip
;;
"linux64" )
install_package "pypy-2.5.1-linux_x86_64-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-2.5.1-linux_x86_64-portable.tar.bz2#157bee6349878cf0ef575b0d7bfd6cbb837c00e83b2872c924580ef7bc32c0d7" "pypy" verify_py27 ensurepip
;;
* )
{ echo
colorize 1 "ERROR"
echo ": Portable PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
echo
} >&2
exit 1
;;
esac

View File

@@ -0,0 +1,16 @@
case "$(pypy_architecture 2>/dev/null || true)" in
"linux" )
install_package "pypy-2.6-linux_i686-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-2.6-linux_i686-portable.tar.bz2#e01db0984f7fecd80dadfb1d5f65118e596e3984d12643b4d552e83f92bff549" "pypy" verify_py27 ensurepip
;;
"linux64" )
install_package "pypy-2.6-linux_x86_64-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-2.6-linux_x86_64-portable.tar.bz2#97284b66476c5d1b17a62f5017569a0073730928e19f95b49d78d6bc60b69495" "pypy" verify_py27 ensurepip
;;
* )
{ echo
colorize 1 "ERROR"
echo ": Portable PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
echo
} >&2
exit 1
;;
esac

View File

@@ -462,6 +462,14 @@ OUT
# nop # nop
} }
@test "Java version string not on first line" {
# nop
}
@test "Java version string on OpenJDK" {
# nop
}
@test "non-writable TMPDIR aborts build" { @test "non-writable TMPDIR aborts build" {
export TMPDIR="${TMP}/build" export TMPDIR="${TMP}/build"
mkdir -p "$TMPDIR" mkdir -p "$TMPDIR"

View File

@@ -69,7 +69,7 @@ See all available versions with \`pyenv install --list'.
If the version you need is missing, try upgrading pyenv: If the version you need is missing, try upgrading pyenv:
cd ${BATS_TEST_DIRNAME}/../../.. && git pull cd ${BATS_TEST_DIRNAME}/../../.. && git pull && cd -
OUT OUT
unstub python-build unstub python-build

View File

@@ -159,3 +159,39 @@ OUT
unstub make unstub make
} }
@test "ensurepip without altinstall" {
mkdir -p "${INSTALL_ROOT}/bin"
cat <<OUT > "${INSTALL_ROOT}/bin/python"
#!$BASH
echo "python \$@" >> "${INSTALL_ROOT}/build.log"
OUT
chmod +x "${INSTALL_ROOT}/bin/python"
PYTHON_MAKE_INSTALL_TARGET="" TMPDIR="$TMP" run_inline_definition <<OUT
build_package_ensurepip
OUT
assert_success
assert_build_log <<OUT
python -m ensurepip
OUT
}
@test "ensurepip with altinstall" {
mkdir -p "${INSTALL_ROOT}/bin"
cat <<OUT > "${INSTALL_ROOT}/bin/python"
#!$BASH
echo "python \$@" >> "${INSTALL_ROOT}/build.log"
OUT
chmod +x "${INSTALL_ROOT}/bin/python"
PYTHON_MAKE_INSTALL_TARGET="altinstall" TMPDIR="$TMP" run_inline_definition <<OUT
build_package_ensurepip
OUT
assert_success
assert_build_log <<OUT
python -m ensurepip --altinstall
OUT
}

View File

@@ -71,11 +71,11 @@ load test_helper
assert_line 0 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"' assert_line 0 'export PATH="'${PYENV_ROOT}'/shims:${PATH}"'
} }
@test "doesn't add shims to PATH more than once (fish)" { @test "can add shims to PATH more than once (fish)" {
export PATH="${PYENV_ROOT}/shims:$PATH" export PATH="${PYENV_ROOT}/shims:$PATH"
run pyenv-init - fish run pyenv-init - fish
assert_success assert_success
refute_line 'setenv PATH "'${PYENV_ROOT}'/shims" $PATH ;' assert_line 0 "setenv PATH '${PYENV_ROOT}/shims' \$PATH"
} }
@test "outputs sh-compatible syntax" { @test "outputs sh-compatible syntax" {

View File

@@ -5,7 +5,7 @@ load test_helper
@test "blank invocation" { @test "blank invocation" {
run pyenv run pyenv
assert_success assert_success
assert [ "${lines[0]}" == "pyenv 20150524" ] assert [ "${lines[0]}" == "pyenv 20150601" ]
} }
@test "invalid command" { @test "invalid command" {