Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pyenv for openSUSE:Factory checked in at 2026-04-13 23:20:21 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pyenv (Old) and /work/SRC/openSUSE:Factory/.pyenv.new.21863 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pyenv" Mon Apr 13 23:20:21 2026 rev:63 rq:1346476 version:2.6.27 Changes: -------- --- /work/SRC/openSUSE:Factory/pyenv/pyenv.changes 2026-01-13 21:35:37.210612391 +0100 +++ /work/SRC/openSUSE:Factory/.pyenv.new.21863/pyenv.changes 2026-04-13 23:22:39.985482676 +0200 @@ -1,0 +2,70 @@ +Fri Apr 10 06:22:12 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.27 + +- Update 2.6.27 + * commands: fast path for --sh, replace sort|uniq with sort -u by @jakelodwick in #3423 + * which: update the pyenv help global tip by @native-api in #3424 + * Bump actions/create-github-app-token from 2 to 3 in the github-actions group by @dependabot[bot] in #3428 + * python-build: advise user with no c compiler by @exurd in #3294 + * Add CPython 3.13.13, 3.14.4, 3.15.0a8 by @pyenv-bot[bot] in #3432 + * Add miniforge3 26.1.1-2, 26.1.1-3 by @native-api in #3433 + +------------------------------------------------------------------- +Fri Apr 10 06:21:28 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.26 + +- Update 2.6.26 + * versions: fast path for --bare --skip-aliases by @jakelodwick in #3411 + * Fix MacPorts OpenSSL formula detection by @tekintian in #3417 + * rehash: streamline executables discovery; fix regression by @native-api in #3418 + * rehash: simplify source.bash pipeline by @jakelodwick in #3419 + * Add CPython 3.15.0a7 by @pyenv-bot[bot] in #3421 + * Add miniconda3-26.1.1-1 by @native-api in #3422 + +------------------------------------------------------------------- +Fri Apr 10 06:20:59 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.25 + +- Update 2.6.25 + * Add miniforge3-26.1.0-0 by @native-api in #3413 + * Add CPython 3.12.13 by @pyenv-bot[bot] in #3414 + +------------------------------------------------------------------- +Fri Apr 10 06:20:27 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.24 + +- Update 2.6.24 + * CI: add_version: use Github App token to create PR by @native-api in #3406 + * Add Anaconda3-2025.12-2 by @binbjz in #3408 + * rehash: Drop redundant sort -u from make_shims call by @jakelodwick in #3410 + * Add CPython 3.10.20, 3.11.15 by @pyenv-bot[bot] in #3412 + +------------------------------------------------------------------- +Fri Apr 10 06:19:57 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.23 + +- Update 2.6.23 + * Add CPython 3.15.0a6 by @native-api in #3403 + +------------------------------------------------------------------- +Fri Apr 10 06:19:34 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.22 + +- Update 2.6.22 + * Add CPython 3.13.12 by @github-actions[bot] in #3401 + +------------------------------------------------------------------- +Fri Apr 10 06:19:04 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.21 + +- Update 2.6.21 + * Add GraalPy 25.0.2 by @msimacek in #3395 + * Add CPython 3.14.3 by @github-actions[bot] in #3400 + +------------------------------------------------------------------- +Fri Apr 10 06:18:26 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.20 + +- Update 2.6.20 + * CI: adjust CPython PR generation logic by @native-api in #3392 + * Add CPython 3.15.0a5 by @nedbat in #3393 + +------------------------------------------------------------------- +Fri Apr 10 06:17:48 UTC 2026 - Thomas Schraitle <[email protected]> - 2.6.19 + +- Update 2.6.19 + * Add CPython 3.15.0a4 by @nedbat in #3390 + +------------------------------------------------------------------- Old: ---- pyenv-2.6.18.tar.gz New: ---- pyenv-2.6.27.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pyenv.spec ++++++ --- /var/tmp/diff_new_pack.AQUori/_old 2026-04-13 23:22:41.153530866 +0200 +++ /var/tmp/diff_new_pack.AQUori/_new 2026-04-13 23:22:41.157531031 +0200 @@ -1,7 +1,7 @@ # # spec file for package pyenv # -# Copyright (c) 2026 SUSE LLC +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %define pyenv_dir %{_libexecdir}/pyenv # Name: pyenv -Version: 2.6.18 +Version: 2.6.27 Release: 0 Summary: Python Version Management License: MIT ++++++ pyenv-2.6.18.tar.gz -> pyenv-2.6.27.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/.github/workflows/add_version.yml new/pyenv-2.6.27/.github/workflows/add_version.yml --- old/pyenv-2.6.18/.github/workflows/add_version.yml 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/.github/workflows/add_version.yml 2026-04-08 17:26:46.000000000 +0200 @@ -4,7 +4,7 @@ workflow_dispatch: {} schedule: # Every N hours - - cron: '* */8 * * *' + - cron: '0 */4 * * *' permissions: contents: write @@ -15,18 +15,19 @@ runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - - uses: actions/setup-python@v6 + - uses: actions/setup-python@v6 with: python-version: 3 cache: 'pip' cache-dependency-path: plugins/python-build/scripts/requirements.txt - run: pip install -r plugins/python-build/scripts/requirements.txt - + - name: check for a release run: | python plugins/python-build/scripts/add_cpython.py --verbose >added_versions.lst && rc=$? || rc=$? echo "rc=$rc" >> $GITHUB_ENV - name: set PR properties + if: env.rc == 0 shell: python run: | import os @@ -34,12 +35,21 @@ versions=[l.rstrip() for l in open("added_versions.lst")] with open(os.environ['GITHUB_ENV'],'a') as f: f.write(f'branch_name=auto_add_version/{"_".join(versions)}\n') - f.write(f'pr_name=Add {", ".join(versions)}\n') + f.write(f'pr_name=Add CPython {", ".join(versions)}\n') os.remove("added_versions.lst") - + + # https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#authenticating-with-github-app-generated-tokens + - name: Generate Github token + if: env.rc == 0 + uses: actions/create-github-app-token@v3 + id: generate-token + with: + app-id: ${{ vars.PYENV_BOT_APP_ID }} + private-key: ${{ secrets.PYENV_BOT_PRIVATE_KEY }} - name: Create Pull Request uses: peter-evans/create-pull-request@v8 if: env.rc == 0 with: branch: ${{ env.branch_name }} title: ${{ env.pr_name }} + token: ${{ steps.generate-token.outputs.token }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/.github/workflows/modified_scripts_build.yml new/pyenv-2.6.27/.github/workflows/modified_scripts_build.yml --- old/pyenv-2.6.18/.github/workflows/modified_scripts_build.yml 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/.github/workflows/modified_scripts_build.yml 2026-04-08 17:26:46.000000000 +0200 @@ -56,6 +56,14 @@ if name == 'anaconda3' and version >= packaging.version.Version('2025.12'): result.append({'os':'macos-15-intel','python-version':line}) + if m:=re.match(r'graalpy-(community-)?-(\d+\.\d+.\d+)', line): + version = packaging.version.Version(m.group(2)) + + # GraalPy dropped MacOS x64 support + if version >= packaging.version.Version('25.0.2'): + result.append({'os':'macos-15-intel','python-version':line}) + + EOF = str(random.getrandbits(15*8)) with open(os.environ['GITHUB_ENV'],'w') as f: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/CHANGELOG.md new/pyenv-2.6.27/CHANGELOG.md --- old/pyenv-2.6.18/CHANGELOG.md 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/CHANGELOG.md 2026-04-08 17:26:46.000000000 +0200 @@ -1,5 +1,47 @@ # Version History +## Release v2.6.27 +* commands: fast path for --sh, replace sort|uniq with sort -u by @jakelodwick in https://github.com/pyenv/pyenv/pull/3423 +* which: update the `pyenv help global` tip by @native-api in https://github.com/pyenv/pyenv/pull/3424 +* Bump actions/create-github-app-token from 2 to 3 in the github-actions group by @dependabot[bot] in https://github.com/pyenv/pyenv/pull/3428 +* python-build: advise user with no c compiler by @exurd in https://github.com/pyenv/pyenv/pull/3294 +* Add CPython 3.13.13, 3.14.4, 3.15.0a8 by @pyenv-bot[bot] in https://github.com/pyenv/pyenv/pull/3432 +* Add miniforge3 26.1.1-2, 26.1.1-3 by @native-api in https://github.com/pyenv/pyenv/pull/3433 + +## Release v2.6.26 +* versions: fast path for --bare --skip-aliases by @jakelodwick in https://github.com/pyenv/pyenv/pull/3411 +* Fix MacPorts OpenSSL formula detection by @tekintian in https://github.com/pyenv/pyenv/pull/3417 +* rehash: streamline executables discovery; fix regression by @native-api in https://github.com/pyenv/pyenv/pull/3418 +* rehash: simplify source.bash pipeline by @jakelodwick in https://github.com/pyenv/pyenv/pull/3419 +* Add CPython 3.15.0a7 by @pyenv-bot[bot] in https://github.com/pyenv/pyenv/pull/3421 + +## Release v2.6.25 +* Add miniforge3-26.1.0-0 by @native-api in https://github.com/pyenv/pyenv/pull/3413 +* Add CPython 3.12.13 by @pyenv-bot[bot] in https://github.com/pyenv/pyenv/pull/3414 + +## Release v2.6.24 +* CI: add_version: use Github App token to create PR by @native-api in https://github.com/pyenv/pyenv/pull/3406 +* Add Anaconda3-2025.12-2 by @binbjz in https://github.com/pyenv/pyenv/pull/3408 +* rehash: Drop redundant sort -u from make_shims call by @jakelodwick in https://github.com/pyenv/pyenv/pull/3410 +* Add CPython 3.10.20, 3.11.15 by @pyenv-bot[bot] in https://github.com/pyenv/pyenv/pull/3412 + +## Release v2.6.23 +* Add CPython 3.15.0a6 by @native-api in https://github.com/pyenv/pyenv/pull/3403 + +## Release v2.6.22 +* Add CPython 3.13.12 by @github-actions[bot] in https://github.com/pyenv/pyenv/pull/3401 + +## Release v2.6.21 +* Add GraalPy 25.0.2 by @msimacek in https://github.com/pyenv/pyenv/pull/3395 +* Add CPython 3.14.3 by @github-actions[bot] in https://github.com/pyenv/pyenv/pull/3400 + +## Release v2.6.20 +* CI: adjust CPython PR generation logic by @native-api in https://github.com/pyenv/pyenv/pull/3392 +* Add CPython 3.15.0a5 by @nedbat in https://github.com/pyenv/pyenv/pull/3393 + +## Release v2.6.19 +* Add CPython 3.15.0a4 by @nedbat in https://github.com/pyenv/pyenv/pull/3390 + ## Release v2.6.18 * Fix an infinite loop if a shim is symlinked to and called from a different location with "system" version active by @native-api in https://github.com/pyenv/pyenv/pull/3375 * CI: Update and cleanup workflow scripts by @native-api in https://github.com/pyenv/pyenv/pull/3372 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/COMMANDS.md new/pyenv-2.6.27/COMMANDS.md --- old/pyenv-2.6.18/COMMANDS.md 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/COMMANDS.md 2026-04-08 17:26:46.000000000 +0200 @@ -40,9 +40,8 @@ Sets a local application-specific Python version by writing the version name to a `.python-version` file in the current directory. This version -overrides the global version, and can be overridden itself by setting -the `PYENV_VERSION` environment variable or with the `pyenv shell` -command. +overrides the [global version](#pyenv-global), and can be overridden +itself with the [`pyenv shell`](#pyenv-shell) command. $ pyenv local 2.7.6 @@ -98,9 +97,8 @@ ## `pyenv global` Sets the global version of Python to be used in all shells by writing -the version name to the `~/.pyenv/version` file. This version can be -overridden by an application-specific `.python-version` file, or by -setting the `PYENV_VERSION` environment variable. +the version name to the `$PYENV_ROOT/version` file. This version can be +overridden with [`pyenv local`](#pyenv-local) or [`pyenv shell`](#pyenv-shell). $ pyenv global 2.7.6 @@ -236,6 +234,7 @@ You can also install the latest version of Python in a specific version line by supplying a prefix instead of a complete name: $ pyenv install 3.10 + $ pyenv install 3 See the [`pyenv latest` documentation](#pyenv-latest) for details on prefix resolution. @@ -243,9 +242,6 @@ pyenv install 3.8:latest -To install the latest major release for Python 3 try: - - pyenv install 3:latest ## `pyenv uninstall` @@ -352,10 +348,9 @@ Displays the latest installed or known version with the given prefix - Usage: pyenv latest [-k|--known] [-q|--quiet] <prefix> + Usage: pyenv latest [-k|--known] <prefix> -k/--known Select from all known versions instead of installed - -q/--quiet Do not print an error message on resolution failure Only full prefixes are searched: in the actual name, the given prefix must be followed by a dot or a dash. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/README.md new/pyenv-2.6.27/README.md --- old/pyenv-2.6.18/README.md 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/README.md 2026-04-08 17:26:46.000000000 +0200 @@ -407,7 +407,7 @@ * [`pyenv shell <version>`](COMMANDS.md#pyenv-shell) -- select just for current shell session * [`pyenv local <version>`](COMMANDS.md#pyenv-local) -- automatically select whenever you are in the current directory (or its subdirectories) -* [`pyenv global <version>`](COMMANDS.md#pyenv-shell) -- select globally for your user account +* [`pyenv global <version>`](COMMANDS.md#pyenv-global) -- select globally for your user account E.g. to select the above-mentioned newly-installed Python 3.10.4 as your preferred version to use: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/libexec/pyenv---version new/pyenv-2.6.27/libexec/pyenv---version --- old/pyenv-2.6.18/libexec/pyenv---version 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/libexec/pyenv---version 2026-04-08 17:26:46.000000000 +0200 @@ -12,7 +12,7 @@ set -e [ -n "$PYENV_DEBUG" ] && set -x -version="2.6.18" +version="2.6.27" git_revision="" if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/libexec/pyenv-commands new/pyenv-2.6.27/libexec/pyenv-commands --- old/pyenv-2.6.18/libexec/pyenv-commands 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/libexec/pyenv-commands 2026-04-08 17:26:46.000000000 +0200 @@ -3,19 +3,19 @@ # Usage: pyenv commands [--sh|--no-sh] set -e -[ -n "$PYENV_DEBUG" ] && set -x +[[ -n $PYENV_DEBUG ]] && set -x # Provide pyenv completions -if [ "$1" = "--complete" ]; then +if [[ $1 = "--complete" ]]; then echo --sh echo --no-sh exit fi -if [ "$1" = "--sh" ]; then +if [[ $1 = "--sh" ]]; then sh=1 shift -elif [ "$1" = "--no-sh" ]; then +elif [[ $1 = "--no-sh" ]]; then nosh=1 shift fi @@ -24,20 +24,25 @@ shopt -s nullglob -{ for path in "${paths[@]}"; do - for command in "${path}/pyenv-"*; do - command="${command##*pyenv-}" - if [ -n "$sh" ]; then - if [ "${command:0:3}" = "sh-" ]; then - echo "${command##sh-}" - fi - elif [ -n "$nosh" ]; then - if [ "${command:0:3}" != "sh-" ]; then +{ + if [[ -n $sh ]]; then + for path in "${paths[@]}"; do + for command in "${path}"/pyenv-sh-*; do + echo "${command##*/pyenv-sh-}" + done + done + else + for path in "${paths[@]}"; do + for command in "${path}"/pyenv-*; do + command="${command##*/pyenv-}" + if [[ -n $nosh ]]; then + if [[ ${command:0:3} != "sh-" ]]; then + echo "$command" + fi + else echo "${command##sh-}" fi - else - echo "${command##sh-}" - fi + done done - done -} | sort | uniq + fi +} | sort -u diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/libexec/pyenv-rehash new/pyenv-2.6.27/libexec/pyenv-rehash --- old/pyenv-2.6.18/libexec/pyenv-rehash 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/libexec/pyenv-rehash 2026-04-08 17:26:46.000000000 +0200 @@ -110,17 +110,6 @@ done } -# List basenames of executables for every Python version -list_executable_names() { - local version file - pyenv-versions --bare --skip-aliases | \ - while read -r version; do - for file in "${PYENV_ROOT}/versions/${version}/bin/"*; do - echo "${file##*/}" - done - done -} - # The basename of each argument passed to `make_shims` will be # registered for installation as a shim. In this way, plugins may call # `make_shims` with a glob to register many shims at once. @@ -196,7 +185,7 @@ create_prototype_shim remove_outdated_shims # shellcheck disable=SC2046 -make_shims $(list_executable_names | sort -u) +make_shims $(pyenv-versions --executables) # Allow plugins to register shims. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/libexec/pyenv-versions new/pyenv-2.6.27/libexec/pyenv-versions --- old/pyenv-2.6.18/libexec/pyenv-versions 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/libexec/pyenv-versions 2026-04-08 17:26:46.000000000 +0200 @@ -1,13 +1,21 @@ #!/usr/bin/env bash # Summary: List all Python versions available to pyenv -# Usage: pyenv versions [--bare] [--skip-aliases] [--skip-envs] +# Usage: pyenv versions [--bare] [--skip-aliases] [--skip-envs] [--executables] # # Lists all Python versions found in `$PYENV_ROOT/versions/*'. +# +# --bare List just the names, omit `system' +# --skip-aliases Skip symlinks to other versions and to virtual environments +# --skip-envs Skip virtual environments (under <version>/envs) +# --executables Internal. Overrides other options. +# Optimally get a deduplicated list of all executable names in Pyenv-managed +# versions and environments for `pyenv rehash' +# set -e [ -n "$PYENV_DEBUG" ] && set -x -unset bare skip_aliases skip_envs +unset bare skip_aliases skip_envs executables # Provide pyenv completions for arg; do case "$arg" in @@ -16,6 +24,7 @@ echo --skip-aliases echo --skip-envs exit ;; + --executables ) executables=1; break ;; --bare ) bare=1 ;; --skip-aliases ) skip_aliases=1 ;; --skip-envs ) skip_envs=1 ;; @@ -26,8 +35,21 @@ esac done + versions_dir="${PYENV_ROOT}/versions" +# Fast path for rehash: skip filtering and link resolution +if [[ -n "$executables" ]]; then + if [ -d "$versions_dir" ]; then + shopt -s dotglob nullglob + # MacOS 12+ and FreeBSD 15 support `xargs -r -0' and `basename -a' + # `sort -u` is simpler and a bit faster than `awk '!seen[$0]++'`, with the same result for rehash purposes + printf '%s\0' "$versions_dir"/*/bin/* "$versions_dir"/*/envs/*/bin/* | xargs -0 -r basename -a | sort -u + shopt -u dotglob nullglob + fi + exit 0 +fi + if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; then if [ -n "$PYENV_NATIVE_EXT" ]; then echo "pyenv: failed to load \`realpath' builtin" >&2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/libexec/pyenv-which new/pyenv-2.6.27/libexec/pyenv-which --- old/pyenv-2.6.18/libexec/pyenv-which 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/libexec/pyenv-which 2026-04-08 17:26:46.000000000 +0200 @@ -112,8 +112,8 @@ 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." + echo "Note: See 'pyenv help global' for tips on allowing multiple" + echo " Python versions to be found at the same time." } >&2 fi fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/README.md new/pyenv-2.6.27/plugins/python-build/README.md --- old/pyenv-2.6.18/plugins/python-build/README.md 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/README.md 2026-04-08 17:26:46.000000000 +0200 @@ -175,6 +175,7 @@ * `PYTHON_BUILD_SKIP_HOMEBREW`, if set, will not search for libraries installed by Homebrew when it would normally will. * `PYTHON_BUILD_USE_HOMEBREW`, if set, will search for libraries installed by Homebrew when it would normally not. * `PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA`, override the Homebrew OpenSSL formula to use. +* `PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA`, override the MacPorts OpenSSL formula to use. The default is `openssl3 openssl`. * `PYTHON_BUILD_TCLTK_FORMULA`, override the Homebrew Tcl/Tk formula to use. * `PYTHON_BUILD_SKIP_MACPORTS`, if set, will not search for libraries installed by MacPorts when it would normally will. * `PYTHON_BUILD_USE_MACPORTS`, if set, will search for libraries installed by MacPorts when it would normally not. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/bin/python-build new/pyenv-2.6.27/plugins/python-build/bin/python-build --- old/pyenv-2.6.18/plugins/python-build/bin/python-build 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/bin/python-build 2026-04-08 17:26:46.000000000 +0200 @@ -14,7 +14,7 @@ # -g/--debug Build a debug version # -PYTHON_BUILD_VERSION="2.6.18" +PYTHON_BUILD_VERSION="2.6.27" OLDIFS="$IFS" @@ -202,7 +202,14 @@ colorize 33 "Results logged to ${LOG_PATH}" printf "\n\n" echo "Last 10 log lines:" - tail -n 10 "$LOG_PATH" + TAIL=`tail -n 10 "$LOG_PATH"` + echo "$TAIL" + if echo "$TAIL" | grep -q "no acceptable C compiler found"; then + printf "\n" + echo "Are the build dependencies for Python correctly installed?" + echo "Please consult to the Wiki page for more info." + echo "https://github.com/pyenv/pyenv/wiki#suggested-build-environment" + fi fi } >&3 exit 1 @@ -1663,12 +1670,20 @@ # Allow overriding the preference of OpenSSL version per definition basis (#1302, #1325, #1326) PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA="${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:[email protected] openssl}" export PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA + + PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA="${PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA:-openssl11 openssl3 openssl}" + export PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA + } prefer_openssl3() { # Allow overriding the preference of OpenSSL version per definition basis (#1302, #1325, #1326) PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA="${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:-openssl@3 [email protected] openssl}" export PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA + + # Set MacPorts OpenSSL formula names for MacPorts environment + PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA="${PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA:-openssl3 openssl openssl11}" + export PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA } build_package_mac_readline() { @@ -1727,7 +1742,8 @@ command -v port >/dev/null || return 1 local port_location="$(command -v port)" local prefix="${port_location%/bin/port}" - for openssl in ${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:-openssl}; do + # MacPorts uses a different package naming convention and does not use the @ symbol. + for openssl in ${PYTHON_BUILD_MACPORTS_OPENSSL_FORMULA:-openssl3 openssl}; do if [[ $(port -q installed ${openssl} | awk '{print $3}') == "(active)" ]]; then echo "python-build: use ${openssl} from MacPorts" if [[ -n "${PYTHON_BUILD_CONFIGURE_WITH_OPENSSL:-}" ]]; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/scripts/add_cpython.py new/pyenv-2.6.27/plugins/python-build/scripts/add_cpython.py --- old/pyenv-2.6.18/plugins/python-build/scripts/add_cpython.py 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/scripts/add_cpython.py 2026-04-08 17:26:46.000000000 +0200 @@ -13,9 +13,11 @@ import itertools import logging import operator +import os.path import pathlib import pprint import re +import subprocess import sys import typing import urllib.parse @@ -40,7 +42,8 @@ T_THUNK=\ '''export PYTHON_BUILD_FREE_THREADING=1 -source "${BASH_SOURCE[0]%t}"''' +source "${BASH_SOURCE[0]%t}" +''' def adapt_script(version: packaging.version.Version, @@ -120,7 +123,7 @@ return False VersionDirectory.existing.append(_CPythonExistingScriptInfo(version,str(new_path))) - cleanup_prerelease_upgrade(is_prerelease_upgrade, previous_version) + cleanup_prerelease_upgrade(is_prerelease_upgrade, previous_version, version) handle_t_thunks(version, previous_version, is_prerelease_upgrade) @@ -130,26 +133,52 @@ def cleanup_prerelease_upgrade( is_prerelease_upgrade: bool, - previous_version: packaging.version.Version)\ + previous_version: packaging.version.Version, + new_version: packaging.version.Version)\ -> None: - if is_prerelease_upgrade: - previous_version_path = OUT_DIR / str(previous_version) - logger.info(f'Deleting {previous_version_path}') - previous_version_path.unlink() - del VersionDirectory.existing[previous_version] + if not is_prerelease_upgrade: + return + + previous_version_filename = str(previous_version) + new_version_filename = str(new_version) + new_version_path = OUT_DIR / new_version_filename + + logger.info(f'Git moving {previous_version_filename} ' + f'to {new_version_filename} (preserving new data)') + + data = new_version_path.read_text() + new_version_path.unlink() + + subprocess.check_call(("git","-C",OUT_DIR, + "mv", + previous_version_filename, + new_version_filename)) + + new_version_path.write_text(data) + + del VersionDirectory.existing[previous_version] def handle_t_thunks(version, previous_version, is_prerelease_upgrade): - if (version.major, version.minor) >= (3, 13): - # an old thunk may have older version-specific code - # so it's safer to write a known version-independent template - thunk_path = OUT_DIR.joinpath(str(version) + "t") - logger.info(f"Writing {thunk_path}") - thunk_path.write_text(T_THUNK, encoding='utf-8') - if is_prerelease_upgrade: - previous_thunk_path = OUT_DIR.joinpath(str(previous_version) + "t") - logger.info(f"Deleting {previous_thunk_path}") - previous_thunk_path.unlink() + if (version.major, version.minor) < (3, 13): + return + + # an old thunk may have older version-specific code + # so it's safer to write a known version-independent template + thunk_name = (str(version) + "t") + thunk_path = OUT_DIR / thunk_name + previous_thunk_name = str(previous_version) + "t" + previous_thunk_path = OUT_DIR / previous_thunk_name + if is_prerelease_upgrade: + logger.info(f"Git moving {previous_thunk_name} to {thunk_name}") + subprocess.check_call(("git","-C",OUT_DIR, + "mv", + previous_thunk_name, + thunk_name)) + + logger.info(f"Writing {thunk_path}") + thunk_path.write_text(T_THUNK, encoding='utf-8') + Arguments: argparse.Namespace @@ -468,10 +497,13 @@ max_item = candidates._latest_release() hash_ = Url.sha256_url(max_item.url, VersionDirectory.session) + permalink = 'https://ftpmirror.gnu.org/readline/' +\ + os.path.basename(urllib.parse.urlparse(max_item.url).path) + result = _ReadlineVersionInfo( max_item.version, max_item.package_name, - max_item.url, + permalink, hash_) self.append(result) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/scripts/add_miniforge.py new/pyenv-2.6.27/plugins/python-build/scripts/add_miniforge.py --- old/pyenv-2.6.18/plugins/python-build/scripts/add_miniforge.py 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/scripts/add_miniforge.py 2026-04-08 17:26:46.000000000 +0200 @@ -47,9 +47,9 @@ out_dir: Path = here.parent.parent / "share" / "python-build" def download_sha(url): - logger.info('Downloading SHA file %(url)s', locals()) + logger.info(f'Downloading SHA file {url}') tup = tuple(reversed(requests.get(url).text.replace('./', '').rstrip().split())) - logger.debug('Got %(tup)s', locals()) + logger.debug(f'Got {tup}') return tup def create_spec(filename, sha, url): @@ -72,7 +72,7 @@ 'installer_filename': f'{flavor_with_suffix.lower()}-{version}-{subversion}', } - logger.debug('Created spec %(spec)s', locals()) + logger.debug(f'Created spec {spec}') return spec @@ -112,7 +112,7 @@ if count > 0: output_file = out_dir / distribution_specs[0]['installer_filename'] - logger.info('Writing %(count)d specs for %(distribution)s to %(output_file)s', locals()) + logger.info(f'Writing {count} specs for {distribution} to {output_file}') script_str = install_script_fmt.format( install_lines="\n".join([install_line_fmt.format_map(s) for s in distribution_specs]), @@ -122,7 +122,7 @@ with open(output_file, 'w') as f: f.write(script_str) else: - logger.info('Did not find specs for %(distribution)s', locals()) + logger.info(f'Did not find specs for {distribution}') def main(): @@ -132,7 +132,7 @@ if version in SKIPPED_RELEASES: continue - logger.info('Looking for %(version)s in %(out_dir)s', locals()) + logger.info(f'Looking for {version} in {out_dir}') # mambaforge is retired https://github.com/conda-forge/miniforge/releases/tag/24.11.2-0 if version_tuple(version) >= (24, 11, 2): @@ -141,7 +141,7 @@ distributions = DISTRIBUTIONS_PRE25 if any(not list(out_dir.glob(f'{distribution}*-{version}')) for distribution in distributions): - logger.info('Downloading %(version)s', locals()) + logger.info(f'Downloading {version}') add_version(release, distributions) if __name__ == '__main__': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.10.20 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.10.20 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.10.20 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.10.20 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,9 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-3.6.1" "https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz#b1bfedcd5b289ff22aee87c9d600f515767ebf45f77168cb6d64f231f518a82e" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.10.20" "https://www.python.org/ftp/python/3.10.20/Python-3.10.20.tar.xz#de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505" standard verify_py310 copy_python_gdb ensurepip +else + install_package "Python-3.10.20" "https://www.python.org/ftp/python/3.10.20/Python-3.10.20.tgz#4ff5fd4c5bab803b935019f3e31d7219cebd6f870d00389cea53b88bbe935d1a" standard verify_py310 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.11.15 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.11.15 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.11.15 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.11.15 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.6.1" "https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz#b1bfedcd5b289ff22aee87c9d600f515767ebf45f77168cb6d64f231f518a82e" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.11.15" "https://www.python.org/ftp/python/3.11.15/Python-3.11.15.tar.xz#272179ddd9a2e41a0fc8e42e33dfbdca0b3711aa5abf372d3f2d51543d09b625" standard verify_py311 copy_python_gdb ensurepip +else + install_package "Python-3.11.15" "https://www.python.org/ftp/python/3.11.15/Python-3.11.15.tgz#f4de1b10bd6c70cbb9fa1cd71fc5038b832747a74ee59d599c69ce4846defb50" standard verify_py311 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.12.13 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.12.13 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.12.13 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.12.13 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.6.1" "https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz#b1bfedcd5b289ff22aee87c9d600f515767ebf45f77168cb6d64f231f518a82e" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.12.13" "https://www.python.org/ftp/python/3.12.13/Python-3.12.13.tar.xz#c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684" standard verify_py312 copy_python_gdb ensurepip +else + install_package "Python-3.12.13" "https://www.python.org/ftp/python/3.12.13/Python-3.12.13.tgz#0816c4761c97ecdb3f50a3924de0a93fd78cb63ee8e6c04201ddfaedca500b0b" standard verify_py312 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.11t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.11t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.11t 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.11t 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -export PYTHON_BUILD_FREE_THREADING=1 -source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.12 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.12 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.12 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.12 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.6.1" "https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz#b1bfedcd5b289ff22aee87c9d600f515767ebf45f77168cb6d64f231f518a82e" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.13.12" "https://www.python.org/ftp/python/3.13.12/Python-3.13.12.tar.xz#2a84cd31dd8d8ea8aaff75de66fc1b4b0127dd5799aa50a64ae9a313885b4593" standard verify_py313 copy_python_gdb ensurepip +else + install_package "Python-3.13.12" "https://www.python.org/ftp/python/3.13.12/Python-3.13.12.tgz#12e7cb170ad2d1a69aee96a1cc7fc8de5b1e97a2bdac51683a3db016ec9a2996" standard verify_py313 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.12t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.12t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.12t 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.12t 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,2 @@ +export PYTHON_BUILD_FREE_THREADING=1 +source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.13 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.13 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.13 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.13 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.6.2" "https://github.com/openssl/openssl/releases/download/openssl-3.6.2/openssl-3.6.2.tar.gz#aaf51a1fe064384f811daeaeb4ec4dce7340ec8bd893027eee676af31e83a04f" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.13.13" "https://www.python.org/ftp/python/3.13.13/Python-3.13.13.tar.xz#2ab91ff401783ccca64f75d10c882e957bdfd60e2bf5a72f8421793729b78a71" standard verify_py313 copy_python_gdb ensurepip +else + install_package "Python-3.13.13" "https://www.python.org/ftp/python/3.13.13/Python-3.13.13.tgz#f9cde7b0e2ec8165d7326e2a0f59ea2686ce9d0c617dbbb3d66a7e54d31b74b9" standard verify_py313 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.13t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.13t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.13.13t 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.13.13t 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,2 @@ +export PYTHON_BUILD_FREE_THREADING=1 +source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.2t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.2t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.2t 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.2t 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -export PYTHON_BUILD_FREE_THREADING=1 -source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.3 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.3 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.3 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.3 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.6.1" "https://github.com/openssl/openssl/releases/download/openssl-3.6.1/openssl-3.6.1.tar.gz#b1bfedcd5b289ff22aee87c9d600f515767ebf45f77168cb6d64f231f518a82e" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.14.3" "https://www.python.org/ftp/python/3.14.3/Python-3.14.3.tar.xz#a97d5549e9ad81fe17159ed02c68774ad5d266c72f8d9a0b5a9c371fe85d902b" standard verify_py314 copy_python_gdb ensurepip +else + install_package "Python-3.14.3" "https://www.python.org/ftp/python/3.14.3/Python-3.14.3.tgz#d7fe130d0501ae047ca318fa92aa642603ab6f217901015a1df6ce650d5470cd" standard verify_py314 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.3t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.3t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.3t 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.3t 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,2 @@ +export PYTHON_BUILD_FREE_THREADING=1 +source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.4 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.4 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.4 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.4 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.6.2" "https://github.com/openssl/openssl/releases/download/openssl-3.6.2/openssl-3.6.2.tar.gz#aaf51a1fe064384f811daeaeb4ec4dce7340ec8bd893027eee676af31e83a04f" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.14.4" "https://www.python.org/ftp/python/3.14.4/Python-3.14.4.tar.xz#d923c51303e38e249136fc1bdf3568d56ecb03214efdef48516176d3d7faaef8" standard verify_py314 copy_python_gdb ensurepip +else + install_package "Python-3.14.4" "https://www.python.org/ftp/python/3.14.4/Python-3.14.4.tgz#b4c059d5895f030e7df9663894ce3732bfa1b32cd3ab2883980266a45ce3cb3b" standard verify_py314 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.4t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.4t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.14.4t 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.14.4t 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,2 @@ +export PYTHON_BUILD_FREE_THREADING=1 +source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a3 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a3 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a3 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a3 1970-01-01 01:00:00.000000000 +0100 @@ -1,10 +0,0 @@ -prefer_openssl3 -export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 -export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 -install_package "openssl-3.6.0" "https://github.com/openssl/openssl/releases/download/openssl-3.6.0/openssl-3.6.0.tar.gz#b6a5f44b7eb69e3fa35dbf15524405b44837a481d43d81daddde3ff21fcbb8e9" mac_openssl --if has_broken_mac_openssl -install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline -if has_tar_xz_support; then - install_package "Python-3.15.0a3" "https://www.python.org/ftp/python/3.15.0/Python-3.15.0a3.tar.xz#6ab02cdac24505779877bb1d9189432d67e90ddf2a9b8b7b373ead54ac07b607" standard verify_py315 copy_python_gdb ensurepip -else - install_package "Python-3.15.0a3" "https://www.python.org/ftp/python/3.15.0/Python-3.15.0a3.tgz#a8afd71361baf8f02f459a4ab9b73eb4cdf2895991218b8418cf7ba49c96bef7" standard verify_py315 copy_python_gdb ensurepip -fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a3t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a3t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a3t 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a3t 1970-01-01 01:00:00.000000000 +0100 @@ -1,2 +0,0 @@ -export PYTHON_BUILD_FREE_THREADING=1 -source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a8 new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a8 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a8 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a8 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.6.2" "https://github.com/openssl/openssl/releases/download/openssl-3.6.2/openssl-3.6.2.tar.gz#aaf51a1fe064384f811daeaeb4ec4dce7340ec8bd893027eee676af31e83a04f" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.3" "https://ftpmirror.gnu.org/readline/readline-8.3.tar.gz#fe5383204467828cd495ee8d1d3c037a7eba1389c22bc6a041f627976f9061cc" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.15.0a8" "https://www.python.org/ftp/python/3.15.0/Python-3.15.0a8.tar.xz#28f1b6358609042ebcc81488ec24569519f50804bb07dc23cc707b281b031c69" standard verify_py315 copy_python_gdb ensurepip +else + install_package "Python-3.15.0a8" "https://www.python.org/ftp/python/3.15.0/Python-3.15.0a8.tgz#1aadddd942e7c80e92fd2d83ab36887cec860c48fa9a2b47efe8c5acaa4a29f3" standard verify_py315 copy_python_gdb ensurepip +fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a8t new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a8t --- old/pyenv-2.6.18/plugins/python-build/share/python-build/3.15.0a8t 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/3.15.0a8t 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,2 @@ +export PYTHON_BUILD_FREE_THREADING=1 +source "${BASH_SOURCE[0]%t}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/anaconda3-2025.12-2 new/pyenv-2.6.27/plugins/python-build/share/python-build/anaconda3-2025.12-2 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/anaconda3-2025.12-2 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/anaconda3-2025.12-2 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,19 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Anaconda3-2025.12-2-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2025.12-2-Linux-aarch64.sh#be13a20f31d82508a061984fa3555369cfd8e4692643721415c19e7dc2e9e0f9" "anaconda" verify_py313 + ;; +"Linux-x86_64" ) + install_script "Anaconda3-2025.12-2-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.12-2-Linux-x86_64.sh#57b2b48cc5b8665e25fce7011f0389d47c1288288007844b3b1ba482d4f39029" "anaconda" verify_py313 + ;; +"MacOSX-arm64" ) + install_script "Anaconda3-2025.12-2-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2025.12-2-MacOSX-arm64.sh#8d0b858358456d4ee159feb0c4ee6d635590b777f8b9ffa4aa7553c469aae2b6" "anaconda" verify_py313 + ;; +* ) + { 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 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/graalpy-25.0.2 new/pyenv-2.6.27/plugins/python-build/share/python-build/graalpy-25.0.2 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/graalpy-25.0.2 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/graalpy-25.0.2 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,61 @@ +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is furnished to do +# so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +VERSION='25.0.2' +BUILD='' + +colorize 1 "GraalPy 23.1 and later installed by python-build use the faster Oracle GraalVM distribution" && echo +colorize 1 "Oracle GraalVM uses the GFTC license, which is free for development and production use, see https://medium.com/graalvm/161527df3d76" && echo +colorize 1 "The GraalVM Community Edition variant of GraalPy is also available, under the name graalpy-community-${VERSION}" && echo + + +graalpy_arch="$(graalpy_architecture 2>/dev/null || true)" + +case "$graalpy_arch" in +"linux-amd64" ) + checksum="8967e4bae1c5040d62dbc98976f2099d5c36c00a79944e99b848d455e618ecdf" + ;; +"linux-aarch64" ) + checksum="805f3526296e04692b27ca001ba97674e53d0f036412d9ffc29aeb8b51517ab6" + ;; +"macos-aarch64" ) + checksum="c771688b8636932026180bdd9b5e3d6116316fa868faf7e602a60ba020c7bade" + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": No binary distribution of GraalPy is available for $(uname -sm)." + echo + } >&2 + exit 1 + ;; +esac + +if [ -n "${BUILD}" ]; then + { echo + colorize 1 "ERROR" + echo "Oracle GraalPy currently doesn't provide snapshot builds. Use graalpy-community if you need snapshots." + echo + } >&2 + exit 1 +fi + +url="https://github.com/oracle/graalpython/releases/download/graal-${VERSION}/graalpy-${VERSION}-${graalpy_arch}.tar.gz#${checksum}" + +install_package "graalpy-${VERSION}" "${url}" "copy" ensurepip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/graalpy-community-25.0.2 new/pyenv-2.6.27/plugins/python-build/share/python-build/graalpy-community-25.0.2 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/graalpy-community-25.0.2 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/graalpy-community-25.0.2 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,51 @@ +# Copyright (c) 2026, Oracle and/or its affiliates. All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of +# this software and associated documentation files (the "Software"), to deal in +# the Software without restriction, including without limitation the rights to +# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +# of the Software, and to permit persons to whom the Software is furnished to do +# so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. +VERSION='25.0.2' +BUILD='' + +graalpy_arch="$(graalpy_architecture 2>/dev/null || true)" + +case "$graalpy_arch" in +"linux-amd64" ) + checksum="8db86f13c0b701bab0780e8821052a40303c08b83fdc9c21da06605d14d4cc79" + ;; +"linux-aarch64" ) + checksum="98f7b9dea867c45cde5c2886b7544bd267242b2fa93586f2c9d3d38e88d5d109" + ;; +"macos-aarch64" ) + checksum="c64bef17f34d42327d5c3fe40c05eddf791c3653cc8366f6bf1149b51ce9d517" + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": No binary distribution of GraalPy is available for $(uname -sm)." + echo + } >&2 + exit 1 + ;; +esac + +if [ -n "${BUILD}" ]; then + url="https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/${VERSION}-dev-${BUILD}/graalpy-community-dev-${graalpy_arch}.tar.gz" +else + url="https://github.com/oracle/graalpython/releases/download/graal-${VERSION}/graalpy-community-${VERSION}-${graalpy_arch}.tar.gz#${checksum}" +fi + +install_package "graalpy-community-${VERSION}${BUILD}" "${url}" "copy" ensurepip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.10-26.1.1-1 new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.10-26.1.1-1 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.10-26.1.1-1 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.10-26.1.1-1 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,20 @@ +export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py310_26.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_26.1.1-1-Linux-aarch64.sh#0a78d6620113acd42d840925514c0f5eec9f2e1e8ae4394755c401b3b605875b" "miniconda" verify_py310 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py310_26.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_26.1.1-1-Linux-x86_64.sh#4410410a6343f688bbfd48d80eb23e3125964e254e4c18802679d2e61b06876e" "miniconda" verify_py310 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py310_26.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_26.1.1-1-MacOSX-arm64.sh#cadb31098a13b7dcc016594f54b01bcf1371161ba762a9ac3ba0d8f04b2615e2" "miniconda" verify_py310 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.11-26.1.1-1 new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.11-26.1.1-1 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.11-26.1.1-1 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.11-26.1.1-1 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,20 @@ +export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py311_26.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_26.1.1-1-Linux-aarch64.sh#1726ea55308160a32e82d90a6f4914caa46f58fe157442224f2faf92fdef1e0e" "miniconda" verify_py311 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py311_26.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_26.1.1-1-Linux-x86_64.sh#52d1f19154b0716d7dc0872f0d858702640da08a4e53fd0035ba988608203d6b" "miniconda" verify_py311 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py311_26.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_26.1.1-1-MacOSX-arm64.sh#720266b29d46b8da1b466342aa02d7d04683670bf2bf53576cc70d89253f60ca" "miniconda" verify_py311 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.12-26.1.1-1 new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.12-26.1.1-1 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.12-26.1.1-1 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.12-26.1.1-1 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,20 @@ +export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py312_26.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_26.1.1-1-Linux-aarch64.sh#0a84d50ec92fbb248e31bff0a5888bf2f4dc322fc979e94ecc6e9946d0324ce7" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py312_26.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_26.1.1-1-Linux-x86_64.sh#eef1283cdc9d37f55743778ea4567e91aa28c2e3be4adab529dda324c3c897a2" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py312_26.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_26.1.1-1-MacOSX-arm64.sh#4a1e3630353121edad84fe79982a99ad8001425e27313c34f7ba9b6cec95d3dd" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.13-26.1.1-1 new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.13-26.1.1-1 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/miniconda3-3.13-26.1.1-1 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/miniconda3-3.13-26.1.1-1 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,20 @@ +export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py313_26.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_26.1.1-1-Linux-aarch64.sh#07c82b5aec04d5f0f3e4b246835b6bc85e104821cbcb0a059c7ea80f028503f4" "miniconda" verify_py313 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py313_26.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_26.1.1-1-Linux-x86_64.sh#f6dfb5b59614fd7b2956b240b2575a9d58203ec7f7a99f85128158a0fdc5c1d7" "miniconda" verify_py313 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py313_26.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_26.1.1-1-MacOSX-arm64.sh#745f97a6553ebdce0bfdaafe00b0d1939784b38cdaadb3378ca7868a51616a65" "miniconda" verify_py313 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/miniforge3-26.1.0-0 new/pyenv-2.6.27/plugins/python-build/share/python-build/miniforge3-26.1.0-0 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/miniforge3-26.1.0-0 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/miniforge3-26.1.0-0 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-26.1.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.0-0/Miniforge3-26.1.0-0-Linux-aarch64.sh#8baf8844ecf13e1458f81659ea286251d04b2d5ed90040efb77f158adedb2d95" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-26.1.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.0-0/Miniforge3-26.1.0-0-Linux-ppc64le.sh#902190ad825b74b78a6a2816364453bb4d6989a599172aa3785d4afd0ebeb917" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-26.1.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.0-0/Miniforge3-26.1.0-0-Linux-x86_64.sh#127b5e14cfe6c83b787f624487cdc2168645ed82fdca1b0c1937caa086aed6d5" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-26.1.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.0-0/Miniforge3-26.1.0-0-MacOSX-arm64.sh#219b9e0d733fa2086d7d094a5ed830db146ccf22ae32c330b2da5df5c9604b78" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-26.1.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.0-0/Miniforge3-26.1.0-0-MacOSX-x86_64.sh#90a41a28ad0221fbaf728ca1267f6243638a56c579fba8a1b970edfee4062d53" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Miniforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/miniforge3-26.1.1-2 new/pyenv-2.6.27/plugins/python-build/share/python-build/miniforge3-26.1.1-2 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/miniforge3-26.1.1-2 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/miniforge3-26.1.1-2 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,31 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-26.1.1-2-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-2/Miniforge3-26.1.1-2-Linux-aarch64.sh#6525bfb24940c5e063ed14f2d840968b0fc4152a3f4edd253b7a1049a15656e7" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-26.1.1-2-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-2/Miniforge3-26.1.1-2-Linux-ppc64le.sh#637cf03310343d199bcd7725aab54f59666fb1694bb99fc841973203da9c3f25" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-26.1.1-2-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-2/Miniforge3-26.1.1-2-Linux-x86_64.sh#831421c1f32d8b510e0ef7f261aaabdbf567bdbba37373432d492621b824ab1f" "miniconda" verify_py312 + ;; +"MacOSX-arm64.pkg" ) + install_script "Miniforge3-26.1.1-2-MacOSX-arm64.pkg" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-2/Miniforge3-26.1.1-2-MacOSX-arm64.pkg#2cf96ab02ab575028bfe2c0d0f8ee8e7c39953588042189507d8f99c53971baf" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-26.1.1-2-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-2/Miniforge3-26.1.1-2-MacOSX-arm64.sh#ed60de20689ab24dd646b9ec4b06762d35f8c0043026778699ba7c9f0816492c" "miniconda" verify_py312 + ;; +"MacOSX-x86_64.pkg" ) + install_script "Miniforge3-26.1.1-2-MacOSX-x86_64.pkg" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-2/Miniforge3-26.1.1-2-MacOSX-x86_64.pkg#5b7e555b22515debaf049b7cfe0eec73e0c8dc71ea1ba773b7132c852277aa72" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-26.1.1-2-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-2/Miniforge3-26.1.1-2-MacOSX-x86_64.sh#74f3e5cdb70bf0ff9bab3e4ba8d35aee5b46bf7eebca94202cbd8d46e16ecf77" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Miniforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/plugins/python-build/share/python-build/miniforge3-26.1.1-3 new/pyenv-2.6.27/plugins/python-build/share/python-build/miniforge3-26.1.1-3 --- old/pyenv-2.6.18/plugins/python-build/share/python-build/miniforge3-26.1.1-3 1970-01-01 01:00:00.000000000 +0100 +++ new/pyenv-2.6.27/plugins/python-build/share/python-build/miniforge3-26.1.1-3 2026-04-08 17:26:46.000000000 +0200 @@ -0,0 +1,31 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-26.1.1-3-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-3/Miniforge3-26.1.1-3-Linux-aarch64.sh#83280e4ee71a5bd547d6b318f96e9ababe1054911ff6cc2b8801ce5493fe67e5" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-26.1.1-3-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-3/Miniforge3-26.1.1-3-Linux-ppc64le.sh#5711fd69219bc9746389ef751ee4c2549d40d9b1626a0ea93cc63db1a739eee6" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-26.1.1-3-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-3/Miniforge3-26.1.1-3-Linux-x86_64.sh#b25b828b702df4dd2a6d24d4eb56cfa912471dd8e3342cde2c3d86fe3dc2d870" "miniconda" verify_py312 + ;; +"MacOSX-arm64.pkg" ) + install_script "Miniforge3-26.1.1-3-MacOSX-arm64.pkg" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-3/Miniforge3-26.1.1-3-MacOSX-arm64.pkg#864d4ba41bae5ad85d41d00a163535ea4b8b1ab7a4fd3b03f875c36c0c323b80" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-26.1.1-3-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-3/Miniforge3-26.1.1-3-MacOSX-arm64.sh#38e73713bc504e11cf2a70f8bc01de4a778c547e9191e682606ba76fa4397fd9" "miniconda" verify_py312 + ;; +"MacOSX-x86_64.pkg" ) + install_script "Miniforge3-26.1.1-3-MacOSX-x86_64.pkg" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-3/Miniforge3-26.1.1-3-MacOSX-x86_64.pkg#34cb544a2473f2b4755bdd361520114f20a61284bcdf3c2b124a392a1aa9923f" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-26.1.1-3-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/26.1.1-3/Miniforge3-26.1.1-3-MacOSX-x86_64.sh#d81e77d8f3c104c64e0ab27256f901e58ac9965288ccec774db87bf1a98a03e7" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Miniforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/pyenv.d/rehash/source.bash new/pyenv-2.6.27/pyenv.d/rehash/source.bash --- old/pyenv-2.6.18/pyenv.d/rehash/source.bash 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/pyenv.d/rehash/source.bash 2026-04-08 17:26:46.000000000 +0200 @@ -2,7 +2,7 @@ shims=() shopt -s nullglob -for shim in $(cat "${BASH_SOURCE%/*}/source.d/"*".list" | sort | uniq | sed -e 's/#.*$//' | sed -e '/^[[:space:]]*$/d'); do +for shim in $(sort -u "${BASH_SOURCE%/*}/source.d/"*".list" | sed -e 's/#.*$//' -e '/^[[:space:]]*$/d'); do if [ -n "${shim##*/}" ]; then shims[${#shims[*]}]="${shim})return 0;;" fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/test/test_helper.bash new/pyenv-2.6.27/test/test_helper.bash --- old/pyenv-2.6.18/test/test_helper.bash 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/test/test_helper.bash 2026-04-08 17:26:46.000000000 +0200 @@ -135,7 +135,7 @@ if [ "$found" != "${PYENV_ROOT}/shims" ]; then alt="${PYENV_TEST_DIR}/$(echo "${found#/}" | tr '/' '-')" mkdir -p "$alt" - for util in bash head cut readlink greadlink tr sed; do + for util in bash head cut readlink greadlink tr sed xargs basename sort; do if [ -x "${found}/$util" ]; then ln -s "${found}/$util" "${alt}/$util" fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/test/versions.bats new/pyenv-2.6.27/test/versions.bats --- old/pyenv-2.6.18/test/versions.bats 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/test/versions.bats 2026-04-08 17:26:46.000000000 +0200 @@ -11,6 +11,11 @@ ln -s "$2" "${PYENV_ROOT}/versions/$1" } +create_external_version() { + mkdir -p "$PYENV_TEST_DIR/${1:?}" + create_alias "${1:?}" "$PYENV_TEST_DIR/${1:?}" +} + _setup() { mkdir -p "$PYENV_TEST_DIR" cd "$PYENV_TEST_DIR" @@ -168,15 +173,39 @@ @test "doesn't list symlink aliases when --skip-aliases" { create_version "1.8.7" create_alias "1.8" "1.8.7" - mkdir moo - create_alias "1.9" "${PWD}/moo" + create_external_version "moo" run pyenv-versions --bare --skip-aliases assert_success assert_output <<OUT 1.8.7 -1.9 +moo +OUT +} + +@test "--executables lists executables everywhere and overrides other switches" { + create_alt_executable_in_version "3.5.0" "python" + create_alt_executable_in_version "3.5.0" "python1" + create_alt_executable_in_version "3.6.0" "python" + create_alt_executable_in_version "3.5.0/envs/foo" "python_foo" + create_alt_executable_in_version "3.6.0/envs/bar" "python_bar" + create_alias "bar" "3.6.0/envs/bar" + create_external_version "moo" + create_alt_executable_in_version "moo" "moopython" + + run pyenv-versions --skip-aliases --skip-envs --executables + assert_success + #The sort order does not matter for this functionality. However, + #MacOS 15 `sort` sorts differently that Linux's due to a different LC_COLLATE definition for en-US: + #https://unix.stackexchange.com/questions/362728/why-does-gnu-sort-sort-differently-on-my-osx-machine-and-linux-machine + #So to get a match, we have to check against the same order that the local `sort` produces + sort <<OUT | assert_output +moopython +python +python1 +python_bar +python_foo OUT } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyenv-2.6.18/test/which.bats new/pyenv-2.6.27/test/which.bats --- old/pyenv-2.6.18/test/which.bats 2026-01-10 04:16:21.000000000 +0100 +++ new/pyenv-2.6.27/test/which.bats 2026-04-08 17:26:46.000000000 +0200 @@ -68,8 +68,8 @@ The \`py.test' command exists in these Python versions: 3.4 - Note: See 'pyenv help global' for tips on allowing both - python2 and python3 to be found. +Note: See 'pyenv help global' for tips on allowing multiple + Python versions to be found at the same time. OUT } @@ -85,8 +85,8 @@ The \`py.test' command exists in these Python versions: 3.4 - Note: See 'pyenv help global' for tips on allowing both - python2 and python3 to be found. +Note: See 'pyenv help global' for tips on allowing multiple + Python versions to be found at the same time. OUT } @@ -118,8 +118,8 @@ 3.3 3.4 -Note: See 'pyenv help global' for tips on allowing both - python2 and python3 to be found. +Note: See 'pyenv help global' for tips on allowing multiple + Python versions to be found at the same time. OUT }
