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

Compare commits

...

22 Commits

Author SHA1 Message Date
Yamashita Yuu
9146f44db1 v20150204 2015-02-04 10:33:21 +09:00
Yamashita Yuu
b9ae43a9df Add PyPy 2.5.0 release (fixes #311) 2015-02-04 09:33:37 +09:00
Yamashita Yuu
f6a77549eb Latest pip can't be installed into 3.0.1 (fixes #309) 2015-01-31 16:19:39 +09:00
Yamashita Yuu
cbd246acff Symlink pythonX.Y-config to python-config if python-config is missing (fixes #296) 2015-01-31 16:13:26 +09:00
Yamashita Yuu
9d21169ee0 Fix regression of #255 and add test 2015-01-31 15:35:40 +09:00
Yamashita Yuu
7bceb85067 Update README 2015-01-31 15:24:05 +09:00
Yamashita Yuu
eeb69b1b79 Add note about --enable-shared and RPATH (fixes #217) 2015-01-31 15:14:58 +09:00
Yamashita Yuu
8abefe1fcb v20150124 2015-01-24 00:45:03 +09:00
Yamashita Yuu
b22fcd9759 Add missing changelog of v20141211 2015-01-24 00:43:12 +09:00
Yamashita, Yuu
45df273592 Merge pull request #307 from cloudlite/patch-1
Update README.md - clone through https instead of git
2015-01-20 11:23:45 +09:00
cloudlite
dbd50e7bd9 Update README.md - clone through https instead of git
git:// protocol is blocked by a lot of servers, https works fine.
2015-01-19 20:51:18 -05:00
Yamashita Yuu
1c0a5d8264 Add IronPython 2.7.5 2015-01-18 20:24:47 +09:00
Yamashita Yuu
7c7cca8a26 Merge branch 'ruby-build-v20150112' 2015-01-15 23:40:23 +09:00
Yamashita Yuu
123b3af1a0 Import changes from ruby-build v20150112 2015-01-15 23:33:39 +09:00
Yamashita, Yuu
ba9c01ce77 Merge pull request #304 from jbrudvik/patch-1
Use better image for Travis build status
2015-01-14 13:44:51 +09:00
Jeremy Brudvik
7535efe031 Use better image for Travis build status 2015-01-13 19:53:29 -08:00
Yamashita, Yuu
995da2df89 Merge pull request #295 from radzinzki/master
Update README.md
2014-12-18 12:43:16 +09:00
Arnav Kumar
f28b3ee123 Update README.md
Made it consistent with the rbenv documentation by having the cloning step in the installation clone it directly into the home directory.
2014-12-18 11:41:25 +08:00
Yamashita, Yuu
97b957d5d5 Merge pull request #292 from s1341/master
add patches to stop '/Library/Python/X.X/site-packages' from being added to sys.path
2014-12-14 21:30:54 +09:00
srubenst
fe2412c95d add patches to stop '/Library/Python/X.X/site-packages' from being added to sys.path 2014-12-12 11:49:01 +02:00
Yamashita, Yuu
5114600c4d Merge pull request #289 from blueyed/unset-PYTHON_CFLAGS-in-tests
Unset PYTHON_CFLAGS for build tests
2014-12-12 10:02:10 +09:00
Daniel Hahler
96d3bd6379 Unset PYTHON_CFLAGS and PYTHON_CONFIGURE_OPTS for build tests 2014-12-12 01:36:37 +01:00
26 changed files with 346 additions and 40 deletions

View File

@@ -1,5 +1,26 @@
## Version History ## Version History
#### 20150204
* python-build: Add PyPy 2.5.0 release (#311)
* python-build: Add note about `--enable-shared` and RPATH (#217)
* python-build: Fix regression of `PYTHON_MAKE_INSTALL_TARGET` and add test (#255)
* python-build: Symlink `pythonX.Y-config` to `python-config` if `python-config` is missing (#296)
* python-build: Latest `pip` can't be installed into `3.0.1` (#309)
#### 20150124
* python-build: Import recent changes from ruby-build v20150112
* python-build: Prevent adding `/Library/Python/X.X/site-packages` to `sys.path` whtn `--enable-framework` is enabled on OS X. Thanks @s1341 (#292)
* python-build: Add new IronPython release; 2.7.5
#### 20141211
* pyenv: Add bulit-in `pip-rehash` feature. You don't need to install [pyenv-pip-rehash](https://github.com/yyuu/pyenv-pip-rehash) anymore.
* python-build: Add new CPython release; 2.7.9 (#284)
* python-build: Add new PyPy releases; pypy3-2.4.0, pypy3-2.4.0-src (#277)
* python-build: Add build definitions of PyPy nightly build
#### 20141127 #### 20141127
* python-build: Add new CPython release candidates; 2.7.9rc1 (#276) * python-build: Add new CPython release candidates; 2.7.9rc1 (#276)

View File

@@ -1,5 +1,9 @@
.PHONY: test .PHONY: test
# Do not pass in user flags to build tests.
unexport PYTHON_CFLAGS
unexport PYTHON_CONFIGURE_OPTS
test: bats test: bats
PATH="./bats/bin:$$PATH" test/run PATH="./bats/bin:$$PATH" test/run
cd plugins/python-build && $(PWD)/bats/bin/bats $${CI:+--tap} test cd plugins/python-build && $(PWD)/bats/bin/bats $${CI:+--tap} test

View File

@@ -1,6 +1,6 @@
# Simple Python Version Management: pyenv # Simple Python Version Management: pyenv
[![Build Status](https://travis-ci.org/yyuu/pyenv.png)](https://travis-ci.org/yyuu/pyenv) [![Build Status](https://travis-ci.org/yyuu/pyenv.svg)](https://travis-ci.org/yyuu/pyenv)
pyenv lets you easily switch between multiple versions of Python. It's pyenv lets you easily switch between multiple versions of Python. It's
simple, unobtrusive, and follows the UNIX tradition of single-purpose simple, unobtrusive, and follows the UNIX tradition of single-purpose
@@ -171,8 +171,7 @@ easy to fork and contribute any changes back upstream.
1. **Check out pyenv where you want it installed.** 1. **Check out pyenv where you want it installed.**
A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else). A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else).
$ cd $ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
$ git clone git://github.com/yyuu/pyenv.git .pyenv
2. **Define environment variable `PYENV_ROOT`** to point to the path where 2. **Define environment variable `PYENV_ROOT`** to point to the path where

View File

@@ -12,7 +12,7 @@
set -e set -e
[ -n "$PYENV_DEBUG" ] && set -x [ -n "$PYENV_DEBUG" ] && set -x
version="20141211" version="20150204"
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

@@ -105,6 +105,20 @@ process.
configure and make options for buildling CPython. These variables will configure and make options for buildling CPython. These variables will
be passed to Python only, not any dependent packages (e.g. libyaml). be passed to Python only, not any dependent packages (e.g. libyaml).
### Building as `--enable-shared`
You can build CPython with `--enable-shared` to install a version with
shared object.
If `--enabled-shared` was found in `PYTHON_CONFIGURE_OPTS` or `CONFIGURE_OPTS`,
`python-build` will automatically set `RPATH` to the pyenv's prefix directory.
This means you don't have to set `LD_LIBRARY_PATH` or `DYLD_LIBRARY_PATH` for
the version(s) installed with `--enable-shared`.
```sh
$ env PYTHON_CONFIGURE_OPTS="--enable-shared` pyenv install 2.7.9
```
### Checksum verification ### Checksum verification
If you have the `shasum`, `openssl`, or `sha256sum` tool installed, If you have the `shasum`, `openssl`, or `sha256sum` tool installed,

View File

@@ -106,6 +106,8 @@ for option in "${OPTIONS[@]}"; do
esac esac
done done
[ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
unset VERSION_NAME unset VERSION_NAME
# The first argument contains the definition to install. If the # The first argument contains the definition to install. If the
@@ -114,8 +116,7 @@ unset VERSION_NAME
# version is not specified. # version is not specified.
DEFINITION="${ARGUMENTS[0]}" DEFINITION="${ARGUMENTS[0]}"
[ -n "$DEFINITION" ] || DEFINITION="$(pyenv-local 2>/dev/null || true)" [ -n "$DEFINITION" ] || DEFINITION="$(pyenv-local 2>/dev/null || true)"
[ -n "$DEFINITION" ] || usage 1 [ -n "$DEFINITION" ] || usage 1 >&2
# Define `before_install` and `after_install` functions that allow # Define `before_install` and `after_install` functions that allow
# plugin hooks to register a string of code for execution before or # plugin hooks to register a string of code for execution before or

View File

@@ -17,24 +17,32 @@ if [ "$1" = "--complete" ]; then
exec pyenv versions --bare exec pyenv versions --bare
fi fi
usage() {
# We can remove the sed fallback once pyenv 0.4.0 is widely available
pyenv-help uninstall 2>/dev/null || sed -ne '/^#/!q;s/.//;s/.//;1,4d;p' < "$0"
[ -z "$1" ] || exit "$1"
}
if [ -z "$PYENV_ROOT" ]; then if [ -z "$PYENV_ROOT" ]; then
PYENV_ROOT="${HOME}/.pyenv" PYENV_ROOT="${HOME}/.pyenv"
fi fi
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
usage 0
fi
unset FORCE unset FORCE
if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
FORCE=true FORCE=true
shift shift
fi fi
[ "$#" -eq 1 ] || usage 1 >&2
DEFINITION="$1" DEFINITION="$1"
case "$DEFINITION" in case "$DEFINITION" in
"" | -* ) "" | -* )
# We can remove the sed fallback once pyenv 0.4.0 is widely available. usage 1 >&2
{ pyenv-help uninstall 2>/dev/null ||
sed -ne '/^#/!q;s/.\{1,2\}//;1,4d;p' < "$0"
} >&2
exit 1
;; ;;
esac esac

View File

@@ -1,4 +1,14 @@
#!/usr/bin/env bash #!/usr/bin/env bash
#
# Usage: python-build [-kvp] <definition> <prefix>
# python-build --definitions
#
# -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
# --definitions List all built-in definitions
# -g/--debug Build a debug version
#
PYTHON_BUILD_VERSION="20141028" PYTHON_BUILD_VERSION="20141028"
@@ -495,7 +505,7 @@ fetch_svn() {
if type svn &>/dev/null; then if type svn &>/dev/null; then
svn co -r "$svn_rev" "$svn_url" "${package_name}" >&4 2>&1 svn co -r "$svn_rev" "$svn_url" "${package_name}" >&4 2>&1
else else
echo "error: please install \`svn\` and try again" >&2 echo "error: please install Subversion and try again" >&2
exit 1 exit 1
fi fi
} }
@@ -1098,7 +1108,15 @@ require_llvm() {
local llvm_version="$1" local llvm_version="$1"
if [ "$(uname -s)" = "Darwin" ] && [ "$(osx_version)" -ge 1010 ]; then if [ "$(uname -s)" = "Darwin" ] && [ "$(osx_version)" -ge 1010 ]; then
if [[ "$PYTHON_CONFIGURE_OPTS" != *--llvm-* ]]; then if [[ "$PYTHON_CONFIGURE_OPTS" != *--llvm-* ]]; then
package_option python configure --prebuilt-name="llvm-3.2-x86_64-apple-darwin13.tar.bz2" if [ "$llvm_version" = "3.2" ]; then
package_option python configure --prebuilt-name="llvm-3.2-x86_64-apple-darwin13.tar.bz2"
else
local llvm_prefix="$(brew --prefix llvm 2>/dev/null || true)"
local llvm_config="${llvm_prefix}/bin/llvm-config"
if [ -x "$llvm_config" ]; then
package_option python configure --llvm-config="$llvm_config"
fi
fi
fi fi
fi fi
} }
@@ -1320,13 +1338,21 @@ verify_python() {
# Not create symlinks on `altinstall` (#255) # Not create symlinks on `altinstall` (#255)
if [[ "$PYTHON_MAKE_INSTALL_TARGET" != *"altinstall"* ]]; then if [[ "$PYTHON_MAKE_INSTALL_TARGET" != *"altinstall"* ]]; then
local suffix="${1#python}" local suffix="${1#python}"
local file local file link
shopt -s nullglob shopt -s nullglob
for file in "${PREFIX_PATH}/bin"/*; do for file in "${PREFIX_PATH}/bin"/*; do
local link unset link
case "${file}" in case "${file}" in
*"-${suffix}" ) link="${file%%-${suffix}}" ;; */"python${suffix}-config" )
*"${suffix}" ) link="${file%%${suffix}}" ;; # Symlink `pythonX.Y-config` to `python-config` if `python-config` is missing (#296)
link="${file%/*}/python-config"
;;
*/*"-${suffix}" )
link="${file%%-${suffix}}"
;;
*/*"${suffix}" )
link="${file%%${suffix}}"
;;
esac esac
if [ -n "$link" ] && [ ! -e "$link" ]; then if [ -n "$link" ] && [ ! -e "$link" ]; then
( cd "${file%/*}" && ln -fs "${file##*/}" "${link##*/}" ) ( cd "${file%/*}" && ln -fs "${file##*/}" "${link##*/}" )
@@ -1519,14 +1545,8 @@ version() {
} }
usage() { usage() {
{ version sed -ne '/^#/!q;s/.\{1,2\}//;1,2d;p' < "$0"
echo "usage: python-build [-k|--keep] [-v|--verbose] [-p|--patch] [-g|--debug] definition prefix" [ -z "$1" ] || exit "$1"
echo " python-build --definitions"
} >&2
if [ -z "$1" ]; then
exit 1
fi
} }
list_definitions() { list_definitions() {
@@ -1558,16 +1578,9 @@ parse_options "$@"
for option in "${OPTIONS[@]}"; do for option in "${OPTIONS[@]}"; do
case "$option" in case "$option" in
"h" | "help" ) "h" | "help" )
usage without_exiting version
{ echo echo
echo " -k/--keep Do not remove source tree after installation" usage 0
echo " -v/--verbose Verbose mode: print compilation status to stdout"
echo " -p/--patch Apply a patch from stdin before building"
echo " -g/--debug Build a debug version"
echo " --definitions List all built-in definitions"
echo
} >&2
exit 0
;; ;;
"definitions" ) "definitions" )
list_definitions list_definitions
@@ -1592,9 +1605,11 @@ for option in "${OPTIONS[@]}"; do
esac esac
done done
[ "${#ARGUMENTS[@]}" -eq 2 ] || usage 1 >&2
DEFINITION_PATH="${ARGUMENTS[0]}" DEFINITION_PATH="${ARGUMENTS[0]}"
if [ -z "$DEFINITION_PATH" ]; then if [ -z "$DEFINITION_PATH" ]; then
usage usage 1 >&2
elif [ ! -f "$DEFINITION_PATH" ]; then elif [ ! -f "$DEFINITION_PATH" ]; then
for DEFINITION_DIR in "${PYTHON_BUILD_DEFINITIONS[@]}"; do for DEFINITION_DIR in "${PYTHON_BUILD_DEFINITIONS[@]}"; do
if [ -f "${DEFINITION_DIR}/${DEFINITION_PATH}" ]; then if [ -f "${DEFINITION_DIR}/${DEFINITION_PATH}" ]; then
@@ -1611,7 +1626,7 @@ fi
PREFIX_PATH="${ARGUMENTS[1]}" PREFIX_PATH="${ARGUMENTS[1]}"
if [ -z "$PREFIX_PATH" ]; then if [ -z "$PREFIX_PATH" ]; then
usage usage 1 >&2
elif [ "${PREFIX_PATH#/}" = "$PREFIX_PATH" ]; then elif [ "${PREFIX_PATH#/}" = "$PREFIX_PATH" ]; then
PREFIX_PATH="${PWD}/${PREFIX_PATH}" PREFIX_PATH="${PWD}/${PREFIX_PATH}"
fi fi

View File

@@ -1,3 +1,5 @@
#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.0.1" "http://python.org/ftp/python/3.0.1/Python-3.0.1.tgz#7d5f2feae9035f1d3d9e6bb7f092dbf374d6bb4b25abd0d2d11f13bba1cb04de" ldflags_dirs standard verify_py30 ensurepip install_package "Python-3.0.1" "http://python.org/ftp/python/3.0.1/Python-3.0.1.tgz#7d5f2feae9035f1d3d9e6bb7f092dbf374d6bb4b25abd0d2d11f13bba1cb04de" ldflags_dirs standard verify_py30
install_package "setuptools-1.4.2" "https://pypi.python.org/packages/source/s/setuptools/setuptools-1.4.2.tar.gz#263986a60a83aba790a5bffc7d009ac88114ba4e908e5c90e453b3bf2155dbbd" python
install_package "pip-1.3.1" "https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz#145eaa5d1ea1b062663da1f3a97780d7edea4c63c68a37c463b1deedf7bb4957" python

View File

@@ -0,0 +1,2 @@
install_zip "IronPython-2.7.5" "https://github.com/IronLanguages/main/releases/download/ipy-2.7.5/IronPython-2.7.5.zip#d2651084a61a43379ce6c031f4f29c5e01ba96d1ff89a5282376dd4b84439b5b" ironpython
# FIXME: have not confirmed to install setuptools into IronPython yet

View File

@@ -0,0 +1,13 @@
Only in .: 003_system_library_path_in_sys_path.patch
diff -ur ../Python-2.7.2/Lib/site.py ./Lib/site.py
--- ../Python-2.7.2/Lib/site.py 2014-12-12 10:59:47.000000000 +0200
+++ ./Lib/site.py 2014-12-12 11:24:28.000000000 +0200
@@ -312,7 +312,7 @@
# locations.
from sysconfig import get_config_var
framework = get_config_var("PYTHONFRAMEWORK")
- if framework and "/%s.framework/"%(framework,) in prefix:
+ if False and framework and "/%s.framework/"%(framework,) in prefix:
sitepackages.append(
os.path.join("/Library", framework,
sys.version[:3], "site-packages"))

View File

@@ -0,0 +1,13 @@
Only in .: 003_system_library_path_in_sys_path.patch
diff -ur ../Python-2.7.3/Lib/site.py ./Lib/site.py
--- ../Python-2.7.3/Lib/site.py 2012-04-10 02:07:31.000000000 +0300
+++ ./Lib/site.py 2014-12-12 11:35:33.000000000 +0200
@@ -312,7 +312,7 @@
# locations.
from sysconfig import get_config_var
framework = get_config_var("PYTHONFRAMEWORK")
- if framework:
+ if False and framework:
sitepackages.append(
os.path.join("/Library", framework,
sys.version[:3], "site-packages"))

View File

@@ -0,0 +1,13 @@
Only in .: 003_system_library_path_in_sys_path.patch
diff -ur ../Python-2.7.3/Lib/site.py ./Lib/site.py
--- ../Python-2.7.3/Lib/site.py 2012-04-10 02:07:31.000000000 +0300
+++ ./Lib/site.py 2014-12-12 11:35:33.000000000 +0200
@@ -312,7 +312,7 @@
# locations.
from sysconfig import get_config_var
framework = get_config_var("PYTHONFRAMEWORK")
- if framework:
+ if False and framework:
sitepackages.append(
os.path.join("/Library", framework,
sys.version[:3], "site-packages"))

View File

@@ -0,0 +1,13 @@
Only in .: 003_system_library_path_in_sys_path.patch
diff -ur ../Python-2.7.5/Lib/site.py ./Lib/site.py
--- ../Python-2.7.5/Lib/site.py 2013-05-12 06:32:44.000000000 +0300
+++ ./Lib/site.py 2014-12-12 11:29:29.000000000 +0200
@@ -300,7 +300,7 @@
# locations.
from sysconfig import get_config_var
framework = get_config_var("PYTHONFRAMEWORK")
- if framework:
+ if False and framework:
sitepackages.append(
os.path.join("/Library", framework,
sys.version[:3], "site-packages"))

View File

@@ -0,0 +1,13 @@
Only in .: 003_system_library_path_in_sys_path.patch
diff -ur ../Python-2.7.5/Lib/site.py ./Lib/site.py
--- ../Python-2.7.5/Lib/site.py 2013-05-12 06:32:44.000000000 +0300
+++ ./Lib/site.py 2014-12-12 11:29:29.000000000 +0200
@@ -300,7 +300,7 @@
# locations.
from sysconfig import get_config_var
framework = get_config_var("PYTHONFRAMEWORK")
- if framework:
+ if False and framework:
sitepackages.append(
os.path.join("/Library", framework,
sys.version[:3], "site-packages"))

View File

@@ -0,0 +1,13 @@
Only in .: 003_system_library_path_in_sys_path.patch
diff -ur ../Python-2.7.5/Lib/site.py ./Lib/site.py
--- ../Python-2.7.5/Lib/site.py 2013-05-12 06:32:44.000000000 +0300
+++ ./Lib/site.py 2014-12-12 11:29:29.000000000 +0200
@@ -300,7 +300,7 @@
# locations.
from sysconfig import get_config_var
framework = get_config_var("PYTHONFRAMEWORK")
- if framework:
+ if False and framework:
sitepackages.append(
os.path.join("/Library", framework,
sys.version[:3], "site-packages"))

View File

@@ -0,0 +1,13 @@
Only in .: 003_system_library_path_in_sys_path.patch
diff -ur ../Python-2.7.8/Lib/site.py ./Lib/site.py
--- ../Python-2.7.8/Lib/site.py 2014-06-30 05:05:30.000000000 +0300
+++ ./Lib/site.py 2014-12-12 11:42:33.000000000 +0200
@@ -300,7 +300,7 @@
# locations.
from sysconfig import get_config_var
framework = get_config_var("PYTHONFRAMEWORK")
- if framework:
+ if False and framework:
sitepackages.append(
os.path.join("/Library", framework,
sys.version[:3], "site-packages"))

View File

@@ -0,0 +1,38 @@
case "$(pypy_architecture 2>/dev/null || true)" in
"linux" )
require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" || true
install_package "pypy-2.5.0-linux" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.5.0-linux.tar.bz2#3dfd56a986d25929b4ed9f40a5484f72f1d513cd816cf8aaa683106c3391247c" "pypy" verify_py27 ensurepip
;;
"linux-armel" )
require_distro "Ubuntu 12.04" "Ubuntu 12.10" "Ubuntu 13.04" "Ubuntu 13.10" "Ubuntu 14.04" || true
install_package "pypy-2.5.0-linux-armel" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.5.0-linux-armel.tar.bz2#277fa6c61d63af96893dafd19e1ffea7b988397c6a0fd66cd99dc0db1029be56" "pypy" verify_py27 ensurepip
;;
"linux-armhf" )
if [[ "$(cat /etc/issue 2>/dev/null || true)" == "Raspbian"* ]]; then
install_package "pypy-2.5.0-linux-armhf-raspbian" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.5.0-linux-armhf-raspbian.tar.bz2#6c975e39f0e7d57176b49a987a08862a3cbd9aeb52f47eb4ab148ea334e747fd" "pypy" verify_py27 ensurepip
else
require_distro "Ubuntu 13.04" || true
install_package "pypy-2.5.0-linux-armhf-raring" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.5.0-linux-armhf-raring.tar.bz2#1866bf2b8a8144c68d64f2ba982c6c545849913167b4602b762716332ec1fa0b" "pypy" verify_py27 ensurepip
fi
;;
"linux64" )
require_distro "Ubuntu 12.04" || true
install_package "pypy-2.5.0-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.5.0-linux64.tar.bz2#7764fb6b662407f8709eaa334c542aac9cb6bfe3291ac198dad0980ca129f3c2" "pypy" verify_py27 ensurepip
;;
"osx64" )
install_package "pypy-2.5.0-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.5.0-osx64.tar.bz2#30b392b969b54cde281b07f5c10865a7f2e11a229c46b8af384ca1d3fe8d4e6e" "pypy" verify_py27 ensurepip
;;
"win32" )
# FIXME: never tested on Windows
install_zip "pypy-2.5.0-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy-2.5.0-win32.zip#692391434cf14016d74c6b8bda8f93135ef026f48c8327f3195bfa24d314317d" "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.5.0-src' to build from soruce."
echo
} >&2
exit 1
;;
esac

View File

@@ -0,0 +1,2 @@
require_gcc
install_package "pypy-pypy-c6ad44ecf5d8" "https://bitbucket.org/pypy/pypy/get/release-2.5.0.tar.bz2#8d644a55a3150cf3d18536c784e3410bb3f3438c1505000c4f761863bacedf88" "pypy_builder" verify_py27 ensurepip

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env bats
load test_helper
@test "not enought arguments for python-build" {
# use empty inline definition so nothing gets built anyway
local definition="${TMP}/build-definition"
echo '' > "$definition"
run python-build "$definition"
assert_failure
assert_output_contains 'Usage: python-build'
}
@test "extra arguments for python-build" {
# use empty inline definition so nothing gets built anyway
local definition="${TMP}/build-definition"
echo '' > "$definition"
run python-build "$definition" "${TMP}/install" ""
assert_failure
assert_output_contains 'Usage: python-build'
}

View File

@@ -5,6 +5,7 @@ export PYTHON_BUILD_CACHE_PATH="$TMP/cache"
export MAKE=make export MAKE=make
export MAKE_OPTS="-j 2" export MAKE_OPTS="-j 2"
export CC=cc export CC=cc
export -n PYTHON_CONFIGURE_OPTS
setup() { setup() {
mkdir -p "$INSTALL_ROOT" mkdir -p "$INSTALL_ROOT"
@@ -449,6 +450,18 @@ OUT
# nop # nop
} }
@test "JRuby Java 7 missing" {
# nop
}
@test "JRuby Java is outdated" {
# nop
}
@test "JRuby Java 7 up-to-date" {
# 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

@@ -5,8 +5,13 @@ export MAKE=make
export MAKE_OPTS='-j 2' export MAKE_OPTS='-j 2'
export -n CFLAGS export -n CFLAGS
export -n CC export -n CC
export -n PYTHON_CONFIGURE_OPTS
@test "require_gcc on OS X 10.9" { @test "require_gcc on OS X 10.9" {
# yyuu/pyenv#222
stub uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.9.5'
stub uname '-s : echo Darwin' stub uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.9.5' stub sw_vers '-productVersion : echo 10.9.5'
stub gcc '--version : echo 4.2.1' stub gcc '--version : echo 4.2.1'
@@ -24,6 +29,10 @@ OUT
} }
@test "require_gcc on OS X 10.10" { @test "require_gcc on OS X 10.10" {
# yyuu/pyenv#222
stub uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.10'
stub uname '-s : echo Darwin' stub uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.10' stub sw_vers '-productVersion : echo 10.10'
stub gcc '--version : echo 4.2.1' stub gcc '--version : echo 4.2.1'
@@ -36,7 +45,7 @@ DEF
assert_success assert_success
assert_output <<OUT assert_output <<OUT
CC=${TMP}/bin/gcc CC=${TMP}/bin/gcc
MACOSX_DEPLOYMENT_TARGET=10.10 MACOSX_DEPLOYMENT_TARGET=10.9
OUT OUT
} }

View File

@@ -146,3 +146,42 @@ ${PYENV_ROOT}/plugins/bar/share/python-build
${PYENV_ROOT}/plugins/foo/share/python-build ${PYENV_ROOT}/plugins/foo/share/python-build
OUT OUT
} }
@test "not enough arguments for pyenv-install" {
stub_python_build
run pyenv-install
assert_failure
assert_output_contains 'Usage: pyenv install'
}
@test "too many arguments for pyenv-install" {
stub_python_build
run pyenv-install 3.4.1 3.4.2
assert_failure
assert_output_contains 'Usage: pyenv install'
}
@test "show help for pyenv-install" {
stub_python_build
run pyenv-install -h
assert_success
assert_output_contains 'Usage: pyenv install'
}
@test "not enough arguments pyenv-uninstall" {
run pyenv-uninstall
assert_failure
assert_output_contains 'Usage: pyenv uninstall'
}
@test "too many arguments for pyenv-uninstall" {
run pyenv-uninstall 3.4.1 3.4.2
assert_failure
assert_output_contains 'Usage: pyenv uninstall'
}
@test "show help for pyenv-uninstall" {
run pyenv-uninstall -h
assert_success
assert_output_contains 'Usage: pyenv uninstall'
}

View File

@@ -138,3 +138,24 @@ OUT
unstub make unstub make
unstub patch unstub patch
} }
@test "allow custom make install target" {
cached_tarball "Python-3.2.1"
stub brew false
stub "$MAKE" \
" : echo \"$MAKE \$@\" >> build.log" \
" : echo \"$MAKE \$@\" >> build.log && cat build.log >> '$INSTALL_ROOT/build.log'"
PYTHON_MAKE_INSTALL_TARGET="altinstall" TMPDIR="$TMP" install_tmp_fixture definitions/vanilla-python < /dev/null
assert_success
assert_build_log <<OUT
Python-3.2.1: CPPFLAGS="-I${TMP}/install/include " LDFLAGS="-L${TMP}/install/lib "
Python-3.2.1: --prefix=$INSTALL_ROOT --libdir=$INSTALL_ROOT/lib
make -j 2
make altinstall
OUT
unstub make
}

View File

@@ -115,6 +115,10 @@ assert_output() {
assert_output_contains() { assert_output_contains() {
local expected="$1" local expected="$1"
if [ -z "$expected" ]; then
echo "assert_output_contains needs an argument" >&2
return 1
fi
echo "$output" | $(type -p ggrep grep | head -1) -F "$expected" >/dev/null || { echo "$output" | $(type -p ggrep grep | head -1) -F "$expected" >/dev/null || {
{ echo "expected output to contain $expected" { echo "expected output to contain $expected"
echo "actual: $output" echo "actual: $output"

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 20141211" ] assert [ "${lines[0]}" == "pyenv 20150204" ]
} }
@test "invalid command" { @test "invalid command" {