From 38421ba6aa809cba8913447297f005f22f5f1fe2 Mon Sep 17 00:00:00 2001 From: binbjz <8213913+binbjz@users.noreply.github.com> Date: Sat, 21 Dec 2024 21:48:25 +0800 Subject: [PATCH 01/23] Add miniconda3-24.11.1-0 (#3138) Co-authored-by: binbjz --- .../python-build/miniconda3-3.10-24.11.1-0 | 25 +++++++++++++++++++ .../python-build/miniconda3-3.11-24.11.1-0 | 25 +++++++++++++++++++ .../python-build/miniconda3-3.12-24.11.1-0 | 25 +++++++++++++++++++ .../python-build/miniconda3-3.9-24.11.1-0 | 25 +++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 plugins/python-build/share/python-build/miniconda3-3.10-24.11.1-0 create mode 100644 plugins/python-build/share/python-build/miniconda3-3.11-24.11.1-0 create mode 100644 plugins/python-build/share/python-build/miniconda3-3.12-24.11.1-0 create mode 100644 plugins/python-build/share/python-build/miniconda3-3.9-24.11.1-0 diff --git a/plugins/python-build/share/python-build/miniconda3-3.10-24.11.1-0 b/plugins/python-build/share/python-build/miniconda3-3.10-24.11.1-0 new file mode 100644 index 00000000..3e4721bc --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.10-24.11.1-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py310_24.11.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.11.1-0-Linux-aarch64.sh#70fa20d714ba54114c41990a7222a49bd3c833a0f602bd0e0df507bb2f787035" "miniconda" verify_py310 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py310_24.11.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.11.1-0-Linux-s390x.sh#c5021ecb894cc7b1bb2d62f2156bdaf3e642235b501998bcc730024b07515c74" "miniconda" verify_py310 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py310_24.11.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.11.1-0-Linux-x86_64.sh#7a3cdbb78a642b2b6dd0687c9e09824e53330368ab57406e27d88e25c4fe4e40" "miniconda" verify_py310 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py310_24.11.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.11.1-0-MacOSX-arm64.sh#73d7eb2569e976c6da1946723a3b8bebf0f2aaccef80b28f8eef69fd835572b1" "miniconda" verify_py310 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py310_24.11.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.11.1-0-MacOSX-x86_64.sh#2f8be5e7beeda8d161be2254d1d1d7e786ca8d11602bd1b7dde1134fcad365fa" "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 --git a/plugins/python-build/share/python-build/miniconda3-3.11-24.11.1-0 b/plugins/python-build/share/python-build/miniconda3-3.11-24.11.1-0 new file mode 100644 index 00000000..8139f67d --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.11-24.11.1-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py311_24.11.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.11.1-0-Linux-aarch64.sh#a8846ade7a5ddd9b6a6546590054d70d1c2cbe4fbe8c79fb70227e8fd93ef9f8" "miniconda" verify_py311 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py311_24.11.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.11.1-0-Linux-s390x.sh#bb499b18dbcbb2d89b22f91fe26fe661f5ed1f1944fdc743560d69cd52a2468f" "miniconda" verify_py311 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py311_24.11.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.11.1-0-Linux-x86_64.sh#807774bae6cd87132094458217ebf713df436f64779faf9bb4c3d4b6615c1e3a" "miniconda" verify_py311 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py311_24.11.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.11.1-0-MacOSX-arm64.sh#862af4d7cb257219c6b280848049e09e1aff27acd06d5422359f2249f938e282" "miniconda" verify_py311 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py311_24.11.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.11.1-0-MacOSX-x86_64.sh#388f669ab95d659b4c97353f756ce93ed2000ec0114edaec9688f8541fa4bcab" "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 --git a/plugins/python-build/share/python-build/miniconda3-3.12-24.11.1-0 b/plugins/python-build/share/python-build/miniconda3-3.12-24.11.1-0 new file mode 100644 index 00000000..f3c8bd11 --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.12-24.11.1-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py312_24.11.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.11.1-0-Linux-aarch64.sh#9180a2f1fab799fd76e9ef914643269dcf5bad9d455623b905b87f5d39ae140f" "miniconda" verify_py312 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py312_24.11.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.11.1-0-Linux-s390x.sh#105bce6b0137f574147b8fdfd5e3a7d6c92f3ea9fbf3e0de61331ea43586e9af" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py312_24.11.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.11.1-0-Linux-x86_64.sh#636b209b00b6673471f846581829d4b96b9c3378679925a59a584257c3fef5a3" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py312_24.11.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.11.1-0-MacOSX-arm64.sh#9d5c5782d24a09075e45f131693d24907d8c45a4e6205c51d4d3a81b72dc5ad7" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py312_24.11.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.11.1-0-MacOSX-x86_64.sh#71419eaf7f0bc016c41e8e27815609e76f2d6bcfc39426c19ca5e5cf7a2ea36f" "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 --git a/plugins/python-build/share/python-build/miniconda3-3.9-24.11.1-0 b/plugins/python-build/share/python-build/miniconda3-3.9-24.11.1-0 new file mode 100644 index 00000000..2214c1fc --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.9-24.11.1-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py39_24.11.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.11.1-0-Linux-aarch64.sh#35411dc715549d0a95f4814c4f318a3d0addfafc3a25fa7e89e2ba47e8d87b4d" "miniconda" verify_py39 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py39_24.11.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.11.1-0-Linux-s390x.sh#c130a7064c5c513c42280ec41a5f8c93aaab522ecd6bd0f2138c8c9f78d4f522" "miniconda" verify_py39 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py39_24.11.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.11.1-0-Linux-x86_64.sh#3ea8373098d72140e08aac9217822b047ec094eb457e7f73945af7c6f68bf6f5" "miniconda" verify_py39 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py39_24.11.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.11.1-0-MacOSX-arm64.sh#a8a07c4255882de2f132ed2d4cfaa3bdf89370de71ba8cd3914e013f5bffcc68" "miniconda" verify_py39 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py39_24.11.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.11.1-0-MacOSX-x86_64.sh#5ca59fa5a4835587ba6ea73169a7e55862771cf9b0618d0549b7b484fe1a2e67" "miniconda" verify_py39 + ;; +* ) + { 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 From c6973391f3c62e537a574517d5e8f098317aa5d6 Mon Sep 17 00:00:00 2001 From: Christian Fredrik Johnsen Date: Sun, 22 Dec 2024 13:23:51 +0100 Subject: [PATCH 02/23] pyenv-init | performance improvements (#3136) * perf: replace a series of if statements with a case block. Add error handling for case where unknown option is provided. Same setup as rbenv-init for reading arguments. * perf, docs: Recommend users to specify the shell for `pyenv init -` Speeds up the startup by about 40% (in local testing, from ~50ms to ~30ms). Reflect this in `pyenv init` hint text. * style: remove unnecessary `root` variable in pyenv-init * style: remove unnecessary variable declarations at the top of file in pyenv-init. * perf: replace `cat <<` calls with `echo` The builtin `echo` is about 100x faster. In tests, saves about 2-3ms. * docs: document the `pyenv init - ` performance boost in the Advanced Configuration section. * style: test_helper.bash: avoid unnecessary ".." in produced PATH * docs: fix a false statement about completions location in the Advanced Configuration section. --- README.md | 28 ++++++----- libexec/pyenv-init | 111 ++++++++++++++++++------------------------ test/init.bats | 11 ++--- test/test_helper.bash | 2 +- 4 files changed, 69 insertions(+), 83 deletions(-) diff --git a/README.md b/README.md index 5eebb3c4..2c3e0763 100644 --- a/README.md +++ b/README.md @@ -191,27 +191,27 @@ See [Advanced configuration](#advanced-configuration) for details and more confi ```bash echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc - echo 'eval "$(pyenv init -)"' >> ~/.bashrc + echo 'eval "$(pyenv init - bash)"' >> ~/.bashrc ``` - 3. Then, if you have `~/.profile`, `~/.bash_profile` or `~/.bash_login`, add the commands there as well. + 2. Then, if you have `~/.profile`, `~/.bash_profile` or `~/.bash_login`, add the commands there as well. If you have none of these, create a `~/.profile` and add the commands there. * to add to `~/.profile`: ``` bash echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile - echo 'eval "$(pyenv init -)"' >> ~/.profile + echo 'eval "$(pyenv init - bash)"' >> ~/.profile ``` * to add to `~/.bash_profile`: ```bash echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile - echo 'eval "$(pyenv init -)"' >> ~/.bash_profile + echo 'eval "$(pyenv init - bash)"' >> ~/.bash_profile ``` **Bash warning**: There are some systems where the `BASH_ENV` variable is configured to point to `.bashrc`. On such systems, you should almost certainly put the - `eval "$(pyenv init -)"` line into `.bash_profile`, and **not** into `.bashrc`. Otherwise, you + `eval "$(pyenv init - bash)"` line into `.bash_profile`, and **not** into `.bashrc`. Otherwise, you may observe strange behaviour, such as `pyenv` getting into an infinite loop. See [#264](https://github.com/pyenv/pyenv/issues/264) for details. @@ -224,7 +224,7 @@ See [Advanced configuration](#advanced-configuration) for details and more confi ```zsh echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc - echo 'eval "$(pyenv init -)"' >> ~/.zshrc + echo 'eval "$(pyenv init - zsh)"' >> ~/.zshrc ``` If you wish to get Pyenv in noninteractive login shells as well, also add the commands to `~/.zprofile` or `~/.zlogin`. @@ -248,7 +248,7 @@ See [Advanced configuration](#advanced-configuration) for details and more confi 3. Now, add this to `~/.config/fish/config.fish`: ~~~ fish - pyenv init - | source + pyenv init - fish | source ~~~ @@ -656,23 +656,25 @@ for the environment variables that control Pyenv's behavior. extra commands into your shell. Coming from RVM, some of you might be opposed to this idea. Here's what `eval "$(pyenv init -)"` actually does: +1. **Finds current shell.** + `pyenv init` figures out what shell you are using, as the exact commands of `eval "$(pyenv init -)"` vary depending on shell. Specifying which shell you are using (e.g. `eval "$(pyenv init - bash)"`) is preferred, because it reduces launch time significantly. -1. **Sets up the shims path.** This is what allows Pyenv to intercept +2. **Sets up the shims path.** This is what allows Pyenv to intercept and redirect invocations of `python`, `pip` etc. transparently. It prepends `$(pyenv root)/shims` to your `$PATH`. It also deletes any other instances of `$(pyenv root)/shims` on `PATH` which allows to invoke `eval "$(pyenv init -)"` multiple times without getting duplicate `PATH` entries. -2. **Installs autocompletion.** This is entirely optional but pretty - useful. Sourcing `$(pyenv root)/completions/pyenv.bash` will set that +3. **Installs autocompletion.** This is entirely optional but pretty + useful. Sourcing `/completions/pyenv.bash` will set that up. There are also completions for Zsh and Fish. -3. **Rehashes shims.** From time to time you'll need to rebuild your +4. **Rehashes shims.** From time to time you'll need to rebuild your shim files. Doing this on init makes sure everything is up to date. You can always run `pyenv rehash` manually. -4. **Installs `pyenv` into the current shell as a shell function.** +5. **Installs `pyenv` into the current shell as a shell function.** This bit is also optional, but allows pyenv and plugins to change variables in your current shell. This is required for some commands like `pyenv shell` to work. @@ -681,7 +683,7 @@ opposed to this idea. Here's what `eval "$(pyenv init -)"` actually does: for some reason you need `pyenv` to be a real script rather than a shell function, you can safely skip it. -`eval "$(pyenv init --path)"` only does items 1 and 3. +`eval "$(pyenv init --path)"` only does items 2 and 4. To see exactly what happens under the hood for yourself, run `pyenv init -` or `pyenv init --path`. diff --git a/libexec/pyenv-init b/libexec/pyenv-init index 492360e6..19d3ce1a 100755 --- a/libexec/pyenv-init +++ b/libexec/pyenv-init @@ -20,37 +20,32 @@ if [ "$1" = "--complete" ]; then fi mode="help" -no_rehash="" -no_push_path="" -for args in "$@" -do - if [ "$args" = "-" ]; then - mode="print" - shift - fi - if [ "$args" = "--path" ]; then - mode="path" - shift - fi - - if [ "$args" = "--detect-shell" ]; then - mode="detect-shell" - shift - fi - - if [ "$args" = "--no-push-path" ]; then - no_push_path=1 - shift - fi - - if [ "$args" = "--no-rehash" ]; then - no_rehash=1 - shift - fi +while [ "$#" -gt 0 ]; do + case "$1" in + -) + mode="print" + ;; + --path) + mode="path" + ;; + --detect-shell) + mode="detect-shell" + ;; + --no-push-path) + no_push_path=1 + ;; + --no-rehash) + no_rehash=1 + ;; + *) + shell="$1" + ;; + esac + shift done -shell="$1" +# If shell is not provided, detect it. if [ -z "$shell" ]; then shell="$(ps -p "$PPID" -o 'args=' 2>/dev/null || true)" shell="${shell%% *}" @@ -60,8 +55,6 @@ if [ -z "$shell" ]; then shell="${shell%%-*}" fi -root="${0%/*}/.." - function main() { case "$mode" in "help") @@ -150,7 +143,7 @@ function help_() { echo "# Load pyenv automatically by appending" echo "# the following to ~/.config/fish/config.fish:" echo - echo 'pyenv init - | source' + echo 'pyenv init - fish | source' echo ;; * ) @@ -166,7 +159,7 @@ function help_() { echo echo 'export PYENV_ROOT="$HOME/.pyenv"' echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' - echo 'eval "$(pyenv init -)"' + echo 'eval "$(pyenv init -'$shell')"' ;; esac echo @@ -244,7 +237,7 @@ function print_env() { } function print_completion() { - completion="${root}/completions/pyenv.${shell}" + completion="${0%/*/*}/completions/pyenv.${shell}" if [ -r "$completion" ]; then echo "source '$completion'" fi @@ -260,52 +253,44 @@ function print_shell_function() { commands=(`pyenv-commands --sh`) case "$shell" in fish ) - cat </dev/null" } - @test "setup shell completions" { - root="$(cd $BATS_TEST_DIRNAME/.. && pwd)" + exec_root="$(cd $BATS_TEST_DIRNAME/.. && pwd)" run pyenv-init - bash assert_success - assert_line "source '${root}/test/../libexec/../completions/pyenv.bash'" + assert_line "source '${exec_root}/completions/pyenv.bash'" } @test "detect parent shell" { @@ -63,16 +62,16 @@ OUT } @test "setup shell completions (fish)" { - root="$(cd $BATS_TEST_DIRNAME/.. && pwd)" + exec_root="$(cd $BATS_TEST_DIRNAME/.. && pwd)" run pyenv-init - fish assert_success - assert_line "source '${root}/test/../libexec/../completions/pyenv.fish'" + assert_line "source '${exec_root}/completions/pyenv.fish'" } @test "fish instructions" { run pyenv-init fish assert [ "$status" -eq 1 ] - assert_line 'pyenv init - | source' + assert_line 'pyenv init - fish | source' } @test "shell detection for installer" { diff --git a/test/test_helper.bash b/test/test_helper.bash index 4e32df30..51dcd83d 100644 --- a/test/test_helper.bash +++ b/test/test_helper.bash @@ -21,7 +21,7 @@ if [ -z "$PYENV_TEST_DIR" ]; then PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin PATH="${PYENV_TEST_DIR}/bin:$PATH" - PATH="${BATS_TEST_DIRNAME}/../libexec:$PATH" + PATH="${BATS_TEST_DIRNAME%/*}/libexec:$PATH" PATH="${BATS_TEST_DIRNAME}/libexec:$PATH" PATH="${PYENV_ROOT}/shims:$PATH" export PATH From 25c966eb4fd946b0a31eb92575ced3038ab0f385 Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Sun, 22 Dec 2024 15:59:52 +0300 Subject: [PATCH 03/23] add_miniconda.py: future-proof, update defaults, change -v * future-proof PyVersion * fix handling "-latest" * Update default versions * change -v argument to bool --- plugins/python-build/scripts/add_miniconda.py | 75 ++++++++++++------- 1 file changed, 46 insertions(+), 29 deletions(-) diff --git a/plugins/python-build/scripts/add_miniconda.py b/plugins/python-build/scripts/add_miniconda.py index 3ecb80d6..32b191f8 100755 --- a/plugins/python-build/scripts/add_miniconda.py +++ b/plugins/python-build/scripts/add_miniconda.py @@ -11,15 +11,18 @@ Also ignores sub-patch releases if that major.minor.patch already exists, but otherwise, takes the latest sub-patch release for given OS/arch. Assumes all miniconda3 releases < 4.7 default to python 3.6, and anything else 3.7. """ +import logging +import re +import string +import sys import textwrap from argparse import ArgumentParser from collections import defaultdict +from dataclasses import dataclass from enum import Enum from functools import total_ordering from pathlib import Path from typing import NamedTuple, List, Optional, DefaultDict, Dict -import logging -import string import requests_html @@ -90,7 +93,7 @@ class Flavor(StrEnum): ANACONDA = "anaconda" MINICONDA = "miniconda" - + class TFlavor(StrEnum): ANACONDA = "Anaconda" MINICONDA = "Miniconda" @@ -102,21 +105,37 @@ class Suffix(StrEnum): NONE = "" -class PyVersion(StrEnum): - PY27 = "py27" - PY36 = "py36" - PY37 = "py37" - PY38 = "py38" - PY39 = "py39" - PY310 = "py310" - PY311 = "py311" +PyVersion = None +class PyVersionMeta(type): + def __getattr__(self, name): + """Generate PyVersion.PYXXX on demand to future-proof it""" + if PyVersion is not None: + return PyVersion(name.lower()) + return super(PyVersionMeta,self).__getattr__(self, name) + + +@dataclass(frozen=True) +class PyVersion(metaclass=PyVersionMeta): + major: str + minor: str + + def __init__(self, value): + (major, minor) = re.match(r"py(\d)(\d+)", value).groups() + object.__setattr__(self, "major", major) + object.__setattr__(self, "minor", minor) + + @property + def value(self): + return f"py{self.major}{self.minor}" def version(self): - first, *others = self.value[2:] - return f"{first}.{''.join(others)}" + return f"{self.major}.{self.minor}" def version_info(self): - return tuple(int(n) for n in self.version().split(".")) + return (self.major, self.minor) + + def __str__(self): + return self.value @total_ordering @@ -190,10 +209,15 @@ class CondaVersion(NamedTuple): # https://docs.conda.io/projects/conda/en/latest/user-guide/tasks/manage-python.html if v < (4, 7): return PyVersion.PY36 - else: + if v < (4, 8): return PyVersion.PY37 + else: + # since 4.8, Miniconda specifies versions explicitly in the file name + return None if self.flavor == "anaconda": # https://docs.anaconda.com/free/anaconda/reference/release-notes/ + if v >= (2024,6): + return PyVersion.PY312 if v >= (2023,7): return PyVersion.PY311 if v >= (2023,3): @@ -247,7 +271,7 @@ class CondaSpec(NamedTuple): md5, repo, ) - if py_version is None: + if py_version is None and py_ver is None and ver != "latest": spec = spec.with_py_version(spec.version.default_py_version()) return spec @@ -296,8 +320,8 @@ def get_existing_condas(name): if v.version_str != "latest": logger.debug("Found existing %(name)s version %(v)s", locals()) yield v - except ValueError: - logger.error("Unable to parse existing version %s", entry_name) + except ValueError as e: + logger.error("Unable to parse existing version %s: %s", entry_name, e) def get_available_condas(name, repo): @@ -348,19 +372,12 @@ if __name__ == "__main__": help="Do not write scripts, just report them to stdout", ) parser.add_argument( - "-v", "--verbose", action="count", default=0, + "-v", "--verbose", action="store_true", default=0, help="Increase verbosity of logging", ) parsed = parser.parse_args() - log_level = { - 0: logging.WARNING, - 1: logging.INFO, - 2: logging.DEBUG, - }.get(parsed.verbose, logging.DEBUG) - logging.basicConfig(level=log_level) - if parsed.verbose < 3: - logging.getLogger("requests").setLevel(logging.WARNING) + logging.basicConfig(level=logging.DEBUG if parsed.verbose else logging.INFO) existing_versions = set() available_specs = set() @@ -377,7 +394,7 @@ if __name__ == "__main__": for s in sorted(available_specs, key=key_fn): key = s.version vv = key.version_str.info() - + reason = None if key in existing_versions: reason = "already exists" @@ -385,7 +402,7 @@ if __name__ == "__main__": reason = "too old" elif len(key.version_str.info()) >= 4 and "-" not in key.version_str: reason = "ignoring hotfix releases" - + if reason: logger.debug("Ignoring version %(s)s (%(reason)s)", locals()) continue From ac2f882aab521583417e1fc665da8eaf1c97782b Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Sun, 22 Dec 2024 16:19:59 +0300 Subject: [PATCH 04/23] Fix scripts not getting a Python version for `verify_pyXXX` --- plugins/python-build/scripts/add_miniconda.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/python-build/scripts/add_miniconda.py b/plugins/python-build/scripts/add_miniconda.py index 32b191f8..db2acc6b 100755 --- a/plugins/python-build/scripts/add_miniconda.py +++ b/plugins/python-build/scripts/add_miniconda.py @@ -213,7 +213,7 @@ class CondaVersion(NamedTuple): return PyVersion.PY37 else: # since 4.8, Miniconda specifies versions explicitly in the file name - return None + raise ValueError("Miniconda 4.8+ is supposed to specify a Python version explicitly") if self.flavor == "anaconda": # https://docs.anaconda.com/free/anaconda/reference/release-notes/ if v >= (2024,6): @@ -270,6 +270,7 @@ class CondaSpec(NamedTuple): SupportedArch(arch), md5, repo, + py_ver ) if py_version is None and py_ver is None and ver != "latest": spec = spec.with_py_version(spec.version.default_py_version()) From 51937ccc1974af1caca3774b55f5214ffe6e6796 Mon Sep 17 00:00:00 2001 From: native-api Date: Sun, 22 Dec 2024 17:04:32 +0300 Subject: [PATCH 05/23] Add miniconda3-24.3.0-0 (#3139) --- .../python-build/miniconda3-3.10-24.3.0-0 | 25 +++++++++++++++++++ .../python-build/miniconda3-3.11-24.3.0-0 | 25 +++++++++++++++++++ .../python-build/miniconda3-3.12-24.3.0-0 | 25 +++++++++++++++++++ .../python-build/miniconda3-3.9-24.3.0-0 | 25 +++++++++++++++++++ 4 files changed, 100 insertions(+) create mode 100644 plugins/python-build/share/python-build/miniconda3-3.10-24.3.0-0 create mode 100644 plugins/python-build/share/python-build/miniconda3-3.11-24.3.0-0 create mode 100644 plugins/python-build/share/python-build/miniconda3-3.12-24.3.0-0 create mode 100644 plugins/python-build/share/python-build/miniconda3-3.9-24.3.0-0 diff --git a/plugins/python-build/share/python-build/miniconda3-3.10-24.3.0-0 b/plugins/python-build/share/python-build/miniconda3-3.10-24.3.0-0 new file mode 100644 index 00000000..746f696a --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.10-24.3.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py310_24.3.0-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-Linux-aarch64.sh#cacbd0c4b829dae73ddbcee6b30674dc7aa20bf6dea720929fb01d4b6279f743" "miniconda" verify_py310 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py310_24.3.0-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-Linux-s390x.sh#fb0f113b0ad2eb9a05b017f49d4a27960ff9ec3d8ec0b580b79efb8c84d15d8e" "miniconda" verify_py310 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py310_24.3.0-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-Linux-x86_64.sh#def595b1b182749df0974cddb5c8befe70664ace16403d7a7bf54467be5ea48b" "miniconda" verify_py310 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py310_24.3.0-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-MacOSX-arm64.sh#ceae63e7c99b4ff33ddb1a9973956d829d4a00d39f1f7c6e2056e0e076059535" "miniconda" verify_py310 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py310_24.3.0-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.3.0-0-MacOSX-x86_64.sh#094c5a94818caf41deba41411876c3cffa918efdf8ada40dc32bcc535d181c78" "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 --git a/plugins/python-build/share/python-build/miniconda3-3.11-24.3.0-0 b/plugins/python-build/share/python-build/miniconda3-3.11-24.3.0-0 new file mode 100644 index 00000000..973b9402 --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.11-24.3.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py311_24.3.0-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.3.0-0-Linux-aarch64.sh#49082882752167cdea60e1aeedac7b73136bdfdd63b9bb3aca3c038901544458" "miniconda" verify_py311 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py311_24.3.0-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.3.0-0-Linux-s390x.sh#8e52dd1300c9462367d303a596a931e6ef8db422c7c79194efa6fdb152c92b61" "miniconda" verify_py311 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py311_24.3.0-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.3.0-0-Linux-x86_64.sh#4da8dde69eca0d9bc31420349a204851bfa2a1c87aeb87fe0c05517797edaac4" "miniconda" verify_py311 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py311_24.3.0-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.3.0-0-MacOSX-arm64.sh#b7663626fedf8395d3fed78383b08060a13bd6747003bdb2a39220407f55cf65" "miniconda" verify_py311 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py311_24.3.0-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.3.0-0-MacOSX-x86_64.sh#fdd6294aaa0472f7ddeac89deacceec1469e76bd2a16ac11f37b4ab584fe5089" "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 --git a/plugins/python-build/share/python-build/miniconda3-3.12-24.3.0-0 b/plugins/python-build/share/python-build/miniconda3-3.12-24.3.0-0 new file mode 100644 index 00000000..95880cec --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.12-24.3.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py312_24.3.0-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.3.0-0-Linux-aarch64.sh#05f70cbc89b6caf84e22db836f7696a16b617992eb23d6102acf7651eb132365" "miniconda" verify_py312 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py312_24.3.0-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.3.0-0-Linux-s390x.sh#b601cb8e3ea65a4ed1aecd96d4f3d14aca5b590b2e1ab0ec5c04c825f5c5e439" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py312_24.3.0-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.3.0-0-Linux-x86_64.sh#96a44849ff17e960eeb8877ecd9055246381c4d4f2d031263b63fa7e2e930af1" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py312_24.3.0-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.3.0-0-MacOSX-arm64.sh#72d4e9198a6884c0bd86cce2b4a3e8abb05415776e3b142c4b1de625bbaf4c50" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py312_24.3.0-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.3.0-0-MacOSX-x86_64.sh#fd71a4bf03fbb21d4b4d25245f17bef6308dfec478e901a60594dfa02e4605eb" "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 --git a/plugins/python-build/share/python-build/miniconda3-3.9-24.3.0-0 b/plugins/python-build/share/python-build/miniconda3-3.9-24.3.0-0 new file mode 100644 index 00000000..8e28547a --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.9-24.3.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py39_24.3.0-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.3.0-0-Linux-aarch64.sh#860f532a33501cf0eccc2677048e21db4a12151938d181821af3e5d30e2dc390" "miniconda" verify_py39 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py39_24.3.0-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.3.0-0-Linux-s390x.sh#1570e27adba2dcc24b182c21cd4e793ab5719aa5b1f7f8e29c16ec74d6d9a16f" "miniconda" verify_py39 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py39_24.3.0-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.3.0-0-Linux-x86_64.sh#1c3d44e987dc56c7d8954419fa1a078be5ddbc293d8cb98b184a23f9a270faad" "miniconda" verify_py39 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py39_24.3.0-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.3.0-0-MacOSX-arm64.sh#f091e4e2d7c2521d40c8c2e561c344a401cf9900e4efa122bf1c93fd6ae5cc9c" "miniconda" verify_py39 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py39_24.3.0-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.3.0-0-MacOSX-x86_64.sh#ed7cfddd313f3ec568f95abae38b337ebf339cddd378ee2f91c86e5da53374e5" "miniconda" verify_py39 + ;; +* ) + { 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 From e0504fc2f88febdc45fdfb82851f672f87e7e797 Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Sun, 22 Dec 2024 20:43:04 +0300 Subject: [PATCH 06/23] add_miniforge.py: Support different Python version lines, improvements * report more progress * don't download SHA files for unsupported architectures --- plugins/python-build/scripts/add_miniforge.py | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/plugins/python-build/scripts/add_miniforge.py b/plugins/python-build/scripts/add_miniforge.py index bd2c91cf..54f06e08 100755 --- a/plugins/python-build/scripts/add_miniforge.py +++ b/plugins/python-build/scripts/add_miniforge.py @@ -11,7 +11,6 @@ logger = logging.getLogger(__name__) logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO')) MINIFORGE_REPO = 'conda-forge/miniforge' -PYTHON_VERSION = '310' DISTRIBUTIONS = ['miniforge', 'mambaforge'] install_script_fmt = """ @@ -38,7 +37,7 @@ here = Path(__file__).resolve() out_dir: Path = here.parent.parent / "share" / "python-build" def download_sha(url): - logger.debug('Downloading SHA file %(url)s', locals()) + logger.info('Downloading SHA file %(url)s', locals()) tup = tuple(reversed(requests.get(url).text.replace('./', '').rstrip().split())) logger.debug('Got %(tup)s', locals()) return tup @@ -56,7 +55,7 @@ def create_spec(filename, sha, url): 'filename': filename, 'sha': sha, 'url': url, - 'py_version': PYTHON_VERSION, + 'py_version': py_version(version), 'flavor': flavor, 'os': os, 'arch': arch, @@ -67,13 +66,29 @@ def create_spec(filename, sha, url): return spec +def py_version(release): + """Suffix for `verify_pyXXX` to call in the generated build script""" + release_line = tuple(int(part) for part in release.split(".")[:2]) + # current version: mentioned under https://github.com/conda-forge/miniforge?tab=readme-ov-file#miniforge3 + # transition points: + # https://github.com/conda-forge/miniforge/blame/main/Miniforge3/construct.yaml + # look for "- python " in non-pypy branch and which tag the commit is first in + if release_line >= (24,5): + # yes, they jumped from 3.10 directly to 3.12 + # https://github.com/conda-forge/miniforge/commit/bddad0baf22b37cfe079e47fd1680fdfb2183590 + return "312" + if release_line >= (4,14): + return "310" + raise ValueError("Bundled Python version unknown for release `%s'"%release) + def supported(filename): return ('pypy' not in filename) and ('Windows' not in filename) def add_version(release): tag_name = release['tag_name'] download_urls = { f['name']: f['browser_download_url'] for f in release['assets'] } - shas = dict([download_sha(url) for (name, url) in download_urls.items() if name.endswith('.sha256') and tag_name in name]) + # can assume that sha files are named similar to release files so can also check supported(on their names) + shas = dict([download_sha(url) for (name, url) in download_urls.items() if name.endswith('.sha256') and supported(os.path.basename(name)) and tag_name in name]) specs = [create_spec(filename, sha, download_urls[filename]) for (filename, sha) in shas.items() if supported(filename)] for distribution in DISTRIBUTIONS: From 5d80be09cb62f269d40cbfd36c7e64bd63168ec5 Mon Sep 17 00:00:00 2001 From: native-api Date: Sun, 22 Dec 2024 22:19:24 +0300 Subject: [PATCH 07/23] CI: only run macos_build_bundled_dependencies and ubuntu_build_tar_gz for CPython (#3141) Only CPython scripts use bundled dependencies for MacOS and two alternative tarballs --- .github/workflows/modified_scripts_build.yml | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/workflows/modified_scripts_build.yml b/.github/workflows/modified_scripts_build.yml index e49e9754..1bef9cbd 100644 --- a/.github/workflows/modified_scripts_build.yml +++ b/.github/workflows/modified_scripts_build.yml @@ -19,9 +19,16 @@ jobs: echo "versions<<$EOF" >> $GITHUB_ENV; echo "$versions" >> $GITHUB_ENV; echo "$EOF" >> $GITHUB_ENV; + + versions_cpython_only=$(grep -Ee '^[[:digit:]]' <<<"$version") + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64); + echo "versions_cpython_only<<$EOF" >> $GITHUB_ENV; + echo $versions_cpython_only >> $GITHUB_ENV; + echo "$EOF" >> $GITHUB_ENV; - id: modified-versions run: | echo "versions=`echo "${{ env.versions }}" | jq -R . | jq -sc .`" >> $GITHUB_OUTPUT + echo "versions_cpython_only=`echo "${{ env.versions_cpython_only }}" | jq -R . | jq -sc .`" >> $GITHUB_OUTPUT macos_build: needs: discover_modified_scripts if: needs.discover_modified_scripts.outputs.versions != '[""]' @@ -84,11 +91,11 @@ jobs: macos_build_bundled_dependencies: needs: discover_modified_scripts - if: needs.discover_modified_scripts.outputs.versions != '[""]' + if: needs.discover_modified_scripts.outputs.versions_cpython_only != '[""]' strategy: fail-fast: false matrix: - python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}} + python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions_cpython_only)}} os: ["macos-13", "macos-14"] runs-on: ${{ matrix.os }} steps: @@ -203,11 +210,11 @@ jobs: fi ubuntu_build_tar_gz: needs: discover_modified_scripts - if: needs.discover_modified_scripts.outputs.versions != '[""]' + if: needs.discover_modified_scripts.outputs.versions_cpython_only != '[""]' strategy: fail-fast: false matrix: - python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}} + python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions_cpython_only)}} os: ["ubuntu-20.04", "ubuntu-22.04"] runs-on: ${{ matrix.os }} steps: From 04b440df0bd51156f00675d82c4e97bd3115959f Mon Sep 17 00:00:00 2001 From: native-api Date: Sun, 22 Dec 2024 23:06:33 +0300 Subject: [PATCH 08/23] Add miniforge3 and mambaforge3 24.1.2-0, 24.3.0-0, 24.5.0-0, 24.7.1-0, 24.7.1-1, 24.7.1-2, 24.9.0-0, 24.9.2-0, 24.11.0-0, 24.11.0-1 (#3142) --- .../share/python-build/mambaforge-24.1.2-0 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.11.0-0 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.11.0-1 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.3.0-0 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.5.0-0 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.7.1-0 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.7.1-1 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.7.1-2 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.9.0-0 | 25 +++++++++++++++++++ .../share/python-build/mambaforge-24.9.2-0 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.1.2-0 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.11.0-0 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.11.0-1 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.5.0-0 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.7.1-0 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.7.1-1 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.7.1-2 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.9.0-0 | 25 +++++++++++++++++++ 18 files changed, 450 insertions(+) create mode 100644 plugins/python-build/share/python-build/mambaforge-24.1.2-0 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.11.0-0 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.11.0-1 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.3.0-0 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.5.0-0 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.7.1-0 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.7.1-1 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.7.1-2 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.9.0-0 create mode 100644 plugins/python-build/share/python-build/mambaforge-24.9.2-0 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.1.2-0 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.11.0-0 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.11.0-1 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.5.0-0 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.7.1-0 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.7.1-1 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.7.1-2 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.9.0-0 diff --git a/plugins/python-build/share/python-build/mambaforge-24.1.2-0 b/plugins/python-build/share/python-build/mambaforge-24.1.2-0 new file mode 100644 index 00000000..902f0c1c --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.1.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.1.2-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Mambaforge-24.1.2-0-Linux-aarch64.sh#937b2dab9a988d83a4a9e574148d1410204bdb3d137905083570e5a1a0a995e4" "miniconda" verify_py310 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.1.2-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Mambaforge-24.1.2-0-Linux-ppc64le.sh#68b28e441171cef9e4da81a1a99264a4b41c4bf99f8c132af9ec38c67fd41694" "miniconda" verify_py310 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.1.2-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Mambaforge-24.1.2-0-Linux-x86_64.sh#b172a8d2ff1c452768dd1beffb8d61880dde89f14e855de7e2459963af33828c" "miniconda" verify_py310 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.1.2-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Mambaforge-24.1.2-0-MacOSX-arm64.sh#b828ec3189393501d859b001f0dcfdf953140bb9506875ae997eb7ff641f6d19" "miniconda" verify_py310 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.1.2-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Mambaforge-24.1.2-0-MacOSX-x86_64.sh#3d3f50d7fa16b65ec507c062e6a337ba9c812650c796eb06495930b8cdd5d471" "miniconda" verify_py310 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.11.0-0 b/plugins/python-build/share/python-build/mambaforge-24.11.0-0 new file mode 100644 index 00000000..c490e0ae --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.11.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.11.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Mambaforge-24.11.0-0-Linux-aarch64.sh#5816a4a11f08b0caba33c38365f65d81f3659fd73da498a87ab4510a58a9abd5" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.11.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Mambaforge-24.11.0-0-Linux-ppc64le.sh#1d530dd326f9b8e29a8005cba28a239f00c7979337d642cc89531b4755fb69b7" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.11.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Mambaforge-24.11.0-0-Linux-x86_64.sh#ae30935839c9e88458ce0605a251fa3f1ade623e3b9709f859460545577779f1" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.11.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Mambaforge-24.11.0-0-MacOSX-arm64.sh#5535232048d9e2430f165153636bbf781f21128132908e9db455130198c79dc5" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.11.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Mambaforge-24.11.0-0-MacOSX-x86_64.sh#f3849b245e724c0d3efde9deb125041b6a78aff69867691e1f7ecff79c40cbd1" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.11.0-1 b/plugins/python-build/share/python-build/mambaforge-24.11.0-1 new file mode 100644 index 00000000..baf39c16 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.11.0-1 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.11.0-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Mambaforge-24.11.0-1-Linux-aarch64.sh#7a02a83679a04e164a7ed5a95fe18688032012a4619a2dba6051dada20a437c3" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.11.0-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Mambaforge-24.11.0-1-Linux-ppc64le.sh#7f985f2dba06a62dcebeaf832ac926ba85707552134b5be310e9a28e869550e1" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.11.0-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Mambaforge-24.11.0-1-Linux-x86_64.sh#fad8afeb7a0247e8e8fd7a82e9306c694421d2e9b6b341752c73737fbebe4d73" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.11.0-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Mambaforge-24.11.0-1-MacOSX-arm64.sh#30d47bb61b337d2a2e166cc56923267089a6be526faf9677666af178a0059f0d" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.11.0-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Mambaforge-24.11.0-1-MacOSX-x86_64.sh#2303dcacb52860660e3f290d06e9313acb9e8826bfa6c1ca10972fedc9e3b388" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.3.0-0 b/plugins/python-build/share/python-build/mambaforge-24.3.0-0 new file mode 100644 index 00000000..b9d1a020 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.3.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.3.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-Linux-aarch64.sh#7f2a0282819f1a12bb44628a836b96fe9dfb21a5920fb8331325c47f91bf9a81" "miniconda" verify_py310 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.3.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-Linux-ppc64le.sh#4550d7cb6ea9bb145ae2aae7b02734a642ef24bda0abfc9b1b6d8d6abf0b7749" "miniconda" verify_py310 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.3.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-Linux-x86_64.sh#0be3654cc3b9c43d3aeeeca5efe6d2f31e9f7711702f3818529b367b3db677fb" "miniconda" verify_py310 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.3.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-MacOSX-arm64.sh#de7c7f229d05104de802f1f729a595736b08139c4ae59ba8ba0049050d63c98f" "miniconda" verify_py310 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.3.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.3.0-0/Mambaforge-24.3.0-0-MacOSX-x86_64.sh#5455900cf1298f21333b7c0d1ec159952e1ef5426563cc97eb7e42053d608afc" "miniconda" verify_py310 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.5.0-0 b/plugins/python-build/share/python-build/mambaforge-24.5.0-0 new file mode 100644 index 00000000..c220cb15 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.5.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.5.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Mambaforge-24.5.0-0-Linux-aarch64.sh#a19c4d40dc4aa9084d729f3fbed36fd7a741bb8a0ef4f7df4bc92c5157817ba8" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.5.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Mambaforge-24.5.0-0-Linux-ppc64le.sh#db6432e76bac0547d65f06e1e0559a0d12147e9020e0cce99c8b07a9c8f2824d" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.5.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Mambaforge-24.5.0-0-Linux-x86_64.sh#afee51df9c542d2e1bef249ad167197ba90fd4386fd32a63383dc95efba4bdfe" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.5.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Mambaforge-24.5.0-0-MacOSX-arm64.sh#88514feaad5bf03605242bd4e767829ad9695587ef51621329343d9960771d2b" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.5.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Mambaforge-24.5.0-0-MacOSX-x86_64.sh#1dfb244bce67bc6d9c0900cce2bf9d9feaf66ba60e811b7c98c6e580394d0ccc" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.7.1-0 b/plugins/python-build/share/python-build/mambaforge-24.7.1-0 new file mode 100644 index 00000000..10b1acc1 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.7.1-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.7.1-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Mambaforge-24.7.1-0-Linux-aarch64.sh#09221afebba644eabccb5a83a92ba7e1bf88ff17171f80f77f95aa81cad225cc" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.7.1-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Mambaforge-24.7.1-0-Linux-ppc64le.sh#1ba05b444bea703097054a25aee2ebb7b04236632791f08f28db82491e005b52" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.7.1-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Mambaforge-24.7.1-0-Linux-x86_64.sh#e72ecc1f1b170ee804da298e54ed616ce82543ce84a8b83f63cb0ada2e4bfa50" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.7.1-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Mambaforge-24.7.1-0-MacOSX-arm64.sh#204be9ff318a5b23f9466f8bbbf18f7e180c6ed393ffc2a9859d8ab06c474248" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.7.1-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Mambaforge-24.7.1-0-MacOSX-x86_64.sh#668e69e89e41c5e9bae4431cf4040346eb6e484831577a28795c44039f70798d" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.7.1-1 b/plugins/python-build/share/python-build/mambaforge-24.7.1-1 new file mode 100644 index 00000000..05e22e41 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.7.1-1 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.7.1-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Mambaforge-24.7.1-1-Linux-aarch64.sh#34ea804e678d71c747d5a7fc99f97ffea395252c8acaf0c66e6dc6812585573b" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.7.1-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Mambaforge-24.7.1-1-Linux-ppc64le.sh#3ee3e1d127adeea1950ed1b73ccbc7e4d9f2a25e98f5a18c09e8a3bb8a905d05" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.7.1-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Mambaforge-24.7.1-1-Linux-x86_64.sh#7b47af948c8a5d786bc7036eb918ba1254273a820bacd83596316919cd097a14" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.7.1-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Mambaforge-24.7.1-1-MacOSX-arm64.sh#5994a2ad9cd40b2c79cc67173b9be42ec04b7b5d65ad17443bd67d68740bc403" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.7.1-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Mambaforge-24.7.1-1-MacOSX-x86_64.sh#4fc2637e40282562a1139827cf36e98a71dfdd9b3306967210f9d02badf65447" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.7.1-2 b/plugins/python-build/share/python-build/mambaforge-24.7.1-2 new file mode 100644 index 00000000..e5ccb946 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.7.1-2 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.7.1-2-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Mambaforge-24.7.1-2-Linux-aarch64.sh#fd99046ef2394198c56df8988f50bbd18967edbc36d7fb29a4814f46ee5ab210" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.7.1-2-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Mambaforge-24.7.1-2-Linux-ppc64le.sh#3a09b99214c47d744c1e80a52de3e26b4a0420463cb50bade04b454af8ace591" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.7.1-2-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Mambaforge-24.7.1-2-Linux-x86_64.sh#4ce9db89d22e3ebd4e5c5d0b745613e25dcef79fba4d67760b09d76f15020d4c" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.7.1-2-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Mambaforge-24.7.1-2-MacOSX-arm64.sh#5920c685a6bedb7d71fe0caafd5fafdb41a664ff6f41ee637fd683e283e4d771" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.7.1-2-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Mambaforge-24.7.1-2-MacOSX-x86_64.sh#ec0ec07816a97080443472e052a6777c1e3870a83cadba1254bfa3bc60f65a6c" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.9.0-0 b/plugins/python-build/share/python-build/mambaforge-24.9.0-0 new file mode 100644 index 00000000..d93ef1c8 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.9.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.9.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Mambaforge-24.9.0-0-Linux-aarch64.sh#2d83f58793e9e303746747a683833aec5b9178fb1a313a3f9a56df2d319e23a5" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.9.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Mambaforge-24.9.0-0-Linux-ppc64le.sh#cc083e40b1891611b26b0f63b5df3422cb4f8e1a29204f55caea514ead528eb2" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.9.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Mambaforge-24.9.0-0-Linux-x86_64.sh#77fb505f6266ffa1b5d59604cf6ba25948627e908928cbff148813957b1c28af" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.9.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Mambaforge-24.9.0-0-MacOSX-arm64.sh#ceb3dac98c1618f652aed493dc9488155ac7ca2c8abaccd18b93e58034a462c6" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.9.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Mambaforge-24.9.0-0-MacOSX-x86_64.sh#046d8eedabafc798c88f3764e71b6ca22728ccbf04806b68450421cb6ebdaae6" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/mambaforge-24.9.2-0 b/plugins/python-build/share/python-build/mambaforge-24.9.2-0 new file mode 100644 index 00000000..25c39a99 --- /dev/null +++ b/plugins/python-build/share/python-build/mambaforge-24.9.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Mambaforge-24.9.2-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.2-0/Mambaforge-24.9.2-0-Linux-aarch64.sh#f142244dd08dc1a7dbb95a48f22e2c0cba01602bc0b6b0425520460d278c2f4d" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Mambaforge-24.9.2-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.2-0/Mambaforge-24.9.2-0-Linux-ppc64le.sh#0c442d49787dea24847690e85744566cc901641b2c0ffd3f4e6579c9c4306a94" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Mambaforge-24.9.2-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.2-0/Mambaforge-24.9.2-0-Linux-x86_64.sh#9e122fbb925a96011b876fcf118d70c55cbe982b6ee001fe23aa8a2600d649d1" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Mambaforge-24.9.2-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.2-0/Mambaforge-24.9.2-0-MacOSX-arm64.sh#85f1c04493513a4552a14ed32b785c0b5484ecfafa827ef413605fd20e5d5cea" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Mambaforge-24.9.2-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.2-0/Mambaforge-24.9.2-0-MacOSX-x86_64.sh#f845ed82244fe553dc4d1b3a7c134e3c0ede26a84d2d279cfa93bdcb0fc739b0" "miniconda" verify_py312 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Mambaforge is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/miniforge3-24.1.2-0 b/plugins/python-build/share/python-build/miniforge3-24.1.2-0 new file mode 100644 index 00000000..30594ac5 --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.1.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.1.2-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Miniforge3-24.1.2-0-Linux-aarch64.sh#f881e2fa24aa898c25fac3250ccb213e8b892fdd95851f000dce93c419e8f89a" "miniconda" verify_py310 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.1.2-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Miniforge3-24.1.2-0-Linux-ppc64le.sh#858b9acbcca1e3f67298a56095f547f2c540d79e1020918cf0d8d6a8af407542" "miniconda" verify_py310 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.1.2-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Miniforge3-24.1.2-0-Linux-x86_64.sh#dbadb808edf4da00af35d888d3eeebbfdce71972b60bf4b16dbacaee2ab57f28" "miniconda" verify_py310 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.1.2-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Miniforge3-24.1.2-0-MacOSX-arm64.sh#b372d2189e5752e92a4b4bbc4a91b8a08a4f0612d39c0762111c8dd60914b1c7" "miniconda" verify_py310 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.1.2-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.1.2-0/Miniforge3-24.1.2-0-MacOSX-x86_64.sh#e447e7e0173e94ea8725a4c6675c29bcd3082f8fff7948b47e05af72b12d1261" "miniconda" verify_py310 + ;; +* ) + { 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 --git a/plugins/python-build/share/python-build/miniforge3-24.11.0-0 b/plugins/python-build/share/python-build/miniforge3-24.11.0-0 new file mode 100644 index 00000000..fe4c137d --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.11.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.11.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Miniforge3-24.11.0-0-Linux-aarch64.sh#47cfd3caf3a0a6f56ebbfc7da775306fe076b8e49b14d3fd88b5463ab324c185" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.11.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Miniforge3-24.11.0-0-Linux-ppc64le.sh#877e3992041e36f49ce16681e5b24e23617ad044d1a077cf21b5cce90896e244" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.11.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Miniforge3-24.11.0-0-Linux-x86_64.sh#5fa69e4294be07229a94a1c1e8073fbf63894c757c2136f98c87b48f9d458793" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.11.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Miniforge3-24.11.0-0-MacOSX-arm64.sh#3c7c115de0ed6103b7d2e5c1fe969c2c9fd3aec4a454c1d5aa9b5721414413e0" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.11.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Miniforge3-24.11.0-0-MacOSX-x86_64.sh#1f0527ec14784de0766d8405a674868e51afb869ea16c915fb2672256209ecfd" "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 --git a/plugins/python-build/share/python-build/miniforge3-24.11.0-1 b/plugins/python-build/share/python-build/miniforge3-24.11.0-1 new file mode 100644 index 00000000..89dfd50b --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.11.0-1 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.11.0-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Miniforge3-24.11.0-1-Linux-aarch64.sh#21e5af2d961a19535e1ba8d67d8ce46c522b6e616dea826c6987ff4db8499b73" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.11.0-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Miniforge3-24.11.0-1-Linux-ppc64le.sh#20847d0978fbf301da2f9d66ae47dc9da8c080cc1e3f70acb2264e3b6ff99ceb" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.11.0-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Miniforge3-24.11.0-1-Linux-x86_64.sh#936836bb2dd546a7ab5999bed2a2d1ce8416c5359e28199df8b384529a85dcac" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.11.0-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Miniforge3-24.11.0-1-MacOSX-arm64.sh#6c2ff0b7cf1b6300a3dc6125da8e78407d3ffd3a7359742957fcca0cd7cd7604" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.11.0-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.0-1/Miniforge3-24.11.0-1-MacOSX-x86_64.sh#5f42fb48c528b2f60a659d0cc19adb74a4098d8a1519ac7fe0724273eae050c5" "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 --git a/plugins/python-build/share/python-build/miniforge3-24.5.0-0 b/plugins/python-build/share/python-build/miniforge3-24.5.0-0 new file mode 100644 index 00000000..7056c6e3 --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.5.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.5.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Miniforge3-24.5.0-0-Linux-aarch64.sh#848f2d6917c473b1091e31a51241a7626d4dac4b90809a9b2ed937e0cea18d87" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.5.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Miniforge3-24.5.0-0-Linux-ppc64le.sh#1a947af7d68e8a06c2057c9a01ec03a5f7e26133fe42ad531f0a4b898b91dc86" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.5.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Miniforge3-24.5.0-0-Linux-x86_64.sh#a754b435830e1c038dada434873ad69a99970a4ea17a68d3bbcade0a37c8c8fb" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.5.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Miniforge3-24.5.0-0-MacOSX-arm64.sh#9c423bb8c9b80709f9682eac9d2a8f5cdecb54601fd4ec1ec6bb98349cf54a92" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.5.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.5.0-0/Miniforge3-24.5.0-0-MacOSX-x86_64.sh#31ad3bbd4114021cdd1bf14a641bcf0f38b4dc71f0931be2720528c2555a587e" "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 --git a/plugins/python-build/share/python-build/miniforge3-24.7.1-0 b/plugins/python-build/share/python-build/miniforge3-24.7.1-0 new file mode 100644 index 00000000..6bd85743 --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.7.1-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.7.1-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Miniforge3-24.7.1-0-Linux-aarch64.sh#7a3372268b45679584043b4ba1e0318ee5027384a8d330f2d991b14d815d6a6d" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.7.1-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Miniforge3-24.7.1-0-Linux-ppc64le.sh#af1015e0531f4ff5e19001c476b720609609401d9cb80fc8a02c5e5d50e02ed5" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.7.1-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Miniforge3-24.7.1-0-Linux-x86_64.sh#b64f77042cf8eafd31ced64f9253a74fb85db63545fe167ba5756aea0e8125be" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.7.1-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Miniforge3-24.7.1-0-MacOSX-arm64.sh#2de2a2a31964be19ae157b5f93429cb50f8bf3983c580c8b14acefaf3d7e7c5b" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.7.1-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-0/Miniforge3-24.7.1-0-MacOSX-x86_64.sh#03b73291d46199a40cb694a400010de9d737e6397d3eed676f28828fe2df5025" "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 --git a/plugins/python-build/share/python-build/miniforge3-24.7.1-1 b/plugins/python-build/share/python-build/miniforge3-24.7.1-1 new file mode 100644 index 00000000..58f6294c --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.7.1-1 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.7.1-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Miniforge3-24.7.1-1-Linux-aarch64.sh#9ed15a4d030928c6e537cb673538803ca5f07adb89957b9cfc24ebdc00ba4bf9" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.7.1-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Miniforge3-24.7.1-1-Linux-ppc64le.sh#9b05977d9fdadcc9cd9aeb9199a302139b9a77f708e39e83bfc0b1a1f4a7d4b8" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.7.1-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Miniforge3-24.7.1-1-Linux-x86_64.sh#6ae27b78c8cd5ce19987970dc734648ca0bf7ce7a7b3c0e41ab514cfe92add1d" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.7.1-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Miniforge3-24.7.1-1-MacOSX-arm64.sh#4effe540ea3abe9b2b5c1dad897f6186f343c4d6c8c234f8a5a4cb544ed14ec9" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.7.1-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-1/Miniforge3-24.7.1-1-MacOSX-x86_64.sh#8c880fdb3cb80e1a2ebbfd82cc84b2ab7409aa515843423e8aaa77cd08149053" "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 --git a/plugins/python-build/share/python-build/miniforge3-24.7.1-2 b/plugins/python-build/share/python-build/miniforge3-24.7.1-2 new file mode 100644 index 00000000..c3b46604 --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.7.1-2 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.7.1-2-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Miniforge3-24.7.1-2-Linux-aarch64.sh#7bf60bce50f57af7ea4500b45eeb401d9350011ab34c9c45f736647d8dba9021" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.7.1-2-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Miniforge3-24.7.1-2-Linux-ppc64le.sh#bb5d14dac73b85da8fbe386cdd3c94022a468563a0c55e6b20a58d82b55a9737" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.7.1-2-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Miniforge3-24.7.1-2-Linux-x86_64.sh#636f7faca2d51ee42b4640ce160c751a46d57621ef4bf14378704c87c5db4fe3" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.7.1-2-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Miniforge3-24.7.1-2-MacOSX-arm64.sh#cafa7cc6d7baef6ea292880ae46c6c9d28bc1156394a418ceada30118d8b6b9a" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.7.1-2-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.7.1-2/Miniforge3-24.7.1-2-MacOSX-x86_64.sh#ec6150160703ee622e6520863f68c5130473b69558aed822c4e369e90ef42aad" "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 --git a/plugins/python-build/share/python-build/miniforge3-24.9.0-0 b/plugins/python-build/share/python-build/miniforge3-24.9.0-0 new file mode 100644 index 00000000..561e9afd --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.9.0-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.9.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Miniforge3-24.9.0-0-Linux-aarch64.sh#7fae81c0df8545175a647e09b1372dcbf32a1b7fcc194d0d5ffc9a13be4e4269" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.9.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Miniforge3-24.9.0-0-Linux-ppc64le.sh#d442c75fd69359dd8ef444e3ba16a83d88ff437c92669661e2450b0d81575305" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.9.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Miniforge3-24.9.0-0-Linux-x86_64.sh#a75b489adb52effd81d15f0e700c0803992fe6a2357e8eb80685a529df7daa48" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.9.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Miniforge3-24.9.0-0-MacOSX-arm64.sh#ac903e9babc2067add5a6619a1e37bbd4ddb9177ba633ecfa63c8e68df6e1fca" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.9.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.9.0-0/Miniforge3-24.9.0-0-MacOSX-x86_64.sh#0b32751fe373819f813490b640c7e83baecf208727fae34a7495d3127f983663" "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 From 2acb2296e505067cf944ab6cd464118c68b01f40 Mon Sep 17 00:00:00 2001 From: native-api Date: Sun, 22 Dec 2024 23:10:42 +0300 Subject: [PATCH 09/23] Exclude broken miniforge3/mambaforge3 22.11.0-0, 22.11.0-1, 22.11.0-2 from generation [no ci] (#3143) --- plugins/python-build/scripts/add_miniforge.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/python-build/scripts/add_miniforge.py b/plugins/python-build/scripts/add_miniforge.py index 54f06e08..5612584a 100755 --- a/plugins/python-build/scripts/add_miniforge.py +++ b/plugins/python-build/scripts/add_miniforge.py @@ -13,6 +13,13 @@ logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO')) MINIFORGE_REPO = 'conda-forge/miniforge' DISTRIBUTIONS = ['miniforge', 'mambaforge'] +SKIPPED_RELEASES = [ + '4.13.0-0', #has no Mambaforge. We already generated scripts for Miniforge + '22.11.1-0', #MacOS packages are broken (have broken dep tarballs, downloading them fails with 403) + '22.11.1-1', #MacOS packages are broken (have broken dep tarballs, downloading them fails with 403) + '22.11.1-2', #MacOS packages are broken (have broken dep tarballs, downloading them fails with 403) +] + install_script_fmt = """ case "$(anaconda_architecture 2>/dev/null || true)" in {install_lines} @@ -119,7 +126,7 @@ for release in requests.get(f'https://api.github.com/repos/{MINIFORGE_REPO}/rele # Build scripts for miniforge3-4.13.0-0 have already been generated. # Assuming this was a fluke, we don't yet need to implement proactively checking all releases for contents # or ignoring a release if _any_ of the flavors is already present in Pyenv. - if version == '4.13.0-0': + if version in SKIPPED_RELEASES: continue if any(not list(out_dir.glob(f'{distribution}*-{version}')) for distribution in DISTRIBUTIONS): From 2aff0df76deacd9b6c49de8870f0255d24d3b31b Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Sun, 22 Dec 2024 23:22:20 +0300 Subject: [PATCH 10/23] 2.5.0 --- CHANGELOG.md | 8 ++++++++ libexec/pyenv---version | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2c28969..89e8786e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Version History +## Release v2.5.0 +* `pyenv init -` performance improvements; recommend using `pyenv init - ` by @ChristianFredrikJohnsen in https://github.com/pyenv/pyenv/pull/3136 +* Add miniconda3-24.11.1-0 by @binbjz in https://github.com/pyenv/pyenv/pull/3138 +* Add miniconda3-24.3.0-0 by @native-api in https://github.com/pyenv/pyenv/pull/3139 +* CI: only run macos_build_bundled_dependencies and ubuntu_build_tar_gz for CPython by @native-api in https://github.com/pyenv/pyenv/pull/3141 +* Add miniforge3 and mambaforge3 24.1.2-0, 24.3.0-0, 24.5.0-0, 24.7.1-0, 24.7.1-1, 24.7.1-2, 24.9.0-0, 24.9.2-0, 24.11.0-0, 24.11.0-1 by @native-api in https://github.com/pyenv/pyenv/pull/3142 +* Skip broken miniforge3/mambaforge3 22.11.0-0, 22.11.0-1, 22.11.0-2 in the generation script by @native-api in https://github.com/pyenv/pyenv/pull/3143 + ## Release v2.4.23 * README: explain using multiple versions by @Finkregh in https://github.com/pyenv/pyenv/pull/3126 * Support PACKAGE_CPPFLAGS and PACKAGE_LDFLAGS by @native-api in https://github.com/pyenv/pyenv/pull/3130 diff --git a/libexec/pyenv---version b/libexec/pyenv---version index 5b0626ad..5a79601f 100755 --- a/libexec/pyenv---version +++ b/libexec/pyenv---version @@ -12,7 +12,7 @@ set -e [ -n "$PYENV_DEBUG" ] && set -x -version="2.4.23" +version="2.5.0" git_revision="" if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then From 330e3fc130cd464a012a0b06d8c1ea41447956eb Mon Sep 17 00:00:00 2001 From: native-api Date: Sun, 22 Dec 2024 23:38:58 +0300 Subject: [PATCH 11/23] CI: use Ubuntu 24.04; use ubuntu-latest for the ubuntu_build check (#3144) Now that ubuntu-24 is out of beta at Github Since for ubuntu_build, we only use one OS version and the changes between versions are not as drastic as with MacOS, it seems safe to have it upgrade automatically. --- .github/workflows/modified_scripts_build.yml | 4 ++-- .github/workflows/pyenv_tests.yml | 1 + .github/workflows/ubuntu_build.yml | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/modified_scripts_build.yml b/.github/workflows/modified_scripts_build.yml index 1bef9cbd..a9cd75a8 100644 --- a/.github/workflows/modified_scripts_build.yml +++ b/.github/workflows/modified_scripts_build.yml @@ -157,7 +157,7 @@ jobs: fail-fast: false matrix: python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}} - os: ["ubuntu-20.04", "ubuntu-22.04"] + os: ["ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 @@ -215,7 +215,7 @@ jobs: fail-fast: false matrix: python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions_cpython_only)}} - os: ["ubuntu-20.04", "ubuntu-22.04"] + os: ["ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04"] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/pyenv_tests.yml b/.github/workflows/pyenv_tests.yml index aa8f4959..8cead600 100644 --- a/.github/workflows/pyenv_tests.yml +++ b/.github/workflows/pyenv_tests.yml @@ -10,6 +10,7 @@ jobs: fail-fast: false matrix: os: + - ubuntu-24.04 - ubuntu-22.04 - ubuntu-20.04 - macos-14 diff --git a/.github/workflows/ubuntu_build.yml b/.github/workflows/ubuntu_build.yml index 71c23dff..b8b08e2b 100644 --- a/.github/workflows/ubuntu_build.yml +++ b/.github/workflows/ubuntu_build.yml @@ -15,7 +15,7 @@ jobs: - "3.11" - "3.12" - "3.13" - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # Normally, we would use the superbly maintained... From 4c6b0e9c3b33c0315becb94272841468f71a8f37 Mon Sep 17 00:00:00 2001 From: Christian Fredrik Johnsen Date: Mon, 23 Dec 2024 18:58:54 +0100 Subject: [PATCH 12/23] Fix: mistake in configuration hints in `pyenv init` and manpage. (#3145) --- libexec/pyenv-init | 2 +- man/man1/pyenv.1 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libexec/pyenv-init b/libexec/pyenv-init index 19d3ce1a..3892ec65 100755 --- a/libexec/pyenv-init +++ b/libexec/pyenv-init @@ -159,7 +159,7 @@ function help_() { echo echo 'export PYENV_ROOT="$HOME/.pyenv"' echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' - echo 'eval "$(pyenv init -'$shell')"' + echo 'eval "$(pyenv init - '$shell')"' ;; esac echo diff --git a/man/man1/pyenv.1 b/man/man1/pyenv.1 index c3d2de1b..106c2574 100644 --- a/man/man1/pyenv.1 +++ b/man/man1/pyenv.1 @@ -14,7 +14,7 @@ pyenv lets you easily switch between multiple versions of Python\. It's simple, .RS 15 .nf if command -v pyenv 1>/dev/null 2>&1; then\n - eval "$(pyenv init -)" \n + eval "$(pyenv init - bash)" \n fi .fi .RE From 850a74c5cd2cac8990008864b94254d6acfcd6c6 Mon Sep 17 00:00:00 2001 From: Jay Bazuzi Date: Sat, 4 Jan 2025 08:43:09 -0800 Subject: [PATCH 13/23] README: Add recommended curl arguments to suggested installer invocation (#3155) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2c3e0763..134341ea 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ The Homebrew option from the [MacOS section below](#macos) would also work if yo ##### 1. Automatic installer (Recommended) ```bash -curl https://pyenv.run | bash +curl -fsSL https://pyenv.run | bash ``` For more details visit our other project: From 01732990788b575d665e9f3f257dc32d0031a04c Mon Sep 17 00:00:00 2001 From: native-api Date: Wed, 8 Jan 2025 23:51:11 +0300 Subject: [PATCH 14/23] Add miniforge3-24.11.2-0, miniforge3-24.11.2-1 (#3163) --- .../share/python-build/miniforge3-24.11.2-0 | 25 +++++++++++++++++++ .../share/python-build/miniforge3-24.11.2-1 | 25 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 plugins/python-build/share/python-build/miniforge3-24.11.2-0 create mode 100644 plugins/python-build/share/python-build/miniforge3-24.11.2-1 diff --git a/plugins/python-build/share/python-build/miniforge3-24.11.2-0 b/plugins/python-build/share/python-build/miniforge3-24.11.2-0 new file mode 100644 index 00000000..4f2acc06 --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.11.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.11.2-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-0/Miniforge3-24.11.2-0-Linux-aarch64.sh#4f182710a6394f81eda2a6f8578c63d4b52842ad8a9c6b54c7a4cf43513cf118" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.11.2-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-0/Miniforge3-24.11.2-0-Linux-ppc64le.sh#6fb5e999d256eeb79c0ce793145966b995b22ff1001ec0fd662be2ba4a4fb538" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.11.2-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-0/Miniforge3-24.11.2-0-Linux-x86_64.sh#e6ac45dc94bbc93a31802ed8b74f41b653a132e9f5d4d6b028ae00c5a9c563ba" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.11.2-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-0/Miniforge3-24.11.2-0-MacOSX-arm64.sh#f62f38d92e4ae015d82d1aa4aad392747f4e1a61d75deece3a68bdaf472e3ca7" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.11.2-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-0/Miniforge3-24.11.2-0-MacOSX-x86_64.sh#9dd0058e927986bc53d0685f6ac995267f7d8edbd178b4a47692bf08bfd7b11c" "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 --git a/plugins/python-build/share/python-build/miniforge3-24.11.2-1 b/plugins/python-build/share/python-build/miniforge3-24.11.2-1 new file mode 100644 index 00000000..a355820a --- /dev/null +++ b/plugins/python-build/share/python-build/miniforge3-24.11.2-1 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniforge3-24.11.2-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-1/Miniforge3-24.11.2-1-Linux-aarch64.sh#ef4e191fc6843f343d51b31310d36eacbc1de2899ea233190ff63188ffe30894" "miniconda" verify_py312 + ;; +"Linux-ppc64le" ) + install_script "Miniforge3-24.11.2-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-1/Miniforge3-24.11.2-1-Linux-ppc64le.sh#ddda150ca836abaa03e718945687614f9b8fd9694dffd7f3d73d416ba2027e0d" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniforge3-24.11.2-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-1/Miniforge3-24.11.2-1-Linux-x86_64.sh#c79c7326a846d6df9ec824e19ccc99454d8f5009e37888df301b23eef11280ca" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniforge3-24.11.2-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-1/Miniforge3-24.11.2-1-MacOSX-arm64.sh#8bde418e8f5030b887535940cad3b531adf128a38b99e58ba6a26e68e9d5ad06" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniforge3-24.11.2-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/24.11.2-1/Miniforge3-24.11.2-1-MacOSX-x86_64.sh#50a00997a0f08737d076e93f964dffcb51bc4792fd9371344fd244ab97bcf61c" "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 From e98a0b489f62f22204cbd13fdac03aca79d98623 Mon Sep 17 00:00:00 2001 From: native-api Date: Thu, 9 Jan 2025 02:16:06 +0300 Subject: [PATCH 15/23] Fix "Unsupported options" error building bundled OpenSSL <3.2.0 (#3164) --- plugins/python-build/bin/python-build | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build index 34fd0d27..f39225f6 100755 --- a/plugins/python-build/bin/python-build +++ b/plugins/python-build/bin/python-build @@ -1600,9 +1600,13 @@ build_package_mac_openssl() { local nokerberos [[ "$1" != openssl-1.0.* ]] || nokerberos=1 + + # switches introduced in OpenSSL 3.2 + local extra_no_features + [[ $(openssl_version $1) -ge 30200 ]] && extra_no_features=1 # Compile a shared lib with zlib dynamically linked. - package_option openssl configure --openssldir="$OPENSSLDIR" zlib-dynamic no-ssl3 shared ${nokerberos:+no-ssl2 no-krb5} no-docs no-apps no-tests + package_option openssl configure --openssldir="$OPENSSLDIR" zlib-dynamic no-ssl3 shared ${nokerberos:+no-ssl2 no-krb5} ${extra_no_features:+no-docs no-apps} no-tests build_package_standard "$@" @@ -1612,6 +1616,16 @@ build_package_mac_openssl() { security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$pem_file" } +# openssl-1.0.1k -> 10001 +# openssl-3.2.1 -> 30201 +openssl_version() { + local -a ver + IFS=- ver=( ${1:?} ) + IFS=. ver=( ${ver[0]} ) + [[ ${ver[2]} =~ '^([[:digit:]]+)[[:alpha:]]$' ]] && ver[2]="${BASH_REMATCH[1]}" + echo $(( ${ver[0]}*10000 + ${ver[1]}*100 + ${ver[2]} )) +} + # Post-install check that the openssl extension was built. build_package_verify_openssl() { "$RUBY_BIN" -e ' From c9514d8e8ec7db4b24085d697081fc8e243d5e53 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sun, 19 Jan 2025 08:22:10 -0500 Subject: [PATCH 16/23] Add CPython 3.14.0a4 (#3168) --- plugins/python-build/share/python-build/3.14.0a3t | 2 -- .../python-build/share/python-build/{3.14.0a3 => 3.14.0a4} | 4 ++-- plugins/python-build/share/python-build/3.14.0a4t | 2 ++ 3 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 plugins/python-build/share/python-build/3.14.0a3t rename plugins/python-build/share/python-build/{3.14.0a3 => 3.14.0a4} (59%) create mode 100644 plugins/python-build/share/python-build/3.14.0a4t diff --git a/plugins/python-build/share/python-build/3.14.0a3t b/plugins/python-build/share/python-build/3.14.0a3t deleted file mode 100644 index c9751142..00000000 --- a/plugins/python-build/share/python-build/3.14.0a3t +++ /dev/null @@ -1,2 +0,0 @@ -export PYTHON_BUILD_FREE_THREADING=1 -source "$(dirname "${BASH_SOURCE[0]}")"/3.14.0a3 diff --git a/plugins/python-build/share/python-build/3.14.0a3 b/plugins/python-build/share/python-build/3.14.0a4 similarity index 59% rename from plugins/python-build/share/python-build/3.14.0a3 rename to plugins/python-build/share/python-build/3.14.0a4 index 0cf90212..93f0fd90 100644 --- a/plugins/python-build/share/python-build/3.14.0a3 +++ b/plugins/python-build/share/python-build/3.14.0a4 @@ -3,7 +3,7 @@ export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 install_package "openssl-3.3.2" "https://github.com/openssl/openssl/releases/download/openssl-3.3.2/openssl-3.3.2.tar.gz#2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281" mac_openssl --if has_broken_mac_openssl install_package "readline-8.2" "https://ftpmirror.gnu.org/readline/readline-8.2.tar.gz#3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35" mac_readline --if has_broken_mac_readline if has_tar_xz_support; then - install_package "Python-3.14.0a3" "https://www.python.org/ftp/python/3.14.0/Python-3.14.0a3.tar.xz#94349df207456a575a8867c20b4ca434f870e1920dcdcc8fdf797e1af49abe90" standard verify_py313 copy_python_gdb ensurepip + install_package "Python-3.14.0a4" "https://www.python.org/ftp/python/3.14.0/Python-3.14.0a4.tar.xz#c24f07881873c1d460228795ca6ca8c99130e30c773c91463d30d7ea8ff0e70b" standard verify_py313 copy_python_gdb ensurepip else - install_package "Python-3.14.0a3" "https://www.python.org/ftp/python/3.14.0/Python-3.14.0a3.tgz#6ecc4203d8de18c7295c4cdd012e4a4acff83261f8a99bdf15318af9bb1cc811" standard verify_py313 copy_python_gdb ensurepip + install_package "Python-3.14.0a4" "https://www.python.org/ftp/python/3.14.0/Python-3.14.0a4.tgz#cc9dcee27cc27fc6ef4ff47eb93abf48f158396a70aa67f1504893232911b4e2" standard verify_py313 copy_python_gdb ensurepip fi diff --git a/plugins/python-build/share/python-build/3.14.0a4t b/plugins/python-build/share/python-build/3.14.0a4t new file mode 100644 index 00000000..235535ac --- /dev/null +++ b/plugins/python-build/share/python-build/3.14.0a4t @@ -0,0 +1,2 @@ +export PYTHON_BUILD_FREE_THREADING=1 +source "$(dirname "${BASH_SOURCE[0]}")"/3.14.0a4 From 734d6323d8fda6998b0dcd87e8871c8bec189b72 Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Sun, 19 Jan 2025 17:47:51 +0300 Subject: [PATCH 17/23] 2.5.1 --- CHANGELOG.md | 8 ++++++++ libexec/pyenv---version | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 89e8786e..766b346f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Version History +## Release v2.5.1 +* CI: use Ubuntu 24.04; use ubuntu-latest for the ubuntu_build check by @native-api in https://github.com/pyenv/pyenv/pull/3144 +* Fix: mistake in configuration hints in `pyenv init` and manpage by @ChristianFredrikJohnsen in https://github.com/pyenv/pyenv/pull/3145 +* README: Add recommended curl arguments to suggested installer invocation by @JayBazuzi in https://github.com/pyenv/pyenv/pull/3155 +* Add miniforge3-24.11.2-0, miniforge3-24.11.2-1 by @native-api in https://github.com/pyenv/pyenv/pull/3163 +* Fix "Unsupported options" error building bundled OpenSSL <3.2.0 by @native-api in https://github.com/pyenv/pyenv/pull/3164 +* Add CPython 3.14.0a4 by @nedbat in https://github.com/pyenv/pyenv/pull/3168 + ## Release v2.5.0 * `pyenv init -` performance improvements; recommend using `pyenv init - ` by @ChristianFredrikJohnsen in https://github.com/pyenv/pyenv/pull/3136 * Add miniconda3-24.11.1-0 by @binbjz in https://github.com/pyenv/pyenv/pull/3138 diff --git a/libexec/pyenv---version b/libexec/pyenv---version index 5a79601f..77a57795 100755 --- a/libexec/pyenv---version +++ b/libexec/pyenv---version @@ -12,7 +12,7 @@ set -e [ -n "$PYENV_DEBUG" ] && set -x -version="2.5.0" +version="2.5.1" git_revision="" if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then From 8d93ccae3939cccef5d78bf41ab90e9799e2eaaa Mon Sep 17 00:00:00 2001 From: threadflow <1308665+threadflow@users.noreply.github.com> Date: Sun, 2 Feb 2025 09:50:48 +0800 Subject: [PATCH 18/23] Fix OpenSSL version parsing in python-build script (#3181) --- plugins/python-build/bin/python-build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build index f39225f6..57635209 100755 --- a/plugins/python-build/bin/python-build +++ b/plugins/python-build/bin/python-build @@ -1621,7 +1621,7 @@ build_package_mac_openssl() { openssl_version() { local -a ver IFS=- ver=( ${1:?} ) - IFS=. ver=( ${ver[0]} ) + IFS=. ver=( ${ver[1]} ) [[ ${ver[2]} =~ '^([[:digit:]]+)[[:alpha:]]$' ]] && ver[2]="${BASH_REMATCH[1]}" echo $(( ${ver[0]}*10000 + ${ver[1]}*100 + ${ver[2]} )) } From 823dd3cef9d53621a5bdbf68f83713e1b15bfc80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20=C5=A0im=C3=A1=C4=8Dek?= Date: Sun, 2 Feb 2025 16:57:19 +0100 Subject: [PATCH 19/23] Add GraalPy 24.1.2 (#3176) --- .../share/python-build/graalpy-24.1.2 | 64 +++++++++++++++++++ .../python-build/graalpy-community-24.1.2 | 54 ++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 plugins/python-build/share/python-build/graalpy-24.1.2 create mode 100644 plugins/python-build/share/python-build/graalpy-community-24.1.2 diff --git a/plugins/python-build/share/python-build/graalpy-24.1.2 b/plugins/python-build/share/python-build/graalpy-24.1.2 new file mode 100644 index 00000000..21655a67 --- /dev/null +++ b/plugins/python-build/share/python-build/graalpy-24.1.2 @@ -0,0 +1,64 @@ +# Copyright (c) 2025, 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='24.1.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="859292dddb7deb47280e445afa61aa58326900e15fbf0d3fa8044f1a1ce23594" + ;; +"linux-aarch64" ) + checksum="5ad46ba7ef58f2b3871cb99aa244ef9bf6e6e4206770e027603e3c323ba3e67b" + ;; +"macos-amd64" ) + checksum="e2eed01618ae788b24e01ab423ff27382e15faa1ecb7c8eb7e9809b022c74fe8" + ;; +"macos-aarch64" ) + checksum="daa1fa51129f1bc4e5f0f2251ce7d0e039019eb9569579bb41aaa905407fa6a3" + ;; +* ) + { 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 --git a/plugins/python-build/share/python-build/graalpy-community-24.1.2 b/plugins/python-build/share/python-build/graalpy-community-24.1.2 new file mode 100644 index 00000000..fccdffc1 --- /dev/null +++ b/plugins/python-build/share/python-build/graalpy-community-24.1.2 @@ -0,0 +1,54 @@ +# Copyright (c) 2025, 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='24.1.2' +BUILD='' + +graalpy_arch="$(graalpy_architecture 2>/dev/null || true)" + +case "$graalpy_arch" in +"linux-amd64" ) + checksum="d1bf37fb9edf8065e6dab4f351d2006acaff2b2e692cfaea07199380c892ee0c" + ;; +"linux-aarch64" ) + checksum="2568d5f7f3b9d8827de33eb864783c1fed4bc3e729a6fd14e072311c5105346f" + ;; +"macos-amd64" ) + checksum="29f9f19604bf2f7d255add89fa5639d6aab6877799414cb820398fed8ef3d5bb" + ;; +"macos-aarch64" ) + checksum="dcc4fa73cdb866e88c51219ddf9b9689b62633fc8304649372fe8ada4e03957d" + ;; +* ) + { 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 From 8775ffe76cc965e345fb3a82162050814e96d911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edgar=20Ram=C3=ADrez=20Mondrag=C3=B3n?= Date: Wed, 5 Feb 2025 10:52:09 -0600 Subject: [PATCH 20/23] Add CPython 3.12.9 and 3.13.2 (#3183) --- plugins/python-build/share/python-build/3.12.9 | 9 +++++++++ plugins/python-build/share/python-build/3.13.2 | 9 +++++++++ plugins/python-build/share/python-build/3.13.2t | 2 ++ 3 files changed, 20 insertions(+) create mode 100644 plugins/python-build/share/python-build/3.12.9 create mode 100644 plugins/python-build/share/python-build/3.13.2 create mode 100644 plugins/python-build/share/python-build/3.13.2t diff --git a/plugins/python-build/share/python-build/3.12.9 b/plugins/python-build/share/python-build/3.12.9 new file mode 100644 index 00000000..58c77022 --- /dev/null +++ b/plugins/python-build/share/python-build/3.12.9 @@ -0,0 +1,9 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-3.3.2" "https://github.com/openssl/openssl/releases/download/openssl-3.3.2/openssl-3.3.2.tar.gz#2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.2" "https://ftpmirror.gnu.org/readline/readline-8.2.tar.gz#3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.12.9" "https://www.python.org/ftp/python/3.12.9/Python-3.12.9.tar.xz#7220835d9f90b37c006e9842a8dff4580aaca4318674f947302b8d28f3f81112" standard verify_py312 copy_python_gdb ensurepip +else + install_package "Python-3.12.9" "https://www.python.org/ftp/python/3.12.9/Python-3.12.9.tgz#45313e4c5f0e8acdec9580161d565cf5fea578e3eabf25df7cc6355bf4afa1ee" standard verify_py312 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.13.2 b/plugins/python-build/share/python-build/3.13.2 new file mode 100644 index 00000000..1df925ce --- /dev/null +++ b/plugins/python-build/share/python-build/3.13.2 @@ -0,0 +1,9 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-3.4.0" "https://github.com/openssl/openssl/releases/download/openssl-3.4.0/openssl-3.4.0.tar.gz#e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.2" "https://ftpmirror.gnu.org/readline/readline-8.2.tar.gz#3feb7171f16a84ee82ca18a36d7b9be109a52c04f492a053331d7d1095007c35" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.13.2" "https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tar.xz#d984bcc57cd67caab26f7def42e523b1c015bbc5dc07836cf4f0b63fa159eb56" standard verify_py313 copy_python_gdb ensurepip +else + install_package "Python-3.13.2" "https://www.python.org/ftp/python/3.13.2/Python-3.13.2.tgz#b8d79530e3b7c96a5cb2d40d431ddb512af4a563e863728d8713039aa50203f9" standard verify_py313 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.13.2t b/plugins/python-build/share/python-build/3.13.2t new file mode 100644 index 00000000..af5456b7 --- /dev/null +++ b/plugins/python-build/share/python-build/3.13.2t @@ -0,0 +1,2 @@ +export PYTHON_BUILD_FREE_THREADING=1 +source "$(dirname "${BASH_SOURCE[0]}")"/3.13.2 From b3dad5887e1daef68a73360546082ad4eb4b82b8 Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Wed, 5 Feb 2025 19:54:06 +0300 Subject: [PATCH 21/23] 2.5.2 --- CHANGELOG.md | 5 +++++ libexec/pyenv---version | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 766b346f..89fd87eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Version History +## Release v2.5.2 +* Fix OpenSSL version parsing in python-build script by @threadflow in https://github.com/pyenv/pyenv/pull/3181 +* Add GraalPy 24.1.2 by @msimacek in https://github.com/pyenv/pyenv/pull/3176 +* Add CPython 3.12.9 and 3.13.2 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/3183 + ## Release v2.5.1 * CI: use Ubuntu 24.04; use ubuntu-latest for the ubuntu_build check by @native-api in https://github.com/pyenv/pyenv/pull/3144 * Fix: mistake in configuration hints in `pyenv init` and manpage by @ChristianFredrikJohnsen in https://github.com/pyenv/pyenv/pull/3145 diff --git a/libexec/pyenv---version b/libexec/pyenv---version index 77a57795..8b22b6bd 100755 --- a/libexec/pyenv---version +++ b/libexec/pyenv---version @@ -12,7 +12,7 @@ set -e [ -n "$PYENV_DEBUG" ] && set -x -version="2.5.1" +version="2.5.2" git_revision="" if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then From d327702c4de949136e1d351bf3027513de90d1e9 Mon Sep 17 00:00:00 2001 From: Ivan Pozdeev Date: Wed, 5 Feb 2025 20:57:20 +0300 Subject: [PATCH 22/23] Fix OpenSSL 1.x version parsing --- plugins/python-build/bin/python-build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build index 57635209..de698ce4 100755 --- a/plugins/python-build/bin/python-build +++ b/plugins/python-build/bin/python-build @@ -1622,7 +1622,7 @@ openssl_version() { local -a ver IFS=- ver=( ${1:?} ) IFS=. ver=( ${ver[1]} ) - [[ ${ver[2]} =~ '^([[:digit:]]+)[[:alpha:]]$' ]] && ver[2]="${BASH_REMATCH[1]}" + [[ ${ver[2]} =~ ^([[:digit:]]+)[[:alpha:]]$ ]] && ver[2]="${BASH_REMATCH[1]}" echo $(( ${ver[0]}*10000 + ${ver[1]}*100 + ${ver[2]} )) } From 1c7fe36c5528333a4bf14098edd4f6f535d1cee7 Mon Sep 17 00:00:00 2001 From: dand-oss Date: Sat, 8 Feb 2025 09:46:04 +0800 Subject: [PATCH 23/23] Add PyPy v7.3.18 (#3184) Co-authored-by: Dan Dees --- .../share/python-build/pypy2.7-7.3.18 | 77 +++++++++++++++++++ .../share/python-build/pypy2.7-7.3.18-src | 14 ++++ .../share/python-build/pypy3.10-7.3.18 | 77 +++++++++++++++++++ .../share/python-build/pypy3.10-7.3.18-src | 14 ++++ .../share/python-build/pypy3.11-7.3.18 | 77 +++++++++++++++++++ .../share/python-build/pypy3.11-7.3.18-src | 14 ++++ 6 files changed, 273 insertions(+) create mode 100644 plugins/python-build/share/python-build/pypy2.7-7.3.18 create mode 100644 plugins/python-build/share/python-build/pypy2.7-7.3.18-src create mode 100644 plugins/python-build/share/python-build/pypy3.10-7.3.18 create mode 100644 plugins/python-build/share/python-build/pypy3.10-7.3.18-src create mode 100644 plugins/python-build/share/python-build/pypy3.11-7.3.18 create mode 100644 plugins/python-build/share/python-build/pypy3.11-7.3.18-src diff --git a/plugins/python-build/share/python-build/pypy2.7-7.3.18 b/plugins/python-build/share/python-build/pypy2.7-7.3.18 new file mode 100644 index 00000000..c95bee62 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy2.7-7.3.18 @@ -0,0 +1,77 @@ +VERSION='7.3.18' +PYVER='2.7' + +# https://www.pypy.org/checksums.html +aarch64_hash=d647cad5be915df65f44277fd051c8d52e708d22838b5cb21b2de033530acc80 +linux32_hash=54990fb1ae2266c260a7ce694b84ab91a8d0d298da440cd5695ac671dc5615e2 +linux64_hash=1da34354e5fa59400609e94c00ba6feccf5aa575abb26fb6caf9c2ac16100ff4 +osarm64_hash=48927b1931a4feadea945f7c988c429b42e9fb6567af3810ab86ad95efbe98bc +osx64_hash=db9d2bcc8dbe089b34a19083a11116697e8679acc2c47a2862264429810f666e + +### end of manual settings - following lines same for every download + +function err_no_binary { + local archmsg="${1}" + local ver="pypy${PYVER}-v${VERSION}-src" + local url="https://downloads.python.org/pypy/${ver}.tar.bz2" + { echo + colorize 1 "ERROR" + echo ": The binary distribution of PyPy is not available for ${archmsg}." + echo "try '${url}' to build from source." + echo + } >&2 + exit 1 +} + +function pypy_pkg_data { + # pypy architecture tag + local ARCH="${1}" + + # defaults + local cmd='install_package' # use bz2 + local pkg="${ARCH}" # assume matches + local ext='tar.bz2' + local hash='' # undefined + + # select the hash, fix pkg if not match ARCH + case "${ARCH}" in + 'linux-aarch64' ) + hash="${aarch64_hash}" + pkg='aarch64' + ;; + 'linux' ) + hash="${linux32_hash}" + pkg='linux32' + ;; + 'linux64' ) + hash="${linux64_hash}" + ;; + 'osarm64' ) + hash="${osarm64_hash}" + pkg='macos_arm64' + ;; + 'osx64' ) + if require_osx_version "10.13"; then + hash="${osx64_hash}" + pkg='macos_x86_64' + else + err_no_binary "${ARCH}, OS X < 10.13" + fi + ;; + * ) + err_no_binary "${ARCH}" + ;; + esac + + local basever="pypy${PYVER}-v${VERSION}" + local baseurl="https://downloads.python.org/pypy/${basever}" + + # result - command, package dir, url+hash + echo "${cmd}" "${basever}-${pkg}" "${baseurl}-${pkg}.${ext}#${hash}" +} + +# determine command, package directory, url+hash +declare -a pd="$(pypy_pkg_data "$(pypy_architecture 2>/dev/null || true)")" + +# install +${pd[0]} "${pd[1]}" "${pd[2]}" 'pypy' "verify_py${PYVER//./}" 'ensurepip_lt21' diff --git a/plugins/python-build/share/python-build/pypy2.7-7.3.18-src b/plugins/python-build/share/python-build/pypy2.7-7.3.18-src new file mode 100644 index 00000000..792a48f5 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy2.7-7.3.18-src @@ -0,0 +1,14 @@ +VERSION='7.3.18' +PYVER='2.7' + +# https://www.pypy.org/checksums.html +hash=737435ddfc5afa5b97a7209c87d70d5f1062426c053b9bb8b99a0347cb4891fa + +### end of manual settings - following lines same for every download + +ver="pypy${PYVER}-v${VERSION}-src" +url="https://downloads.python.org/pypy/${ver}.tar.bz2" + +prefer_openssl11 +install_package "openssl-1.1.1f" "https://www.openssl.org/source/openssl-1.1.1f.tar.gz#186c6bfe6ecfba7a5b48c47f8a1673d0f3b0e5ba2e25602dd23b629975da3f35" mac_openssl --if has_broken_mac_openssl +install_package "${ver}" "${url}#${hash}" 'pypy_builder' "verify_py${PYVER//./}" 'ensurepip_lt21' diff --git a/plugins/python-build/share/python-build/pypy3.10-7.3.18 b/plugins/python-build/share/python-build/pypy3.10-7.3.18 new file mode 100644 index 00000000..81805cbd --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.10-7.3.18 @@ -0,0 +1,77 @@ +VERSION='7.3.18' +PYVER='3.10' + +# https://www.pypy.org/checksums.html +aarch64_hash=e843aecd48eb06b625af67891b99e3440313cfb64c6851fc37df1e5572c8ef9e +linux32_hash=34ef09a481254aad0f22bf09fd7c99efb65ffef4f79f5b4222505f55f8d9c22e +linux64_hash=834ccd4544bb47112a66977add7e47f30619f74061ae990876bcba95d98c27c5 +osarm64_hash=1d47da22bc9f7b5329f97c9c7b3ee0b051252ff1e82ca76999ad2d44758be41f +osx64_hash=b7031cbf815b7ba26ed2503b76ee3e73d7322b55f3671219019e8385042e212f + +### end of manual settings - following lines same for every download + +function err_no_binary { + local archmsg="${1}" + local ver="pypy${PYVER}-v${VERSION}-src" + local url="https://downloads.python.org/pypy/${ver}.tar.bz2" + { echo + colorize 1 "ERROR" + echo ": The binary distribution of PyPy is not available for ${archmsg}." + echo "try '${url}' to build from source." + echo + } >&2 + exit 1 +} + +function pypy_pkg_data { + # pypy architecture tag + local ARCH="${1}" + + # defaults + local cmd='install_package' # use bz2 + local pkg="${ARCH}" # assume matches + local ext='tar.bz2' + local hash='' # undefined + + # select the hash, fix pkg if not match ARCH + case "${ARCH}" in + 'linux-aarch64' ) + hash="${aarch64_hash}" + pkg='aarch64' + ;; + 'linux' ) + hash="${linux32_hash}" + pkg='linux32' + ;; + 'linux64' ) + hash="${linux64_hash}" + ;; + 'osarm64' ) + hash="${osarm64_hash}" + pkg='macos_arm64' + ;; + 'osx64' ) + if require_osx_version "10.13"; then + hash="${osx64_hash}" + pkg='macos_x86_64' + else + err_no_binary "${ARCH}, OS X < 10.13" + fi + ;; + * ) + err_no_binary "${ARCH}" + ;; + esac + + local basever="pypy${PYVER}-v${VERSION}" + local baseurl="https://downloads.python.org/pypy/${basever}" + + # result - command, package dir, url+hash + echo "${cmd}" "${basever}-${pkg}" "${baseurl}-${pkg}.${ext}#${hash}" +} + +# determine command, package directory, url+hash +declare -a pd="$(pypy_pkg_data "$(pypy_architecture 2>/dev/null || true)")" + +# install +${pd[0]} "${pd[1]}" "${pd[2]}" 'pypy' "verify_py${PYVER//./}" 'ensurepip' diff --git a/plugins/python-build/share/python-build/pypy3.10-7.3.18-src b/plugins/python-build/share/python-build/pypy3.10-7.3.18-src new file mode 100644 index 00000000..3b041ee1 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.10-7.3.18-src @@ -0,0 +1,14 @@ +VERSION='7.3.18' +PYVER='3.10' + +# https://www.pypy.org/checksums.html +hash=08eb70e866987e4abe88ae9f54a98f919df92b595f7cdf4041703e8802b11552 + +### end of manual settings - following lines same for every download + +ver="pypy${PYVER}-v${VERSION}-src" +url="https://downloads.python.org/pypy/${ver}.tar.bz2" + +prefer_openssl11 +install_package "openssl-1.1.1f" "https://www.openssl.org/source/openssl-1.1.1f.tar.gz#186c6bfe6ecfba7a5b48c47f8a1673d0f3b0e5ba2e25602dd23b629975da3f35" mac_openssl --if has_broken_mac_openssl +install_package "${ver}" "${url}#${hash}" 'pypy_builder' "verify_py${PYVER//./}" 'ensurepip' diff --git a/plugins/python-build/share/python-build/pypy3.11-7.3.18 b/plugins/python-build/share/python-build/pypy3.11-7.3.18 new file mode 100644 index 00000000..cd4daa8c --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.11-7.3.18 @@ -0,0 +1,77 @@ +VERSION='7.3.18' +PYVER='3.11' + +# https://www.pypy.org/checksums.html +aarch64_hash=95bc3021cb9be2aa766ecb776c215e97ae8c0dda99dd48840b40b5b87d90bc45 +linux32_hash=70357a69cdbf4ce449b5743901fcd36208e0a89eadcfb4d2ebdc9b4711a0612c +linux64_hash=df5fa534800ff09d990e50ca4fdb02d8a06b9ed948dbcb3a09bea0739ef42de7 +osarm64_hash=cc4d6dd621dffd474eb9a2d01e5844d1b6a6f88b404aac2c48a9c267b5370df4 +osx64_hash=4f2274ffb4b787fd5b5f15cd61f7fef5a3710bf0ecbd4293bf0251035b468865 + +### end of manual settings - following lines same for every download + +function err_no_binary { + local archmsg="${1}" + local ver="pypy${PYVER}-v${VERSION}-src" + local url="https://downloads.python.org/pypy/${ver}.tar.bz2" + { echo + colorize 1 "ERROR" + echo ": The binary distribution of PyPy is not available for ${archmsg}." + echo "try '${url}' to build from source." + echo + } >&2 + exit 1 +} + +function pypy_pkg_data { + # pypy architecture tag + local ARCH="${1}" + + # defaults + local cmd='install_package' # use bz2 + local pkg="${ARCH}" # assume matches + local ext='tar.bz2' + local hash='' # undefined + + # select the hash, fix pkg if not match ARCH + case "${ARCH}" in + 'linux-aarch64' ) + hash="${aarch64_hash}" + pkg='aarch64' + ;; + 'linux' ) + hash="${linux32_hash}" + pkg='linux32' + ;; + 'linux64' ) + hash="${linux64_hash}" + ;; + 'osarm64' ) + hash="${osarm64_hash}" + pkg='macos_arm64' + ;; + 'osx64' ) + if require_osx_version "10.13"; then + hash="${osx64_hash}" + pkg='macos_x86_64' + else + err_no_binary "${ARCH}, OS X < 10.13" + fi + ;; + * ) + err_no_binary "${ARCH}" + ;; + esac + + local basever="pypy${PYVER}-v${VERSION}" + local baseurl="https://downloads.python.org/pypy/${basever}" + + # result - command, package dir, url+hash + echo "${cmd}" "${basever}-${pkg}" "${baseurl}-${pkg}.${ext}#${hash}" +} + +# determine command, package directory, url+hash +declare -a pd="$(pypy_pkg_data "$(pypy_architecture 2>/dev/null || true)")" + +# install +${pd[0]} "${pd[1]}" "${pd[2]}" 'pypy' "verify_py${PYVER//./}" 'ensurepip' diff --git a/plugins/python-build/share/python-build/pypy3.11-7.3.18-src b/plugins/python-build/share/python-build/pypy3.11-7.3.18-src new file mode 100644 index 00000000..970fe1cb --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.11-7.3.18-src @@ -0,0 +1,14 @@ +VERSION='7.3.18' +PYVER='3.11' + +# https://www.pypy.org/checksums.html +hash=fbc82b8ff67b942e6fce49980dc0f0f83193b005173f9bddd39d6396fb6b939d + +### end of manual settings - following lines same for every download + +ver="pypy${PYVER}-v${VERSION}-src" +url="https://downloads.python.org/pypy/${ver}.tar.bz2" + +prefer_openssl11 +install_package "openssl-1.1.1f" "https://www.openssl.org/source/openssl-1.1.1f.tar.gz#186c6bfe6ecfba7a5b48c47f8a1673d0f3b0e5ba2e25602dd23b629975da3f35" mac_openssl --if has_broken_mac_openssl +install_package "${ver}" "${url}#${hash}" 'pypy_builder' "verify_py${PYVER//./}" 'ensurepip'