diff --git a/.github/workflows/macos_build.yml b/.github/workflows/macos_build.yml index 3f299f80..6622b6a3 100644 --- a/.github/workflows/macos_build.yml +++ b/.github/workflows/macos_build.yml @@ -32,7 +32,7 @@ jobs: run: | echo $PYENV_ROOT echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH - bin/pyenv install -v ${{ matrix.python-version }} + bin/pyenv --debug install ${{ matrix.python-version }} bin/pyenv global ${{ matrix.python-version }} bin/pyenv rehash - run: python --version diff --git a/.github/workflows/modified_scripts_build.yml b/.github/workflows/modified_scripts_build.yml index 0beef58e..79dbdb89 100644 --- a/.github/workflows/modified_scripts_build.yml +++ b/.github/workflows/modified_scripts_build.yml @@ -49,7 +49,7 @@ jobs: fi - run: | #build - pyenv install -v ${{ matrix.python-version }} + pyenv --debug install ${{ matrix.python-version }} pyenv global ${{ matrix.python-version }} # Micropython doesn't support --version - run: | diff --git a/.github/workflows/ubuntu_build.yml b/.github/workflows/ubuntu_build.yml index e3951d3c..dd389219 100644 --- a/.github/workflows/ubuntu_build.yml +++ b/.github/workflows/ubuntu_build.yml @@ -34,7 +34,7 @@ jobs: run: | echo $PYENV_ROOT echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH - bin/pyenv install -v ${{ matrix.python-version }} + bin/pyenv --debug install ${{ matrix.python-version }} bin/pyenv global ${{ matrix.python-version }} bin/pyenv rehash - run: python --version diff --git a/CHANGELOG.md b/CHANGELOG.md index a1ca960f..e2b18f76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,39 @@ # Version History +## Release v2.4.3 +* Add miniconda3 24.4.0-0 by @binbjz in https://github.com/pyenv/pyenv/pull/2982 + +## Release v2.4.2 +* Add script to install graalpy development builds by @timfel in https://github.com/pyenv/pyenv/pull/2969 +* Correct the Explanation of PATH Variable Lookup by @Y-askour in https://github.com/pyenv/pyenv/pull/2975 +* Document PYTHON_BUILD_CURL_OPTS, PYTHON_BUILD_WGET_OPTS, PYTHON_BUILD_ARIA2_OPTS by @native-api in https://github.com/pyenv/pyenv/pull/2976 +* Add sed and greadlink to shim exceptions by @native-api in https://github.com/pyenv/pyenv/pull/2977 +* Add CPython 3.13.0b2 by @jsirois in https://github.com/pyenv/pyenv/pull/2978 +* Add CPython 3.12.4 by @xxzgc in https://github.com/pyenv/pyenv/pull/2981 + +## Release v2.4.1 +* Add CPython 3.12.3 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2941 +* Add CPython 3.13.0a6 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2942 +* Add PyPy v7.3.16 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2948 +* Add CPython 3.14-dev, update 3.13-dev by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2960 +* Add CPython 3.13.0b1 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2959 + +## Release v2.4.0 +* Add CPython 3.13.0a4 by @saaketp in https://github.com/pyenv/pyenv/pull/2903 +* Handle the case where `pyenv-commands --sh` returns nothing by @aphedges in https://github.com/pyenv/pyenv/pull/2908 +* Document default build configuration customizations by @native-api in https://github.com/pyenv/pyenv/pull/2911 +* Use Homebrew in Linux if Pyenv is installled with Homebrew by @native-api in https://github.com/pyenv/pyenv/pull/2906 +* Add miniforge and mambaforge 22.11.1-3, 22.11.1-4, 23.1.0-0 to 23.11.0-0 by @aphedges in https://github.com/pyenv/pyenv/pull/2909 +* Add miniconda3-24.1.2 by @binbjz in https://github.com/pyenv/pyenv/pull/2915 +* Minor grammar fix in libffi backport patch in 2.5.x by @cuinix in https://github.com/pyenv/pyenv/pull/2922 +* Add CPython 3.13.0a5 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2924 +* Add CPython 3.8.19 and 3.9.19 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2929 +* Add GraalPy 24.0.0 by @msimacek in https://github.com/pyenv/pyenv/pull/2928 +* Add CPython 3.10.14 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2930 +* Add Jython 2.7.3 by @cesarcoatl in https://github.com/pyenv/pyenv/pull/2936 +* Add CPython 3.11.9 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2938 +* Add anaconda 2024.02 by @native-api in https://github.com/pyenv/pyenv/pull/2939 + ## Release v2.3.36 * Add a Dependabot config to auto-update GitHub action versions by @kurtmckee in https://github.com/pyenv/pyenv/pull/2863 * Bump the github-actions group with 1 update by @dependabot in https://github.com/pyenv/pyenv/pull/2864 diff --git a/README.md b/README.md index 89adb548..ff9682a9 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ to the correct Python installation. ### Understanding PATH -When you run a command like `python` or `pip`, your operating system +When you run a command like `python` or `pip`, your shell (bash / zshrc / ...) searches through a list of directories to find an executable file with that name. This list of directories lives in an environment variable called `PATH`, with each directory in the list separated by a colon: @@ -580,10 +580,13 @@ uninstall from the system. ## Pyenv plugins -Pyenv provides a simple, flexible and maintainable way to extend and customize its functionality with plugins -- +Pyenv provides a simple way to extend and customize its functionality with plugins -- as simple as creating a plugin directory and dropping a shell script on a certain subpath of it with whatever extra logic you need to be run at certain moments. +The main idea is that most things that you can put under `$PYENV_ROOT/` you can also put +under `$PYENV_ROOT/plugins/your_plugin_name/`. + See [_Plugins_ on the wiki](https://github.com/pyenv/pyenv/wiki/Plugins) on how to install and use plugins as well as a catalog of some useful existing plugins for common needs. @@ -675,7 +678,6 @@ name | default | description `PYENV_DEBUG` | | Outputs debug information.
Also as: `pyenv --debug ` `PYENV_HOOK_PATH` | [_see wiki_][hooks] | Colon-separated list of paths searched for pyenv hooks. `PYENV_DIR` | `$PWD` | Directory to start searching for `.python-version` files. -`PYTHON_BUILD_ARIA2_OPTS` | | Used to pass additional parameters to [`aria2`](https://aria2.github.io/).
If the `aria2c` binary is available on `PATH`, pyenv uses `aria2c` instead of `curl` or `wget` to download the Python Source code. If you have an unstable internet connection, you can use this variable to instruct `aria2` to accelerate the download.
In most cases, you will only need to use `-x 10 -k 1M` as value to `PYTHON_BUILD_ARIA2_OPTS` environment variable See also [_Special environment variables_ in Python-Build's README](plugins/python-build/README.md#special-environment-variables) for environment variables that can be used to customize the build. diff --git a/libexec/pyenv---version b/libexec/pyenv---version index 39691f94..73758005 100755 --- a/libexec/pyenv---version +++ b/libexec/pyenv---version @@ -12,7 +12,7 @@ set -e [ -n "$PYENV_DEBUG" ] && set -x -version="2.3.36" +version="2.4.3" git_revision="" if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then diff --git a/plugins/python-build/README.md b/plugins/python-build/README.md index 7fd92165..2c02e76c 100644 --- a/plugins/python-build/README.md +++ b/plugins/python-build/README.md @@ -96,7 +96,10 @@ versions of Python that are not yet supported by python-build. See the [python-build built-in definitions](https://github.com/pyenv/pyenv/tree/master/plugins/python-build/share/python-build) as a starting point for custom definition files. -[definitions]: https://github.com/pyenv/pyenv/tree/master/plugins/python-build/share/python-build +#### Adding definitions with a Pyenv plugin + +You can add your own definitions with a [Pyenv plugin](https://github.com/pyenv/pyenv?tab=readme-ov-file#pyenv-plugins) by placing them under +`$PYENV_ROOT/plugins/your_plugin_name/share/python-build`. ### Default build configuration @@ -157,6 +160,7 @@ You can set certain environment variables to control the build process. * `PYTHON_BUILD_SKIP_MIRROR`, if set, forces python-build to download packages from their original source URLs instead of using a mirror. * `PYTHON_BUILD_HTTP_CLIENT`, explicitly specify the HTTP client type to use. `aria2`, `curl` and `wget` are the supported values and by default, are searched in that order. +* `PYTHON_BUILD_CURL_OPTS`, `PYTHON_BUILD_WGET_OPTS`, `PYTHON_BUILD_ARIA2_OPTS` pass additional parameters to the corresponding HTTP client. * `PYTHON_BUILD_SKIP_HOMEBREW`, if set, will not search for libraries installed by Homebrew when it would normally will. * `PYTHON_BUILD_USE_HOMEBREW`, if set, will search for libraries installed by Homebrew when it would normally not. * `PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA`, override the Homebrew OpenSSL formula to use. @@ -196,20 +200,6 @@ $ cat fix1.patch fix2.patch | pyenv install --patch 2.7.10 ``` -### Building with `--enable-shared` - -You can build CPython with `--enable-shared` to install a version with -shared object. - -If `--enable-shared` was found in `PYTHON_CONFIGURE_OPTS` or `CONFIGURE_OPTS`, -`python-build` will automatically set `RPATH` to the pyenv's prefix directory. -This means you don't have to set `LD_LIBRARY_PATH` or `DYLD_LIBRARY_PATH` for -the version(s) installed with `--enable-shared`. - -```sh -$ env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 2.7.9 -``` - ### Building for maximum performance Building CPython with `--enable-optimizations` will result in a faster @@ -237,14 +227,30 @@ definition. (All bundled definitions include checksums.) ### Package download mirrors python-build will first attempt to download package files from a mirror hosted on -GitHub Pages. If a package is not available on the mirror, if the mirror -is down, or if the download is corrupt, python-build will fall back to the +GitHub Pages. If this fails, it will fall back to the official URL specified in the definition file. You can point python-build to another mirror by specifying the -`PYTHON_BUILD_MIRROR_URL` environment variable--useful if you'd like to run your -own local mirror, for example. Package mirror URLs are constructed by joining -this variable with the SHA2 checksum of the package file. +`PYTHON_BUILD_MIRROR_URL` environment variable. + +Package mirror URLs are constructed by joining +`$PYTHON_BUILD_MIRROR_URL` with the SHA2 checksum of the package file as specified in the URL +in the installation script (the part after the hash sign). E.g.: + +``` +https://mycache.example.com/0419e9085bf51b7a672009b3f50dbf1859acdf18ba725d0ec19aa5c8503f0ea3 +``` + +If you have replicated the directory structure of an official site, the easiest way to adapt +would be to make symlinks at the mirror's root: + +``` +0419e9085bf51b7a672009b3f50dbf1859acdf18ba725d0ec19aa5c8503f0ea3 -> 3.10.10/Python-3.10.10.tar.xz +``` + +The rationale is to abstract away difference between directory structures of sites +of various Python flavors and their occasional changes as well as to accomodate +people who only wish to cache some select downloads. This also allows to mirror multiple sites at once. If the mirror being used does not have the same checksum (*e.g.* with a pull-through cache like Artifactory), you can set the @@ -257,15 +263,15 @@ mirror by setting the `PYTHON_BUILD_SKIP_MIRROR` environment variable. The official python-build download mirror is provided by [GitHub Pages](http://yyuu.github.io/pythons/). -### Package download caching +### Package download cache -You can instruct python-build to keep a local cache of downloaded package files -by setting the `PYTHON_BUILD_CACHE_PATH` environment variable. When set, package -files will be kept in this directory after the first successful download and -reused by subsequent invocations of `python-build` and `pyenv install`. +Python-build will keep a cache of downloaded package files +at the location specified by the `PYTHON_BUILD_CACHE_PATH` environment variable +if it exists. The default is `~/.pyenv/cache`, so you can +enable caching by just creating that directory. -The `pyenv install` command defaults this path to `~/.pyenv/cache`, so in most -cases you can enable download caching simply by creating that directory. +The name of the would-be cached file is reported by Pyenv in the "Downloading <filename>..." message. +It's possible to warm up the cache by manually putting the file there under an appropriate name. ### Keeping the build directory after installation diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build index a30f6697..923fcc62 100755 --- a/plugins/python-build/bin/python-build +++ b/plugins/python-build/bin/python-build @@ -397,7 +397,7 @@ http_get_aria2c() { fi if aria2c --allow-overwrite=true --no-conf=true -d "${dir_out}" -o "${out}" ${ARIA2_OPTS} "$1" >&4; then - [ -n "$2" ] || cat "${out}" + [ -n "$2" ] || cat "${dir_out:-.}/${out}" else false fi @@ -2021,6 +2021,11 @@ build_package_verify_py313() { build_package_verify_py312 "$1" "${2:-3.13}" } +# Post-install check for Python 3.14.x +build_package_verify_py314() { + build_package_verify_py313 "$1" "${2:-3.13}" +} + # Post-install check for Python 3.x rolling release scripts # XXX: Will need splitting into project-specific ones if there emerge # multiple rolling-release scripts with different checks needed diff --git a/plugins/python-build/share/python-build/3.10.14 b/plugins/python-build/share/python-build/3.10.14 new file mode 100644 index 00000000..0b062fec --- /dev/null +++ b/plugins/python-build/share/python-build/3.10.14 @@ -0,0 +1,9 @@ +prefer_openssl11 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-1.1.1o" "https://www.openssl.org/source/openssl-1.1.1o.tar.gz#9384a2b0570dd80358841464677115df785edb941c71211f75076d72fe6b438f" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.1" "https://ftpmirror.gnu.org/readline/readline-8.1.tar.gz#f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.10.14" "https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tar.xz#9c50481faa8c2832329ba0fc8868d0a606a680fc4f60ec48d26ce8e076751fda" standard verify_py310 copy_python_gdb ensurepip +else + install_package "Python-3.10.14" "https://www.python.org/ftp/python/3.10.14/Python-3.10.14.tgz#cefea32d3be89c02436711c95a45c7f8e880105514b78680c14fe76f5709a0f6" standard verify_py310 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.11.9 b/plugins/python-build/share/python-build/3.11.9 new file mode 100644 index 00000000..96f734c8 --- /dev/null +++ b/plugins/python-build/share/python-build/3.11.9 @@ -0,0 +1,10 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +install_package "openssl-3.2.1" "https://www.openssl.org/source/openssl-3.2.1.tar.gz#83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39" 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.11.9" "https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tar.xz#9b1e896523fc510691126c864406d9360a3d1e986acbda59cda57b5abda45b87" standard verify_py311 copy_python_gdb ensurepip +else + install_package "Python-3.11.9" "https://www.python.org/ftp/python/3.11.9/Python-3.11.9.tgz#e7de3240a8bc2b1e1ba5c81bf943f06861ff494b69fda990ce2722a504c6153d" standard verify_py311 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.12.3 b/plugins/python-build/share/python-build/3.12.3 new file mode 100644 index 00000000..2228238d --- /dev/null +++ b/plugins/python-build/share/python-build/3.12.3 @@ -0,0 +1,9 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-3.2.1" "https://www.openssl.org/source/openssl-3.2.1.tar.gz#83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39" 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.3" "https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tar.xz#56bfef1fdfc1221ce6720e43a661e3eb41785dd914ce99698d8c7896af4bdaa1" standard verify_py312 copy_python_gdb ensurepip +else + install_package "Python-3.12.3" "https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz#a6b9459f45a6ebbbc1af44f5762623fa355a0c87208ed417628b379d762dddb0" standard verify_py312 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.12.4 b/plugins/python-build/share/python-build/3.12.4 new file mode 100644 index 00000000..b4016372 --- /dev/null +++ b/plugins/python-build/share/python-build/3.12.4 @@ -0,0 +1,9 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-3.2.2" "https://www.openssl.org/source/openssl-3.2.2.tar.gz#197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7" 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.4" "https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tar.xz#f6d419a6d8743ab26700801b4908d26d97e8b986e14f95de31b32de2b0e79554" standard verify_py312 copy_python_gdb ensurepip +else + install_package "Python-3.12.4" "https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz#01b3c1c082196f3b33168d344a9c85fb07bfe0e7ecfe77fee4443420d1ce2ad9" standard verify_py312 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.13-dev b/plugins/python-build/share/python-build/3.13-dev index 8c4740e4..088f8927 100644 --- a/plugins/python-build/share/python-build/3.13-dev +++ b/plugins/python-build/share/python-build/3.13-dev @@ -2,6 +2,6 @@ prefer_openssl3 export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 export PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL=1 -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" mac_openssl --if has_broken_mac_openssl +install_package "openssl-3.3.0" "https://www.openssl.org/source/openssl-3.3.0.tar.gz#53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02" mac_openssl --if has_broken_mac_openssl install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline -install_git "Python-3.13-dev" "https://github.com/python/cpython" main standard verify_py313 copy_python_gdb ensurepip +install_git "Python-3.13-dev" "https://github.com/python/cpython" 3.13 standard verify_py313 copy_python_gdb ensurepip diff --git a/plugins/python-build/share/python-build/3.13.0a3 b/plugins/python-build/share/python-build/3.13.0a3 deleted file mode 100644 index 4ca10241..00000000 --- a/plugins/python-build/share/python-build/3.13.0a3 +++ /dev/null @@ -1,9 +0,0 @@ -prefer_openssl3 -export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" 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.0a3" "https://www.python.org/ftp/python/3.13.0/Python-3.13.0a3.tar.xz#20784c8304eb1c69c80f966ebdf0775be2e37e23df3b62461eec12a85dcf7ead" standard verify_py313 copy_python_gdb ensurepip -else - install_package "Python-3.13.0a3" "https://www.python.org/ftp/python/3.13.0/Python-3.13.0a3.tgz#9c7c2b42a20127816f9403723bfc88d1566f47dac0c46f50492f7ff8db646d8f" standard verify_py313 copy_python_gdb ensurepip -fi diff --git a/plugins/python-build/share/python-build/3.13.0b2 b/plugins/python-build/share/python-build/3.13.0b2 new file mode 100644 index 00000000..88c2fc55 --- /dev/null +++ b/plugins/python-build/share/python-build/3.13.0b2 @@ -0,0 +1,9 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +install_package "openssl-3.3.1" "https://www.openssl.org/source/openssl-3.3.1.tar.gz#777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e" 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.0b2" "https://www.python.org/ftp/python/3.13.0/Python-3.13.0b2.tar.xz#bf11be01b42a07a3659e4e233591e03da631b7112aa61ee1e030eeb8c5dfd869" standard verify_py313 copy_python_gdb ensurepip +else + install_package "Python-3.13.0b2" "https://www.python.org/ftp/python/3.13.0/Python-3.13.0b2.tgz#c87c42aa8137230a15a02ed90a6600610ba680cb5b54c0fbc57581a0d032e0c4" standard verify_py313 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.14-dev b/plugins/python-build/share/python-build/3.14-dev new file mode 100644 index 00000000..9ce786be --- /dev/null +++ b/plugins/python-build/share/python-build/3.14-dev @@ -0,0 +1,7 @@ +prefer_openssl3 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1 +export PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL=1 +install_package "openssl-3.3.0" "https://www.openssl.org/source/openssl-3.3.0.tar.gz#53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.0" "https://ftpmirror.gnu.org/readline/readline-8.0.tar.gz#e339f51971478d369f8a053a330a190781acb9864cf4c541060f12078948e461" mac_readline --if has_broken_mac_readline +install_git "Python-3.14-dev" "https://github.com/python/cpython" main standard verify_py314 copy_python_gdb ensurepip diff --git a/plugins/python-build/share/python-build/3.8.19 b/plugins/python-build/share/python-build/3.8.19 new file mode 100644 index 00000000..5e29edbc --- /dev/null +++ b/plugins/python-build/share/python-build/3.8.19 @@ -0,0 +1,12 @@ +prefer_openssl11 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +# Avoid a compilation error when linking against OpenSSL built with SSLv3 support (fixed in 3.10.0) (#2181) +export PYTHON_CFLAGS="-DOPENSSL_NO_SSL3${PYTHON_CFLAGS:+ $PYTHON_CFLAGS}" + +install_package "openssl-1.1.1u" "https://www.openssl.org/source/openssl-1.1.1u.tar.gz#e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.1" "https://ftpmirror.gnu.org/readline/readline-8.1.tar.gz#f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.8.19" "https://www.python.org/ftp/python/3.8.19/Python-3.8.19.tar.xz#d2807ac69f69b84fd46a0b93bbd02a4fa48d3e70f4b2835ff0f72a2885040076" standard verify_py38 copy_python_gdb ensurepip +else + install_package "Python-3.8.19" "https://www.python.org/ftp/python/3.8.19/Python-3.8.19.tgz#c7fa55a36e5c7a19ec37d8f90f60a2197548908c9ac8b31e7c0dbffdd470eeac" standard verify_py38 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/3.9.19 b/plugins/python-build/share/python-build/3.9.19 new file mode 100644 index 00000000..b6c1e5ba --- /dev/null +++ b/plugins/python-build/share/python-build/3.9.19 @@ -0,0 +1,12 @@ +prefer_openssl11 +export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1 +# Avoid a compilation error when linking against OpenSSL built with SSLv3 support (fixed in 3.10.0) (#2181) +export PYTHON_CFLAGS="-DOPENSSL_NO_SSL3${PYTHON_CFLAGS:+ $PYTHON_CFLAGS}" + +install_package "openssl-1.1.1u" "https://www.openssl.org/source/openssl-1.1.1u.tar.gz#e2f8d84b523eecd06c7be7626830370300fbcc15386bf5142d72758f6963ebc6" mac_openssl --if has_broken_mac_openssl +install_package "readline-8.1" "https://ftpmirror.gnu.org/readline/readline-8.1.tar.gz#f8ceb4ee131e3232226a17f51b164afc46cd0b9e6cef344be87c65962cb82b02" mac_readline --if has_broken_mac_readline +if has_tar_xz_support; then + install_package "Python-3.9.19" "https://www.python.org/ftp/python/3.9.19/Python-3.9.19.tar.xz#d4892cd1618f6458cb851208c030df1482779609d0f3939991bd38184f8c679e" standard verify_py39 copy_python_gdb ensurepip +else + install_package "Python-3.9.19" "https://www.python.org/ftp/python/3.9.19/Python-3.9.19.tgz#f5f9ec8088abca9e399c3b62fd8ef31dbd2e1472c0ccb35070d4d136821aaf71" standard verify_py39 copy_python_gdb ensurepip +fi diff --git a/plugins/python-build/share/python-build/anaconda3-2024.02-1 b/plugins/python-build/share/python-build/anaconda3-2024.02-1 new file mode 100644 index 00000000..498c79ed --- /dev/null +++ b/plugins/python-build/share/python-build/anaconda3-2024.02-1 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Anaconda3-2024.02-1-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-aarch64.sh#28c5bed6fba84f418516e41640c7937514aabd55e929a8f66937c737303c7bba" "anaconda" verify_py311 + ;; +"Linux-s390x" ) + install_script "Anaconda3-2024.02-1-Linux-s390x" "https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-s390x.sh#3e2e8b17ea9a5caafd448f52e01435998b2e1ce102040a924d5bd6e05a1d735b" "anaconda" verify_py311 + ;; +"Linux-x86_64" ) + install_script "Anaconda3-2024.02-1-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2024.02-1-Linux-x86_64.sh#c536ddb7b4ba738bddbd4e581b29308cb332fa12ae3fa2cd66814bd735dff231" "anaconda" verify_py311 + ;; +"MacOSX-arm64" ) + install_script "Anaconda3-2024.02-1-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2024.02-1-MacOSX-arm64.sh#14a1c80af18c2c2e743e63cdb41228cd554a3fdb250563b6978348c80b6860f6" "anaconda" verify_py311 + ;; +"MacOSX-x86_64" ) + install_script "Anaconda3-2024.02-1-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2024.02-1-MacOSX-x86_64.sh#944aee9b90f7d8a2a997d0337cb37219757f22e76c10de38c7c68191c6b5b226" "anaconda" verify_py311 + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": The binary distribution of Anaconda is not available for $(anaconda_architecture 2>/dev/null || true)." + echo + } >&2 + exit 1 + ;; +esac diff --git a/plugins/python-build/share/python-build/graalpy-24.0.0 b/plugins/python-build/share/python-build/graalpy-24.0.0 new file mode 100644 index 00000000..d71e70fc --- /dev/null +++ b/plugins/python-build/share/python-build/graalpy-24.0.0 @@ -0,0 +1,64 @@ +# Copyright (c) 2024, 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.0.0' +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="f0d194dea76da26093b9b01b78c0fcabbd8714640b08fcd2a9b05b9ded3e2039" + ;; +"linux-aarch64" ) + checksum="5bf0fd9d115c3ecd6bfb89a2fac7b9ba9343841c3928d14eac471b9b1ad1266e" + ;; +"macos-amd64" ) + checksum="1e2e51ea618bd6f6fe9a0248486b5962f6258193249c0657dc0480fd2b92d772" + ;; +"macos-aarch64" ) + checksum="d5597711839a41506beb129f9d8015f8997a1db1e0c79972636834d955d4ef61" + ;; +* ) + { 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.0.0 b/plugins/python-build/share/python-build/graalpy-community-24.0.0 new file mode 100644 index 00000000..c2323169 --- /dev/null +++ b/plugins/python-build/share/python-build/graalpy-community-24.0.0 @@ -0,0 +1,54 @@ +# Copyright (c) 2024, 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.0.0' +BUILD='' + +graalpy_arch="$(graalpy_architecture 2>/dev/null || true)" + +case "$graalpy_arch" in +"linux-amd64" ) + checksum="a77892d8d6b897b70b4226aa1b6abc8c41e824ae98d727429542b0157ae6f8d9" + ;; +"linux-aarch64" ) + checksum="201e2bad0ed59efc89654a77ae1634302111b3ffb9af53f9ee63ab43b735e5c3" + ;; +"macos-amd64" ) + checksum="7c816beb8c8b46ee0de60861f739c274efbc744304aa9034bffbd0319f13701d" + ;; +"macos-aarch64" ) + checksum="7f5540a28cf5c2c628cd003c3eb86bfa0a07175dae7d9b6528b40c44c4927402" + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": No binary distribution of GraalPy is available for $(uname -sm)." + echo + } >&2 + exit 1 + ;; +esac + +if [ -n "${BUILD}" ]; then + url="https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/${VERSION}-dev-${BUILD}/graalpy-community-dev-${graalpy_arch}.tar.gz" +else + url="https://github.com/oracle/graalpython/releases/download/graal-${VERSION}/graalpy-community-${VERSION}-${graalpy_arch}.tar.gz#${checksum}" +fi + +install_package "graalpy-community-${VERSION}${BUILD}" "${url}" "copy" ensurepip diff --git a/plugins/python-build/share/python-build/graalpy-dev b/plugins/python-build/share/python-build/graalpy-dev new file mode 100644 index 00000000..3c5aeebd --- /dev/null +++ b/plugins/python-build/share/python-build/graalpy-dev @@ -0,0 +1,54 @@ +# Copyright (c) 2024, 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. + +JSON_URL=https://raw.githubusercontent.com/graalvm/graal-languages-ea-builds/main/graalpy/versions/latest-ea.json + +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 "Release builds of the GraalVM Community Edition variant of GraalPy are available, with names starting with graalpy-community-" && echo + +json=`http get "$JSON_URL"` +version=`expr "$json" : '{.*"version":[^"]*"\([^"]*\)'` +base_url=`expr "$json" : '{.*"download_base_url":[^"]*"\([^"]*\)'` + +graalpy_arch="$(graalpy_architecture 2>/dev/null || true)" + +case "$graalpy_arch" in +"linux-amd64" ) + ;; +"linux-aarch64" ) + ;; +"macos-amd64" ) + ;; +"macos-aarch64" ) + ;; +* ) + { echo + colorize 1 "ERROR" + echo ": No binary distribution of GraalPy is available for $(uname -sm)." + echo + } >&2 + exit 1 + ;; +esac + +url="${base_url}/graalpy-${version}-${graalpy_arch}.tar.gz" + +install_package "graalpy-${version}" "${url}" "copy" ensurepip diff --git a/plugins/python-build/share/python-build/jython-2.7.3 b/plugins/python-build/share/python-build/jython-2.7.3 new file mode 100644 index 00000000..8e5c7cd8 --- /dev/null +++ b/plugins/python-build/share/python-build/jython-2.7.3 @@ -0,0 +1,14 @@ +require_java +unrequire_python27 +install_jar "jython-2.7.3" "https://repo1.maven.org/maven2/org/python/jython-installer/2.7.3/jython-installer-2.7.3.jar#3ffc25c5257d2028b176912a4091fe048c45c7d98218e52d7ce3160a62fdc9fc" jython + +case "$(pypy_architecture 2>/dev/null || true)" in +"osx64"|"win32" ) + # Jython does not seem to work properly on OSX/windows unless JAVA_HOME is set + if [ -z "${JAVA_HOME+defined}" ]; then + colorize 1 "WARNING: " + echo "Please ensure that your JAVA_HOME environment variable is set correctly!" + echo "See http://bugs.jython.org/issue2346 for details." + fi + ;; +esac diff --git a/plugins/python-build/share/python-build/miniconda3-3.10-24.1.2-0 b/plugins/python-build/share/python-build/miniconda3-3.10-24.1.2-0 new file mode 100644 index 00000000..1261a0bb --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.10-24.1.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py310_24.1.2-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-Linux-aarch64.sh#e560e737ac0e625dcc19ca2927457c2944434a61280daae2594632aca76d1422" "miniconda" verify_py310 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py310_24.1.2-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-Linux-s390x.sh#014fd09da9f7ecae040d586a6ff4218e508bf0e5e0232be6383ff37973a337c7" "miniconda" verify_py310 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py310_24.1.2-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-Linux-x86_64.sh#8eb5999c2f7ac6189690d95ae5ec911032fa6697ae4b34eb3235802086566d78" "miniconda" verify_py310 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py310_24.1.2-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-MacOSX-arm64.sh#01110da80119c11078d2b39a499b6dc086c5fd4b413f4b333d32feb3b03cbe7b" "miniconda" verify_py310 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py310_24.1.2-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_24.1.2-0-MacOSX-x86_64.sh#f078682fca26350717c1940650c227f9843fe9f3f0ecc87bf2665bccc5c64f9c" "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.1.2-0 b/plugins/python-build/share/python-build/miniconda3-3.11-24.1.2-0 new file mode 100644 index 00000000..e8322878 --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.11-24.1.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py311_24.1.2-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.1.2-0-Linux-aarch64.sh#1e046ef2d9d47289db2491f103c81b0b4baf943a9234ac59bd5bca076c881d98" "miniconda" verify_py311 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py311_24.1.2-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.1.2-0-Linux-s390x.sh#0489909051fd9e2c9addfa5fbd531ccb7f8f2463ac47376b8854e5a09b1c4011" "miniconda" verify_py311 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py311_24.1.2-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.1.2-0-Linux-x86_64.sh#3f2e5498e550a6437f15d9cc8020d52742d0ba70976ee8fce4f0daefa3992d2e" "miniconda" verify_py311 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py311_24.1.2-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.1.2-0-MacOSX-arm64.sh#b5c4f646144fa4760bd5f6114ff2e6b49a3ef7c57b993f569adceea784f21a52" "miniconda" verify_py311 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py311_24.1.2-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_24.1.2-0-MacOSX-x86_64.sh#3b26c0867561d0988040193c8efd9f53ca922026f735367436aa05b467b1f187" "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.1.2-0 b/plugins/python-build/share/python-build/miniconda3-3.12-24.1.2-0 new file mode 100644 index 00000000..dab27cd0 --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.12-24.1.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py312_24.1.2-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-Linux-aarch64.sh#942a057a52ec99f0fca4f413b87b332f6e61fad95c05fa7cabc003ae0b4471de" "miniconda" verify_py312 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py312_24.1.2-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-Linux-s390x.sh#7ee6a3c41a825eca3b1c9e3c7155c67f7c26e31a75d7dc4f78f75a4c438e3009" "miniconda" verify_py312 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py312_24.1.2-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-Linux-x86_64.sh#b978856ec3c826eb495b60e3fffe621f670c101150ebcbdeede4f961f22dc438" "miniconda" verify_py312 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py312_24.1.2-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-MacOSX-arm64.sh#1c277b1ec046fd1b628390994e3fa3dbac0e364f44cd98b915daaa67a326c66a" "miniconda" verify_py312 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py312_24.1.2-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-MacOSX-x86_64.sh#bc45a2ceea9341579532847cc9f29a9769d60f12e306bba7f0de6ad5acdd73e9" "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.1.2-0 b/plugins/python-build/share/python-build/miniconda3-3.9-24.1.2-0 new file mode 100644 index 00000000..3e03e031 --- /dev/null +++ b/plugins/python-build/share/python-build/miniconda3-3.9-24.1.2-0 @@ -0,0 +1,25 @@ +case "$(anaconda_architecture 2>/dev/null || true)" in +"Linux-aarch64" ) + install_script "Miniconda3-py39_24.1.2-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-Linux-aarch64.sh#b3e7d8ad4a4c9106594b268ab1cd9494ce982eaf7734bb2cd13a47e14e92a43e" "miniconda" verify_py39 + ;; +"Linux-s390x" ) + install_script "Miniconda3-py39_24.1.2-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-Linux-s390x.sh#c1e5b7cee62b465a919b88a9c5658c426c6633f1fbcb568d2cff36a13aef6b97" "miniconda" verify_py39 + ;; +"Linux-x86_64" ) + install_script "Miniconda3-py312_24.1.2-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_24.1.2-0-Linux-x86_64.sh#b978856ec3c826eb495b60e3fffe621f670c101150ebcbdeede4f961f22dc438" "miniconda" verify_py39 + ;; +"MacOSX-arm64" ) + install_script "Miniconda3-py39_24.1.2-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-MacOSX-arm64.sh#2a7e44373bdf47caae991ff8d7d275a2ded51ed0e8e457c7edc9ecd45e48cda4" "miniconda" verify_py39 + ;; +"MacOSX-x86_64" ) + install_script "Miniconda3-py39_24.1.2-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-MacOSX-x86_64.sh#d4e81df5beaa73dbbb9e1e91065e8f8222e9a9d44a2e7271aedd6e4a5054c541" "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 diff --git a/plugins/python-build/share/python-build/patches/2.5.0/Python-2.5/004_osx_libffi.patch b/plugins/python-build/share/python-build/patches/2.5.0/Python-2.5/004_osx_libffi.patch index 9c3ababc..83184323 100644 --- a/plugins/python-build/share/python-build/patches/2.5.0/Python-2.5/004_osx_libffi.patch +++ b/plugins/python-build/share/python-build/patches/2.5.0/Python-2.5/004_osx_libffi.patch @@ -197,7 +197,7 @@ index 0000000..1fc2747 +Before making the call, the VALUES vector should be initialized +with pointers to the appropriate argument values. + -+To call the the function using the initialized ffi_cif, use the ++To call the function using the initialized ffi_cif, use the +ffi_call function: + +void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); diff --git a/plugins/python-build/share/python-build/patches/2.5.1/Python-2.5.1/004_osx_libffi.patch b/plugins/python-build/share/python-build/patches/2.5.1/Python-2.5.1/004_osx_libffi.patch index 9c3ababc..83184323 100644 --- a/plugins/python-build/share/python-build/patches/2.5.1/Python-2.5.1/004_osx_libffi.patch +++ b/plugins/python-build/share/python-build/patches/2.5.1/Python-2.5.1/004_osx_libffi.patch @@ -197,7 +197,7 @@ index 0000000..1fc2747 +Before making the call, the VALUES vector should be initialized +with pointers to the appropriate argument values. + -+To call the the function using the initialized ffi_cif, use the ++To call the function using the initialized ffi_cif, use the +ffi_call function: + +void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); diff --git a/plugins/python-build/share/python-build/patches/2.5.2/Python-2.5.2/004_osx_libffi.patch b/plugins/python-build/share/python-build/patches/2.5.2/Python-2.5.2/004_osx_libffi.patch index 9c3ababc..83184323 100644 --- a/plugins/python-build/share/python-build/patches/2.5.2/Python-2.5.2/004_osx_libffi.patch +++ b/plugins/python-build/share/python-build/patches/2.5.2/Python-2.5.2/004_osx_libffi.patch @@ -197,7 +197,7 @@ index 0000000..1fc2747 +Before making the call, the VALUES vector should be initialized +with pointers to the appropriate argument values. + -+To call the the function using the initialized ffi_cif, use the ++To call the function using the initialized ffi_cif, use the +ffi_call function: + +void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); diff --git a/plugins/python-build/share/python-build/patches/2.5.3/Python-2.5.3/004_osx_libffi.patch b/plugins/python-build/share/python-build/patches/2.5.3/Python-2.5.3/004_osx_libffi.patch index 9c3ababc..83184323 100644 --- a/plugins/python-build/share/python-build/patches/2.5.3/Python-2.5.3/004_osx_libffi.patch +++ b/plugins/python-build/share/python-build/patches/2.5.3/Python-2.5.3/004_osx_libffi.patch @@ -197,7 +197,7 @@ index 0000000..1fc2747 +Before making the call, the VALUES vector should be initialized +with pointers to the appropriate argument values. + -+To call the the function using the initialized ffi_cif, use the ++To call the function using the initialized ffi_cif, use the +ffi_call function: + +void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); diff --git a/plugins/python-build/share/python-build/patches/2.5.4/Python-2.5.4/004_osx_libffi.patch b/plugins/python-build/share/python-build/patches/2.5.4/Python-2.5.4/004_osx_libffi.patch index 9c3ababc..83184323 100644 --- a/plugins/python-build/share/python-build/patches/2.5.4/Python-2.5.4/004_osx_libffi.patch +++ b/plugins/python-build/share/python-build/patches/2.5.4/Python-2.5.4/004_osx_libffi.patch @@ -197,7 +197,7 @@ index 0000000..1fc2747 +Before making the call, the VALUES vector should be initialized +with pointers to the appropriate argument values. + -+To call the the function using the initialized ffi_cif, use the ++To call the function using the initialized ffi_cif, use the +ffi_call function: + +void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); diff --git a/plugins/python-build/share/python-build/patches/2.5.5/Python-2.5.5/004_osx_libffi.patch b/plugins/python-build/share/python-build/patches/2.5.5/Python-2.5.5/004_osx_libffi.patch index 9c3ababc..83184323 100644 --- a/plugins/python-build/share/python-build/patches/2.5.5/Python-2.5.5/004_osx_libffi.patch +++ b/plugins/python-build/share/python-build/patches/2.5.5/Python-2.5.5/004_osx_libffi.patch @@ -197,7 +197,7 @@ index 0000000..1fc2747 +Before making the call, the VALUES vector should be initialized +with pointers to the appropriate argument values. + -+To call the the function using the initialized ffi_cif, use the ++To call the function using the initialized ffi_cif, use the +ffi_call function: + +void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); diff --git a/plugins/python-build/share/python-build/patches/2.5.6/Python-2.5.6/004_osx_libffi.patch b/plugins/python-build/share/python-build/patches/2.5.6/Python-2.5.6/004_osx_libffi.patch index 9c3ababc..83184323 100644 --- a/plugins/python-build/share/python-build/patches/2.5.6/Python-2.5.6/004_osx_libffi.patch +++ b/plugins/python-build/share/python-build/patches/2.5.6/Python-2.5.6/004_osx_libffi.patch @@ -197,7 +197,7 @@ index 0000000..1fc2747 +Before making the call, the VALUES vector should be initialized +with pointers to the appropriate argument values. + -+To call the the function using the initialized ffi_cif, use the ++To call the function using the initialized ffi_cif, use the +ffi_call function: + +void ffi_call(ffi_cif *cif, void *fn, void *rvalue, void **avalues); diff --git a/plugins/python-build/share/python-build/pypy2.7-7.3.16 b/plugins/python-build/share/python-build/pypy2.7-7.3.16 new file mode 100644 index 00000000..b77482f2 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy2.7-7.3.16 @@ -0,0 +1,81 @@ +VERSION='7.3.16' +PYVER='2.7' + +# https://www.pypy.org/checksums.html +aarch64_hash=be44e65dd8c00d2388b2580dbe2af6a5179f951a8f4979efc74360f92f3c7e96 +linux32_hash=a19712d7a6bd4f6d113e352c5271803c583b5129b76a357d387b1fa85204f8e5 +linux64_hash=04b2fceb712d6f811274825b8a471ee392d3d1b53afc83eb3f42439ce00d8e07 +osarm64_hash=9cc13f4d6c4096820e1e0ddabb3959f853e45150ce0166a39aa23867e99f0145 +osx64_hash=e8744c1cef8b9e4eb2d2b6b368ed19a1c5cde482c7ef750f2d9f0807bb77fd1c +s390x_hash=09eb70b932e6aac484cf4b5f2de5845f71589f2cbb53e5ed37a497613b43cd53 + +### 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 + ;; + 's390x' ) + hash="${s390x_hash}" + ;; + * ) + 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.16-src b/plugins/python-build/share/python-build/pypy2.7-7.3.16-src new file mode 100644 index 00000000..fdf2005a --- /dev/null +++ b/plugins/python-build/share/python-build/pypy2.7-7.3.16-src @@ -0,0 +1,14 @@ +VERSION='7.3.16' +PYVER='2.7' + +# https://www.pypy.org/checksums.html +hash=43721cc0c397f0f3560b325c20c70b11f7c76c27910d3df09f8418cec4f9c2ad + +### 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.16 b/plugins/python-build/share/python-build/pypy3.10-7.3.16 new file mode 100644 index 00000000..4f7085e3 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.10-7.3.16 @@ -0,0 +1,81 @@ +VERSION='7.3.16' +PYVER='3.10' + +# https://www.pypy.org/checksums.html +aarch64_hash=fc720999bc5050e1d3706b3b6445e695cf42bfc71ebc7c88ed6bb88828b1d385 +linux32_hash=0df48aa780159e879ac89a805d143e4a6cd1b842f98046f5a3f865814bfaa2a4 +linux64_hash=404e6180d6caf9258eaab0c02c72018e9aa8eb03ab9094a0ff17ee5e3b265ac1 +osarm64_hash=6c003376667a95c7a228544649677b9927b8210d6444b901817aad24b8719b93 +osx64_hash=490f2c6ba2489f405444f3b4ad42166da6e2eb73489a9535b206067eaaf21737 +s390x_hash=af97efe498a209ba18c7bc7d084164a9907fb3736588b6864955177e19d5216a + +### 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 + ;; + 's390x' ) + hash="${s390x_hash}" + ;; + * ) + 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.16-src b/plugins/python-build/share/python-build/pypy3.10-7.3.16-src new file mode 100644 index 00000000..fede5826 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.10-7.3.16-src @@ -0,0 +1,14 @@ +VERSION='7.3.16' +PYVER='3.10' + +# https://www.pypy.org/checksums.html +hash=4a3a3177d0a1f51d59982bb981d1d485403bda3419d5437b9e077f55f59424ff + +### 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.9-7.3.16 b/plugins/python-build/share/python-build/pypy3.9-7.3.16 new file mode 100644 index 00000000..afa539fd --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.9-7.3.16 @@ -0,0 +1,81 @@ +VERSION='7.3.16' +PYVER='3.9' + +# https://www.pypy.org/checksums.html +aarch64_hash=de3f2ed3581b30555ac0dd3e4df78a262ec736a36fb2e8f28259f8539b278ef4 +linux32_hash=583b6d6dd4e8c07cbc04da04a7ec2bdfa6674825289c2378c5e018d5abe779ea +linux64_hash=16f9c5b808c848516e742986e826b833cdbeda09ad8764e8704595adbe791b23 +osarm64_hash=88f824e7a2d676440d09bc90fc959ae0fd3557d7e2f14bfbbe53d41d159a47fe +osx64_hash=fda015431621e7e5aa16359d114f2c45a77ed936992c1efff86302e768a6b21c +s390x_hash=7a56ebb27dba3110dc1ff52d8e0449cdb37fe5c2275f7faf11432e4e164833ba + +### 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 + ;; + 's390x' ) + hash="${s390x_hash}" + ;; + * ) + 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.9-7.3.16-src b/plugins/python-build/share/python-build/pypy3.9-7.3.16-src new file mode 100644 index 00000000..b8c0cc63 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.9-7.3.16-src @@ -0,0 +1,14 @@ +VERSION='7.3.16' +PYVER='3.9' + +# https://www.pypy.org/checksums.html +hash=5b75af3f8e76041e79c1ef5ce22ce63f8bd131733e9302081897d8f650e81843 + +### 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/test/stubs/stub b/plugins/python-build/test/stubs/stub index b940bedb..a3b0f33e 100755 --- a/plugins/python-build/test/stubs/stub +++ b/plugins/python-build/test/stubs/stub @@ -100,10 +100,6 @@ if [ -n "${!_STUB_END}" ]; then rm -f "${!_STUB_RUN}" rm -f "${!_STUB_LOG}" - # Clean up the run file. - rm -f "${!_STUB_RUN}" - rm -f "${!_STUB_LOG}" - # Return the result. exit "${!_STUB_RESULT}" diff --git a/pyenv.d/rehash/conda.d/default.list b/pyenv.d/rehash/conda.d/default.list index 867de1cc..f70b953b 100644 --- a/pyenv.d/rehash/conda.d/default.list +++ b/pyenv.d/rehash/conda.d/default.list @@ -64,6 +64,8 @@ redis-check-aof redis-check-dump redis-cli redis-server +# sed +sed # sqlite3 sqlite3 # xslt-config @@ -189,4 +191,5 @@ wc who whoami yes -# --- end exclusions from coreutils \ No newline at end of file +# --- end exclusions from coreutils +greadlink \ No newline at end of file