mirror of
https://github.com/pyenv/pyenv.git
synced 2025-11-08 11:33:49 -05:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a10c787f9b | ||
|
|
4157973301 | ||
|
|
2350e57b00 | ||
|
|
7dd50144d5 | ||
|
|
6103468023 | ||
|
|
0f596d2504 | ||
|
|
070e1c859f | ||
|
|
3faeda67bb | ||
|
|
ec220c4476 | ||
|
|
01f596e33c | ||
|
|
3768f1d7db | ||
|
|
d352b4810d | ||
|
|
83e5459cfb | ||
|
|
4f21d9a2ea |
@@ -23,6 +23,7 @@ dist:
|
||||
osx_image:
|
||||
- xcode9.4
|
||||
- xcode10
|
||||
- xcode10.2
|
||||
|
||||
env:
|
||||
- PYTHON_BUILD_VERSION=3.8-dev
|
||||
@@ -55,6 +56,8 @@ jobs:
|
||||
# list, to prevent duplicate Linux builds.
|
||||
- os: linux
|
||||
osx_image: xcode9.4
|
||||
- os: linux
|
||||
osx_image: xcode10
|
||||
|
||||
allow_failures:
|
||||
- env: PYTHON_BUILD_VERSION=3.8-dev
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
## Version History
|
||||
|
||||
## 1.2.12
|
||||
|
||||
* python-build: Find zlib from Xcode or brew on Mojave (#1353)
|
||||
* python-build: Add PyPy 7.1.1 (#1335)
|
||||
* python-build: Add CPython 3.8.0b1
|
||||
|
||||
## 1.2.11
|
||||
|
||||
* python-build: Fix `posix_close` name collision in 2.4 builds (#1321)
|
||||
|
||||
@@ -169,6 +169,7 @@ We'd recommend to install pyenv-virtualenv as well if you have some plan to play
|
||||
|
||||
If you're on macOS, consider [installing with Homebrew](#homebrew-on-macos).
|
||||
|
||||
If you're on Windows, consider using @kirankotari's [`pyenv-win`](https://github.com/pyenv-win/pyenv-win) fork. (`pyenv` does not work on windows outside the Windows Subsystem for Linux)
|
||||
|
||||
### The automatic installer
|
||||
|
||||
|
||||
@@ -41,12 +41,15 @@ else
|
||||
# Use a subshell to avoid changing the current path
|
||||
(
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}"
|
||||
local name="${path##*/}"
|
||||
cd_path="${path%/*}"
|
||||
if [[ "$cd_path" != "$path" ]]; then
|
||||
cd "$cd_path"
|
||||
fi
|
||||
name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
|
||||
pwd
|
||||
echo "$PWD"
|
||||
)
|
||||
}
|
||||
fi
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
version="1.2.11"
|
||||
version="1.2.12"
|
||||
git_revision=""
|
||||
|
||||
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then
|
||||
|
||||
@@ -60,20 +60,21 @@ resolve_link() {
|
||||
}
|
||||
|
||||
abs_dirname() {
|
||||
local cwd="$(pwd)"
|
||||
local path="$1"
|
||||
|
||||
# Use a subshell to avoid modifying the current path
|
||||
# Use a subshell to avoid changing the current path
|
||||
(
|
||||
while [ -n "$path" ]; do
|
||||
cd "${path%/*}"
|
||||
local name="${path##*/}"
|
||||
cd_path="${path%/*}"
|
||||
if [[ "$cd_path" != "$path" ]]; then
|
||||
cd "$cd_path"
|
||||
fi
|
||||
name="${path##*/}"
|
||||
path="$(resolve_link "$name" || true)"
|
||||
done
|
||||
|
||||
pwd
|
||||
echo "$PWD"
|
||||
)
|
||||
# cd "$cwd"
|
||||
}
|
||||
|
||||
capitalize() {
|
||||
@@ -758,7 +759,10 @@ build_package_standard_build() {
|
||||
local PACKAGE_CFLAGS="${package_var_name}_CFLAGS"
|
||||
|
||||
if [ "$package_var_name" = "PYTHON" ]; then
|
||||
use_homebrew_readline || use_freebsd_pkg ||true
|
||||
use_homebrew_readline || use_freebsd_pkg || true
|
||||
if is_mac -ge 1014; then
|
||||
use_xcode_sdk_zlib || use_homebrew_zlib || true
|
||||
fi
|
||||
fi
|
||||
|
||||
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
||||
@@ -1627,6 +1631,22 @@ build_package_verify_openssl() {
|
||||
' "$(basename "$(type -p yum apt-get | head -1)")" >&4 2>&1
|
||||
}
|
||||
|
||||
use_homebrew_zlib() {
|
||||
local brew_zlib="$(brew --prefix zlib 2>/dev/null || true)"
|
||||
if [ -d "$brew_zlib" ]; then
|
||||
echo "python-build: use zlib from homebrew"
|
||||
export CFLAGS="-I${brew_zlib} ${CFLAGS}"
|
||||
fi
|
||||
}
|
||||
|
||||
use_xcode_sdk_zlib() {
|
||||
local xc_sdk_path="$(xcrun --show-sdk-path 2>/dev/null || true)"
|
||||
if [ -d "$xc_sdk_path" ]; then
|
||||
echo "python-build: use zlib from xcode sdk"
|
||||
export CFLAGS="-I${xc_sdk_path}/usr/include ${CFLAGS}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Ensure that directories listed in LDFLAGS exist
|
||||
build_package_ldflags_dirs() {
|
||||
local arg dir
|
||||
@@ -1888,6 +1908,11 @@ build_package_verify_py38() {
|
||||
build_package_verify_py37 "$1" "${2:-3.8}"
|
||||
}
|
||||
|
||||
# Post-install check for Python 3.9.x
|
||||
build_package_verify_py39() {
|
||||
build_package_verify_py38 "$1" "${2:-3.9}"
|
||||
}
|
||||
|
||||
# Copy Tools/gdb/libpython.py to pythonX.Y-gdb.py (#1190)
|
||||
build_package_copy_python_gdb() {
|
||||
if [ -e "$BUILD_PATH/$1/Tools/gdb/libpython.py" ]; then
|
||||
|
||||
@@ -3,4 +3,4 @@ prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.0j" "https://www.openssl.org/source/openssl-1.1.0j.tar.gz#31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_git "Python-3.8-dev" "https://github.com/python/cpython" master standard verify_py38 copy_python_gdb ensurepip
|
||||
install_git "Python-3.8-dev" "https://github.com/python/cpython" "3.8" standard verify_py38 copy_python_gdb ensurepip
|
||||
|
||||
6
plugins/python-build/share/python-build/3.9-dev
Normal file
6
plugins/python-build/share/python-build/3.9-dev
Normal file
@@ -0,0 +1,6 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
||||
install_package "openssl-1.1.0j" "https://www.openssl.org/source/openssl-1.1.0j.tar.gz#31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline
|
||||
install_git "Python-3.9-dev" "https://github.com/python/cpython" master standard verify_py39 copy_python_gdb ensurepip
|
||||
47
plugins/python-build/share/python-build/pypy2.7-7.1.1
Normal file
47
plugins/python-build/share/python-build/pypy2.7-7.1.1
Normal file
@@ -0,0 +1,47 @@
|
||||
case "$(pypy_architecture 2>/dev/null || true)" in
|
||||
"linux" )
|
||||
if require_distro "Ubuntu 12.04" "Ubuntu 14.04" "Ubuntu 16.04" 1>/dev/null 2>&1; then
|
||||
install_package "pypy2.7-v7.1.1-linux32" "https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.1.1-linux32.tar.bz2#41ca390a76ca0d47b8353a0d6a20d5aab5fad8b0bb647b960d8c33e873d18ef5" "pypy" verify_py27 ensurepip
|
||||
else
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
|
||||
echo "try 'pypy2.7-7.1.1-src' to build from source."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
"linux64" )
|
||||
if require_distro "Ubuntu 12.04" "Ubuntu 14.04" "Ubuntu 16.04" 1>/dev/null 2>&1; then
|
||||
install_package "pypy2.7-v7.1.1-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.1.1-linux64.tar.bz2#73b09ef0860eb9ad7997af3030b22909806a273d90786d78420926df53279d66" "pypy" verify_py27 ensurepip
|
||||
else
|
||||
install_package "pypy-7.1.1-linux_x86_64-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy-7.1.1-linux_x86_64-portable.tar.bz2#d0b226d2dd656c622cee4e3e982225e1b346653823b49f736d8b0ddc06fd0c73" "pypy" verify_py27 ensurepip
|
||||
fi
|
||||
;;
|
||||
"osx64" )
|
||||
if require_osx_version "10.13"; then
|
||||
install_package "pypy2.7-v7.1.1-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.1.1-osx64.tar.bz2#31a17294dec96c2191885c776b4ee02112957dc874f7ba03e570537a77b78c35" "pypy" verify_py27 ensurepip
|
||||
else
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true), OS X < 10.13."
|
||||
echo "try 'pypy2.7-7.1.1-src' to build from source."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
"win32" )
|
||||
install_zip "pypy2.7-v7.1.1-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.1.1-win32.zip#9c59226311f216a181e70ee7b5aa4d9665a15d00f24ae02acec9af7d96355f63" "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 'pypy2.7-7.1.1-src' to build from source."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,4 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
install_package "openssl-1.1.0j" "https://www.openssl.org/source/openssl-1.1.0j.tar.gz#31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "pypy2.7-v7.1.1-src" "https://bitbucket.org/pypy/pypy/downloads/pypy2.7-v7.1.1-src.tar.bz2#5f06bede6d71dce8dfbfe797aab26c8e35cb990e16b826914652dc093ad74451" "pypy_builder" verify_py27 ensurepip
|
||||
47
plugins/python-build/share/python-build/pypy3.6-7.1.1
Normal file
47
plugins/python-build/share/python-build/pypy3.6-7.1.1
Normal file
@@ -0,0 +1,47 @@
|
||||
case "$(pypy_architecture 2>/dev/null || true)" in
|
||||
"linux" )
|
||||
if require_distro "Ubuntu 12.04" "Ubuntu 14.04" "Ubuntu 16.04" 1>/dev/null 2>&1; then
|
||||
install_package "pypy3.6-v7.1.1-linux32" "https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.1.1-linux32.tar.bz2#cb11ef4b0df569c28390b1ee93029159e1b90bfbad98df6abd629d5203b2abd9" "pypy" verify_py27 ensurepip
|
||||
else
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
|
||||
echo "try 'pypy3.6-7.1.1-src' to build from source."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
"linux64" )
|
||||
if require_distro "Ubuntu 12.04" "Ubuntu 14.04" "Ubuntu 16.04" 1>/dev/null 2>&1; then
|
||||
install_package "pypy3.6-v7.1.1-linux64" "https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.1.1-linux64.tar.bz2#8014f63b1a34b155548852c7bf73aab2d41ebddf2c8fb603dc9dd8509be93db0" "pypy" verify_py36 ensurepip
|
||||
else
|
||||
install_package "pypy3.6-7.1.1-beta-linux_x86_64-portable" "https://bitbucket.org/squeaky/portable-pypy/downloads/pypy3.6-7.1.1-beta-linux_x86_64-portable.tar.bz2#82c878b61ad34fc2cf1686fa600a7a002d352e1b33a99a43007eec486ecd068e" "pypy" verify_py36 ensurepip
|
||||
fi
|
||||
;;
|
||||
"osx64" )
|
||||
if require_osx_version "10.13"; then
|
||||
install_package "pypy3.6-v7.1.1-osx64" "https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.1.1-osx64.tar.bz2#a5c2f2bfa2b4a4d29e8a67baab95699b169054066df218a14f171bb84a6df0c0" "pypy" verify_py36 ensurepip
|
||||
else
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true), OS X < 10.13."
|
||||
echo "try 'pypy3.6-7.1.1-src' to build from source."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
"win32" )
|
||||
install_zip "pypy3.6-v7.1.1-win32" "https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.1.1-win32.zip#8b513b254de5f31890f5956569de9aec3a0a91d7aba72fc89d66901f4a8ccf49" "pypy" verify_py36 ensurepip
|
||||
;;
|
||||
* )
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of PyPy is not available for $(pypy_architecture 2>/dev/null || true)."
|
||||
echo "try 'pypy3.6-7.1.1-src' to build from source."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,4 @@
|
||||
#require_gcc
|
||||
prefer_openssl11
|
||||
install_package "openssl-1.1.0j" "https://www.openssl.org/source/openssl-1.1.0j.tar.gz#31bec6c203ce1a8e93d5994f4ed304c63ccf07676118b6634edded12ad1b3246" mac_openssl --if has_broken_mac_openssl
|
||||
install_package "pypy3.6-v7.1.1-src" "https://bitbucket.org/pypy/pypy/downloads/pypy3.6-v7.1.1-src.tar.bz2#6a3ef876e3691a54f4cff045028ec3be94ab9beb2e99f051b83175302c1899a8" "pypy_builder" verify_py36 ensurepip
|
||||
@@ -65,7 +65,7 @@ assert_build_log() {
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
|
||||
stub uname '-s : echo Linux'
|
||||
stub uname '-s : echo Linux' '-s : echo Linux'
|
||||
stub brew false
|
||||
stub_make_install
|
||||
stub_make_install
|
||||
@@ -95,7 +95,7 @@ OUT
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
|
||||
stub uname '-s : echo Linux'
|
||||
stub uname '-s : echo Linux' '-s : echo Linux'
|
||||
stub brew false
|
||||
stub_make_install
|
||||
stub_make_install
|
||||
@@ -125,7 +125,7 @@ OUT
|
||||
cached_tarball "yaml-0.1.6"
|
||||
cached_tarball "Python-3.6.2"
|
||||
|
||||
stub uname '-s : echo Linux'
|
||||
stub uname '-s : echo Linux' '-s : echo Linux'
|
||||
stub brew false
|
||||
stub_make_install
|
||||
stub_make_install
|
||||
@@ -164,6 +164,7 @@ OUT
|
||||
stub uname false false
|
||||
|
||||
stub uname '-s : echo Linux'
|
||||
stub uname '-s : echo Darwin'
|
||||
stub brew "--prefix libyaml : echo '$brew_libdir'" false
|
||||
stub_make_install
|
||||
|
||||
@@ -251,7 +252,7 @@ OUT
|
||||
# yyuu/pyenv#257
|
||||
stub uname '-s : echo Darwin'
|
||||
|
||||
stub uname '-s : echo Darwin' false
|
||||
stub uname '-s : echo Darwin' false '-s : echo Darwin'
|
||||
stub sysctl false
|
||||
stub_make_install
|
||||
|
||||
@@ -282,7 +283,7 @@ OUT
|
||||
# yyuu/pyenv#257
|
||||
stub uname '-s : echo Darwin'
|
||||
|
||||
stub uname '-s : echo Darwin' false
|
||||
stub uname '-s : echo Darwin' false '-s : echo Darwin'
|
||||
stub sysctl '-n hw.ncpu : echo 4'
|
||||
stub_make_install
|
||||
|
||||
@@ -310,7 +311,7 @@ OUT
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
|
||||
stub uname '-s : echo FreeBSD' false
|
||||
stub uname '-s : echo FreeBSD' false false
|
||||
stub sysctl '-n hw.ncpu : echo 1'
|
||||
stub_make_install
|
||||
|
||||
@@ -336,7 +337,7 @@ OUT
|
||||
cached_tarball "Python-3.6.2"
|
||||
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
stub uname false false false
|
||||
|
||||
stub uname '-s : echo Linux'
|
||||
stub_make_install
|
||||
@@ -362,7 +363,7 @@ OUT
|
||||
cached_tarball "Python-3.6.2"
|
||||
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
stub uname false false false
|
||||
|
||||
stub uname '-s : echo Linux'
|
||||
stub_make_install
|
||||
@@ -399,7 +400,7 @@ OUT
|
||||
stub uname "-s : echo FreeBSD" "-r : echo 9.1" false
|
||||
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
stub uname false false false
|
||||
|
||||
MAKE=gmake stub_make_install
|
||||
|
||||
@@ -416,7 +417,7 @@ OUT
|
||||
stub uname "-s : echo FreeBSD" "-r : echo 10.0-RELEASE" false
|
||||
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
stub uname false false false
|
||||
|
||||
stub_make_install
|
||||
|
||||
@@ -432,7 +433,7 @@ OUT
|
||||
stub uname "-s : echo FreeBSD" "-r : echo 11.0-RELEASE" false
|
||||
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false false
|
||||
stub uname false false false
|
||||
|
||||
stub_make_install
|
||||
|
||||
@@ -458,6 +459,7 @@ CONF
|
||||
# yyuu/pyenv#257
|
||||
stub uname '-s : echo Linux'
|
||||
stub uname '-s : echo Linux'
|
||||
stub uname '-s : echo Linux'
|
||||
|
||||
export PYTHON_CONFIGURE="${TMP}/custom-configure"
|
||||
run_inline_definition <<DEF
|
||||
|
||||
@@ -64,9 +64,11 @@ DEF
|
||||
cd "$INSTALL_ROOT"
|
||||
|
||||
# pyenv/pyenv#1026
|
||||
stub uname false '-s : echo Darwin' false '-s : echo Darwin'
|
||||
stub uname false '-s : echo Darwin' false '-s : echo Darwin' '-s : echo Darwin'
|
||||
stub sw_vers '-productVersion : echo 10.10'
|
||||
|
||||
stub sw_vers '-productVersion : echo 10.10'
|
||||
stub sw_vers '-productVersion : echo 10.10'
|
||||
stub sw_vers '-productVersion : echo 10.10'
|
||||
stub cc 'false'
|
||||
stub brew 'false'
|
||||
|
||||
@@ -28,3 +28,12 @@ load test_helper
|
||||
PYENV_FILE_ARG="${PYENV_TEST_DIR}/dir2/symlink.py" run pyenv echo PYENV_DIR
|
||||
assert_output "${PYENV_TEST_DIR}/dir1"
|
||||
}
|
||||
|
||||
@test "should handle relative symlinks for file argument (#580)" {
|
||||
mkdir -p "${PYENV_TEST_DIR}"
|
||||
cd "${PYENV_TEST_DIR}"
|
||||
touch file.py
|
||||
ln -s file.py symlink.py
|
||||
PYENV_FILE_ARG="symlink.py" run pyenv echo PYENV_DIR
|
||||
assert_output "${PYENV_TEST_DIR}"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user