diff --git a/plugins/python-build/bin/python-build b/plugins/python-build/bin/python-build index 783848dc..95d56af2 100755 --- a/plugins/python-build/bin/python-build +++ b/plugins/python-build/bin/python-build @@ -2037,14 +2037,23 @@ build_package_get_pip() { build_package_symlink_version_suffix } +# Pip <21 (in 2.7 and derivatives like PyPy-2.7) doesn't support -I +build_package_ensurepip_lt21() { + build_package_ensurepip lt21 +} + build_package_ensurepip() { + local mode="$1" local ensurepip_opts # Install as `--altinstall` if the Python is installed as `altinstall` (#255) if [[ "$PYTHON_MAKE_INSTALL_TARGET" == *"altinstall"* ]]; then ensurepip_opts="--altinstall" fi + local python_opts="-I" + if [[ $mode == "lt21" ]]; then python_opts="-s"; fi + # FIXME: `--altinstall` with `get-pip.py` - "$PYTHON_BIN" -I -m ensurepip ${ensurepip_opts} 1>/dev/null 2>&1 || build_package_get_pip "$@" || return 1 + "$PYTHON_BIN" $python_opts -m ensurepip ${ensurepip_opts} 1>/dev/null 2>&1 || build_package_get_pip "$@" || return 1 build_package_symlink_version_suffix } diff --git a/plugins/python-build/share/python-build/2.7.18 b/plugins/python-build/share/python-build/2.7.18 index 5725575d..6576ca67 100644 --- a/plugins/python-build/share/python-build/2.7.18 +++ b/plugins/python-build/share/python-build/2.7.18 @@ -2,7 +2,7 @@ export PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA="openssl@1.1 openssl@1.0 openssl" install_package "openssl-1.1.1v" "https://www.openssl.org/source/openssl-1.1.1v.tar.gz" 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 if has_tar_xz_support; then - install_package "Python-2.7.18" "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz#b62c0e7937551d0cc02b8fd5cb0f544f9405bafc9a54d3808ed4594812edef43" standard verify_py27 copy_python_gdb ensurepip + install_package "Python-2.7.18" "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz#b62c0e7937551d0cc02b8fd5cb0f544f9405bafc9a54d3808ed4594812edef43" standard verify_py27 copy_python_gdb ensurepip_lt21 else - install_package "Python-2.7.18" "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz#da3080e3b488f648a3d7a4560ddee895284c3380b11d6de75edb986526b9a814" standard verify_py27 copy_python_gdb ensurepip + install_package "Python-2.7.18" "https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz#da3080e3b488f648a3d7a4560ddee895284c3380b11d6de75edb986526b9a814" standard verify_py27 copy_python_gdb ensurepip_lt21 fi diff --git a/plugins/python-build/share/python-build/pypy2.7-7.3.13 b/plugins/python-build/share/python-build/pypy2.7-7.3.13 new file mode 100644 index 00000000..0239066b --- /dev/null +++ b/plugins/python-build/share/python-build/pypy2.7-7.3.13 @@ -0,0 +1,81 @@ +VERSION='7.3.13' +PYVER='2.7' + +# https://www.pypy.org/checksums.html +aarch64_hash=f1e20f833cc86a097c1f1318069fc17d01c3988678c1438fe27ed567fcb5cfd0 +linux32_hash=b727d2e759a740f45bab1e333029d001c4384b52949bcbb4bd2ad7912eae8dad +linux64_hash=e41ceb5dc6c4d3a9311ed5f88edfeedbf3e8abbd1ed3c4f2e151a90a5cf4e1d7 +osarm64_hash=5b86cf0750abc188a0355380d10c7bab1dec51b610cde23ce78f30a9ef296618 +osx64_hash=50769df0091e8fa51c9e4356e0cb204e6f6aa54f502ec5a6e55aef03d0ac5675 +s390x_hash=fbb2f3d92831c02b094f17e9609b95a6202d4bdcddae437e380ab14388d4556e + +### 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.13-src b/plugins/python-build/share/python-build/pypy2.7-7.3.13-src new file mode 100644 index 00000000..4704161e --- /dev/null +++ b/plugins/python-build/share/python-build/pypy2.7-7.3.13-src @@ -0,0 +1,14 @@ +VERSION='7.3.13' +PYVER='2.7' + +# https://www.pypy.org/checksums.html +hash=976984bc6ca5ec9d37ae4e219b020cbed2751d1a02267033f59ed700ba8cec40 + +### 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.13 b/plugins/python-build/share/python-build/pypy3.10-7.3.13 new file mode 100644 index 00000000..1690b6ee --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.10-7.3.13 @@ -0,0 +1,81 @@ +VERSION='7.3.13' +PYVER='3.10' + +# https://www.pypy.org/checksums.html +aarch64_hash=ac476f01c9653358404f2e4b52f62307b2f64ccdb8c96dadcbfe355824d81a63 +linux32_hash=bfba57eb1f859dd0ad0d6fe841bb12e1256f1f023c7fbca083b536cccbc1233b +linux64_hash=54936eeafd9350a5ea0375b036272a260871b9bca82e1b0bb3201deea9f5a442 +osarm64_hash=efb3007b7aace0af6e3b30d381088a5bbc175973a6627b6b0d624a2ca2dc63ce +osx64_hash=2c6238b9ece7b94ffdfd1d9b50619edef4b169a5c78adcdb691fce6709cd6610 +s390x_hash=3c813c7efa6a026b281313b299c186c585155fc164c7538e65d41efdabff87c9 + +### 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.13-src b/plugins/python-build/share/python-build/pypy3.10-7.3.13-src new file mode 100644 index 00000000..4ebe5f2f --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.10-7.3.13-src @@ -0,0 +1,14 @@ +VERSION='7.3.13' +PYVER='3.10' + +# https://www.pypy.org/checksums.html +hash=4ac1733c19d014d3193c804e7f40ffccbf6924bcaaee1b6089b82b9bf9353a6d + +### 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.13 b/plugins/python-build/share/python-build/pypy3.9-7.3.13 new file mode 100644 index 00000000..2161b5ce --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.9-7.3.13 @@ -0,0 +1,81 @@ +VERSION='7.3.13' +PYVER='3.9' + +# https://www.pypy.org/checksums.html +aarch64_hash=317d7876c5825a086f854253648b967a432b993ce87695d2895d3ad6ed0d2716 +linux32_hash=ac695238b4a3635ac6b482e74e04e2ea78b31acca0decd5de601dfd2f4ebf35a +linux64_hash=323b05a9f607e932cda1995cbe77a96e4ea35994631aa6d734c8035e8479b74e +osarm64_hash=333131d62c502aa5d5fb58a58cdf01de4bfb2c1db5a9bb4c04515258abe6bced +osx64_hash=fb1ff67340353e837498102fec2b0b45744bb189dced57ee2e00045785e69662 +s390x_hash=213c88f652a99c4dc4e8e00b4b5b58f381c7f7e9ea1a9b65801fc0eb1e50df0a + +### 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.13-src b/plugins/python-build/share/python-build/pypy3.9-7.3.13-src new file mode 100644 index 00000000..07ff9893 --- /dev/null +++ b/plugins/python-build/share/python-build/pypy3.9-7.3.13-src @@ -0,0 +1,14 @@ +VERSION='7.3.13' +PYVER='3.9' + +# https://www.pypy.org/checksums.html +hash=bc6147268105e7cb3bd57b401e6d97f66aa4ede269104b2712a7cdd9f02f68cd + +### 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'