1
0
mirror of https://github.com/pyenv/pyenv.git synced 2025-11-08 11:33:49 -05:00

Compare commits

...

14 Commits

Author SHA1 Message Date
Josh Friend
a10c787f9b v1.2.12 2019-06-11 10:18:18 -04:00
Mikhail Bulash
4157973301 Find zlib from Xcode or brew on Mojave (#1353)
fixes #1219, #1333
2019-06-11 10:12:00 -04:00
Josh Friend
2350e57b00 Add CPython 3.8.0b1 2019-06-04 19:39:02 -04:00
Josh Friend
7dd50144d5 Link windows users to pyenv-win
see #62
2019-04-28 20:21:47 -04:00
Christopher Hunt
6103468023 Merge pull request #1337 from nvllsvm/1336
Revert "Merge pull request #1153 from cmcginty/remove-sbang"
2019-04-23 10:39:24 -04:00
Andrew Rabert
0f596d2504 Revert "Merge pull request #1153 from cmcginty/remove-sbang"
This reverts commit 070e1c859f, reversing
changes made to 3faeda67bb.
2019-04-23 10:23:33 -04:00
Christopher Hunt
070e1c859f Merge pull request #1153 from cmcginty/remove-sbang
Remove shebang lines from scripts for performance
2019-04-22 20:13:19 -04:00
Christopher Hunt
3faeda67bb Merge pull request #1216 from blueyed/abs_dirname
Fix abs_dirname for relative symlinks in same directory
2019-04-18 16:34:55 -04:00
Yamashita, Yuu
ec220c4476 Merge pull request #1335 from lazka/pypy-7.1.1
Add PyPy 7.1.1
2019-04-17 16:57:04 +09:00
Christoph Reiter
01f596e33c Add PyPy 7.1.1
https://pypy.readthedocs.io/en/latest/release-v7.1.1.html
2019-04-17 09:04:56 +02:00
Daniel Hahler
3768f1d7db Revert "also remove shebang with libexec/pyenv"
This reverts commit d352b4810d.
2019-03-07 22:38:15 +01:00
Daniel Hahler
d352b4810d also remove shebang with libexec/pyenv 2019-03-07 22:35:38 +01:00
Casey McGinty
83e5459cfb Remove shebang lines from scripts for performance
All scripts in libexec/ (excluding pyenv) are called through pyenv,
therefore the shebang lines are not necessary. On some systems this
provides a measurable increase in performance of the shell prompt.

Related to pyenv/pyenv-virtualenv#259
2019-03-07 22:15:14 +01:00
Daniel Hahler
4f21d9a2ea Fix abs_dirname for relative symlinks in same directory
Ref (abs_dirname in bats): https://github.com/sstephenson/bats/pull/224
Ref: https://github.com/rbenv/rbenv/pull/868

Fixes https://github.com/pyenv/pyenv/issues/580
2018-09-19 10:18:07 +02:00
15 changed files with 183 additions and 24 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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

View 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

View File

@@ -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

View 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

View File

@@ -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

View File

@@ -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

View File

@@ -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'

View File

@@ -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}"
}