mirror of
https://github.com/pyenv/pyenv.git
synced 2025-11-08 11:33:49 -05:00
Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
adf3c2bccf | ||
|
|
50e726ac41 | ||
|
|
662b5ddd13 | ||
|
|
d81eebf8d1 | ||
|
|
b11728c284 | ||
|
|
ca90363d73 | ||
|
|
672eef1561 | ||
|
|
384361167a | ||
|
|
1bcaab05b7 | ||
|
|
bc6a0db677 | ||
|
|
4b60ddd06d |
2
.github/workflows/macos_build.yml
vendored
2
.github/workflows/macos_build.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
- "3.10"
|
||||
- "3.11"
|
||||
- "3.12"
|
||||
runs-on: macos-11
|
||||
runs-on: macos-14
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
# Normally, we would use the superbly maintained...
|
||||
|
||||
2
.github/workflows/modified_scripts_build.yml
vendored
2
.github/workflows/modified_scripts_build.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
|
||||
os: ["macos-11", "macos-12"]
|
||||
os: ["macos-13", "macos-14"]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
4
.github/workflows/pyenv_tests.yml
vendored
4
.github/workflows/pyenv_tests.yml
vendored
@@ -12,8 +12,8 @@ jobs:
|
||||
os:
|
||||
- ubuntu-22.04
|
||||
- ubuntu-20.04
|
||||
- macos-12
|
||||
- macos-11
|
||||
- macos-14
|
||||
- macos-13
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# Version History
|
||||
|
||||
## Release v2.4.7
|
||||
* Add support for anaconda3-2024.06-1 by @binbjz in https://github.com/pyenv/pyenv/pull/3009
|
||||
* Fix debug build for X.Yt-dev by @native-api in https://github.com/pyenv/pyenv/pull/
|
||||
|
||||
## Release v2.4.6
|
||||
* CI: push MacOS jobs to MacOS 13 and 14 by @native-api in https://github.com/pyenv/pyenv/pull/3002
|
||||
* Add 3.13.0b3t and exclude it from `pyenv latest` by @colesbury in https://github.com/pyenv/pyenv/pull/3001
|
||||
* Speed up `pyenv prefix` by not constructing advice text when it would be discarded by @Erotemic in https://github.com/pyenv/pyenv/pull/3005
|
||||
|
||||
## Release v2.4.5
|
||||
* Add CPython 3.13.0b3 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2996
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
|
||||
version="2.4.5"
|
||||
version="2.4.7"
|
||||
git_revision=""
|
||||
|
||||
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then
|
||||
|
||||
@@ -50,7 +50,7 @@ IFS=$'\n'
|
||||
|
||||
DEFINITION_CANDIDATES=(\
|
||||
$(printf '%s\n' "${DEFINITION_CANDIDATES[@]}" | \
|
||||
sed -E -e '/-dev$/d' -e '/-src$/d' -e '/-latest$/d' -e '/(a|b|rc)[0-9]+$/d'));
|
||||
sed -E -e '/-dev$/d' -e '/-src$/d' -e '/-latest$/d' -e '/(a|b|rc)[0-9]+$/d' -e '/[0-9]+t$/d'));
|
||||
|
||||
# Compose a sorting key, followed by | and original value
|
||||
DEFINITION_CANDIDATES=(\
|
||||
|
||||
@@ -30,9 +30,9 @@ OLDIFS="$IFS"
|
||||
{ IFS=:
|
||||
for version in ${PYENV_VERSION}; do
|
||||
if [ "$version" = "system" ]; then
|
||||
if PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python 2>/dev/null)" || \
|
||||
PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python3 2>/dev/null)" || \
|
||||
PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python2 2>/dev/null)"; then
|
||||
if PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python --skip-advice 2>/dev/null)" || \
|
||||
PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python3 --skip-advice 2>/dev/null)" || \
|
||||
PYTHON_PATH="$(PYENV_VERSION="${version}" pyenv-which python2 --skip-advice 2>/dev/null)"; then
|
||||
shopt -s extglob
|
||||
# In some distros (Arch), Python can be found in sbin as well as bin
|
||||
PYENV_PREFIX_PATH="${PYTHON_PATH%/?(s)bin/*}"
|
||||
|
||||
@@ -128,9 +128,9 @@ print_version() {
|
||||
|
||||
# Include "system" in the non-bare output, if it exists
|
||||
if [ -n "$include_system" ] && \
|
||||
(PYENV_VERSION=system pyenv-which python >/dev/null 2>&1 || \
|
||||
PYENV_VERSION=system pyenv-which python3 >/dev/null 2>&1 || \
|
||||
PYENV_VERSION=system pyenv-which python2 >/dev/null 2>&1) ; then
|
||||
(PYENV_VERSION=system pyenv-which python --skip-advice >/dev/null 2>&1 || \
|
||||
PYENV_VERSION=system pyenv-which python3 --skip-advice >/dev/null 2>&1 || \
|
||||
PYENV_VERSION=system pyenv-which python2 --skip-advice >/dev/null 2>&1) ; then
|
||||
print_version system "/"
|
||||
fi
|
||||
|
||||
|
||||
@@ -2,13 +2,14 @@
|
||||
#
|
||||
# Summary: Display the full path to an executable
|
||||
#
|
||||
# Usage: pyenv which <command> [--nosystem]
|
||||
# Usage: pyenv which <command> [--nosystem] [--skip-advice]
|
||||
#
|
||||
# Displays the full path to the executable that pyenv will invoke when
|
||||
# you run the given command.
|
||||
# Use --nosystem argument in case when you don't need to search command in the
|
||||
# system environment.
|
||||
#
|
||||
# Internal switch --skip-advice used to skip printing an error message on a
|
||||
# failed search.
|
||||
|
||||
set -e
|
||||
[ -n "$PYENV_DEBUG" ] && set -x
|
||||
@@ -18,11 +19,27 @@ if [ "$1" = "--complete" ]; then
|
||||
exec pyenv-shims --short
|
||||
fi
|
||||
|
||||
if [ "$2" = "--nosystem" ]; then
|
||||
system=""
|
||||
else
|
||||
system="system"
|
||||
fi
|
||||
system="system"
|
||||
SKIP_ADVICE=""
|
||||
PYENV_COMMAND="$1"
|
||||
|
||||
while [[ $# -gt 0 ]]
|
||||
do
|
||||
case "$1" in
|
||||
--skip-advice)
|
||||
SKIP_ADVICE=1
|
||||
shift
|
||||
;;
|
||||
--nosystem)
|
||||
system=""
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
||||
remove_from_path() {
|
||||
local path_to_remove="$1"
|
||||
@@ -36,8 +53,6 @@ remove_from_path() {
|
||||
echo "${result#:}"
|
||||
}
|
||||
|
||||
PYENV_COMMAND="$1"
|
||||
|
||||
if [ -z "$PYENV_COMMAND" ]; then
|
||||
pyenv-help --usage which >&2
|
||||
exit 1
|
||||
@@ -85,16 +100,17 @@ else
|
||||
fi
|
||||
|
||||
echo "pyenv: $PYENV_COMMAND: command not found" >&2
|
||||
|
||||
versions="$(pyenv-whence "$PYENV_COMMAND" || true)"
|
||||
if [ -n "$versions" ]; then
|
||||
{ echo
|
||||
echo "The \`$1' command exists in these Python versions:"
|
||||
echo "$versions" | sed 's/^/ /g'
|
||||
echo
|
||||
echo "Note: See 'pyenv help global' for tips on allowing both"
|
||||
echo " python2 and python3 to be found."
|
||||
} >&2
|
||||
if [ -z "$SKIP_ADVICE" ]; then
|
||||
versions="$(pyenv-whence "$PYENV_COMMAND" || true)"
|
||||
if [ -n "$versions" ]; then
|
||||
{ echo
|
||||
echo "The \`$PYENV_COMMAND' command exists in these Python versions:"
|
||||
echo "$versions" | sed 's/^/ /g'
|
||||
echo
|
||||
echo "Note: See 'pyenv help global' for tips on allowing both"
|
||||
echo " python2 and python3 to be found."
|
||||
} >&2
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 127
|
||||
|
||||
@@ -19,6 +19,7 @@ PYTHON_BUILD_VERSION="20180424"
|
||||
OLDIFS="$IFS"
|
||||
|
||||
set -E
|
||||
shopt -s extglob
|
||||
[ -n "$PYENV_DEBUG" ] && {
|
||||
export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
|
||||
set -x
|
||||
@@ -1784,20 +1785,14 @@ build_package_auto_tcltk() {
|
||||
fi
|
||||
}
|
||||
|
||||
# extglob must be set at both parse time and runtime
|
||||
# https://stackoverflow.com/questions/49283740/bash-script-throws-syntax-errors-when-the-extglob-option-is-set-inside-a-subsh
|
||||
shopt -s extglob
|
||||
package_is_python() {
|
||||
shopt -s extglob
|
||||
case "$1" in
|
||||
Python-* | jython-* | pypy-* | pypy[0-9].+([0-9])-* | stackless-* )
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
return 1
|
||||
shopt -u extglob
|
||||
}
|
||||
shopt -u extglob
|
||||
|
||||
apply_patch() {
|
||||
local package_name="$1"
|
||||
@@ -2308,7 +2303,6 @@ if [[ "$PYPY_OPTS" == *"--shared"* ]]; then
|
||||
fi
|
||||
|
||||
# Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
|
||||
shopt -s extglob
|
||||
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
|
||||
if ! is_mac; then
|
||||
echo "python-build: framework installation is not supported outside of MacOS." >&2
|
||||
@@ -2334,10 +2328,8 @@ if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; the
|
||||
PYTHON_CONFIGURE_OPTS="${PYTHON_CONFIGURE_OPTS//--enable-framework?(=*([^ ]))?( )/}";
|
||||
PYTHON_CONFIGURE_OPTS="${PYTHON_CONFIGURE_OPTS% }"
|
||||
fi
|
||||
shopt -u extglob
|
||||
|
||||
# Build against universal SDK
|
||||
shopt -s extglob
|
||||
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]]; then
|
||||
if ! is_mac; then
|
||||
echo "python-build: universal installation is not supported outside of MacOS." >&2
|
||||
@@ -2359,7 +2351,6 @@ if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]];
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
shopt -u extglob
|
||||
|
||||
# Compile with `--enable-unicode=ucs4` by default (#257)
|
||||
if [[ "$PYTHON_CONFIGURE_OPTS" != *"--enable-unicode="* ]]; then
|
||||
@@ -2454,6 +2445,7 @@ python_bin_suffix() {
|
||||
version_name="${version_name%-dev}"
|
||||
version_name="${version_name%-rc*}"
|
||||
version_name="${version_name%rc*}"
|
||||
version_name="${version_name%%*([^0-9])}"
|
||||
version_info=(${version_name//./ })
|
||||
echo "${version_info[0]}.${version_info[1]}"
|
||||
;;
|
||||
|
||||
2
plugins/python-build/share/python-build/3.13.0b3t
Normal file
2
plugins/python-build/share/python-build/3.13.0b3t
Normal file
@@ -0,0 +1,2 @@
|
||||
export PYTHON_BUILD_FREE_THREADING=1
|
||||
source "$(dirname "${BASH_SOURCE[0]}")"/3.13.0b3
|
||||
25
plugins/python-build/share/python-build/anaconda3-2024.06-1
Normal file
25
plugins/python-build/share/python-build/anaconda3-2024.06-1
Normal file
@@ -0,0 +1,25 @@
|
||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||
"Linux-aarch64" )
|
||||
install_script "Anaconda3-2024.06-1-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-aarch64.sh#b4be0ad2052236882402902a31d32cd37635d3db194a42f977be0d68a8ff1a31" "anaconda" verify_py312
|
||||
;;
|
||||
"Linux-s390x" )
|
||||
install_script "Anaconda3-2024.06-1-Linux-s390x" "https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-s390x.sh#1b3f4ef4147137fb1861f8251679ea96e651a7c405993c61e39441e43ee2dd11" "anaconda" verify_py312
|
||||
;;
|
||||
"Linux-x86_64" )
|
||||
install_script "Anaconda3-2024.06-1-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh#539bb43d9a52d758d0fdfa1b1b049920ec6f8c6d15ee9fe4a423355fe551a8f7" "anaconda" verify_py312
|
||||
;;
|
||||
"MacOSX-arm64" )
|
||||
install_script "Anaconda3-2024.06-1-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2024.06-1-MacOSX-arm64.sh#f9e0795431910ee4ac341c0cc2a0b62e6c497440789b4117c20736db45b34204" "anaconda" verify_py312
|
||||
;;
|
||||
"MacOSX-x86_64" )
|
||||
install_script "Anaconda3-2024.06-1-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2024.06-1-MacOSX-x86_64.sh#9b2aa48bfc58e337176d8b5f3776692815807e1346ec12ebcc46a01801bb4ee0" "anaconda" verify_py312
|
||||
;;
|
||||
* )
|
||||
{ echo
|
||||
colorize 1 "ERROR"
|
||||
echo ": The binary distribution of Anaconda is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||
echo
|
||||
} >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -10,7 +10,7 @@ pyenv_install_resolve_latest() {
|
||||
$(python-build --definitions | \
|
||||
grep -F "${DEFINITION_PREFIX}" | \
|
||||
grep "^${DEFINITION_TYPE}" | \
|
||||
sed -E -e '/-dev$/d' -e '/-src$/d' -e '/(b|rc)[0-9]+$/d' | \
|
||||
sed -E -e '/-dev$/d' -e '/-src$/d' -e '/(b|rc)[0-9]+$/d' -e '/[0-9]+t$/d' | \
|
||||
sort -t. -k1,1r -k 2,2nr -k 3,3nr \
|
||||
|| true))
|
||||
DEFINITION="${DEFINITION_CANDIDATES}"
|
||||
|
||||
@@ -103,6 +103,9 @@ echo 3.8.5-latest
|
||||
echo 3.8.5a2
|
||||
echo 3.8.5b3
|
||||
echo 3.8.5rc2
|
||||
echo 3.8.5t
|
||||
echo 3.8.5b3t
|
||||
echo 3.8.5rc2t
|
||||
echo 3.8.1
|
||||
echo 3.8.1/envs/foo
|
||||
!
|
||||
|
||||
@@ -155,3 +155,15 @@ exit
|
||||
PYENV_VERSION=3.4 run pyenv-which python
|
||||
assert_success "version=3.4.2"
|
||||
}
|
||||
|
||||
@test "skip advice supresses error messages" {
|
||||
create_executable "2.7" "python"
|
||||
create_executable "3.3" "py.test"
|
||||
create_executable "3.4" "py.test"
|
||||
|
||||
PYENV_VERSION=2.7 run pyenv-which py.test --skip-advice
|
||||
assert_failure
|
||||
assert_output <<OUT
|
||||
pyenv: py.test: command not found
|
||||
OUT
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user