1
0
mirror of https://github.com/pyenv/pyenv.git synced 2025-11-08 11:33:49 -05:00

Compare commits

...

235 Commits

Author SHA1 Message Date
Anton Petrov
879fa68b35 v2.3.23 2023-07-22 16:09:30 +03:00
Anton Petrov
e908606554 v2.3.23 2023-07-22 16:08:35 +03:00
native-api
b81204c08b Merge pull request #2742 from aphedges/update-miniconda-2023-07-11
Add new anaconda and miniconda definitions
2023-07-12 20:48:50 +03:00
Alex Hedges
37cc45a831 Update anaconda and miniconda with add_miniconda.py
This adds anaconda 2023.03, anaconda 2023.07, miniconda 23.3.1, and
miniconda 23.5.0.
2023-07-11 17:42:00 -04:00
Alex Hedges
3f6bc8d16a Support miniconda with Python 3.11 2023-07-11 17:36:41 -04:00
Alex Hedges
dd5378941a Fix miniconda version handling
Anaconda and miniconda have changed their version string format again,
so the parsing needs to be done differently. `add_miniconda.py` can now
parse all existing definition files properly.
2023-07-11 17:30:10 -04:00
Alex Hedges
2506c9773c Log errors when parsing existing Conda versions
This makes it easier to fix file names that cannot be parsed using the
current logic.
2023-07-11 17:30:10 -04:00
Edgar R. M
51166377b7 Add CPython 3.12.0b4 (#2741) 2023-07-11 21:50:06 +03:00
Anton Petrov
af1a54482b Update CHANGELOG.md 2023-07-08 22:38:47 +03:00
Anton Petrov
64c70feb08 Update pyenv---version 2023-07-08 22:37:24 +03:00
Anton Petrov
7b713a88c4 Merge pull request #2739 from filips123/add-cinder-3.10
Add Cinder 3.10 and Cinder configure patches
2023-07-02 10:16:59 +03:00
Filip Š
1874f95a0e Update Cinder errors and warnings 2023-07-01 19:34:12 +02:00
Filip Š
1a882c6053 Add Cinder configure patches 2023-06-28 14:02:51 +02:00
Filip Š
05dcd45741 Add Cinder 3.10 2023-06-28 10:29:55 +02:00
Anton Petrov
a2dff4809b Merge pull request #2730 from edgarrmondragon/cpython-3.12.0b3
Add CPython 3.12.0b3
2023-06-21 07:47:36 +03:00
Edgar Ramírez Mondragón
ad0d131032 Add CPython 3.12.0b3 2023-06-20 07:46:41 -06:00
Anton Petrov
7c17c741eb 2.3.21 2023-06-20 13:52:59 +03:00
Anton Petrov
ba8b58f90d 2.3.21 2023-06-20 13:52:17 +03:00
native-api
fe76b05445 Fix occasional 'libexec/pyenv-latest: line 39: printf: write error: Broken pipe' (#2729) 2023-06-20 03:04:06 +03:00
Anton Petrov
c5d2639082 Merge pull request #2726 from edgarrmondragon/pypy-7.3.12
Add PyPy 7.3.12
2023-06-18 09:35:15 +03:00
Edgar Ramírez Mondragón
d4bd7bbe2b Add PyPy 7.3.12 2023-06-17 22:46:05 -06:00
Anton Petrov
38ac747239 Merge pull request #2724 from msimacek/master
Add graalpy-23.0.0
2023-06-14 09:41:42 +03:00
Michael Simacek
8f655d2ca6 Add graalpy-23.0.0 2023-06-13 17:13:00 +02:00
Ivan Pozdeev
d0b78fd5fe CONTRIBUTING.md: clearer phrasing 2023-06-12 15:34:45 +03:00
Anton Petrov
43f40eca05 v2.3.20 2023-06-12 10:33:36 +03:00
Alex Tomkins
687944d991 Add missing patches for Python 3.7/3.8/3.9 (#2718)
* Use OpenSSL 1.1.1u and remove patches for 1.1.1q
2023-06-11 00:09:42 +03:00
native-api
0f337a6c9a Merge pull request #2717 from native-api/backport_42351_3.5.10
Backport bpo-42351 to 3.5.10
2023-06-10 20:49:31 +03:00
Ivan Pozdeev
afe2615a1c 3.5.10: Backport bpo-42351
The bug is reported to manifest in Mandjaro Linux 6.3.5-2
2023-06-10 20:33:01 +03:00
Ivan Pozdeev
d7d5ab5148 3.5.10: Fix patches to apply cleanly 2023-06-10 20:31:57 +03:00
Anton Petrov
e79dd97afa v2.3.19 2023-06-08 12:18:16 +03:00
Anton Petrov
021b6c2da0 v2.3.19 2023-06-08 12:17:52 +03:00
Anton Petrov
e008430451 Merge pull request #2713 from edgarrmondragon/cpython-3.12.0b2
Add CPython 3.12.0b2
2023-06-07 14:47:56 +03:00
Anton Petrov
09fc5b8824 Merge pull request #2714 from edgarrmondragon/cpython-3.10.12
Add CPython 3.10.12
2023-06-07 14:47:10 +03:00
Anton Petrov
6eeda1f87e Merge pull request #2715 from edgarrmondragon/cpython-3.11.4
Add CPython 3.11.4
2023-06-07 14:46:34 +03:00
Edgar Ramírez Mondragón
452647ab33 Add CPython 3.11.4 2023-06-07 01:12:47 -06:00
Edgar Ramírez Mondragón
4086e452fd Add CPython 3.10.12 2023-06-06 18:26:24 -06:00
Edgar Ramírez Mondragón
82c8d511c4 Add CPython 3.12.0b2 2023-06-06 14:39:15 -06:00
native-api
578c7507c6 Merge pull request #2711 from edgarrmondragon/cpython-3.9.17
Add CPython 3.7.17, 3.8.17 and 3.9.17
2023-06-06 20:04:06 +03:00
Edgar Ramírez Mondragón
23c727a767 Add CPython 3.7.17 and CPython 3.8.17 2023-06-06 10:39:56 -06:00
Edgar Ramírez Mondragón
fb73c4b714 Add CPython 3.9.17 2023-06-06 09:19:19 -06:00
Anton Petrov
3fa5812bfc Update pyenv---version 2023-05-25 11:23:39 +03:00
Anton Petrov
c8a23e26e6 Update CHANGELOG.md 2023-05-25 11:23:18 +03:00
t0b3
def5cd994e Update 3.12-dev and add 3.13-dev (#2703) 2023-05-25 09:47:37 +03:00
Edgar R. M
b5576240a2 Add CPython 3.12.0b1 (#2701) 2023-05-23 23:07:48 +03:00
Kevin Schoedel
920ef1456a Support ksh alternative names (#2697)
* Support ksh versions

Korn shell had two major versions: ’88 and ’93. Some systems have
ksh installed under the name `ksh93`. A few systems (maybe only
Solaris now) also have a `ksh88`. A few others use the `pdksh` (’88)
or `mksh` (’93) implementations, originated before ksh was open source.

Limit to currently-used versions

---------

Co-authored-by: Kevin Schoedel <kps@datatravelandexperiments.com>
2023-05-13 01:24:57 +03:00
Anton Petrov
528d10e96f Merge pull request #2691 from aviadhahami/master
fix: updating heredoc delimiter to be random and unique
2023-04-30 08:16:28 +03:00
Aviad Hahami
cf9d0dcd7b fix: updating heredoc delimiter to be random and unique 2023-04-30 00:56:43 +03:00
Anton Petrov
aa5fd27e2f Merge pull request #2687 from tomschr/bug2682-fix-manpage
Fix #2682: Correct pyenv_user_setup.bash file
2023-04-25 07:39:39 +03:00
Tom Schraitle
73b6307399 Fix #2682: Correct pyenv_user_setup.bash file
The manpage contains a reference to a file which does
only exist on Debian (/usr/share/pyenv/pyenv_user_setup.bash).

It is replaced by its content to make it usable for
other distributions.
2023-04-24 13:56:01 +02:00
Ivan Pozdeev
a57e0b5019 README: move troubleshooting note higher 2023-04-16 20:11:08 +03:00
Anton Petrov
b3c91b37d6 Merge pull request #2677 from mirekdlugosz/fix-31011-3113-tarxz
Correct link in has_tar_xz_support else branch of 3.10.11 and 3.11.3
2023-04-11 11:00:40 +03:00
Mirek Długosz
777089466d Correct link in has_tar_xz_support else branch of 3.10.11 and 3.11.3 2023-04-11 09:15:16 +02:00
native-api
20189ff06f Fix not showing symlink contents for unselected versions in pyenv versions (#2675) 2023-04-08 01:12:09 +03:00
Ivan Pozdeev
5a8dbcf143 Document using and writing plugins 2023-04-07 19:07:35 +03:00
Anton Petrov
9a4f9c2511 2.3.17 2023-04-06 06:58:52 +03:00
Anton Petrov
bee178a95d 2.3.17 2023-04-06 06:58:33 +03:00
Anton Petrov
0f75cd8800 Merge pull request #2670 from mirekdlugosz/cpython-3.10.11
Add CPython 3.10.11
2023-04-05 18:28:35 +03:00
Anton Petrov
29c4f279a3 Merge pull request #2671 from mirekdlugosz/cpython-3.11.3
Add CPython 3.11.3
2023-04-05 18:07:59 +03:00
Mirek Długosz
be4939604e Add CPython 3.11.3 2023-04-05 15:52:01 +02:00
Mirek Długosz
fc616a0aee Add CPython 3.10.11 2023-04-05 15:51:13 +02:00
Edgar R. M
b613a4abeb Add CPython 3.12.0a7 (#2668) 2023-04-05 05:56:24 +03:00
Shengqi Chen
b1ee6c93c4 Try locate readlink first in pyenv-hooks, fix #2654 (#2655)
* Remove all use of `greadlink`, fix #2654

Signed-off-by: Harry Chen <i@harrychen.xyz>

* revert greadlink back in tests

---------

Signed-off-by: Harry Chen <i@harrychen.xyz>
Co-authored-by: Anton Petrov <anton.a.petrov@gmail.com>
2023-03-28 11:25:27 +03:00
Petrov
9fad1f46c5 Update pyenv---version 2023-03-24 08:26:20 +03:00
Petrov
f51d3dcb47 Update CHANGELOG.md 2023-03-24 08:26:05 +03:00
Petrov
deb4935187 Merge pull request #2648 from anton-petrov/master
Add Anaconda3-2023.03
2023-03-23 14:38:52 +03:00
Petrov
e28d747b83 set hashes to sha-256 2023-03-23 13:41:02 +03:00
Petrov
ddd37eb823 Add hashes 2023-03-23 13:35:50 +03:00
Petrov
be2bd5f03d Create anaconda3-2023.03 2023-03-19 08:14:59 +03:00
Justin Lecher
4ef81b5c7a Add Miniforge3-22.11.1-4 (#2642) 2023-03-10 19:38:06 +03:00
Anton Petrov
6bb75b3ba7 Update CHANGELOG.md 2023-03-10 09:04:21 +03:00
Anton Petrov
f507d08064 Update pyenv---version 2023-03-10 09:03:23 +03:00
Saaket Prakash
ad15c75e0e Add CPython 3.12.0a6 (#2638) 2023-03-08 08:32:18 +03:00
Ivan Pozdeev
6052caa038 README: extended support for 3.5.10 2023-03-02 11:27:23 +03:00
Ivan Pozdeev
e8a4b54231 CI: ubuntu-build: Fix 404s on apt install 2023-03-02 11:24:05 +03:00
Alex Hedges
bcbdadf10d Add miniconda 23.1.0-1 (#2635) 2023-03-02 06:49:44 +03:00
Anton Petrov
904dd5f828 Update pyenv---version 2023-03-01 08:25:31 +03:00
Anton Petrov
3226a1870b Update CHANGELOG.md 2023-03-01 08:25:12 +03:00
Anton Petrov
0d19efecf5 Merge pull request #2634 from mrienstra/patch-1
README: clarify behavior of `pyenv latest`
2023-02-28 09:30:48 +03:00
Michael Rienstra
ecab7b0d17 README: clarify behavior of pyenv latest 2023-02-27 16:26:18 -08:00
Chaim Halbert
3bfc97ad29 bpo-36231 for v3.5.10: fix Unsupported MacOS X CPU type in ffi.h (#2633) 2023-02-26 18:36:51 +03:00
native-api
276ce32643 Merge pull request #2630 from chaimleib/fix-bpo-27987-on-eol-pythons
bpo-27987 for v3.5.10 and v3.6.15: align by 16bytes on 64bit platforms
2023-02-26 16:05:39 +03:00
Chaim Halbert
b30508f9b8 bpo-41100 for v3.5.10: fix implicit declaration of function sendfile 2023-02-26 05:51:20 -07:00
Chaim Halbert
0e80d0725b v3.5.10 on macOS13: fix unexpected output of arch on OSX 2023-02-26 05:21:03 -07:00
Chaim Halbert
6bec7a50fe bpo-45405 for v3.5.10: Prevent internal configure error when running configure with recent versions of clang. (GH-28845) (GH-31890) 2023-02-24 13:16:52 -07:00
Chaim Halbert
28be65992d bpo-27987 for v3.5.10 and v3.6.15: align by 16bytes on 64bit platforms 2023-02-24 12:19:13 -07:00
Florian Schüller
68918e69b7 Support for BusyBox version of `head' (#2629) 2023-02-22 20:11:48 +03:00
Rafał
86a4423bbb Fix indentation (#2620) 2023-02-16 00:10:36 +03:00
Anton Petrov
0ab9683e58 2.3.13 2023-02-15 08:15:35 +03:00
Anton Petrov
7fe647968d 2.3.13 2023-02-15 08:15:14 +03:00
Anton Petrov
c8daaa3954 Merge pull request #2614 from Afront/3.12.0a5
Add CPython 3.12.0a5
2023-02-08 14:08:18 +03:00
Anton Petrov
88be70722f Merge pull request #2616 from edgarrmondragon/cpython-3.10.10
Add CPython 3.10.10
2023-02-08 14:07:46 +03:00
Anton Petrov
47d88d2c5f Merge pull request #2615 from edgarrmondragon/cpython-3.11.2
Add CPython 3.11.2
2023-02-08 14:07:34 +03:00
Edgar Ramírez Mondragón
6b758c8cf9 Add CPython 3.10.10 2023-02-08 03:43:04 -06:00
Edgar Ramírez Mondragón
017b6d877e Add CPython 3.11.2 2023-02-08 03:38:33 -06:00
Afront
063aa457e4 Add CPython 3.12.0a5 2023-02-08 15:34:14 +09:00
native-api
fcd7806529 Merge pull request #2612 from laggardkernel/bugfix/realpath-in-versions
Fix link resolving in pyenv-versions
2023-02-06 20:09:22 +03:00
Ivan Pozdeev
a3f0bddc2a CI: Migrate to checkout@v3
Actions runner warns about v2 deprecation
2023-02-06 19:22:38 +03:00
Ivan Pozdeev
f72c1712dc CI: Test with native extension
Only run tests for subcommands that use the native extension
2023-02-06 19:22:38 +03:00
laggardkernel
a7b181c3ca Fix link resolving in pyenv-versions
Co-Authored-by: Ivan Pozdeev <vano@mail.mipt.ru>
2023-02-06 19:22:38 +03:00
native-api
c8c324afb4 Merge pull request #2610 from native-api/version_skip_envs
Ignore virtualenvs in `pyenv latest' in a clean way
2023-02-02 20:01:28 +03:00
Ivan Pozdeev
72c5b034ca Avoid the need to filter out envs in `pyenv-latest' 2023-02-02 18:24:17 +03:00
Ivan Pozdeev
446411dc64 Streamline `pyenv-versions --bare'
Achieves a ~20% speedup.
As it's used in pyenv-latest, this affects all version lookups
2023-02-02 18:15:47 +03:00
Ivan Pozdeev
9fe80f28e5 Add pyenv versions' option to skip envs for pyenv-latest' 2023-02-02 18:15:13 +03:00
native-api
9248255f70 Show symlink contents in non-bare `pyenv versions' (#2609)
* Change other tests to use the newly-created convenience function
2023-02-02 17:24:19 +03:00
native-api
368e04f3fa Fix pyenv-latest to ignore virtualenvs (#2608)
* Add test, exclude alphas as well
2023-02-02 15:15:16 +03:00
Anton Petrov
76e93b073e 2.3.12 2023-01-30 08:19:43 +03:00
Anton Petrov
e3fe82a9b1 2.3.12 2023-01-30 08:19:25 +03:00
native-api
dd60d5fae2 Fix overriding arguments for --enable-framework and --enable-universalsdk after #2592 (#2605) 2023-01-29 00:59:47 +03:00
Anton Petrov
96828af31e Merge pull request #2602 from colesbury/nogil-3.9.10-1
Add more recent build of nogil Python.
2023-01-23 16:17:32 +03:00
Sam Gross
c998eae677 Add more recent build of nogil Python. 2023-01-22 13:12:28 -08:00
native-api
c20fc7bd6a Fix pyenv which to support auto-resolved prefixes (#2601)
* Resolve version name that hooks see
* Avoid a 2nd iteration over configured versions
2023-01-22 18:22:26 +03:00
native-api
f1a1f59c87 Fix :latest after #2568 (#2599)
* Cleanup mocks logic
* Add test for `:latest`
2023-01-22 05:49:40 +03:00
Ivan Pozdeev
b64b0ab5e2 Merge branch 'master' of https://github.com/native-api/pyenv 2023-01-22 00:20:28 +03:00
Ivan Pozdeev
1a0b555baf Improve visibility of the auto-resolution feature
Recent feedback showed that it's not visible enough
2023-01-22 00:07:53 +03:00
native-api
819e2b8f45 Fix wrong libpython being linked to in MacOS (#2596)
Without rpath, python would link up to the system's libpython
2023-01-19 00:21:10 +03:00
Christian Clauss
bd618ea9ef add_miniconda.py: fix typo oversight (#2595) 2023-01-15 13:37:11 +03:00
Anton Petrov
b77b0be089 2.3.11 2023-01-15 12:44:38 +03:00
Anton Petrov
906246da4c 2.3.11 2023-01-15 12:43:34 +03:00
native-api
12e74e147a Fix a compilation error in 3.8.10+ and 3.9.5+ when linking against OpenSSL built with SSLv3 support (#2594) 2023-01-14 05:18:10 +03:00
Ivan Pozdeev
2b0dd7355d Specify additional required information for build failures 2023-01-14 02:28:38 +03:00
native-api
f40397088c Merge pull request #2592 from native-api/disable_shared
* Fix priority for user-supplied configure and make flags
* Don't set --enable-shared if user supplied --disable-shared
2023-01-14 02:00:53 +03:00
Ivan Pozdeev
e447fe5b73 Don't set --enable-shared if user supplied --disable-shared 2023-01-14 01:45:20 +03:00
Ivan Pozdeev
4242694a0e Fix priority for user-supplied configure and make flags 2023-01-14 01:44:59 +03:00
native-api
83619f3fbe Merge pull request #2593 from native-api/fix_freebsd
Fix using dependencies from Ports in FreeBSD that are not searched with pkg-config
2023-01-13 22:20:01 +03:00
Ivan Pozdeev
4bd8a975f4 Avoid adding dangling spaces to *FLAGS 2023-01-13 22:07:31 +03:00
Ivan Pozdeev
2a5bbf6cb5 Fix searching readline and sqlite3 in FreeBSD
Surprisingly, CPython doesn't search these with pkg-config
This is fixed upstream in 3.12.0a1
2023-01-13 22:07:31 +03:00
Sean McGivern
b9a27af7b8 Add missing Miniforge/Mambaforge versions (4.10.2-0 - 22.9.0-3) (#2591) 2023-01-11 22:51:31 +03:00
Anton Petrov
c03d9cf84c Merge pull request #2560 from smcgivern/add-miniforge-script
Add a script to add the latest miniforge and mambaforge versions
2023-01-11 19:43:31 +03:00
Sean McGivern
c7f2c4db45 Add a script to add the latest miniforge and mambaforge versions
This takes inspiration from the similar script for miniconda, but it
simplifies in a couple of ways:

1. Use the GitHub Releases API instead of scraping HTML.
2. Don't perform a diff, simply add the latest release.

Lots of intermediate miniconda releases have been skipped in the past,
and it doesn't seem particularly valuable to backfill those.
2023-01-11 13:59:33 +00:00
Anton Petrov
3bc3a624db Merge pull request #2590 from Afront/3.12.0a4
Add CPython 3.12.0a4
2023-01-11 10:43:45 +03:00
Afront
f4598bc1f0 Add CPython 3.12.0a4 2023-01-11 13:16:00 +09:00
Anton Petrov
fc4c0ac52d 2.3.10 2023-01-10 19:03:46 +03:00
Anton Petrov
579c34e570 2.3.10 2023-01-10 19:03:00 +03:00
native-api
2369ac2a08 Fix using dependencies from Ports in BSD with no pkg-config (#2586) 2023-01-10 01:13:09 +03:00
Brendan Falk
25c974d59a Add Fig as autocomplete suggestion (#2574)
Co-authored-by: Ivan Pozdeev <vano@mail.mipt.ru>
2023-01-05 05:03:45 +03:00
native-api
2ea797e226 Merge pull request #2583 from aphedges/update-miniconda-22.11.1
Add miniconda 22.11.1-1
2023-01-05 04:47:28 +03:00
Alex Hedges
7d7f8b94ae Add miniconda 22.11.1-1 2023-01-03 20:31:01 -05:00
Alex Hedges
e715e03be0 Support new miniconda file name format 2023-01-03 20:29:19 -05:00
Alex Hedges
b3a5b5eee3 Support miniconda with Python 3.10 2023-01-03 20:18:26 -05:00
Anton Petrov
894bcd8717 Merge pull request #2579 from hauntsaninja/faster-cpython
Mention how to build for maximum performance
2023-01-03 09:04:44 +03:00
hauntsaninja
03ee3ffd32 Mention how to build for maximum performance 2023-01-02 14:35:16 -08:00
dand-oss
3d83bcdbef Add PyPy 7.3.11 (#2576)
Co-authored-by: Dan Dees <dand@appsmiths.com>
2022-12-31 11:17:18 +03:00
Ian Chen
f897c50202 Fix non-bash output while detecting shell (#2561)
Co-authored-by: Ivan Pozdeev <vano@mail.mipt.ru>
2022-12-25 02:35:03 +03:00
Anton Petrov
773c65416b Merge pull request #2554 from anton-petrov/master
Build CPython with--enable-shared flag by default on non-mac systems
2022-12-23 13:48:30 +03:00
Anton Petrov
ca1593c80e Fix build tests 2022-12-23 13:36:37 +03:00
Anton Petrov
cb5da5e831 Merge pull request #2568 from rockandska/fix/919
Allow multiple versions for pyenv-install
2022-12-22 21:44:28 +03:00
rockandska
31f372034d Allow multiple versions for pyenv-install 2022-12-22 19:04:04 +01:00
Tobias Klauser
ff93c58bab Remove stray newline after python-build installation (#2566)
To match other Pyenv commands
2022-12-20 22:01:19 +03:00
Anton Petrov
2bb59169db 2.3.9 2022-12-19 07:52:52 +03:00
Anton Petrov
f9e519611a 2.3.9 2022-12-19 07:52:31 +03:00
Phung Nhat-Huy
ae04877154 Add Anaconda3-2022.10 (#2565) 2022-12-19 01:16:18 +03:00
Anton Petrov
e82e12739c Merge pull request #2564 from samdoran/openssl-patches
Add `openssl` patches for 3.7.15, 3.7.16, and 3.8.16
2022-12-16 10:10:32 +03:00
Sam Doran
6b9795728e Add openssl patches for 3.7.15, 3.7.16, and 3.8.16 2022-12-15 16:48:41 -05:00
宇萱/土撥鼠(Lisbeth)
23576296ae Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.16 (#2558) 2022-12-13 20:05:01 +03:00
Anton Petrov
2128b4f27d Merge pull request #2559 from smcgivern/add-miniforge3-22.9.0-2
Add miniforge3 and mambaforge 22.9.0-2
2022-12-13 19:17:19 +03:00
Sean McGivern
9ba6124833 Add miniforge3 and mambaforge 22.9.0-2 2022-12-13 11:19:40 +00:00
native-api
6c63e086e9 Merge pull request #2553 from dand-oss/pypy7.3.10
Add Pypy 7.3.10
2022-12-11 04:18:08 +03:00
Dan Dees
540c94bdb1 CI: Use PyPy 2.7 as PyPy source build bootstrapper 2022-12-11 02:19:19 +03:00
Ivan Pozdeev
18f62f266d Remove no-longer-needed PyPy prerequisites 2022-12-11 02:18:36 +03:00
Ivan Pozdeev
49cc88094a CI: Install bootstrapper Python for PyPy source builds 2022-12-11 02:17:39 +03:00
Dan Dees
cad18bb332 Add PyPy 7.3.10 2022-12-11 02:17:19 +03:00
Ivan Pozdeev
79fdf1e3bb Improve Mac feature messages phrasing 2022-12-09 16:58:44 +03:00
Ivan Pozdeev
03bba03291 Set --enable-shared earlier
To take advantage of the existing logic to add to rpath
2022-12-09 16:52:47 +03:00
Ivan Pozdeev
cf50e2a2db Don't hide output from extension checks 2022-12-09 11:41:26 +03:00
Anton Petrov
b3d52b05d2 --enable-shared by default on non-mac systems 2022-12-08 12:17:53 +03:00
Anton Petrov
73dc5547fc Merge pull request #2551 from nwh/add-miniforge3-latest-suffix
add -latest suffix to miniforge3
2022-12-08 11:33:16 +03:00
Anton Petrov
3f0dd1962f 2.3.8 2022-12-08 10:07:26 +03:00
Chad Crawford
48b0224aaf Add CPython 3.7.16, 3.8.16, 3.9.16 (#2550) 2022-12-08 00:26:27 +03:00
Nick Henderson
8cfa967d74 add -latest suffix to miniforge3
The auto-resolve feature (#2487) means that

  pyenv install miniforge3

installs miniforge3-4.10.3-10 and not the exactly named "miniforge3"
recipe.  Renaming "miniforge3" to "miniforge3-latest" solves this
issue allowing users to execute

  pyenv install miniforge3-latest

This is similar to the naming of the current "miniconda3-latest" recipe.
2022-12-07 12:56:03 -08:00
Anton Petrov
a57106c932 Merge pull request #2544 from rudisimo/master
Add CPython 3.10.9
2022-12-07 14:35:18 +03:00
Anton Petrov
189e73e5e8 Merge pull request #2549 from anton-petrov/master
Add CPython 3.11.1
2022-12-07 14:34:58 +03:00
Anton Petrov
8680247381 Add CPython 3.11.1 2022-12-07 13:43:35 +03:00
Anton Petrov
606ff454a1 Merge pull request #2545 from saaketp/3.12.0a3
Add CPython 3.12.0a3
2022-12-07 13:10:57 +03:00
Saaket Prakash
b05d15f673 Add CPython 3.12.0a3 2022-12-07 04:57:31 +05:30
Rodolfo Puig
881ba40ff4 Add CPython 3.10.9
Signed-off-by: Rodolfo Puig <rodolfo@puig.io>
2022-12-06 17:36:03 -05:00
Anton Petrov
58bbbf8880 Merge pull request #2540 from ianchen-tw/detect-shell
Export detected shell environment in pyenv-init
2022-12-02 18:07:11 +03:00
Ian Chen
c1674cd552 Detect shell 2022-12-02 00:22:50 +08:00
Anton Petrov
74f923b5fc 2.3.7 2022-12-01 10:16:53 +03:00
Anton Petrov
59c560893a 2.3.7 2022-12-01 10:15:45 +03:00
spookyuser
4971d9e35e Copy auto installer oneliner to README (#2538) 2022-11-29 23:00:22 +03:00
weensy
6d13db992f Fix typo in README.md (#2535)
There was a space at the beginning of the `git clone` command
2022-11-28 19:43:11 +03:00
Ivan Pozdeev
13d8568620 Add 3.11 into CI for Linux 2022-11-19 00:08:53 +03:00
Isaac Levy
cc56f76733 Add --no-push-path option (#2526)
In some advanced shell setups, the order of custom-added PATH entries is important.
We disregard it by default, always pushing shims to the front of PATH,
to ensure that Pyenv works even in poorly maintained shell environments
and with minimal hassle for non-export users
(an attempt to do the opposite (#1898) has ended in a disaster).
Some advanced users are however ready and able to carefully maintain their environment
and deal with breakages and inconvenience. This option is for them.
2022-11-19 00:01:59 +03:00
Saaket Prakash
4c261e6ea1 Add CPython 3.12.0a2 (#2527) 2022-11-16 00:10:34 +03:00
native-api
31355676f0 Support aria2c being a snap (#2528)
Likely in Ubuntu where it's only available as a snap
2022-11-15 20:57:04 +03:00
Alex Hedges
c162dcd932 Add .editorconfig (#2518) 2022-11-13 05:35:45 +03:00
native-api
0b6320d371 Merge pull request #2520 from twangboy/fix_3.9.15
Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.15 and 3.8.15
2022-11-13 04:52:37 +03:00
Twangboy
3bfaa33c1b Gitignore special files of PyCharm and Vim 2022-11-13 04:47:01 +03:00
Twangboy
cd2858aa17 Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.15 and 3.8.15 2022-11-13 04:46:48 +03:00
James Campbell
19359de7b8 Add activate.nu to shim creation exception list (#2524) 2022-11-10 18:58:04 +03:00
Alex
8dd46e3915 GitHub Workflows security hardening (#2511)
Signed-off-by: Alex <aleksandrosansan@gmail.com>
2022-11-10 04:46:55 +03:00
native-api
ed1083ec27 Fix resolution of a name that's a prefix of another name (#2521) 2022-11-10 04:46:14 +03:00
Ivan Pozdeev
904fe964b0 README: Prefix auto-resolution: improve phrasing 2022-11-07 04:46:44 +03:00
Hoàng
036fd63bbd style: convert crlf to lf (#2517) 2022-11-06 19:18:04 +03:00
native-api
1250d7dd30 Don't use Zlib from XCode SDK if a custom compiler is used (#2516) 2022-11-05 02:11:55 +03:00
Omer Korner
ad6a950734 Add Python version 3.11 to the macOS build (#2510) 2022-11-03 15:32:52 +01:00
Rust Saiargaliev
6da0e89207 2.3.6 2022-11-03 09:26:31 +01:00
Ivan Pozdeev
e03118235a Improve prefix resolution documentation 2022-10-30 21:38:06 +03:00
Rust Saiargaliev
a8f921ce4d Document the release process (#2503) 2022-10-30 12:42:20 +03:00
Ivan Pozdeev
4a031504db Document prefix auto-resolution et al.
* Document listing available versions in the tutorial (#1677)
* Reflect 3.7.15's extended support
* Document using development head with Homebrew
* Structurize the Upgrading section
* Fix Pyenv-latest documentation
2022-10-30 05:28:53 +03:00
Ivan Pozdeev
75022d5d7c Revert version auto-resolution in python-build
It was moved to `pyenv-install`
2022-10-30 04:12:42 +03:00
native-api
a12f947cc3 Auto-resolve prefixes to the latest version (#2487) 2022-10-30 03:38:40 +03:00
native-api
0b5e16add3 Fix invalid syntax error in pyenv init - if PYENV_ROOT has spaces (#2506) 2022-10-29 23:08:02 +03:00
native-api
5b0ac41dec Discover Tcl/Tk from Homebrew via pkgconfig for 3.11+ (#2501)
CPython 3.11+ dropped support for --with-tcl-tk-*
in favor of pure pkgconfig
2022-10-29 22:48:13 +03:00
Michael Šimáček
44510a68f1 Add graalpy-22.3.0 (#2497) 2022-10-27 02:55:27 +03:00
Edgar R. M
16c4924f22 Add CPython 3.12.0a1 (#2495) 2022-10-27 02:41:30 +03:00
native-api
ac30d5f4e4 Merge pull request #2500 from native-api/fix_macos_openssl_build
Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+
2022-10-27 00:22:09 +03:00
Ivan Pozdeev
9f5dcbffd4 Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+
"error: implicitly declaring library function 'memcmp'"
Downstream backport of https://github.com/openssl/openssl/issues/18720
2022-10-27 00:02:24 +03:00
Ivan Pozdeev
faceb4b79c Allow patching supplementary packages 2022-10-27 00:02:13 +03:00
Igor Davydenko
d7389c10ee Update Python 3.11.0 tgz checksum (#2496)
For some reason checksum for `Python-3.11.0.tgz` file introduced in
0726e02e3a is invalid. Update that
checksum to ensure `pyenv install 3.11.0` works well on systems without
tar.xz support.
2022-10-26 21:21:53 +03:00
Noam Cohen
0726e02e3a Add CPython 3.11.0 (#2493) 2022-10-24 22:49:48 +03:00
Adam Johnson
03a5d65387 Add CPython 3.7.15, 3.8.15, and 3.9.15 (#2482)
Co-authored-by: Ivan Pozdeev <vano@mail.mipt.ru>
2022-10-12 20:52:53 +03:00
MuX
776f6ff9fa Add CPython 3.10.8 (#2480) 2022-10-12 07:39:42 +03:00
Ivan Pozdeev
bb0f2ae1a7 Merge branch 'master' of https://github.com/pyenv/pyenv 2022-10-08 20:49:53 +03:00
Ivan Pozdeev
ea6085e3f3 2.3.5 2022-10-08 20:49:49 +03:00
Ville Skyttä
2c2619a49e Add Pyston 2.3.5 (#2476) 2022-10-05 20:52:20 +03:00
native-api
1f526edbdd Merge pull request #2471 from native-api/add_dsymutil
Build CPython 3.12+ with --with-dsymutil in MacOS
2022-09-23 16:37:19 +03:00
Ivan Pozdeev
8b226c9679 Build 3.12+ with --with-dsymutil 2022-09-23 16:16:17 +03:00
Ivan Pozdeev
f3521e88be Allow to build CPython with --with-dsymutil
Since 3.12, CPython can provide debug symbols in
Apple's nonstandard way, "dSYM bundles"
2022-09-23 16:16:17 +03:00
native-api
5b08a6492b Add missing patch for 3.7.14 (#2469) 2022-09-22 10:59:03 +03:00
Nikita Sobolev
d722f059a0 Drop Travis integration (#2468)
It has been unused since Travis dropped free plans
2022-09-22 10:32:50 +03:00
native-api
093d0b3a49 Merge pull request #2464 from samdoran/skip-brew
Add ability to easily skip all use of Homebrew
2022-09-19 00:59:55 +03:00
Ivan Pozdeev
73d4f3102a Allow to test python-build separately 2022-09-19 00:19:01 +03:00
Ivan Pozdeev
aa07a3a37c Remove extraneous is_mac call 2022-09-19 00:19:00 +03:00
Sam Doran
e6446555f3 Add envvar to skip Homebrew 2022-09-19 00:19:00 +03:00
native-api
c5e0d2cd94 Document extended support for 3.7.14
Added in https://github.com/pyenv/pyenv/pull/2463
2022-09-15 22:01:05 +03:00
Sam Doran
cfe684ef42 Add patches for 3.7.14 needed for Apple Silicon (#2463) 2022-09-15 17:53:22 +03:00
Viktor Haag
1d28067353 Add CPython 3.11.0rc2 (#2459) 2022-09-14 07:53:34 +03:00
Tsuki
0740fdf910 Update miniconda3-3.9-4.12.0 (#2460)
update checksum from https://repo.anaconda.com/miniconda/
Miniconda3-py39_4.12.0-MacOSX-arm64.sh	52.2M	2022-06-01 14:45:20	f7448cfeb278f2a84ed903db02d5525c
2022-09-14 07:48:12 +03:00
Anton Petrov
75fc9f6fd4 Merge pull request #2456 from edgarrmondragon/cpython-3.7.14_3.8.14_3.9.14
Add CPython security releases 3.7.14, 3.8.14 and 3.9.14
2022-09-11 19:47:51 +03:00
Edgar Ramírez Mondragón
a0fbdad292 Add CPython security releases 3.7.14, 3.8.14 and 3.9.14 2022-09-07 11:13:11 -05:00
Grzegorz
6a104f68d0 docs: Add configuration option for Fish 3.2.0+ (#2449)
The original instructions were added 2 years ago in 0f2d659732. Since then, [Fish released](https://github.com/fish-shell/fish-shell/releases/tag/3.2.0) [a more declarative instruction for this operation](https://fishshell.com/docs/current/cmds/fish_add_path.html), which is now the recommended way of manipulating `PATH` in Fish.
2022-09-06 21:39:31 +03:00
Edgar R. M
f6f1803ac9 Add CPython 3.10.7 (#2454) 2022-09-06 19:13:59 +03:00
Ivan Pozdeev
23559ee6d1 Fix syntax error 2022-09-06 01:43:12 +03:00
Ivan Pozdeev
4e31668c21 Ignore beta and release candidates in :latest
Fixes https://github.com/pyenv/pyenv/issues/2450
2022-09-05 23:20:39 +03:00
227 changed files with 7669 additions and 859 deletions

11
.editorconfig Normal file
View File

@@ -0,0 +1,11 @@
# Editor configuration, see https://editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
# Makefiles always use tabs for indentation
[Makefile]
indent_style = tab
indent_size = unset # Allow user-defined tab width

View File

@@ -19,3 +19,8 @@ Make sure you have checked all steps below.
- [ ] C Compiler information (e.g. gcc 7.3):
- [ ] Please attach the debug trace of the failing command as a gist:
* Run `env PYENV_DEBUG=1 <faulty command> 2>&1 | tee trace.log` and attach `trace.log`. E.g. if you have a problem with installing Python, run `env PYENV_DEBUG=1 pyenv install -v <version> 2>&1 | tee trace.log` (note the `-v` option to `pyenv install`).
- [ ] If you have a problem with installing Python, please also attach `config.log` from the build directory
* The build directory is reported after the "BUILD FAILED" message and is usually under `/tmp`.
- [ ] If the build succeeds but the problem is still with the build process (e.g. the resulting Python is missing a feature), please attach
* the debug trace from reinstalling the faulty version with `env PYENV_DEBUG=1 pyenv install -f -k -v <version> 2>&1 | tee trace.log`
* `config.log` from the build directory. When using `pyenv install` with `-k` as per above, the build directory will be under `$PYENV_ROOT/sources`.

View File

@@ -1,18 +1,23 @@
name: macos_build
on: [pull_request, push]
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
macos_build:
strategy:
fail-fast: false
matrix:
python-version:
- 3.7.13
- 3.8.13
- 3.9.13
- 3.10.6
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
runs-on: macos-11
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
# Normally, we would use the superbly maintained...
# - uses: actions/setup-python@v2
# with:

View File

@@ -6,7 +6,7 @@ jobs:
outputs:
versions: ${{steps.modified-versions.outputs.versions}}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- run: git fetch origin "$GITHUB_BASE_REF"
- shell: bash
run: >
@@ -15,7 +15,10 @@ jobs:
if (/^plugins\/python-build\/share\/python-build\/(?:([^\/]+)|patches\/([^\/]+)\/.*)$/ and -e $& )
{ print $1.$2; }' \
| sort -u);
echo -e "versions<<!\\n$versions\\n!" >> $GITHUB_ENV
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64);
echo "versions<<$EOF" >> $GITHUB_ENV;
echo "$versions" >> $GITHUB_ENV;
echo "$EOF" >> $GITHUB_ENV;
- id: modified-versions
run: |
echo -n "::set-output name=versions::"
@@ -30,28 +33,38 @@ jobs:
os: ["macos-11", "macos-12"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- run: |
brew install openssl openssl@1.1 readline sqlite3 xz zlib
- uses: actions/checkout@v3
- run: |
#envvars
export PYENV_ROOT="$GITHUB_WORKSPACE"
echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
- run: |
#prerequisites
brew install openssl openssl@1.1 readline sqlite3 xz zlib
if [[ "${{ matrix.python-version }}" =~ pypy.*-(src|dev) ]]; then
export PYENV_BOOTSTRAP_VERSION=pypy2.7-7
echo "PYENV_BOOTSTRAP_VERSION=$PYENV_BOOTSTRAP_VERSION" >> $GITHUB_ENV
pyenv install $PYENV_BOOTSTRAP_VERSION
fi
- run: |
#build
pyenv install -v ${{ matrix.python-version }}
pyenv global ${{ matrix.python-version }}
# Micropython doesn't support --version
- run: >
- run: |
#print version
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
python -c 'import sys; print(sys.version)'
else
python --version;
python --version
python -m pip --version
fi
# Micropython doesn't support sys.executable, os.path, older versions even os
- env:
EXPECTED_PYTHON: ${{ matrix.python-version }}
run: |
#check
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
[[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
python -c 'import sys; assert sys.implementation.name == "micropython"'
@@ -80,31 +93,41 @@ jobs:
os: ["ubuntu-20.04", "ubuntu-22.04"]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- run: |
sudo apt-get update -q; sudo apt-get install -yq make build-essential \
libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
- uses: actions/checkout@v3
- run: |
#envvars
export PYENV_ROOT="$GITHUB_WORKSPACE"
echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
- run: |
#prerequisites
sudo apt-get update -q; sudo apt-get install -yq make build-essential \
libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev
if [[ "${{ matrix.python-version }}" =~ pypy.*-(src|dev) ]]; then
export PYENV_BOOTSTRAP_VERSION=pypy2.7-7
echo "PYENV_BOOTSTRAP_VERSION=$PYENV_BOOTSTRAP_VERSION" >> $GITHUB_ENV
pyenv install $PYENV_BOOTSTRAP_VERSION
fi
- run: |
#build
pyenv install -v ${{ matrix.python-version }}
pyenv global ${{ matrix.python-version }}
# Micropython doesn't support --version
- run: >
- run: |
#print version
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
python -c 'import sys; print(sys.version)'
else
python --version;
python --version
python -m pip --version
fi
# Micropython doesn't support sys.executable, os.path, older versions even os
- env:
EXPECTED_PYTHON: ${{ matrix.python-version }}
run: |
#check
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
[[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
python -c 'import sys; assert sys.implementation.name == "micropython"'

View File

@@ -9,8 +9,12 @@ on:
# Schedule for ten minutes after the hour, every hour
- cron: '10 * * * *'
permissions: {}
jobs:
noResponse:
permissions:
issues: write # to update issues (lee-dohm/no-response)
runs-on: ubuntu-latest
steps:
- uses: lee-dohm/no-response@v0.5.0

View File

@@ -1,5 +1,9 @@
name: pyenv_tests
on: [pull_request, push]
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
pyenv_tests:
strategy:
@@ -12,7 +16,7 @@ jobs:
- macos-11
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
# Normally, we would use the superbly maintained...
# - uses: actions/setup-python@v2
# with:
@@ -38,3 +42,8 @@ jobs:
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
- run: |
make test
- env:
PYENV_NATIVE_EXT: 1
run: |
(cd src; ./configure; make)
bats/bin/bats test/{pyenv,hooks,versions}.bats

View File

@@ -1,25 +1,30 @@
name: ubuntu_build
on: [pull_request, push]
permissions:
contents: read # to fetch code (actions/checkout)
jobs:
ubuntu_build:
strategy:
fail-fast: false
matrix:
python-version:
- 3.7.13
- 3.8.13
- 3.9.13
- 3.10.6
- "3.7"
- "3.8"
- "3.9"
- "3.10"
- "3.11"
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
# Normally, we would use the superbly maintained...
# - uses: actions/setup-python@v2
# with:
# python-version: ${{ matrix.python-version }}
# ... but in the repo, we want to test pyenv builds on Ubuntu
- run: |
sudo apt-get install -yq make build-essential libssl-dev zlib1g-dev \
sudo apt-get update -q; sudo apt install -yq make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
# https://github.com/pyenv/pyenv#installation

2
.gitignore vendored
View File

@@ -8,3 +8,5 @@
/src/*.o
/bats/
/default-packages
.idea
*.un~

View File

@@ -1,83 +0,0 @@
# Two types of tests:
#
# 1. shell tests run using bats
# 2. build tests also run using bats
#
# Shell tests are run unconditionally on Linux (see jobs.include).
#
# Build tests can be skipped by starting the commit message with
# '[skip build]'.
#
# Build tests are run on platforms generated from all combinations
# of keys below.
language: c
os:
- linux
- osx
dist:
- focal
# https://docs.travis-ci.com/user/reference/osx/#macos-version
osx_image:
- xcode9.4.1 # macOS 10.13.6
- xcode10.3 # macOS 10.14.4
- xcode11.6 # macOS 10.15.7
- xcode12.2 # macOS 10.15.7
env:
- PYTHON_BUILD_VERSION=3.9.1
- PYTHON_BUILD_VERSION=3.7.5
before_install:
- date +%Y-%m-%dT%H:%M:%S
install: git clone --depth 1 --branch v1.2.0 https://github.com/bats-core/bats-core.git bats
# Default for auto-generated jobs.
script: make test-build
jobs:
include:
# Shell-based tests should execute every time.
- stage: test shell
script: make test
env: PYENV_NATIVE_EXT=1
after_script: []
os: linux
- stage: test shell
script: make test
env: PYENV_NATIVE_EXT=
after_script: []
os: linux
exclude:
# For each osx_image but one there should be an entry in the exclude
# list, to prevent duplicate Linux builds.
- os: linux
osx_image: xcode9.4
- os: linux
osx_image: xcode10
allow_failures:
- env: PYTHON_BUILD_VERSION=3.9.1
stages:
- test shell
- name: test
if: NOT (commit_message =~ /^\[skip build\]/)
# Default
notifications:
email:
on_success: never
deploy:
provider: releases
api_key:
secure: FLWevL09KYp7V1SjJUNEdWzuomuocXwNvPr1DSAFH7mmrjKTtjzwrjINAthSqzjlDrs5B//P47l1VLyHp5byEzy673W+bOmEg8swmqc7E9FrHLRyEByd/yca3DzkZgXEXgGdY/cl7tHhM4V2fYKEgAIWbFV+takmTFMK4WkEtNg=
on:
repo: pyenv/pyenv
tags: true

View File

@@ -1,4 +1,168 @@
## Version History
# Version History
## Release v2.3.23
* Add CPython 3.12.0b4 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2741
* Add new anaconda and miniconda definitions by @aphedges in https://github.com/pyenv/pyenv/pull/2742
## Release v2.3.22
* Add CPython 3.12.0b3 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2730
* Add Cinder 3.10 and Cinder configure patches by @filips123 in https://github.com/pyenv/pyenv/pull/2739
## Release v2.3.21
* Add graalpy-23.0.0 by @msimacek in https://github.com/pyenv/pyenv/pull/2724
* Add PyPy 7.3.12 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2726
* Fix occasional 'libexec/pyenv-latest: line 39: printf: write error: Broken pipe' by @native-api in https://github.com/pyenv/pyenv/pull/2729
## Release v2.3.20
* Backport bpo-42351 to 3.5.10 by @native-api in https://github.com/pyenv/pyenv/pull/2717
* Add missing patches for Python 3.7/3.8/3.9 by @tomkins in https://github.com/pyenv/pyenv/pull/2718
## Release v2.3.19
* Add CPython 3.7.17, 3.8.17 and 3.9.17 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2711
* Add CPython 3.11.4 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2715
* Add CPython 3.10.12 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2714
* Add CPython 3.12.0b2 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2713
## Release 2.3.18
* Fix not showing symlink contents for unselected versions in `pyenv versions` by @native-api in https://github.com/pyenv/pyenv/pull/2675
* Correct link in has_tar_xz_support else branch of 3.10.11 and 3.11.3 by @mirekdlugosz in https://github.com/pyenv/pyenv/pull/2677
* Fix #2682: Correct pyenv_user_setup.bash file by @tomschr in https://github.com/pyenv/pyenv/pull/2687
* fix: updating heredoc delimiter to be random and unique by @aviadhahami in https://github.com/pyenv/pyenv/pull/2691
* Support ksh alternative names by @kpschoedel in https://github.com/pyenv/pyenv/pull/2697
* Add CPython 3.12.0b1 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2701
* Update 3.12-dev and add 3.13-dev by @t0b3 in https://github.com/pyenv/pyenv/pull/2703
## Release 2.3.17
* Try locate `readlink` first in pyenv-hooks, fix #2654 by @Harry-Chen in https://github.com/pyenv/pyenv/pull/2655
* Add CPython 3.12.0a7 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2668
* Add CPython 3.11.3 by @mirekdlugosz in https://github.com/pyenv/pyenv/pull/2671
* Add CPython 3.10.11 by @mirekdlugosz in https://github.com/pyenv/pyenv/pull/2670
## Release 2.3.16
* Add Miniforge3-22.11.1-4 by @jlec in https://github.com/pyenv/pyenv/pull/2642
* Add Anaconda3-2023.03 by @anton-petrov in https://github.com/pyenv/pyenv/pull/2648
## Release 2.3.15
* Add miniconda 23.1.0-1 by @aphedges in https://github.com/pyenv/pyenv/pull/2635
* Add CPython 3.12.0a6 by @saaketp in https://github.com/pyenv/pyenv/pull/2638
## Release 2.3.14
* Fix indentation by @rafrafek in https://github.com/pyenv/pyenv/pull/2620
* Support for "BusyBox version" of "head" by @schuellerf in https://github.com/pyenv/pyenv/pull/2629
* bpo-27987 for v3.5.10 and v3.6.15: align by 16bytes on 64bit platforms by @chaimleib in https://github.com/pyenv/pyenv/pull/2630
* bpo-36231 for v3.5.10: fix Unsupported MacOS X CPU type in ffi.h by @chaimleib in https://github.com/pyenv/pyenv/pull/2633
* README: clarify behavior of `pyenv latest` by @mrienstra in https://github.com/pyenv/pyenv/pull/2634
## Release 2.3.13
* Fix pyenv-latest to ignore virtualenvs by @native-api in https://github.com/pyenv/pyenv/pull/2608
* Show symlink contents in non-bare `pyenv versions' by @native-api in https://github.com/pyenv/pyenv/pull/2609
* Ignore virtualenvs in `pyenv latest' in a clean way by @native-api in https://github.com/pyenv/pyenv/pull/2610
* Fix link resolving in pyenv-versions by @laggardkernel in https://github.com/pyenv/pyenv/pull/2612
* Add CPython 3.11.2 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2615
* Add CPython 3.10.10 by @edgarrmondragon in https://github.com/pyenv/pyenv/pull/2616
* Add CPython 3.12.0a5 by @Afront in https://github.com/pyenv/pyenv/pull/2614
## Release 2.3.12
* Undefined name: do not forget self when accessing flavor by @cclauss in https://github.com/pyenv/pyenv/pull/2595
* Fix wrong libpython being linked to in MacOS by @native-api in https://github.com/pyenv/pyenv/pull/2596
* Fix `:latest` by @native-api in https://github.com/pyenv/pyenv/pull/2599
* Fix `pyenv which` to support auto-resolved prefixes by @native-api in https://github.com/pyenv/pyenv/pull/2601
* Add more recent build of nogil Python. by @colesbury in https://github.com/pyenv/pyenv/pull/2602
## Release 2.3.11
* Add CPython 3.12.0a4 by @Afront in https://github.com/pyenv/pyenv/pull/2590
* Add a script to add the latest miniforge and mambaforge versions by @smcgivern in https://github.com/pyenv/pyenv/pull/2560
* Add missing Miniforge/Mambaforge versions (4.10.2-0 - 22.9.0-3) by @smcgivern in https://github.com/pyenv/pyenv/pull/2591
* Fix using dependencies from Ports in FreeBSD that are not searched with pkg-config by @native-api in https://github.com/pyenv/pyenv/pull/2593
* Fix priority for user-supplied configure and make flags by (**_only set --enable-shared if user hasn't supplied --disable-shared_**) @native-api in https://github.com/pyenv/pyenv/pull/2592
* Fix a compilation error in 3.8.10+ and 3.9.5+ when linking against Op… by @native-api in https://github.com/pyenv/pyenv/pull/2594
## Release 2.3.10
* Remove stray newline after python-build installation by @tklauser in https://github.com/pyenv/pyenv/pull/2566
* Allow multiple versions for pyenv-install by @rockandska in https://github.com/pyenv/pyenv/pull/2568
* --enable-shared by default by @anton-petrov in https://github.com/pyenv/pyenv/pull/2554
* Fix non-bash output while detecting shell by @ianchen-tw in https://github.com/pyenv/pyenv/pull/2561
* add pypy 7.3.11 release by @dand-oss in https://github.com/pyenv/pyenv/pull/2576
* Mention how to build for maximum performance by @hauntsaninja in https://github.com/pyenv/pyenv/pull/2579
* Add miniconda 22.11.1-1 by @aphedges in https://github.com/pyenv/pyenv/pull/2583
* Add Fig as autocomplete suggestion by @brendanfalk in https://github.com/pyenv/pyenv/pull/2574
* Fix using dependencies from Ports in BSD with no pkg-config by @native-api in https://github.com/pyenv/pyenv/pull/2586
## Release 2.3.9
* Add -latest suffix to miniforge3 by @nwh in https://github.com/pyenv/pyenv/pull/2551
* Add PyPy 7.3.10 by @dand-oss in https://github.com/pyenv/pyenv/pull/2553
* Add miniforge3 and mambaforge 22.9.0-2 by @smcgivern in https://github.com/pyenv/pyenv/pull/2559
* Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.16 by @lisbethw1130 in https://github.com/pyenv/pyenv/pull/2558
* Add `openssl` patches for 3.7.15, 3.7.16, and 3.8.16 by @samdoran in https://github.com/pyenv/pyenv/pull/2564
* Add support for Anaconda3-2022.10 by @huypn12 in https://github.com/pyenv/pyenv/pull/2565
## Release 2.3.8
* Export detected shell environment in pyenv-init by @ianchen-tw in https://github.com/pyenv/pyenv/pull/2540
* Add CPython 3.12.0a3 by @saaketp in https://github.com/pyenv/pyenv/pull/2545
* Add CPython 3.11.1 by @anton-petrov in https://github.com/pyenv/pyenv/pull/2549
* Add CPython 3.10.9 by @rudisimo in https://github.com/pyenv/pyenv/pull/2544
* Add 3.7.16, 3.8.16, 3.9.16 by @chadac in https://github.com/pyenv/pyenv/pull/2550
## Release 2.3.7
* Add Python version 3.11 to the macOS build by @jbkkd in https://github.com/pyenv/pyenv/pull/2510
* Don't use Zlib from XCode SDK if a custom compiler is used by @native-api in https://github.com/pyenv/pyenv/pull/2516
* Change line endings from CRLF to LF by @hoang-himself in https://github.com/pyenv/pyenv/pull/2517
* Fix resolution of a name that's a prefix of another name by @native-api in https://github.com/pyenv/pyenv/pull/2521
* GitHub Workflows security hardening by @sashashura in https://github.com/pyenv/pyenv/pull/2511
* Add nushell to activate list by @theref in https://github.com/pyenv/pyenv/pull/2524
* Fix compilation error when building OpenSSL 1.1.1q in MacOS 11+ for 3.9.15 and 3.8.15 by @twangboy in https://github.com/pyenv/pyenv/pull/2520
* Add simple `.editorconfig` file by @aphedges in https://github.com/pyenv/pyenv/pull/2518
* Support `aria2c` being a snap by @native-api in https://github.com/pyenv/pyenv/pull/2528
* Add CPython 3.12.0a2 by @saaketp in https://github.com/pyenv/pyenv/pull/2527
* Add --no-push-path option by @isaacl in https://github.com/pyenv/pyenv/pull/2526
* Fix typo in README.md by @weensy in https://github.com/pyenv/pyenv/pull/2535
* Copy auto installer oneliner to readme by @spookyuser in https://github.com/pyenv/pyenv/pull/2538
## Release 2.3.6
* Add CPython 3.10.8 (#2480)
* Add CPython 3.7.15, 3.8.15, and 3.9.15 (#2482)
* Add CPython 3.11.0 (#2493)
* Add CPython 3.12.0a1 (#2495)
* Add graalpy-22.3.0 (#2497)
* Auto-resolve prefixes to the latest version (#2487)
* It must be a full prefix -- the actual searched prefix is `<prefix>[-.]`
* Other flavors are likely sorted incorrectly atm
* Prereleases and versions with some suffixes (`-dev`, `-src`, `-latest`) are not searched
* `pyenv uninstall` has been excluded from the resolution feature: deleting a dynamically selected installation could be problematic
* Fix OpenSSL 1.1.1q compilation error in MacOS 11+ (#2500)
* Link to Tcl/Tk from Homebrew via pkgconfig for 3.11+ (#2501)
* Fix syntax error in `pyenv init -` if PYENV_ROOT has spaces (#2506)
## Release 2.3.5
* Add CPython 3.10.7 (#2454)
* Docs: update Fish PATH update (#2449)
* Add CPython 3.7.14, 3.8.14 and 3.9.14 (#2456)
* Update miniconda3-3.9-4.12.0 (#2460)
* Add CPython 3.11.0rc2 (#2459)
* Add patches for 3.7.14 to support Apple Silicon (#2463)
* Add ability to skip all use of Homebrew (#2464)
* Drop Travis integration (#2468)
* Build CPython 3.12+ with --with-dsymutil in MacOS (#2471)
* Add Pyston 2.3.5 (#2476)
## Release 2.3.4

View File

@@ -20,6 +20,7 @@ The most common subcommands are:
* [`pyenv exec`](#pyenv-exec)
* [`pyenv root`](#pyenv-root)
* [`pyenv prefix`](#pyenv-prefix)
* [`pyenv latest`](#pyenv-latest)
* [`pyenv hooks`](#pyenv-hooks)
* [`pyenv shims`](#pyenv-shims)
* [`pyenv init`](#pyenv-init)
@@ -228,7 +229,13 @@ Then install the desired versions:
2.6.8
* 2.7.6 (set by /home/yyuu/.pyenv/version)
To install the latest version of Python without giving a specific version use the `:latest` syntax. For example, to install the latest patch version for Python 3.8 you could do:
You can also install the latest version of Python in a specific version line by supplying a prefix instead of a complete name:
$ pyenv install 3.10
See the [`pyenv latest` documentation](#pyenv-latest) for details on prefix resolution.
An older option is to use the `:latest` syntax. For example, to install the latest patch version for Python 3.8 you could do:
pyenv install 3.8:latest
@@ -330,6 +337,19 @@ locations of the currently selected versions.
$ pyenv prefix 3.9.7
/home/user/.pyenv/versions/3.9.7
## `pyenv latest`
Displays the latest installed or known version with the given prefix
Usage: pyenv latest [-k|--known] [-q|--quiet] <prefix>
-k/--known Select from all known versions instead of installed
-q/--quiet Do not print an error message on resolution failure
Only full prefixes are searched: in the actual name, the given prefix must be followed by a dot or a dash.
Prereleases and versions with specific suffixes (e.g. `-src`) are ignored.
## `pyenv hooks`
Lists installed hook scripts for a given pyenv command.
@@ -366,11 +386,12 @@ List existing pyenv shims.
Configure the shell environment for pyenv
Usage: eval "$(pyenv init [-|--path] [--no-rehash] [<shell>])"
Usage: eval "$(pyenv init [-|--path] [--no-push-path] [--no-rehash] [<shell>])"
- Initialize shims directory, print PYENV_SHELL variable, completions path
and shell function
--path Print shims path
--no-push-path Do not push shim to the start of PATH if they're already there
--no-rehash Add no rehash command to output
## `pyenv completions`

View File

@@ -80,12 +80,12 @@ Deprecation policy
We do not provide official support for EOL releases and environments or otherwise provide any kind of extended support for old Python releases.
We do however accept fixes from interested parties that would allow running older, including EOL, releases in newer environments.
We do however accept fixes from interested parties that would allow running older, including EOL, releases in environments that they do not officially support.
In addition to the above requirements for release-specific fixes,
* Such a fix must not add maintenance burden (e.g. add new logic to `python-build` that has to be kept there indefinitely)
* Unless the added logic is useful for both EOL and non-EOL releases. In this case, it will be considered as being primarily an improvement for non-EOL releases.
* Support is provided on a "best effort" basis: we do not maintain these fixes but won't actively break them, either, and accept any corrections.
* Support is provided on a "best effort" basis: we do not actively maintain these fixes but won't actively break them, either, and will accept any corrections.
Since old releases never change, it's pretty safe to assume that the fixes will continue to work until a later version
of an environment introduces further incompatible changes.

15
MAINTENANCE.md Normal file
View File

@@ -0,0 +1,15 @@
Creating a release
==================
The release of the new version of Pyenv is done via GitHub Releases.
Release checklist:
* Start [drafting a new release on GitHub](https://github.com/pyenv/pyenv/releases) to generate a summary of changes. Save the summary locally.
* The summary may need editing. E.g. rephrase entries, delete/merge entries that are too minor or irrelevant to the users (e.g. typo fixes, CI)
* Push the version number in `libexec/pyenv---version`
* Minor version is pushed if there are significant functional changes (not e.g. bugfixes/formula adaptations/supporting niche use cases).
* Major version is pushed if there are breaking changes
* Update `CHANGELOG.md` with the new version number and the edited summary (only the changes section), reformatting it like the rest of the changelog sections
* Commit the changes locally into `master`
* Create a new tag with the new version number and push the changes including the tag
* Create a new release on GitHub based on the tag, using the saved summary

View File

@@ -1,11 +1,15 @@
.PHONY: test test-build
.PHONY: test test-build test-unit test-plugin
# Do not pass in user flags to build tests.
unexport PYTHON_CFLAGS
unexport PYTHON_CONFIGURE_OPTS
test: bats
test: test-unit test-plugin
test-unit: bats
PATH="./bats/bin:$$PATH" test/run
test-plugin: bats
cd plugins/python-build && $(PWD)/bats/bin/bats $${CI:+--tap} test
PYTHON_BUILD_ROOT := $(CURDIR)/plugins/python-build

105
README.md
View File

@@ -53,17 +53,21 @@ This project was forked from [rbenv](https://github.com/rbenv/rbenv) and
* [Install Python build dependencies](#install-python-build-dependencies)
* **[Usage](#usage)**
* [Install additional Python versions](#install-additional-python-versions)
* [Prefix auto-resolution to the latest version](#prefix-auto-resolution-to-the-latest-version)
* [Python versions with extended support](#python-versions-with-extended-support)
* [Switch between Python versions](#switch-between-python-versions)
* [Uninstall Python versions](#uninstall-python-versions)
* [Other operations](#other-operations)
* [Upgrading](#upgrading)
* [Upgrading with Homebrew](#upgrading-with-homebrew)
* [Upgrading with Installer or Git checkout](#upgrading-with-installer-or-git-checkout)
* [Uninstalling pyenv](#uninstalling-pyenv)
* [Pyenv plugins](#pyenv-plugins)
* [Advanced Configuration](#advanced-configuration)
* [Using Pyenv without shims](#using-pyenv-without-shims)
* [Environment variables](#environment-variables)
* **[Development](#development)**
* [Contributing](#contributing)**
* [Contributing](#contributing)
* [Version History](#version-history)
* [License](#license)
@@ -244,7 +248,9 @@ which does install native Windows Python versions.
#### Automatic installer
Visit our other project:
`curl https://pyenv.run | bash`
For more details visit our other project:
https://github.com/pyenv/pyenv-installer
@@ -255,14 +261,14 @@ easy to fork and contribute any changes back upstream.
* **Check out Pyenv where you want it installed.**
A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else):
```
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
```
* Optionally, try to compile a dynamic Bash extension to speed up Pyenv. Don't
worry if it fails; Pyenv will still work normally:
```
cd ~/.pyenv && src/configure && make -C src
```
### Set up your shell environment for Pyenv
@@ -324,14 +330,21 @@ See [Advanced configuration](#advanced-configuration) for details and more confi
- For **Fish shell**:
Execute this interactively:
If you have Fish 3.2.0 or newer, execute this interactively:
~~~ fish
set -Ux PYENV_ROOT $HOME/.pyenv
fish_add_path $PYENV_ROOT/bin
~~~
Otherwise, execute the snippet below:
~~~ fish
set -Ux PYENV_ROOT $HOME/.pyenv
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths
~~~
And add this to `~/.config/fish/config.fish`:
Now, add this to `~/.config/fish/config.fish`:
~~~ fish
pyenv init - | source
@@ -345,6 +358,11 @@ See [Advanced configuration](#advanced-configuration) for details and more confi
**Proxy note**: If you use a proxy, export `http_proxy` and `https_proxy`, too.
In MacOS, you might also want to install [Fig](https://fig.io/) which
provides alternative shell completions for many command line tools with an
IDE-like popup interface in the terminal window.
(Note that their completions are independent from Pyenv's codebase
so they might be slightly out of sync for bleeding-edge interface changes.)
### Restart your shell
@@ -376,19 +394,42 @@ For example, to download and install Python 3.10.4, run:
pyenv install 3.10.4
```
Running `pyenv install -l` gives the list of all available versions.
**NOTE:** Most Pyenv-provided Python releases are source releases and are built
from source as part of installation (that's why you need Python build dependencies preinstalled).
You can pass options to Python's `configure` and compiler flags to customize the build,
see [_Special environment variables_ in Python-Build's README](plugins/python-build/README.md#special-environment-variables)
for details.
**NOTE:** If you want to use proxy for download, please set the `http_proxy` and `https_proxy`
environment variables.
**NOTE:** If you are having trouble installing a Python version,
please visit the wiki page about
[Common Build Problems](https://github.com/pyenv/pyenv/wiki/Common-build-problems).
**NOTE:** If you want to use proxy for download, please set the `http_proxy` and `https_proxy`
environment variables.
**NOTE:** If you'd like a faster interpreter at the cost of longer build times,
see [_Building for maximum performance_ in Python-Build's README](plugins/python-build/README.md#building-for-maximum-performance).
#### Prefix auto-resolution to the latest version
All Pyenv subcommands except `uninstall` automatically resolve full prefixes to the latest version in the corresponding version line.
`pyenv install` picks the latest known version, while other subcommands pick the latest installed version.
E.g. to install and then switch to the latest 3.10 release:
```sh
pyenv install 3.10
pyenv global 3.10
```
You can run [`pyenv latest -k <prefix>`](COMMANDS.md#pyenv-latest) to see how `pyenv install` would resolve a specific prefix, or [`pyenv latest <prefix>`](COMMANDS.md#pyenv-latest) to see how other subcommands would resolve it.
See the [`pyenv latest` documentation](COMMANDS.md#pyenv-latest) for details.
#### Python versions with extended support
@@ -397,8 +438,8 @@ Though we don't actively maintain those patches, since existing releases never c
it's safe to assume that they will continue working until there are further incompatible changes
in a later version of those environments.
* *3.7.8-3.7.13, 3.8.4-3.8.12, 3.9.0-3.9.7* : XCode 13.3
* *3.6.15* : MacOS 11+ and XCode 13.3
* *3.7.8-3.7.15, 3.8.4-3.8.12, 3.9.0-3.9.7* : XCode 13.3
* *3.5.10, 3.6.15* : MacOS 11+ and XCode 13.3
* *2.7.18* : MacOS 10.15+ and Apple Silicon
@@ -452,12 +493,34 @@ Note that Pyenv plugins that you install may add their own subcommands.
## Upgrading
### Upgrading with Homebrew
If you've installed Pyenv using Homebrew, upgrade using:
```sh
brew upgrade pyenv
```
If you've installed Pyenv using Pyenv-installer or Git checkout, you can
To switch from a release to the latest development version of Pyenv, use:
```sh
brew uninstall pyenv
brew install pyenv --head
```
then you can upgrade it with `brew upgrade pyenv` as usual.
### Upgrading with Installer or Git checkout
If you've installed Pyenv with Pyenv-installer, you likely have the
[Pyenv-Update](https://github.com/pyenv/pyenv-update) plugin that would
upgrade Pyenv and all installed plugins:
```sh
pyenv update
```
If you've installed Pyenv using Pyenv-installer or Git checkout, you can also
upgrade your installation at any time using Git.
To upgrade to the latest development version of pyenv, use `git pull`:
@@ -505,6 +568,19 @@ uninstall from the system.
brew uninstall pyenv
```
## Pyenv plugins
Pyenv provides a simple, flexible and maintainable way to extend and customize its functionalty 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.
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.
See [_Authoring plugins_ on the wiki](https://github.com/pyenv/pyenv/wiki/Authoring-plugins) on writing your own plugins.
## Advanced Configuration
Skip this section unless you must know what every line in your shell
@@ -597,7 +673,6 @@ for environment variables that can be used to customize the build.
----
## Development
The pyenv source code is [hosted on

View File

@@ -29,7 +29,7 @@ if enable -f "${BASH_SOURCE%/*}"/../libexec/pyenv-realpath.dylib realpath 2>/dev
else
[ -z "$PYENV_NATIVE_EXT" ] || abort "failed to load \`realpath' builtin"
READLINK=$(type -P greadlink readlink | head -1)
READLINK=$(type -P readlink)
[ -n "$READLINK" ] || abort "cannot find readlink - are you missing GNU coreutils?"
resolve_link() {

View File

@@ -12,7 +12,7 @@
set -e
[ -n "$PYENV_DEBUG" ] && set -x
version="2.3.4"
version="2.3.23"
git_revision=""
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then

View File

@@ -46,7 +46,7 @@ extract_initial_comment_block() {
collect_documentation() {
# `tail` prevents "broken pipe" errors due to `head` closing the pipe without reading everything
# https://superuser.com/questions/554855/how-can-i-fix-a-broken-pipe-error/642932#642932
$(type -P gawk awk | tail -n +1 | head -1) '
$(type -P gawk awk | tail -n +1 | head -n1) '
/^Summary:/ {
summary = substr($0, 10)
next

View File

@@ -26,7 +26,7 @@ if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; th
echo "pyenv: failed to load \`realpath' builtin" >&2
exit 1
fi
READLINK=$(type -P greadlink readlink | head -1)
READLINK=$(type -P readlink)
if [ -z "$READLINK" ]; then
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
exit 1

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Summary: Configure the shell environment for pyenv
# Usage: eval "$(pyenv init [-|--path] [--no-rehash] [<shell>])"
# Usage: eval "$(pyenv init [-|--path] [--no-push-path] [--detect-shell] [--no-rehash] [<shell>])"
set -e
[ -n "$PYENV_DEBUG" ] && set -x
@@ -9,7 +9,9 @@ set -e
if [ "$1" = "--complete" ]; then
echo -
echo --path
echo --no-push-path
echo --no-rehash
echo --detect-shell
echo bash
echo fish
echo ksh
@@ -19,6 +21,7 @@ fi
mode="help"
no_rehash=""
no_push_path=""
for args in "$@"
do
if [ "$args" = "-" ]; then
@@ -31,6 +34,16 @@ do
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
@@ -69,12 +82,19 @@ function main() {
print_shell_function
exit 0
;;
"detect-shell")
detect_profile 1
print_detect_shell
exit 0
;;
esac
# should never get here
exit 2
}
function help_() {
function detect_profile() {
local detect_for_detect_shell="$1"
case "$shell" in
bash )
if [ -e '~/.bash_profile' ]; then
@@ -89,16 +109,35 @@ function help_() {
profile='~/.zprofile'
rc='~/.zshrc'
;;
ksh )
ksh | ksh93 | mksh )
# There are two implementations of Korn shell: AT&T (ksh93) and Mir (mksh).
# Systems may have them installed under those names, or as ksh, so those
# are recognized here. The obsolete ksh88 (subsumed by ksh93) and pdksh
# (subsumed by mksh) are not included, since they are unlikely to still
# be in use as interactive shells anywhere.
profile='~/.profile'
rc='~/.profile'
;;
* )
if [ -n "$detect_for_detect_shell" ]; then
profile=
rc=
else
profile='your shell'\''s login startup file'
rc='your shell'\''s interactive startup file'
fi
;;
esac
}
function print_detect_shell() {
echo "PYENV_SHELL_DETECT=$shell"
echo "PYENV_PROFILE_DETECT=$profile"
echo "PYENV_RC_DETECT=$rc"
}
function help_() {
detect_profile
{
case "$shell" in
fish )
@@ -141,11 +180,27 @@ function init_dirs() {
}
function print_path() {
# if no_push_path is set, guard the PATH manipulation with a check on whether
# the shim is already in the PATH.
if [ -n "$no_push_path" ]; then
case "$shell" in
fish )
echo 'while set index (contains -i -- '\'"${PYENV_ROOT}/shims"\'' $PATH)'
echo 'set -eg PATH[$index]; end; set -e index'
echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH'
echo 'if not contains -- "'"${PYENV_ROOT}/shims"'" $PATH'
print_path_prepend_shims
echo 'end'
;;
* )
echo 'if [[ ":$PATH:" != *'\':"${PYENV_ROOT}"/shims:\''* ]]; then'
print_path_prepend_shims
echo 'fi'
;;
esac
else
case "$shell" in
fish )
echo 'while set pyenv_index (contains -i -- "'"${PYENV_ROOT}/shims"'" $PATH)'
echo 'set -eg PATH[$pyenv_index]; end; set -e pyenv_index'
print_path_prepend_shims
;;
* )
# Some distros (notably Debian-based) set Bash's SSH_SOURCE_BASHRC compilation option
@@ -155,7 +210,23 @@ function print_path() {
# (SSH provides /etc/ssh/sshrc and ~/.ssh/rc for that but no-one seems to use them for some reason).
# This has caused an infinite `bashrc` execution loop for those people in the below nested Bash invocation (#2367).
# --norc negates this behavior of such a customized Bash.
echo 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); for i in ${!paths[@]}; do if [[ ${paths[i]} == "'\'"${PYENV_ROOT}/shims"\''" ]]; then unset '\'\\\'\''paths[i]'\'\\\'\''; fi; done; echo "${paths[*]}"'\'')"'
echo 'PATH="$(bash --norc -ec '\''IFS=:; paths=($PATH); '
echo 'for i in ${!paths[@]}; do '
echo 'if [[ ${paths[i]} == "'\'\'"${PYENV_ROOT}/shims"\'\''" ]]; then unset '\'\\\'\''paths[i]'\'\\\'\''; '
echo 'fi; done; '
echo 'echo "${paths[*]}"'\'')"'
print_path_prepend_shims
;;
esac
fi
}
function print_path_prepend_shims() {
case "$shell" in
fish )
echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH'
;;
* )
echo 'export PATH="'"${PYENV_ROOT}"'/shims:${PATH}"'
;;
esac
@@ -203,7 +274,7 @@ function pyenv
end
EOS
;;
ksh )
ksh | ksh93 | mksh )
cat <<EOS
function pyenv {
typeset command

80
libexec/pyenv-latest Executable file
View File

@@ -0,0 +1,80 @@
#!/usr/bin/env bash
# Summary: Print the latest installed or known version with the given prefix
# Usage: pyenv latest [-k|--known] [-q|--quiet] <prefix>
#
# -k/--known Select from all known versions instead of installed
# -q/--quiet Do not print an error message on resolution failure
set -e
[ -n "$PYENV_DEBUG" ] && set -x
while [[ $# -gt 0 ]]
do
case "$1" in
-k|--known)
FROM_KNOWN=1
shift
;;
-q|--quiet)
QUIET=1
shift
;;
*)
break
;;
esac
done
prefix=$1
exitcode=0
IFS=$'\n'
if [[ -z $FROM_KNOWN ]]; then
DEFINITION_CANDIDATES=( $(pyenv-versions --bare --skip-envs) )
else
DEFINITION_CANDIDATES=( $(python-build --definitions ) )
fi
if printf '%s\n' "${DEFINITION_CANDIDATES[@]}" 2>/dev/null | grep -qxFe "$prefix"; then
echo "$prefix"
exit $exitcode;
fi
# https://stackoverflow.com/questions/11856054/is-there-an-easy-way-to-pass-a-raw-string-to-grep/63483807#63483807
prefix_re="$(sed 's/[^\^]/[&]/g;s/[\^]/\\&/g' <<< "$prefix")"
# FIXME: more reliable and readable would probably be to loop over them and transform in pure Bash
DEFINITION_CANDIDATES=(\
$(printf '%s\n' "${DEFINITION_CANDIDATES[@]}" | \
grep -Ee "^$prefix_re[-.]" || true))
DEFINITION_CANDIDATES=(\
$(printf '%s\n' "${DEFINITION_CANDIDATES[@]}" | \
sed -E -e '/-dev$/d' -e '/-src$/d' -e '/-latest$/d' -e '/(a|b|rc)[0-9]+$/d'));
# Compose a sorting key, followed by | and original value
DEFINITION_CANDIDATES=(\
$(printf '%s\n' "${DEFINITION_CANDIDATES[@]}" | \
awk \
'{ if (match($0,"^[[:alnum:]]+-"))
{ print substr($0,0,RLENGTH-1) "." substr($0,RLENGTH+1) "..|" $0; }
else
{ print $0 "...|" $0; }
}'))
DEFINITION_CANDIDATES=(\
$(printf '%s\n' "${DEFINITION_CANDIDATES[@]}" \
| sort -t. -k1,1r -k 2,2nr -k 3,3nr -k4,4nr \
| cut -f2 -d $'|' \
|| true))
DEFINITION="${DEFINITION_CANDIDATES[0]}"
if [[ -n "$DEFINITION" ]]; then
echo "$DEFINITION"
else
if [[ -z $QUIET ]]; then
echo "pyenv: no $([[ -z $FROM_KNOWN ]] && echo installed || echo known) versions match the prefix \`$prefix'" >&2
fi
exitcode=1
fi
exit $exitcode

View File

@@ -42,6 +42,7 @@ OLDIFS="$IFS"
exit 1
fi
else
version="$(pyenv-latest -q "$version" || echo "$version")"
PYENV_PREFIX_PATH="${PYENV_ROOT}/versions/${version}"
fi
if [ -d "$PYENV_PREFIX_PATH" ]; then

View File

@@ -34,6 +34,8 @@ OLDIFS="$IFS"
versions=("${versions[@]}" "${version}")
elif version_exists "${version#python-}"; then
versions=("${versions[@]}" "${version#python-}")
elif resolved_version="$(pyenv-latest -q "$version")"; then
versions=("${versions[@]}" "${resolved_version}")
else
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
any_not_installed=1

View File

@@ -1,23 +1,24 @@
#!/usr/bin/env bash
# Summary: List all Python versions available to pyenv
# Usage: pyenv versions [--bare] [--skip-aliases]
# Usage: pyenv versions [--bare] [--skip-aliases] [--skip-envs]
#
# Lists all Python versions found in `$PYENV_ROOT/versions/*'.
set -e
[ -n "$PYENV_DEBUG" ] && set -x
unset bare
unset skip_aliases
unset bare skip_aliases skip_envs
# Provide pyenv completions
for arg; do
case "$arg" in
--complete )
echo --bare
echo --skip-aliases
echo --skip-envs
exit ;;
--bare ) bare=1 ;;
--skip-aliases ) skip_aliases=1 ;;
--skip-envs ) skip_envs=1 ;;
* )
pyenv-help --usage versions >&2
exit 1
@@ -33,7 +34,7 @@ if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; th
exit 1
fi
READLINK=$(type -P greadlink readlink | head -1)
READLINK=$(type -P readlink)
if [ -z "$READLINK" ]; then
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
exit 1
@@ -70,8 +71,6 @@ else
current_versions=()
fi
if [ -n "$bare" ]; then
hit_prefix=""
miss_prefix=""
include_system=""
else
hit_prefix="* "
@@ -104,12 +103,25 @@ exists() {
}
print_version() {
if [[ ${BASH_VERSINFO[0]} -ge 4 && ${current_versions["$1"]} ]]; then
echo "${hit_prefix}$1 (set by $(pyenv-version-origin))"
elif (( ${BASH_VERSINFO[0]} <= 3 )) && exists "$1" "${current_versions[@]}"; then
echo "${hit_prefix}$1 (set by $(pyenv-version-origin))"
local version="${1:?}"
if [[ -n $bare ]]; then
echo "$version"
return
fi
local path="${2:?}"
if [[ -L "$path" ]]; then
# Only resolve the link itself for printing, do not resolve further.
# Doing otherwise would misinform the user of what the link contains.
version_repr="$version --> $(readlink "$path")"
else
echo "${miss_prefix}$1"
version_repr="$version"
fi
if [[ ${BASH_VERSINFO[0]} -ge 4 && ${current_versions["$1"]} ]]; then
echo "${hit_prefix}${version_repr} (set by $(pyenv-version-origin))"
elif (( ${BASH_VERSINFO[0]} <= 3 )) && exists "$1" "${current_versions[@]}"; then
echo "${hit_prefix}${version_repr} (set by $(pyenv-version-origin))"
else
echo "${miss_prefix}${version_repr}"
fi
num_versions=$((num_versions + 1))
}
@@ -119,7 +131,7 @@ if [ -n "$include_system" ] && \
(PYENV_VERSION=system pyenv-which python >/dev/null 2>&1 || \
PYENV_VERSION=system pyenv-which python3 >/dev/null 2>&1 || \
PYENV_VERSION=system pyenv-which python2 >/dev/null 2>&1) ; then
print_version system
print_version system "/"
fi
shopt -s dotglob nullglob
@@ -139,17 +151,19 @@ for path in "${versions_dir_entries[@]}"; do
if [ -d "$path" ]; then
if [ -n "$skip_aliases" ] && [ -L "$path" ]; then
target="$(realpath "$path")"
[ "${target%/*}" != "$versions_dir" ] || continue
[ "${target%/*/envs/*}" != "$versions_dir" ] || continue
[ "${target%/*}" == "$versions_dir" ] && continue
[ "${target%/*/envs/*}" == "$versions_dir" ] && continue
fi
print_version "${path##*/}"
# virtual environments created by anaconda/miniconda
print_version "${path##*/}" "$path"
# virtual environments created by anaconda/miniconda/pyenv-virtualenv
if [[ -z $skip_envs ]]; then
for env_path in "${path}/envs/"*; do
if [ -d "${env_path}" ]; then
print_version "${env_path#${PYENV_ROOT}/versions/}"
print_version "${env_path#${PYENV_ROOT}/versions/}" "${env_path}"
fi
done
fi
fi
done
shopt -u dotglob nullglob

View File

@@ -47,12 +47,20 @@ OLDIFS="$IFS"
IFS=: versions=(${PYENV_VERSION:-$(pyenv-version-name)})
IFS="$OLDIFS"
declare -a nonexistent_versions
for version in "${versions[@]}" "$system"; do
if [ "$version" = "system" ]; then
PATH="$(remove_from_path "${PYENV_ROOT}/shims")"
PYENV_COMMAND_PATH="$(command -v "$PYENV_COMMAND" || true)"
else
PYENV_COMMAND_PATH="${PYENV_ROOT}/versions/${version}/bin/${PYENV_COMMAND}"
# $version may be a prefix to be resolved by pyenv-latest
version_path="$(pyenv-prefix "${version}" 2>/dev/null)" || \
{ nonexistent_versions+=("$version"); continue; }
# resolve $version for hooks
version="$(basename "$version_path")"
PYENV_COMMAND_PATH="$version_path/bin/${PYENV_COMMAND}"
unset version_path
fi
if [ -x "$PYENV_COMMAND_PATH" ]; then
break
@@ -69,17 +77,10 @@ done
if [ -x "$PYENV_COMMAND_PATH" ]; then
echo "$PYENV_COMMAND_PATH"
else
any_not_installed=0
for version in "${versions[@]}"; do
if [ "$version" = "system" ]; then
continue
fi
if ! [ -d "${PYENV_ROOT}/versions/${version}" ]; then
if (( ${#nonexistent_versions[@]} )); then
for version in "${nonexistent_versions[@]}"; do
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
any_not_installed=1
fi
done
if [ "$any_not_installed" = 1 ]; then
exit 1
fi

View File

@@ -1,4 +1,4 @@
.TH PYENV 1 "12 Dec 2020" "PYENV"
.TH PYENV 1 "24 Apr 2023" "PYENV"
.SH NAME
pyenv \- Simple Python version management
.SH SYNOPSIS
@@ -12,10 +12,12 @@ pyenv lets you easily switch between multiple versions of Python\. It's simple,
\fBAppend\fR the following to \fB$HOME/.bashrc\fR
.P
.RS 15
source /usr/share/pyenv/pyenv_user_setup.bash
.nf
if command -v pyenv 1>/dev/null 2>&1; then\n
eval "$(pyenv init -)" \n
fi
.fi
.RE
.\"OR
.\"\fBsh echo \-e \if command \-v pyenv 1>/dev/null 2>&1; then\en eval "$(pyenv init \-)"\enfi' >> ~/\.bashrc\fR
.RS 3
.P
.nh

View File

@@ -113,6 +113,7 @@ You can set certain environment variables to control the build process.
checksum of the file to the mirror URL.
* `PYTHON_BUILD_SKIP_MIRROR`, if set, forces python-build to download packages from
their original source URLs instead of using a mirror.
* `PYTHON_BUILD_SKIP_HOMEBREW`, if set, will not search for libraries installed by Homebrew on macOS.
* `PYTHON_BUILD_ROOT` overrides the default location from where build definitions
in `share/python-build/` are looked up.
* `PYTHON_BUILD_DEFINITIONS` can be a list of colon-separated paths that get
@@ -163,6 +164,21 @@ the version(s) installed with `--enable-shared`.
$ 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
interpreter at the cost of significantly longer build times. Most notably, this
enables PGO (profile guided optimization). While your mileage may vary, it is
common for performance improvement from this to be in the ballpark of 30%.
```sh
env PYTHON_CONFIGURE_OPTS='--enable-optimizations --with-lto' PYTHON_CFLAGS='-march=native -mtune=native' pyenv install 3.6.0
```
You can also customize the task used for profile guided optimization by setting
the `PROFILE_TASK` environment variable, for instance, `PROFILE_TASK='-m
test.regrtest --pgo -j0'` will run much faster than the default task.
### Checksum verification
If you have the `shasum`, `openssl`, or `sha256sum` tool installed, python-build will

View File

@@ -2,7 +2,7 @@
#
# Summary: Install a Python version using python-build
#
# Usage: pyenv install [-f] [-kvp] <version>
# Usage: pyenv install [-f] [-kvp] <version>...
# pyenv install [-f] [-kvp] <definition-file>
# pyenv install -l|--list
# pyenv install --version
@@ -59,7 +59,7 @@ usage() {
definitions() {
local query="$1"
python-build --definitions | $(type -P ggrep grep | head -1) -F "$query" || true
python-build --definitions | $(type -P ggrep grep | head -n1) -F "$query" || true
}
indent() {
@@ -113,17 +113,15 @@ for option in "${OPTIONS[@]}"; do
esac
done
[ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
unset VERSION_NAME
# The first argument contains the definition to install. If the
# argument is missing, try to install whatever local app-specific
# version is specified by pyenv. Show usage instructions if a local
# version is not specified.
DEFINITION="${ARGUMENTS[0]}"
[ -n "$DEFINITION" ] || DEFINITION="$(pyenv-local 2>/dev/null || true)"
[ -n "$DEFINITION" ] || usage 1 >&2
DEFINITIONS=("${ARGUMENTS[@]}")
[[ "${#DEFINITIONS[*]}" -eq 0 ]] && DEFINITIONS=($(pyenv-local 2>/dev/null || true))
[[ "${#DEFINITIONS[*]}" -eq 0 ]] && usage 1 >&2
# Define `before_install` and `after_install` functions that allow
# plugin hooks to register a string of code for execution before or
@@ -140,52 +138,67 @@ after_install() {
after_hooks["${#after_hooks[@]}"]="$hook"
}
# Plan cleanup on unsuccessful installation.
cleanup() {
[ -z "${PREFIX_EXISTS}" ] && rm -rf "$PREFIX"
}
trap cleanup SIGINT
OLDIFS="$IFS"
IFS=$'\n' scripts=(`pyenv-hooks install`)
IFS="$OLDIFS"
for script in "${scripts[@]}"; do source "$script"; done
COMBINED_STATUS=0
for DEFINITION in "${DEFINITIONS[@]}"; do
STATUS=0
# Set VERSION_NAME from $DEFINITION, if it is not already set. Then
# compute the installation prefix.
[ -n "$VERSION_NAME" ] || VERSION_NAME="${DEFINITION##*/}"
[ -n "$DEBUG" ] && VERSION_NAME="${VERSION_NAME}-debug"
PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
# Try to resolve a prefix if user indeed gave a prefix.
# We install the version under the resolved name
# and hooks also see the resolved name
DEFINITION="$(pyenv-latest -q -k "$DEFINITION" || echo "$DEFINITION")"
[ -d "${PREFIX}" ] && PREFIX_EXISTS=1
# Set VERSION_NAME from $DEFINITION. Then compute the installation prefix.
VERSION_NAME="${DEFINITION##*/}"
[ -n "$DEBUG" ] && VERSION_NAME="${VERSION_NAME}-debug"
PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
# If the installation prefix exists, prompt for confirmation unless
# the --force option was specified.
if [ -d "${PREFIX}/bin" ]; then
[ -d "${PREFIX}" ] && PREFIX_EXISTS=1
# If the installation prefix exists, prompt for confirmation unless
# the --force option was specified.
if [ -d "${PREFIX}/bin" ]; then
if [ -z "$FORCE" ] && [ -z "$SKIP_EXISTING" ]; then
echo "pyenv: $PREFIX already exists" >&2
read -p "continue with installation? (y/N) "
case "$REPLY" in
y | Y | yes | YES ) ;;
* ) exit 1 ;;
* ) { STATUS=1; [[ $STATUS -gt $COMBINED_STATUS ]] && COMBINED_STATUS=$STATUS; }; continue ;;
esac
elif [ -n "$SKIP_EXISTING" ]; then
# Since we know the python version is already installed, and are opting to
# not force installation of existing versions, we just `exit 0` here to
# leave things happy
exit 0
continue
fi
fi
fi
# If PYENV_BUILD_ROOT is set, always pass keep options to python-build.
if [ -n "${PYENV_BUILD_ROOT}" ]; then
# If PYENV_BUILD_ROOT is set, always pass keep options to python-build.
if [ -n "${PYENV_BUILD_ROOT}" ]; then
export PYTHON_BUILD_BUILD_PATH="${PYENV_BUILD_ROOT}/${VERSION_NAME}"
KEEP="-k"
fi
fi
# Set PYTHON_BUILD_CACHE_PATH to $PYENV_ROOT/cache, if the directory
# exists and the variable is not already set.
if [ -z "${PYTHON_BUILD_CACHE_PATH}" ] && [ -d "${PYENV_ROOT}/cache" ]; then
# Set PYTHON_BUILD_CACHE_PATH to $PYENV_ROOT/cache, if the directory
# exists and the variable is not already set.
if [ -z "${PYTHON_BUILD_CACHE_PATH}" ] && [ -d "${PYENV_ROOT}/cache" ]; then
export PYTHON_BUILD_CACHE_PATH="${PYENV_ROOT}/cache"
fi
fi
if [ -z "${PYENV_BOOTSTRAP_VERSION}" ]; then
if [ -z "${PYENV_BOOTSTRAP_VERSION}" ]; then
case "${VERSION_NAME}" in
[23]"."* )
# Default PYENV_VERSION to the friendly Python version. (The
@@ -215,7 +228,7 @@ if [ -z "${PYENV_BOOTSTRAP_VERSION}" ]; then
done
fi
if [ -n "$PYENV_BOOTSTRAP_VERSION" ]; then
for dep in curses genc pycparser; do
for dep in pycparser; do
if ! PYENV_VERSION="$PYENV_BOOTSTRAP_VERSION" pyenv-exec python -c "import ${dep}" 1>/dev/null 2>&1; then
echo "pyenv-install: $VERSION_NAME: PyPy requires \`${dep}' in $PYENV_BOOTSTRAP_VERSION to build from source." >&2
exit 1
@@ -227,28 +240,21 @@ if [ -z "${PYENV_BOOTSTRAP_VERSION}" ]; then
fi
;;
esac
fi
fi
if [ -n "${PYENV_BOOTSTRAP_VERSION}" ]; then
if [ -n "${PYENV_BOOTSTRAP_VERSION}" ]; then
export PYENV_VERSION="${PYENV_BOOTSTRAP_VERSION}"
fi
fi
# Execute `before_install` hooks.
for hook in "${before_hooks[@]}"; do eval "$hook"; done
# Execute `before_install` hooks.
for hook in "${before_hooks[@]}"; do eval "$hook"; done
# Plan cleanup on unsuccessful installation.
cleanup() {
[ -z "${PREFIX_EXISTS}" ] && rm -rf "$PREFIX"
}
# Invoke `python-build` and record the exit status in $STATUS.
python-build $KEEP $VERBOSE $HAS_PATCH $DEBUG "$DEFINITION" "$PREFIX" || \
{ STATUS=$?; [[ $STATUS -gt $COMBINED_STATUS ]] && COMBINED_STATUS=$STATUS; }
trap cleanup SIGINT
# Invoke `python-build` and record the exit status in $STATUS.
STATUS=0
python-build $KEEP $VERBOSE $HAS_PATCH $DEBUG "$DEFINITION" "$PREFIX" || STATUS="$?"
# Display a more helpful message if the definition wasn't found.
if [ "$STATUS" == "2" ]; then
# Display a more helpful message if the definition wasn't found.
if [ "$STATUS" == "2" ]; then
{ candidates="$(definitions "$DEFINITION")"
here="$(dirname "${0%/*}")/../.."
if [ -n "$candidates" ]; then
@@ -270,16 +276,20 @@ if [ "$STATUS" == "2" ]; then
printf ".\n"
fi
} >&2
fi
fi
# Execute `after_install` hooks.
for hook in "${after_hooks[@]}"; do eval "$hook"; done
# Execute `after_install` hooks.
for hook in "${after_hooks[@]}"; do eval "$hook"; done
# Run `pyenv-rehash` after a successful installation.
if [ "$STATUS" == "0" ]; then
# Run `pyenv-rehash` after a successful installation.
if [[ $STATUS -eq 0 ]]; then
pyenv-rehash
else
else
cleanup
fi
break
fi
exit "$STATUS"
done
exit "${COMBINED_STATUS}"

View File

@@ -56,9 +56,14 @@ lib() {
}
lib "$1"
READLINK=$(type -P readlink)
if [ -z "$READLINK" ]; then
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
exit 1
fi
resolve_link() {
$(type -P greadlink readlink | head -1) "$1"
$READLINK "$1"
}
abs_dirname() {
@@ -102,7 +107,7 @@ os_information() {
source /etc/os-release
echo "$NAME" $VERSION_ID
else
local os="$(cat /etc/{centos,redhat,fedora,system}-release /etc/debian_version 2>/dev/null | head -1)"
local os="$(cat /etc/{centos,redhat,fedora,system}-release /etc/debian_version 2>/dev/null | head -n1)"
echo "${os:-$(uname -sr)}"
fi
}
@@ -112,6 +117,11 @@ is_mac() {
[ $# -eq 0 ] || [ "$(osx_version)" "$@" ]
}
can_use_homebrew() {
[ -z "$PYTHON_BUILD_SKIP_HOMEBREW" ] || return 1
is_mac || return 1
}
# 9.1 -> 901
# 10.9 -> 1009
# 10.10 -> 1010
@@ -228,9 +238,7 @@ install_package_using() {
make_package "${make_args[@]}"
popd >&4
{ echo "Installed ${package_name} to ${PREFIX_PATH}"
echo
} >&2
echo "Installed ${package_name} to ${PREFIX_PATH}" >&2
}
make_package() {
@@ -253,7 +261,7 @@ compute_sha2() {
output="$(shasum -a 256 -b)" || return 1
echo "${output% *}"
elif type openssl &>/dev/null; then
local openssl="$(command -v "$(brew --prefix openssl 2>/dev/null || true)"/bin/openssl openssl | head -1)"
local openssl="$(command -v "$(brew --prefix openssl 2>/dev/null || true)"/bin/openssl openssl | head -n1)"
output="$("$openssl" dgst -sha256 2>/dev/null)" || return 1
echo "${output##* }"
elif type sha256sum &>/dev/null; then
@@ -355,12 +363,38 @@ http_head_aria2c() {
}
http_get_aria2c() {
local out="${2:-$(mktemp "out.XXXXXX")}"
if aria2c --allow-overwrite=true --no-conf=true -o "${out}" ${ARIA2_OPTS} "$1" >&4; then
# aria2c always treats -o argument as a relative path
local out dir_out;
if [[ -n "$2" ]]; then
out="$(basename $2)";
dir_out="$(dirname $2)";
else
out="$(mktemp "out.XXXXXX")";
dir_out="$TMPDIR";
fi
# In Ubuntu, aria2c is only available as a snap. Snaps cannot read or write /tmp
# (files cannot be found, any write result is silently discarded).
local aria2c_is_snap;
if [[ $(command -v aria2c) == "/snap/"* ]]; then aria2c_is_snap=1; fi
if [[ -n $aria2c_is_snap ]]; then
local real_dir_out="$dir_out"
# presumably, snaps can always write to under $HOME
dir_out="$HOME"
fi
if aria2c --allow-overwrite=true --no-conf=true -d "${dir_out}" -o "${out}" ${ARIA2_OPTS} "$1" >&4; then
[ -n "$2" ] || cat "${out}"
else
false
fi
ret=$?
if [[ -n "$2" && -n $aria2c_is_snap ]]; then
mv "$dir_out/$out" "$real_dir_out/$out"
fi
return "$ret"
}
http_head_curl() {
@@ -709,7 +743,7 @@ build_package() {
echo "Installing ${package_name}..." >&2
[ -n "$HAS_PATCH" ] && apply_python_patch "$package_name"
[ -n "$HAS_PATCH" ] && apply_patch "$package_name" <(cat "${package_name}.patch")
for command in $commands; do
"build_package_${command}" "$package_name"
@@ -774,6 +808,7 @@ build_package_standard_build() {
else
use_homebrew_zlib || true
fi
use_dsymutil || true
fi
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
@@ -783,10 +818,10 @@ build_package_standard_build() {
export CC=clang
fi
${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \
$CONFIGURE_OPTS ${!PACKAGE_CONFIGURE_OPTS} "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" || return 1
"${!PACKAGE_CONFIGURE_OPTS_ARRAY}" $CONFIGURE_OPTS ${!PACKAGE_CONFIGURE_OPTS} || return 1
) >&4 2>&1
{ "$MAKE" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS} "${!PACKAGE_MAKE_OPTS_ARRAY}"
{ "$MAKE" "${!PACKAGE_MAKE_OPTS_ARRAY}" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS}
} >&4 2>&1
}
@@ -837,7 +872,7 @@ build_package_jython() {
fix_jython_shebangs() {
# Workaround for Jython 2.7+ (#458)
for file in "${PREFIX_PATH}/bin"/*; do
case "$(head -1 "${file}")" in
case "$(head -n1 "${file}")" in
"#!"*"/bin/jython" )
sed -i.bak "1 s:.*:#\!${PREFIX_PATH}\/bin\/jython:" "${file}"
;;
@@ -908,7 +943,13 @@ build_package_micropython() {
pypy_architecture() {
case "$(uname -s)" in
"Darwin" ) echo "osx64" ;;
"Darwin" )
case "$(uname -m)" in
"arm64" ) echo "osarm64" ;;
"x86_64" ) echo "osx64" ;;
* ) return 1 ;;
esac
;;
"Linux" )
case "$(uname -m)" in
"armel" ) echo "linux-armel" ;;
@@ -932,10 +973,30 @@ pypy_architecture() {
esac
}
graalpy_architecture() {
case "$(uname -s)" in
"Darwin" )
case "$(uname -m)" in
"x86_64" ) echo "macos-amd64" ;;
"arm64" ) echo "macos-aarch64" ;;
* ) return 1 ;;
esac
;;
"Linux" )
case "$(uname -m)" in
"x86_64" ) echo "linux-amd64" ;;
"aarch64" ) echo "linux-aarch64" ;;
* ) return 1 ;;
esac
;;
esac
}
pyston_architecture() {
pypy_architecture
}
# Note: not used by graalpy >= 23.3.0 anymore
build_package_graalpython() {
build_package_copy
ln -fs "${PREFIX_PATH}/bin/graalpython" "${PREFIX_PATH}/bin/python"
@@ -1065,13 +1126,13 @@ setup_builtin_patches() {
local package_name="$1"
local package_patch_path="${DEFINITION_PATH%/*}/patches/${DEFINITION_PATH##*/}/${package_name}"
ORIG_HAS_PATCH="$HAS_PATCH"
# Apply built-in patches if patch was not given from stdin
if [ -z "$HAS_PATCH" ] && [ -d "${package_patch_path}" ]; then
if [[ -n "$HAS_STDIN_PATCH" ]] && package_is_python "${package_name}"; then
cat >"${package_name}.patch"
HAS_PATCH=true
elif [[ -d "${package_patch_path}" ]]; then
{ find "${package_patch_path}" -maxdepth 1 -type f
} 2>/dev/null | sort | xargs cat 1>"${package_name}.patch"
exec <&-
exec <"${package_name}.patch"
HAS_PATCH=true
fi
}
@@ -1079,7 +1140,7 @@ setup_builtin_patches() {
cleanup_builtin_patches() {
local package_name="$1"
rm -f "${package_name}.patch"
HAS_PATCH="$ORIG_HAS_PATCH"
unset HAS_PATCH
}
fix_directory_permissions() {
@@ -1088,7 +1149,7 @@ fix_directory_permissions() {
}
require_java7() {
local version="$(java -version 2>&1 | grep '\(java\|openjdk\) version' | head -1)"
local version="$(java -version 2>&1 | grep '\(java\|openjdk\) version' | head -n1)"
if [[ $version != *[789]* ]]; then
colorize 1 "ERROR" >&3
echo ": Java 7 required. Please install a 1.7-compatible JRE." >&3
@@ -1143,7 +1204,7 @@ require_gcc() {
export CC="$gcc"
if is_mac -ge 1010; then
export MACOSX_DEPLOYMENT_TARGET=10.9
export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-10.9}
fi
}
@@ -1322,15 +1383,15 @@ configured_with_package_dir() {
}
use_homebrew() {
is_mac || return 1
can_use_homebrew || return 1
# unless Homebrew is at the default /usr/local, need to add its paths to
# compiler search to be able to use non-keg-only deps from there
if is_mac && command -v brew &>/dev/null; then
if command -v brew &>/dev/null; then
local brew_prefix="$(brew --prefix 2>/dev/null || true)"
# /usr/local/lib:/usr/lib is the default library search path
if [[ -n $brew_prefix && $brew_prefix != "/usr" && $brew_prefix != "/usr/local" ]]; then
export CPPFLAGS="${CPPFLAGS:+${CPPFLAGS% } }-I${brew_prefix}/include"
export LDFLAGS="${LDFLAGS:+${LDFLAGS% } }-L${brew_prefix}/lib -Wl,-rpath,${brew_prefix}/lib"
export CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-I${brew_prefix}/include"
export LDFLAGS="${LDFLAGS:+$LDFLAGS }-L${brew_prefix}/lib -Wl,-rpath,${brew_prefix}/lib"
# `python-config` ignores LDFLAGS envvar. Adding to LIBS is the only way to add extra stuff
# to `python-config --ldflags` output
export LIBS="${LIBS:+${LIBS% } }-L${brew_prefix}/lib -Wl,-rpath,${brew_prefix}/lib"
@@ -1344,12 +1405,12 @@ needs_yaml() {
}
use_homebrew_yaml() {
is_mac || return 1
can_use_homebrew || return 1
local libdir="$(brew --prefix libyaml 2>/dev/null || true)"
if [ -d "$libdir" ]; then
echo "python-build: use libyaml from homebrew"
export CPPFLAGS="-I$libdir/include ${CPPFLAGS}"
export LDFLAGS="-L$libdir/lib ${LDFLAGS}"
export CPPFLAGS="-I$libdir/include${CPPFLAGS:+ $CPPFLAGS}"
export LDFLAGS="-L$libdir/lib${LDFLAGS:+ ${LDFLAGS% }}"
else
return 1
fi
@@ -1360,20 +1421,26 @@ use_freebsd_pkg() {
if [ "FreeBSD" = "$(uname -s)" ]; then
# use openssl if installed from Ports Collection
if [ -f /usr/local/include/openssl/ssl.h ]; then
package_option ruby configure --with-openssl-dir="/usr/local"
package_option python configure --with-openssl="/usr/local"
fi
# check if 11-R or later
release="$(uname -r)"
if [ "${release%%.*}" -ge 11 ]; then
# prefers readline to compile most of ruby versions
if pkg info -e readline > /dev/null; then
# use readline from Ports Collection
package_option ruby configure --with-readline-dir="/usr/local"
elif pkg info -e libedit > /dev/null; then
# use libedit from Ports Collection
package_option ruby configure --enable-libedit
package_option ruby configure --with-libedit-dir="/usr/local"
# Use packages from Ports Collection.
#
# Unlike Linux, BSD's cc does not look in /usr/local by default
# where Ports-installed packages are, but they are available via pkg-config.
# Surprisingly, CPython's Configure only uses pkg-config
# to locate some of the dependencies and not others.
# Here we detect those that are (as of this writing) known
# to not be searched via pkg-config.
#
# XXX: As a side effect, this would pick up any other libs from Ports
# that are searched via compiler
if pkg info -e readline || pkg info -e sqlite3; then
export CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-I/usr/local/include"
export LDFLAGS="${LDFLAGS:+$LDFLAGS }-L/usr/local/lib -Wl,-rpath,/usr/local/lib"
fi
fi
fi
@@ -1388,13 +1455,13 @@ has_broken_mac_readline() {
}
use_homebrew_readline() {
is_mac || return 1
can_use_homebrew || return 1
if ! configured_with_package_dir "python" "readline/rlconf.h"; then
local libdir="$(brew --prefix readline 2>/dev/null || true)"
if [ -d "$libdir" ]; then
echo "python-build: use readline from homebrew"
export CPPFLAGS="-I$libdir/include ${CPPFLAGS}"
export LDFLAGS="-L$libdir/lib ${LDFLAGS}"
export CPPFLAGS="-I$libdir/include${CPPFLAGS:+ $CPPFLAGS}"
export LDFLAGS="-L$libdir/lib${LDFLAGS:+ $LDFLAGS}"
else
return 1
fi
@@ -1412,8 +1479,8 @@ build_package_mac_readline() {
READLINE_PREFIX_PATH="${PREFIX_PATH}/readline"
# Tell Python to use this readline for its extension.
export CPPFLAGS="-I${READLINE_PREFIX_PATH}/include ${CPPFLAGS}"
export LDFLAGS="-L${READLINE_PREFIX_PATH}/lib ${LDFLAGS}"
export CPPFLAGS="-I${READLINE_PREFIX_PATH}/include${CPPFLAGS:+ $CPPFLAGS}"
export LDFLAGS="-L${READLINE_PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
# Make sure pkg-config finds our build first.
export PKG_CONFIG_PATH="${READLINE_PREFIX_PATH}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
@@ -1429,7 +1496,7 @@ has_broken_mac_openssl() {
}
use_homebrew_openssl() {
is_mac || return 1
can_use_homebrew || return 1
command -v brew >/dev/null || return 1
for openssl in ${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:-openssl}; do
local ssldir="$(brew --prefix "${openssl}" || true)"
@@ -1440,8 +1507,8 @@ use_homebrew_openssl() {
# https://bugs.python.org/issue21541
package_option python configure --with-openssl="${ssldir}"
else
export CPPFLAGS="-I$ssldir/include ${CPPFLAGS}"
export LDFLAGS="-L$ssldir/lib ${LDFLAGS}"
export CPPFLAGS="-I$ssldir/include ${CPPFLAGS:+ $CPPFLAGS}"
export LDFLAGS="-L$ssldir/lib${LDFLAGS:+ $LDFLAGS}"
fi
export PKG_CONFIG_PATH="$ssldir/lib/pkgconfig/:${PKG_CONFIG_PATH}"
return
@@ -1463,8 +1530,8 @@ build_package_mac_openssl() {
# https://bugs.python.org/issue21541
package_option python configure --with-openssl="${OPENSSL_PREFIX_PATH}"
else
export CPPFLAGS="-I${OPENSSL_PREFIX_PATH}/include ${CPPFLAGS}"
export LDFLAGS="-L${OPENSSL_PREFIX_PATH}/lib ${LDFLAGS}"
export CPPFLAGS="-I${OPENSSL_PREFIX_PATH}/include ${CPPFLAGS:+ $CPPFLAGS}"
export LDFLAGS="-L${OPENSSL_PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
fi
# Make sure pkg-config finds our build first.
@@ -1525,11 +1592,11 @@ build_package_verify_openssl() {
RbConfig::CONFIG.fetch("configure_args").shellsplit.each { |arg| $stderr.puts " #{arg}" }
exit 1
end
' "$(basename "$(type -P yum apt-get | head -1)")" >&4 2>&1
' "$(basename "$(type -P yum apt-get | head -n1)")" >&4 2>&1
}
use_homebrew_zlib() {
is_mac || return 1
can_use_homebrew || return 1
local brew_zlib="$(brew --prefix zlib 2>/dev/null || true)"
if [ -d "$brew_zlib" ]; then
echo "python-build: use zlib from homebrew"
@@ -1538,26 +1605,31 @@ use_homebrew_zlib() {
}
use_xcode_sdk_zlib() {
# If a custom compiler is used, including XCode SDK will likely break it
[[ "${CC:-clang}" != "clang" || "$(command -v clang 2>/dev/null || true)" != "/usr/bin/clang" ]] && return 1
local xc_sdk_path="$(xcrun --show-sdk-path 2>/dev/null || true)"
if [ -d "$xc_sdk_path" ]; then
echo "python-build: use zlib from xcode sdk"
export CFLAGS="-I${xc_sdk_path}/usr/include ${CFLAGS}"
export CFLAGS="${CFLAGS:+$CFLAGS }-I${xc_sdk_path}/usr/include"
if is_mac -ge 1100; then
export LDFLAGS="${LDFLAGS} -L${xc_sdk_path}/usr/lib"
export LDFLAGS="${LDFLAGS:+$LDFLAGS }-L${xc_sdk_path}/usr/lib"
fi
fi
}
use_homebrew_tcltk() {
is_mac || return 1
can_use_homebrew || return 1
# get the version from the folder that homebrew versions
local tcltk_libdir="$(brew --prefix tcl-tk 2>/dev/null || true)"
if [ -d "$tcltk_libdir" ]; then
echo "python-build: use tcl-tk from homebrew"
if [[ -z "$PYTHON_BUILD_TCLTK_USE_PKGCONFIG" ]]; then
local tcltk_version="$(sh -c '. '"$tcltk_libdir"'/lib/tclConfig.sh; echo $TCL_VERSION')"
package_option python configure --with-tcltk-libs="-L$tcltk_libdir/lib -ltcl$tcltk_version -ltk$tcltk_version"
package_option python configure --with-tcltk-includes="-I$tcltk_libdir/include"
fi
export PKG_CONFIG_PATH="${tcltk_libdir}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
fi
}
# FIXME: this function is a workaround for #1125
@@ -1607,7 +1679,7 @@ get_tcltk_flag_from() {
}
use_tcltk() {
if is_mac; then
if can_use_homebrew; then
local tcltk_libdir="$(brew --prefix tcl-tk 2>/dev/null || true)"
fi
local tcl_tk_libs="$(get_tcltk_flag_from "$PYTHON_CONFIGURE_OPTS")"
@@ -1621,6 +1693,16 @@ use_tcltk() {
fi
}
# Since 3.12, CPython can add DWARF debug information in MacOS
# using Apple's nonstandard way, `dsymutil', that creates a "dSYM bundle"
# that's supposed to be installed alongside executables
# (https://github.com/python/cpython/issues/95973).
use_dsymutil() {
if [[ -n "$PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL" ]] && is_mac; then
package_option python configure --with-dsymutil
fi
}
build_package_enable_shared() {
package_option python configure --enable-shared
}
@@ -1629,7 +1711,7 @@ build_package_auto_tcltk() {
if is_mac && [ ! -d /usr/include/X11 ]; then
if [ -d /opt/X11/include ]; then
if [[ "$CPPFLAGS" != *-I/opt/X11/include* ]]; then
export CPPFLAGS="-I/opt/X11/include $CPPFLAGS"
export CPPFLAGS="-I/opt/X11/include${CPPFLAGS:+ $CPPFLAGS}"
fi
else
package_option python configure --without-tk
@@ -1637,35 +1719,37 @@ build_package_auto_tcltk() {
fi
}
# extglob must be set at parse time, not at runtime
# extglob must be set at both parse time and runtime
# https://stackoverflow.com/questions/49283740/bash-script-throws-syntax-errors-when-the-extglob-option-is-set-inside-a-subsh
#
# The function is *parsed* with "extglob" only if an outer `shopt -s exglob`
# exists; at *runtime* you still need to activate it *within* the function.
#
shopt -s extglob
apply_python_patch() {
local patchfile
# needed at runtime
package_is_python() {
shopt -s extglob
case "$1" in
Python-* | jython-* | pypy-* | pypy[0-9].+([0-9])-* | stackless-* )
return 0
;;
esac
return 1
shopt -u extglob
}
shopt -u extglob
apply_patch() {
local package_name="$1"
local patchfile
patchfile="$(mktemp "${TMP}/python-patch.XXXXXX")"
cat "${2:--}" >"$patchfile"
local striplevel=0
grep -q '^diff --git a/' "$patchfile" && striplevel=1
patch -p$striplevel --force -i "$patchfile"
;;
esac
shopt -u extglob
}
shopt -u extglob
build_package_symlink_version_suffix() {
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
if [[ "${PYTHON_CONFIGURE_OPTS_ARRAY[*]} $CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
if [ -e "${PREFIX_PATH}/bin" ]; then
# Always create `bin` as symlink to framework path if the version was built with `--enable-frameowrk` (#590)
# Always create `bin` as symlink to framework path if the version was built with `--enable-framework` (#590)
rm -rf "${PREFIX_PATH}/bin.orig"
mv -f "${PREFIX_PATH}/bin" "${PREFIX_PATH}/bin.orig"
fi
@@ -1719,7 +1803,7 @@ verify_python() {
}
try_python_module() {
if ! "$PYTHON_BIN" -c "import $1" 1>/dev/null 2>&1; then
if ! "$PYTHON_BIN" -c "import $1"; then
{ colorize 1 "WARNING"
echo ": The Python $1 extension was not compiled${3:+ $3}. Missing the ${2:-$1}?"
return 0
@@ -1728,7 +1812,7 @@ try_python_module() {
}
verify_python_module() {
if ! "$PYTHON_BIN" -c "import $1" 1>/dev/null 2>&1; then
if ! "$PYTHON_BIN" -c "import $1"; then
{ colorize 1 "ERROR"
echo ": The Python $1 extension was not compiled. Missing the ${2:-$1}?"
echo
@@ -1874,6 +1958,11 @@ build_package_verify_py312() {
build_package_verify_py311 "$1" "${2:-3.12}"
}
# Post-install check for Python 3.13.x
build_package_verify_py313() {
build_package_verify_py312 "$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
@@ -2000,7 +2089,7 @@ for option in "${OPTIONS[@]}"; do
VERBOSE=true
;;
"p" | "patch" )
HAS_PATCH=true
HAS_STDIN_PATCH=true
;;
"g" | "debug" )
DEBUG=true
@@ -2119,26 +2208,31 @@ if [ -n "$DEBUG" ]; then
package_option python configure --with-pydebug
fi
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" != *"--enable-framework"* && "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" != *"--disable-shared"* ]]; then
package_option python configure --enable-shared
fi
# python-build: Specify `--libdir` on configure to fix build on openSUSE (#36)
package_option python configure --libdir="${PREFIX_PATH}/lib"
# python-build: Set `RPATH` if `--enable-shared` was given (#65, #66, #82)
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-shared"* ]]; then
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS ${PYTHON_CONFIGURE_OPTS_ARRAY[@]}" == *"--enable-shared"* ]]; then
# The ld on Darwin embeds the full paths to each dylib by default
if [[ "$LDFLAGS" != *"-rpath="* ]] && ! is_mac; then
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib ${LDFLAGS}"
if [[ "$LDFLAGS" != *"-rpath="* ]] ; then
export LDFLAGS="-Wl,-rpath,${PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
fi
fi
# python-build: Set `RPATH` if --shared` was given for PyPy (#244)
if [[ "$PYPY_OPTS" == *"--shared"* ]]; then
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib ${LDFLAGS}"
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
fi
# Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
shopt -s extglob
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
if ! is_mac; then
echo "python-build: framework installation is not supported." >&2
echo "python-build: framework installation is not supported outside of MacOS." >&2
exit 1
fi
create_framework_dirs() {
@@ -2154,15 +2248,29 @@ if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; the
create_framework_dirs "${DEFINITION_PATH##*/}"
# the `/Library/Frameworks` suffix makes CPython build install apps under prefix rather than into /Applications (#1003)
package_option python configure --enable-framework="${PREFIX_PATH}/Library/Frameworks"
#FIXME: doesn't properly handle paths with spaces. Fix by parsing *OPTS into arrays.
CONFIGURE_OPTS="${CONFIGURE_OPTS//--enable-framework?(=*([^ ]))?( )/}";
CONFIGURE_OPTS="${CONFIGURE_OPTS% }"
PYTHON_CONFIGURE_OPTS="${PYTHON_CONFIGURE_OPTS//--enable-framework?(=*([^ ]))?( )/}";
PYTHON_CONFIGURE_OPTS="${PYTHON_CONFIGURE_OPTS% }"
fi
shopt -u extglob
# Build against universal SDK
shopt -s extglob
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]]; then
if ! is_mac; then
echo "python-build: universal installation is not supported." >&2
echo "python-build: universal installation is not supported outside of MacOS." >&2
exit 1
fi
package_option python configure --enable-universalsdk=/
#FIXME: doesn't properly handle paths with spaces. Fix by parsing *OPTS into arrays.
CONFIGURE_OPTS="${CONFIGURE_OPTS//--enable-universalsdk?(=*([^ ]))?( )/}"
CONFIGURE_OPTS="${CONFIGURE_OPTS% }"
PYTHON_CONFIGURE_OPTS="${PYTHON_CONFIGURE_OPTS//--enable-universalsdk?(=*([^ ]))?( )/}"
PYTHON_CONFIGURE_OPTS="${PYTHON_CONFIGURE_OPTS% }"
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" != *"--with-universal-archs"* ]]; then
# in CPython's configure.ac, --with-universal-archs defaults to 'intel' which means i386 + x86_64
# since 2.7.5 and 3.3.0 -- i.e. in all non-EOL versions
@@ -2172,6 +2280,7 @@ if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]];
fi
fi
fi
shopt -u extglob
# Compile with `--enable-unicode=ucs4` by default (#257)
if [[ "$PYTHON_CONFIGURE_OPTS" != *"--enable-unicode="* ]]; then
@@ -2298,8 +2407,8 @@ if [ -n "$VERBOSE" ]; then
trap "kill $TAIL_PID" SIGINT SIGTERM EXIT
fi
export LDFLAGS="-L${PREFIX_PATH}/lib ${LDFLAGS}"
export CPPFLAGS="-I${PREFIX_PATH}/include ${CPPFLAGS}"
export LDFLAGS="-L${PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
export CPPFLAGS="-I${PREFIX_PATH}/include${CPPFLAGS:+ $CPPFLAGS}"
unset PYTHONHOME
unset PYTHONPATH

View File

@@ -108,6 +108,8 @@ class PyVersion(StrEnum):
PY37 = "py37"
PY38 = "py38"
PY39 = "py39"
PY310 = "py310"
PY311 = "py311"
def version(self):
first, *others = self.value[2:]
@@ -120,7 +122,7 @@ class PyVersion(StrEnum):
@total_ordering
class VersionStr(str):
def info(self):
return tuple(int(n) for n in self.split("."))
return tuple(int(n) for n in self.replace("-", ".").split("."))
def __eq__(self, other):
return str(self) == str(other)
@@ -149,20 +151,23 @@ class CondaVersion(NamedTuple):
"""
Convert a string of the form "miniconda_n-ver" or "miniconda_n-py_ver-ver" to a :class:`CondaVersion` object.
"""
components = s.split("-")
if len(components) == 3:
miniconda_n, py_ver, ver = components
py_ver = PyVersion(f"py{py_ver.replace('.', '')}")
else:
miniconda_n, ver = components
py_ver = None
miniconda_n, _, remainder = s.partition("-")
suffix = miniconda_n[-1]
if suffix in string.digits:
flavor = miniconda_n[:-1]
else:
flavor = miniconda_n
suffix = ""
components = remainder.split("-")
if flavor == Flavor.MINICONDA and len(components) >= 2:
py_ver, *ver_parts = components
py_ver = PyVersion(f"py{py_ver.replace('.', '')}")
ver = "-".join(ver_parts)
else:
ver = "-".join(components)
py_ver = None
return CondaVersion(Flavor(flavor), Suffix(suffix), VersionStr(ver), py_ver)
def to_filename(self):
@@ -199,7 +204,7 @@ class CondaVersion(NamedTuple):
return PyVersion.PY37
return PyVersion.PY36
raise ValueError(flavor)
raise ValueError(self.flavor)
class CondaSpec(NamedTuple):
@@ -213,7 +218,10 @@ class CondaSpec(NamedTuple):
@classmethod
def from_filestem(cls, stem, md5, repo, py_version=None):
miniconda_n, ver, os, arch = stem.split("-")
# The `*vers` captures the new trailing `-1` in some file names (a build number?)
# so they can be processed properly.
miniconda_n, *vers, os, arch = stem.split("-")
ver = "-".join(vers)
suffix = miniconda_n[-1]
if suffix in string.digits:
tflavor = miniconda_n[:-1]
@@ -285,7 +293,7 @@ def get_existing_condas(name):
logger.debug("Found existing %(name)s version %(v)s", locals())
yield v
except ValueError:
pass
logger.error("Unable to parse existing version %s", entry_name)
def get_available_condas(name, repo):
@@ -371,7 +379,7 @@ if __name__ == "__main__":
reason = "already exists"
elif key.version_str.info() <= (4, 3, 30):
reason = "too old"
elif len(key.version_str.info()) >= 4:
elif len(key.version_str.info()) >= 4 and "-" not in key.version_str:
reason = "ignoring hotfix releases"
if reason:

View File

@@ -0,0 +1,104 @@
#!/usr/bin/env python3
'Adds the latest miniforge and mambaforge releases.'
from pathlib import Path
import logging
import os
import string
import requests
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 = """
case "$(anaconda_architecture 2>/dev/null || true)" in
{install_lines}
* )
{{ echo
colorize 1 "ERROR"
echo ": The binary distribution of {flavor} is not available for $(anaconda_architecture 2>/dev/null || true)."
echo
}} >&2
exit 1
;;
esac
""".lstrip()
install_line_fmt = """
"{os}-{arch}" )
install_script "{filename}" "{url}#{sha}" "miniconda" verify_py{py_version}
;;
""".strip()
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())
tup = tuple(reversed(requests.get(url).text.replace('./', '').rstrip().split()))
logger.debug('Got %(tup)s', locals())
return tup
def create_spec(filename, sha, url):
flavor_with_suffix, version, subversion, os, arch = filename.replace('.sh', '').split('-')
suffix = flavor_with_suffix[-1]
if suffix in string.digits:
flavor = flavor_with_suffix[:-1]
else:
flavor = flavor_with_suffix
spec = {
'filename': filename,
'sha': sha,
'url': url,
'py_version': PYTHON_VERSION,
'flavor': flavor,
'os': os,
'arch': arch,
'installer_filename': f'{flavor_with_suffix.lower()}-{version}-{subversion}',
}
logger.debug('Created spec %(spec)s', locals())
return spec
def supported(filename):
return ('pypy' not in filename) and ('Windows' not in filename)
def add_version(release):
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')])
specs = [create_spec(filename, sha, download_urls[filename]) for (filename, sha) in shas.items() if supported(filename)]
for distribution in DISTRIBUTIONS:
distribution_specs = [spec for spec in specs if distribution in spec['flavor'].lower()]
count = len(distribution_specs)
if count > 0:
output_file = out_dir / distribution_specs[0]['installer_filename']
logger.info('Writing %(count)d specs for %(distribution)s to %(output_file)s', locals())
script_str = install_script_fmt.format(
install_lines="\n".join([install_line_fmt.format_map(s) for s in distribution_specs]),
flavor=distribution_specs[0]['flavor'],
)
with open(output_file, 'w') as f:
f.write(script_str)
else:
logger.info('Did not find specs for %(distribution)s', locals())
for release in requests.get(f'https://api.github.com/repos/{MINIFORGE_REPO}/releases').json():
version = release['tag_name']
logger.info('Looking for %(version)s in %(out_dir)s', locals())
if not list(out_dir.glob(f'*-{version}')):
logger.info('Downloading %(version)s', locals())
add_version(release)

View File

@@ -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.10" "https://www.python.org/ftp/python/3.10.10/Python-3.10.10.tar.xz#0419e9085bf51b7a672009b3f50dbf1859acdf18ba725d0ec19aa5c8503f0ea3" standard verify_py310 copy_python_gdb ensurepip
else
install_package "Python-3.10.10" "https://www.python.org/ftp/python/3.10.10/Python-3.10.10.tgz#fba64559dde21ebdc953e4565e731573bb61159de8e4d4cedee70fb1196f610d" standard verify_py310 copy_python_gdb ensurepip
fi

View File

@@ -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.11" "https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tar.xz#3c3bc3048303721c904a03eb8326b631e921f11cc3be2988456a42f115daf04c" standard verify_py310 copy_python_gdb ensurepip
else
install_package "Python-3.10.11" "https://www.python.org/ftp/python/3.10.11/Python-3.10.11.tgz#f3db31b668efa983508bd67b5712898aa4247899a346f2eb745734699ccd3859" standard verify_py310 copy_python_gdb ensurepip
fi

View File

@@ -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.12" "https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tar.xz#afb74bf19130e7a47d10312c8f5e784f24e0527981eab68e20546cfb865830b8" standard verify_py310 copy_python_gdb ensurepip
else
install_package "Python-3.10.12" "https://www.python.org/ftp/python/3.10.12/Python-3.10.12.tgz#a43cd383f3999a6f4a7db2062b2fc9594fefa73e175b3aedafa295a51a7bb65c" standard verify_py310 copy_python_gdb ensurepip
fi

View File

@@ -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.7" "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tar.xz#6eed8415b7516fb2f260906db5d48dd4c06acc0cb24a7d6cc15296a604dcdc48" standard verify_py310 copy_python_gdb ensurepip
else
install_package "Python-3.10.7" "https://www.python.org/ftp/python/3.10.7/Python-3.10.7.tgz#1b2e4e2df697c52d36731666979e648beeda5941d0f95740aafbf4163e5cc126" standard verify_py310 copy_python_gdb ensurepip
fi

View File

@@ -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.8" "https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tar.xz#6a30ecde59c47048013eb5a658c9b5dec277203d2793667f578df7671f7f03f3" standard verify_py310 copy_python_gdb ensurepip
else
install_package "Python-3.10.8" "https://www.python.org/ftp/python/3.10.8/Python-3.10.8.tgz#f400c3fb394b8bef1292f6dc1292c5fadc3533039a5bc0c3e885f3e16738029a" standard verify_py310 copy_python_gdb ensurepip
fi

View File

@@ -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.9" "https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tar.xz#5ae03e308260164baba39921fdb4dbf8e6d03d8235a939d4582b33f0b5e46a83" standard verify_py310 copy_python_gdb ensurepip
else
install_package "Python-3.10.9" "https://www.python.org/ftp/python/3.10.9/Python-3.10.9.tgz#4ccd7e46c8898f4c7862910a1703aa0e63525913a519abb2f55e26220a914d88" standard verify_py310 copy_python_gdb ensurepip
fi

View File

@@ -1,5 +1,6 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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.11-dev" "https://github.com/python/cpython" 3.11 standard verify_py311 copy_python_gdb ensurepip

View File

@@ -0,0 +1,10 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
install_package "openssl-1.1.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" 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.0" "https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tar.xz#a57dc82d77358617ba65b9841cee1e3b441f386c3789ddc0676eca077f2951c3" standard verify_py311 copy_python_gdb ensurepip
else
install_package "Python-3.11.0" "https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz#64424e96e2457abbac899b90f9530985b51eef2905951febd935f0e73414caeb" standard verify_py311 copy_python_gdb ensurepip
fi

View File

@@ -1,9 +0,0 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
install_package "openssl-1.1.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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-3.11.0rc1" "https://www.python.org/ftp/python/3.11.0/Python-3.11.0rc1.tar.xz#53a5377c37a8a2c6da075b14eb9d63374579f7f3c718fa20f0a1fbb0e94a922b" standard verify_py311 copy_python_gdb ensurepip
else
install_package "Python-3.11.0rc1" "https://www.python.org/ftp/python/3.11.0/Python-3.11.0rc1.tgz#456f32a8d66e7cae226478a74c3ebb358bae09eba0b8537f47d7b2790f65a1f0" standard verify_py311 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,10 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
install_package "openssl-1.1.1s" "https://www.openssl.org/source/openssl-1.1.1s.tar.gz#c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa" 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.1" "https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tar.xz#85879192f2cffd56cb16c092905949ebf3e5e394b7f764723529637901dfb58f" standard verify_py311 copy_python_gdb ensurepip
else
install_package "Python-3.11.1" "https://www.python.org/ftp/python/3.11.1/Python-3.11.1.tgz#baed518e26b337d4d8105679caf68c5c32630d702614fc174e98cb95c46bdfa4" standard verify_py311 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,10 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
install_package "openssl-1.1.1s" "https://www.openssl.org/source/openssl-1.1.1s.tar.gz#c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa" 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.2" "https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tar.xz#29e4b8f5f1658542a8c13e2dd277358c9c48f2b2f7318652ef1675e402b9d2af" standard verify_py311 copy_python_gdb ensurepip
else
install_package "Python-3.11.2" "https://www.python.org/ftp/python/3.11.2/Python-3.11.2.tgz#2411c74bda5bbcfcddaf4531f66d1adc73f247f529aee981b029513aefdbf849" standard verify_py311 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,10 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
install_package "openssl-1.1.1s" "https://www.openssl.org/source/openssl-1.1.1s.tar.gz#c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa" 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.3" "https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tar.xz#8a5db99c961a7ecf27c75956189c9602c968751f11dbeae2b900dbff1c085b5e" standard verify_py311 copy_python_gdb ensurepip
else
install_package "Python-3.11.3" "https://www.python.org/ftp/python/3.11.3/Python-3.11.3.tgz#1a79f3df32265d9e6625f1a0b31c28eb1594df911403d11f3320ee1da1b3e048" standard verify_py311 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,10 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
install_package "openssl-1.1.1s" "https://www.openssl.org/source/openssl-1.1.1s.tar.gz#c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa" 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.4" "https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tar.xz#2f0e409df2ab57aa9fc4cbddfb976af44e4e55bf6f619eee6bc5c2297264a7f6" standard verify_py311 copy_python_gdb ensurepip
else
install_package "Python-3.11.4" "https://www.python.org/ftp/python/3.11.4/Python-3.11.4.tgz#85c37a265e5c9dd9f75b35f954e31fbfc10383162417285e30ad25cc073a0d63" standard verify_py311 copy_python_gdb ensurepip
fi

View File

@@ -1,5 +1,7 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
export PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL=1
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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.12-dev" "https://github.com/python/cpython" main standard verify_py312 copy_python_gdb ensurepip
install_git "Python-3.12-dev" "https://github.com/python/cpython" 3.12 standard verify_py312 copy_python_gdb ensurepip

View File

@@ -0,0 +1,9 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
install_package "openssl-1.1.1s" "https://www.openssl.org/source/openssl-1.1.1s.tar.gz#c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa" 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.0b4" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0b4.tar.xz#f05710c36aee5850f5c2769be76b80bf212aec351438fdf8adc20c38c8361fac" standard verify_py312 copy_python_gdb ensurepip
else
install_package "Python-3.12.0b4" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0b4.tgz#93d4a21e411f2c22abe9fa5a91f08042c07b1ab6170a5a453ea6c3338718a03d" standard verify_py312 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,7 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
export PYTHON_BUILD_TCLTK_USE_PKGCONFIG=1
export PYTHON_BUILD_CONFIGURE_WITH_DSYMUTIL=1
install_package "openssl-1.1.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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

View File

@@ -0,0 +1,9 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
install_package "openssl-1.1.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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.7.14" "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tar.xz#4157ae31eb81af19e81c36882610491b0fb8f50e00fa8a17b095c88908b9c45c" standard verify_py37 copy_python_gdb ensurepip
else
install_package "Python-3.7.14" "https://www.python.org/ftp/python/3.7.14/Python-3.7.14.tgz#82b2abf8978caa61a9011d166eede831b32de9cbebc0db8162900fa23437b709" standard verify_py37 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,9 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
install_package "openssl-1.1.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" 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.7.15" "https://www.python.org/ftp/python/3.7.15/Python-3.7.15.tar.xz#5911475a07ac2b53d746e88a0716af6d2b4734941919136ea0d33fb9c75b9714" standard verify_py37 copy_python_gdb ensurepip
else
install_package "Python-3.7.15" "https://www.python.org/ftp/python/3.7.15/Python-3.7.15.tgz#cf2993798ae8430f3af3a00d96d9fdf320719f4042f039380dca79967c25e436" standard verify_py37 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,9 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
install_package "openssl-1.1.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" 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.7.16" "https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tar.xz#8338f0c2222d847e904c955369155dc1beeeed806e8d5ef04b00ef4787238bfd" standard verify_py37 copy_python_gdb ensurepip
else
install_package "Python-3.7.16" "https://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz#0cf2da07fa464636755215415909e22eb1d058817af4824bc15af8390d05fb38" standard verify_py37 copy_python_gdb ensurepip
fi

View File

@@ -0,0 +1,9 @@
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
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.7.17" "https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tar.xz#7911051ed0422fd54b8f59ffc030f7cf2ae30e0f61bda191800bb040dce4f9d2" standard verify_py37 copy_python_gdb ensurepip
else
install_package "Python-3.7.17" "https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz#fd50161bc2a04f4c22a0971ff0f3856d98b4bf294f89740a9f06b520aae63b49" standard verify_py37 copy_python_gdb ensurepip
fi

View File

@@ -1,5 +1,8 @@
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.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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

View File

@@ -1,5 +1,8 @@
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.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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

View File

@@ -1,5 +1,8 @@
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.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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

View File

@@ -1,5 +1,8 @@
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.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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

View File

@@ -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.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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.14" "https://www.python.org/ftp/python/3.8.14/Python-3.8.14.tar.xz#5d77e278271ba803e9909a41a4f3baca006181c93ada682a5e5fe8dc4a24c5f3" standard verify_py38 copy_python_gdb ensurepip
else
install_package "Python-3.8.14" "https://www.python.org/ftp/python/3.8.14/Python-3.8.14.tgz#41f959c480c59211feb55d5a28851a56c7e22d02ef91035606ebb21011723c31" standard verify_py38 copy_python_gdb ensurepip
fi

View File

@@ -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.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" 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.15" "https://www.python.org/ftp/python/3.8.15/Python-3.8.15.tar.xz#5114fc7918a2a5e20eb5aac696b30c36f412c6ef24b13f5c9eb9e056982d9550" standard verify_py38 copy_python_gdb ensurepip
else
install_package "Python-3.8.15" "https://www.python.org/ftp/python/3.8.15/Python-3.8.15.tgz#924d46999df82aa2eaa1de5ca51d6800ffb56b4bf52486a28f40634e3362abc4" standard verify_py38 copy_python_gdb ensurepip
fi

View File

@@ -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.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" 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.16" "https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tar.xz#d85dbb3774132473d8081dcb158f34a10ccad7a90b96c7e50ea4bb61f5ce4562" standard verify_py38 copy_python_gdb ensurepip
else
install_package "Python-3.8.16" "https://www.python.org/ftp/python/3.8.16/Python-3.8.16.tgz#71ca9d935637ed2feb59e90a368361dc91eca472a90acb1d344a2e8178ccaf10" standard verify_py38 copy_python_gdb ensurepip
fi

View File

@@ -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.17" "https://www.python.org/ftp/python/3.8.17/Python-3.8.17.tar.xz#2e54b0c68191f16552f6de2e97a2396540572a219f6bbb28591a137cecc490a9" standard verify_py38 copy_python_gdb ensurepip
else
install_package "Python-3.8.17" "https://www.python.org/ftp/python/3.8.17/Python-3.8.17.tgz#def428fa6cf61b66bcde72e3d9f7d07d33b2e4226f04f9d6fce8384c055113ae" standard verify_py38 copy_python_gdb ensurepip
fi

View File

@@ -1,5 +1,8 @@
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.1l" "https://www.openssl.org/source/openssl-1.1.1l.tar.gz#0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1" 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

View File

@@ -1,5 +1,8 @@
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.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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

View File

@@ -1,5 +1,8 @@
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.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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

View File

@@ -1,5 +1,8 @@
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.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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

View File

@@ -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.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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.14" "https://www.python.org/ftp/python/3.9.14/Python-3.9.14.tar.xz#651304d216c8203fe0adf1a80af472d8e92c3b0e0a7892222ae4d9f3ae4debcf" standard verify_py39 copy_python_gdb ensurepip
else
install_package "Python-3.9.14" "https://www.python.org/ftp/python/3.9.14/Python-3.9.14.tgz#9201836e2c16361b2b7408680502393737d44f227333fe2e5729c7d5f6041675" standard verify_py39 copy_python_gdb ensurepip
fi

View File

@@ -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.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" 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.15" "https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tar.xz#12daff6809528d9f6154216950423c9e30f0e47336cb57c6aa0b4387dd5eb4b2" standard verify_py39 copy_python_gdb ensurepip
else
install_package "Python-3.9.15" "https://www.python.org/ftp/python/3.9.15/Python-3.9.15.tgz#48d1ccb29d5fbaf1fb8f912271d09f7450e426d4dfe95978ef6aaada70ece4d8" standard verify_py39 copy_python_gdb ensurepip
fi

View File

@@ -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.1q" "https://www.openssl.org/source/openssl-1.1.1q.tar.gz#d7939ce614029cdff0b6c20f0e2e5703158a489a72b2507b8bd51bf8c8fd10ca" 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.16" "https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tar.xz#22dddc099246dd2760665561e8adb7394ea0cc43a72684c6480f9380f7786439" standard verify_py39 copy_python_gdb ensurepip
else
install_package "Python-3.9.16" "https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tgz#1ad539e9dbd2b42df714b69726e0693bc6b9d2d2c8e91c2e43204026605140c5" standard verify_py39 copy_python_gdb ensurepip
fi

View File

@@ -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.17" "https://www.python.org/ftp/python/3.9.17/Python-3.9.17.tar.xz#30ce057c44f283f8ed93606ccbdb8d51dd526bdc4c62cce5e0dc217bfa3e8cee" standard verify_py39 copy_python_gdb ensurepip
else
install_package "Python-3.9.17" "https://www.python.org/ftp/python/3.9.17/Python-3.9.17.tgz#8ead58f669f7e19d777c3556b62fae29a81d7f06a7122ff9bc57f7dd82d7e014" standard verify_py39 copy_python_gdb ensurepip
fi

View File

@@ -1,5 +1,8 @@
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.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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

View File

@@ -1,5 +1,8 @@
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.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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

View File

@@ -1,5 +1,8 @@
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.1k" "https://www.openssl.org/source/openssl-1.1.1k.tar.gz#892a0875b9872acd04a9fde79b1f943075d5ea162415de3047c327df33fbaee5" 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

View File

@@ -1,5 +1,8 @@
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.1l" "https://www.openssl.org/source/openssl-1.1.1l.tar.gz#0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1" 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

View File

@@ -1,5 +1,8 @@
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.1l" "https://www.openssl.org/source/openssl-1.1.1l.tar.gz#0b7a3e5e59c34827fe0c3a74b7ec8baef302b98fa80088d7f9153aa16fa76bd1" 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

View File

@@ -0,0 +1,28 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Anaconda3-2022.10-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-aarch64.sh#dac187c9fa6cae4ad663937f0ef79c8f" "anaconda" verify_py39
;;
"Linux-ppc64le" )
install_script "Anaconda3-2022.10-Linux-ppc64le" "https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-ppc64le.sh#8dee159ac42f80eca8ce99ddbfd94099" "anaconda" verify_py39
;;
"Linux-s390x" )
install_script "Anaconda3-2022.10-Linux-s390x" "https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-s390x.sh#ef2a6accc4d0d77756130198cb481358" "anaconda" verify_py39
;;
"Linux-x86_64" )
install_script "Anaconda3-2022.10-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh#80256bd7a55509665c4179fd61516745" "anaconda" verify_py39
;;
"MacOSX-arm64" )
install_script "Anaconda3-2022.10-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2022.10-MacOSX-arm64.sh#3a5d726f90e11270990e520905cf8466" "anaconda" verify_py39
;;
"MacOSX-x86_64" )
install_script "Anaconda3-2022.10-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2022.10-MacOSX-x86_64.sh#83fe2cbd4b32eeb63e99c3e15d72be85" "anaconda" verify_py39
;;
* )
{ 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

View File

@@ -0,0 +1,28 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Anaconda3-2023.03-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-aarch64.sh#613797154d9383355677f7dfee10db32b2c327cbedabddcb303598f242c79883" "anaconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Anaconda3-2023.03-Linux-ppc64le" "https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-ppc64le.sh#eafeaccca96f60ebb0aa0052d9baac8eaa2ee422358ee35b12f60f37e8a3ebb2" "anaconda" verify_py310
;;
"Linux-s390x" )
install_script "Anaconda3-2023.03-Linux-s390x" "https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-s390x.sh#2648337081c3ce4b760457c5f00fb768ecd7d1d0957051ef5252ab380bb78233" "anaconda" verify_py310
;;
"Linux-x86_64" )
install_script "Anaconda3-2023.03-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-Linux-x86_64.sh#19737d5c27b23a1d8740c5cb2414bf6253184ce745d0a912bb235a212a15e075" "anaconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Anaconda3-2023.03-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-MacOSX-arm64.sh#d27ee5432438972e90548e3dfa89490c5dc38a723f4dcd53061f0bd9d53b1bd0" "anaconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Anaconda3-2023.03-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-MacOSX-x86_64.sh#cc37b1eb85bdc2ade3f95201a746cdc63ee4fbfae48ee9d0c7a3cf319562452d" "anaconda" verify_py310
;;
* )
{ 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

View File

@@ -0,0 +1,28 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Anaconda3-2023.03-0-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-0-Linux-aarch64.sh#613797154d9383355677f7dfee10db32b2c327cbedabddcb303598f242c79883" "anaconda" verify_py39
;;
"Linux-ppc64le" )
install_script "Anaconda3-2023.03-0-Linux-ppc64le" "https://repo.anaconda.com/archive/Anaconda3-2023.03-0-Linux-ppc64le.sh#eafeaccca96f60ebb0aa0052d9baac8eaa2ee422358ee35b12f60f37e8a3ebb2" "anaconda" verify_py39
;;
"Linux-s390x" )
install_script "Anaconda3-2023.03-0-Linux-s390x" "https://repo.anaconda.com/archive/Anaconda3-2023.03-0-Linux-s390x.sh#2648337081c3ce4b760457c5f00fb768ecd7d1d0957051ef5252ab380bb78233" "anaconda" verify_py39
;;
"Linux-x86_64" )
install_script "Anaconda3-2023.03-0-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-0-Linux-x86_64.sh#19737d5c27b23a1d8740c5cb2414bf6253184ce745d0a912bb235a212a15e075" "anaconda" verify_py39
;;
"MacOSX-arm64" )
install_script "Anaconda3-2023.03-0-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-0-MacOSX-arm64.sh#d27ee5432438972e90548e3dfa89490c5dc38a723f4dcd53061f0bd9d53b1bd0" "anaconda" verify_py39
;;
"MacOSX-x86_64" )
install_script "Anaconda3-2023.03-0-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-0-MacOSX-x86_64.sh#cc37b1eb85bdc2ade3f95201a746cdc63ee4fbfae48ee9d0c7a3cf319562452d" "anaconda" verify_py39
;;
* )
{ 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

View File

@@ -0,0 +1,28 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Anaconda3-2023.03-1-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-aarch64.sh#54e600faa2af63a25717af30ecaddf1ee428cdfebd3721a70f41462e232e8153" "anaconda" verify_py39
;;
"Linux-ppc64le" )
install_script "Anaconda3-2023.03-1-Linux-ppc64le" "https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-ppc64le.sh#a31f2d6da83534cff7c994403cc11fa634b31fcd10eb4153d00233345ee084b2" "anaconda" verify_py39
;;
"Linux-s390x" )
install_script "Anaconda3-2023.03-1-Linux-s390x" "https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-s390x.sh#5af1406c6350b4ba6839c49faa32a3c90f2b9845a03c35843f118dd9dd013421" "anaconda" verify_py39
;;
"Linux-x86_64" )
install_script "Anaconda3-2023.03-1-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-1-Linux-x86_64.sh#95102d7c732411f1458a20bdf47e4c1b0b6c8a21a2edfe4052ca370aaae57bab" "anaconda" verify_py39
;;
"MacOSX-arm64" )
install_script "Anaconda3-2023.03-1-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-1-MacOSX-arm64.sh#85152324c423fedbeed2e7491cb32e597eaeb1b86ae7a61ff7597b401fd053ce" "anaconda" verify_py39
;;
"MacOSX-x86_64" )
install_script "Anaconda3-2023.03-1-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.03-1-MacOSX-x86_64.sh#3593921c8a5516db82f0d7dd1c691f7ee7794236852e7da614e9ad6e93eeb342" "anaconda" verify_py39
;;
* )
{ 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

View File

@@ -0,0 +1,28 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Anaconda3-2023.07-0-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2023.07-0-Linux-aarch64.sh#5f4865448c1111fb80cb49abff0f9b38b2970857dba7a4627c499ba102b82af5" "anaconda" verify_py39
;;
"Linux-ppc64le" )
install_script "Anaconda3-2023.07-0-Linux-ppc64le" "https://repo.anaconda.com/archive/Anaconda3-2023.07-0-Linux-ppc64le.sh#98efb73758680b84f890d818b5748d7a08e82c4b825d597f7e3c4467125da278" "anaconda" verify_py39
;;
"Linux-s390x" )
install_script "Anaconda3-2023.07-0-Linux-s390x" "https://repo.anaconda.com/archive/Anaconda3-2023.07-0-Linux-s390x.sh#f6933a8b70d346d423e089843fc151c46bdaee4e3e4e4fd0fb81ca06b8766892" "anaconda" verify_py39
;;
"Linux-x86_64" )
install_script "Anaconda3-2023.07-0-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.07-0-Linux-x86_64.sh#ac738639aba0b676a618911600d0a0e7825ee7fd10efb6b3d95cc2e570d9ee7b" "anaconda" verify_py39
;;
"MacOSX-arm64" )
install_script "Anaconda3-2023.07-0-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2023.07-0-MacOSX-arm64.sh#23a9deb80acb145c65375bd73cbaa8793be81447278c4db7be50ef7c32a58635" "anaconda" verify_py39
;;
"MacOSX-x86_64" )
install_script "Anaconda3-2023.07-0-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2023.07-0-MacOSX-x86_64.sh#b6ea24fe16544d5b2d5adf6c913c1fc89a6dbdef12a4caff76ff574b33d0f3cb" "anaconda" verify_py39
;;
* )
{ 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

View File

@@ -0,0 +1,43 @@
if [ "$(expr substr "$(uname -s)" 1 5)" != "Linux" ]; then
{
echo
colorize 1 "ERROR"
echo ": Cinder currently only supports Linux."
echo
return 1
} >&2
fi
if [[ $(${CC:-gcc} -dumpversion 2>/dev/null) != 10 ]] &&
(command -v "gcc-10" >/dev/null) &&
(command -v "g++-10" >/dev/null); then
echo "python-build: setting the compiler to GCC 10"
export CC="gcc-10"
export CXX="g++-10"
fi
if [[ $(awk -F. '{print $1}' <<< "$(${CC:-gcc} -dumpversion)") -lt 10 ]]; then
{
echo
colorize 1 "ERROR"
echo ": Cinder requires at least GCC 10."
echo
return 1
} >&2
fi
require_distro Fedora 32 &> /dev/null ||
{
echo
colorize 1 "WARNING"
echo ": Cinder officially only supports Facebook's Docker"
echo "images which are based on Fedora 32. It may fail to build"
echo "on a system with a different GCC and/or Glibc version."
echo
} >&2
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
install_package "openssl-1.1.1n" "https://www.openssl.org/source/openssl-1.1.1n.tar.gz#40dceb51a4f6a5275bde0e6bf20ef4b91bfc32ed57c0552e2e8e15463372b17a" 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 "Cinder-3.10-dev" "https://github.com/facebookincubator/cinder" "cinder/3.10" standard verify_py310 copy_python_gdb ensurepip

View File

@@ -1,28 +1,40 @@
require_distro Fedora 32 &>/dev/null || \
{ echo
colorize 1 "WARNING"
cat >&2 <<!
: The Cinder compiler only officially supports
Facebook's Docker images which are Fedora 32 - based.
It may fail to build on a system
with a different GCC and/or Glibc version.
!
if [ "$(expr substr "$(uname -s)" 1 5)" != "Linux" ]; then
{
echo
}
colorize 1 "ERROR"
echo ": Cinder currently only supports Linux."
echo
return 1
} >&2
fi
[[ $(${CC:-gcc} -dumpversion 2>/dev/null) == 10 ]] || \
{ command -v "gcc-10" >/dev/null && \
export CC="gcc-10" && \
echo "python-build: setting the compiler to \`gcc-10'"; } || \
{
if [[ $(${CC:-gcc} -dumpversion 2>/dev/null) != 10 ]] &&
(command -v "gcc-10" >/dev/null) &&
(command -v "g++-10" >/dev/null); then
echo "python-build: setting the compiler to GCC 10"
export CC="gcc-10"
export CXX="g++-10"
fi
if [[ $(awk -F. '{print $1}' <<< "$(${CC:-gcc} -dumpversion)") -lt 10 ]]; then
{
echo
colorize 1 WARNING
cat >&2 <<!
: GCC 10 is not found on PATH.
The build may fail.
!
colorize 1 "ERROR"
echo ": Cinder requires at least GCC 10."
echo
}
return 1
} >&2
fi
require_distro Fedora 32 &> /dev/null ||
{
echo
colorize 1 "WARNING"
echo ": Cinder officially only supports Facebook's Docker"
echo "images which are based on Fedora 32. It may fail to build"
echo "on a system with a different GCC and/or Glibc version."
echo
} >&2
prefer_openssl11
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1

View File

@@ -0,0 +1,54 @@
# Copyright (c) 2022, 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='22.3.0'
BUILD=''
graalpy_arch="$(graalpy_architecture 2>/dev/null || true)"
case "$graalpy_arch" in
"linux-amd64" )
checksum="9853036fcde0b115026d8802a4f671b62d7a17fccb269c1e8b5fbf80cef10e23"
;;
"linux-aarch64" )
checksum="c48c5d9ff5699046c0629181a40a3116172e1c508c851f0993dcca45d86349c0"
;;
"macos-amd64" )
checksum="cc8454f460b5730e778d5b8f79385cf92c39321fbf27d44bb9ca90584670f921"
;;
"macos-aarch64" )
checksum="9a388834f28fbb86ff9588d9a150a4d26e9bec28be06c3d60ebe20079f855e41"
;;
* )
{ echo
colorize 1 "ERROR"
echo ": No binary distribution of GraalPy is available for $(uname -sm)."
echo
} >&2
exit 1
;;
esac
if [ -n "${BUILD}" ]; then
urlprefix="https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/${VERSION}-${BUILD}"
else
urlprefix="https://github.com/oracle/graalpython/releases/download/vm-${VERSION}"
fi
install_package "graalpy-${VERSION}${BUILD}" "${urlprefix}/graalpy-${VERSION}-${graalpy_arch}.tar.gz#${checksum}" "copy" ensurepip

View File

@@ -0,0 +1,54 @@
# Copyright (c) 2023, 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='23.0.0'
BUILD=''
graalpy_arch="$(graalpy_architecture 2>/dev/null || true)"
case "$graalpy_arch" in
"linux-amd64" )
checksum="25e4fa7c1d45db6dcac5bfa4d1a0aa9ef5581623dc5903ce98d246c5d394639c"
;;
"linux-aarch64" )
checksum="e2a00b2b6485282b4a04aa382e30d696e00d20eb2fe1736debbe2d9df2a8737a"
;;
"macos-amd64" )
checksum="1578902976e6aaf45b9758931f0bddbb29c5c9bdca62c67591d6e153340c2a4f"
;;
"macos-aarch64" )
checksum="cc40e1d47610c5f4a825a1a7c3ffe8b163c71b5d042d16aebd1a65451d4309a5"
;;
* )
{ echo
colorize 1 "ERROR"
echo ": No binary distribution of GraalPy is available for $(uname -sm)."
echo
} >&2
exit 1
;;
esac
if [ -n "${BUILD}" ]; then
urlprefix="https://github.com/graalvm/graalvm-ce-dev-builds/releases/download/${VERSION}-${BUILD}"
else
urlprefix="https://github.com/oracle/graalpython/releases/download/graal-${VERSION}"
fi
install_package "graalpy-${VERSION}${BUILD}" "${urlprefix}/graalpython-${VERSION}-${graalpy_arch}.tar.gz#${checksum}" "copy" ensurepip

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-22.9.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-0/Mambaforge-22.9.0-0-Linux-aarch64.sh#6076cfb0c2f88efa3e5e125dc54f3c0f8219cfe1ae9d9258a5abe42dbcf21a13" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-22.9.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-0/Mambaforge-22.9.0-0-Linux-ppc64le.sh#a17530e0e981991db5f6875e949dc22554f2ed0dd2b1bbb40ce677c910a2dc51" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-22.9.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-0/Mambaforge-22.9.0-0-Linux-x86_64.sh#7049f5ebdd6e2aee7611874599ab14445cd63070cdb63db2e00ae0b90d7c6132" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-22.9.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-0/Mambaforge-22.9.0-0-MacOSX-arm64.sh#d116ea977a2117068d290a961212f10fdaf1cc6ad156ea14b3979e2e4c0499d9" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-22.9.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-0/Mambaforge-22.9.0-0-MacOSX-x86_64.sh#03b0af9a3d343da8107edaf75713cea3b79c71aacbbeb8f06507d0dbd26c5218" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-22.9.0-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-1/Mambaforge-22.9.0-1-Linux-aarch64.sh#2f60c1faadcf0660ac9a97e00c64edf8fd241664387a156685de4b72f36c657c" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-22.9.0-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-1/Mambaforge-22.9.0-1-Linux-ppc64le.sh#525cf02648ad50a221c1f1ca5ecc4c05be6cbe829e7d994c17507b439d923e55" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-22.9.0-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-1/Mambaforge-22.9.0-1-Linux-x86_64.sh#cba9a744454039944480871ed30d89e4e51a944a579b461dd9af60ea96560886" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-22.9.0-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-1/Mambaforge-22.9.0-1-MacOSX-arm64.sh#90c9c6eccdef8d938c4f31d44f2553c706b89955a4750adbd09d7eeefbedc603" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-22.9.0-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-1/Mambaforge-22.9.0-1-MacOSX-x86_64.sh#0afa53d38735762ee2a43174ee4ce726f076a1526f24122bd2faf7d0e005b61b" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-22.9.0-2-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-2/Mambaforge-22.9.0-2-Linux-aarch64.sh#26cf4a5cd3a3b9085f75911b459b969d6ff8ab426ef9a8e7ce3b47cc683ead86" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-22.9.0-2-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-2/Mambaforge-22.9.0-2-Linux-ppc64le.sh#e13044cdbce8542896dd8b7128a00b691c119e7ad6e872c7de93ec9954b4775d" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-22.9.0-2-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-2/Mambaforge-22.9.0-2-Linux-x86_64.sh#d2bb6c33f2373131fc71283baae9eb81a279708d007e55d627d85abe30c2d0eb" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-22.9.0-2-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-2/Mambaforge-22.9.0-2-MacOSX-arm64.sh#21959f1a17a662b3f260e8b04fe2dfe82f1246746875a72f513d39159d8b816b" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-22.9.0-2-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-2/Mambaforge-22.9.0-2-MacOSX-x86_64.sh#844fc1ac61967990f0cfb9e516e8b0704ac2e500854588fd9851d2790d817bab" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-22.9.0-3-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-3/Mambaforge-22.9.0-3-Linux-aarch64.sh#bd9694b1558f4ee6c4eef081cefc57dbb32ceb6406e497018f0c7d2dab5b61dd" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-22.9.0-3-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-3/Mambaforge-22.9.0-3-Linux-ppc64le.sh#f19dc098452ddbd73caa83792aaacd63674be20898ac63b38ad687e5148199f8" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-22.9.0-3-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-3/Mambaforge-22.9.0-3-Linux-x86_64.sh#29f6374464307732c2c9d6711cdbca4d685c632f31e8bf1a5565276c65e0069b" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-22.9.0-3-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-3/Mambaforge-22.9.0-3-MacOSX-arm64.sh#eebe06970fec4cb1445bba106e65f57084b753d39766bf213edf4e02b14e27c1" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-22.9.0-3-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/22.9.0-3/Mambaforge-22.9.0-3-MacOSX-x86_64.sh#a3ccaf7b93b6f99bc2018f2a6f3cd95489940731f11fb9bf6adf1a44a7ba4e17" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.2-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.2-0/Mambaforge-4.10.2-0-Linux-aarch64.sh#cbc5329fa22f4d7ff10f66e59024b186d37653b9da31d841d23092a701f46b1f" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.2-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.2-0/Mambaforge-4.10.2-0-Linux-ppc64le.sh#c682e2e1f07e2da07cbe6252559af363bb0b67aa315527887fe2dd5123ca8760" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.2-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.2-0/Mambaforge-4.10.2-0-Linux-x86_64.sh#1e89ee86afa06e23b2478579be16a33fff6cff346314f6a6382fd20b1f83e669" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.2-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.2-0/Mambaforge-4.10.2-0-MacOSX-arm64.sh#87768fed0097edf58a129981129142db2651ab5d1591e19c5840ade186b443c5" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.2-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.2-0/Mambaforge-4.10.2-0-MacOSX-x86_64.sh#5a396db66672b5e6557e692bcb3cb527bcbe7c24b9c4a1c67b4449f8ef67cd47" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-0/Mambaforge-4.10.3-0-Linux-aarch64.sh#d6d4fdf1d722c4afe9fdf5e372369321d5de9b491fdada22255665b122453fc7" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-0/Mambaforge-4.10.3-0-Linux-ppc64le.sh#cdda287122007bdc6b96ed62fb17c7c8213e38b3598ad6db03d8301c81d7d594" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-0/Mambaforge-4.10.3-0-Linux-x86_64.sh#5c3914235c0db8a8925d294a17d196fca7e6eab9175406fc78ed90fde34297db" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-0/Mambaforge-4.10.3-0-MacOSX-arm64.sh#17a38bf23ef3f2864eb3c1ebf1c07389635ad9ff65f0692f438c1f6286feef63" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-0/Mambaforge-4.10.3-0-MacOSX-x86_64.sh#43986b8c2a6b3535c2fa920c8001187c89695c0aaaa96c25696adb7746e0eb54" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-1/Mambaforge-4.10.3-1-Linux-aarch64.sh#e830d626bcf8fccde1e64567fa9974d87fa45026c3baa73c889bab9a7fa60647" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-1/Mambaforge-4.10.3-1-Linux-ppc64le.sh#ade3331e4946dc149c97346941c635ddef1b99d63ec0781027a0ae0d156f62d7" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-1/Mambaforge-4.10.3-1-Linux-x86_64.sh#72c623cc9ce300c5ad54e0b383e428b13e5c640e74529295ab61fbbfa1a8acaa" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-1/Mambaforge-4.10.3-1-MacOSX-arm64.sh#5d1e6ae4eb424290271fe25e7f8c3e8165ba5730a4817f92a157566f44c7e363" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-1/Mambaforge-4.10.3-1-MacOSX-x86_64.sh#a8b0e666c893eb21769c00ab4ba603d28590f4c92d1fafe6ca2eb959cecf76ce" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-2-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-2/Mambaforge-4.10.3-2-Linux-aarch64.sh#63294acfe2859c4a7b86151836da3253fd0370e9e0cd821be6ffb18a029c3a7a" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-2-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-2/Mambaforge-4.10.3-2-Linux-ppc64le.sh#8162d50d3111a4c0746c7a4e51094eea3011966816768c4d3638fe40050d6e59" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-2-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-2/Mambaforge-4.10.3-2-Linux-x86_64.sh#e4228930af7102de20019efdf45e4e9c056b6ae354cb2e344249e53a11f71175" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-2-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-2/Mambaforge-4.10.3-2-MacOSX-arm64.sh#49132e1e2593b4ab3762ff238e76dfc5f5bd670fe23c622c5051607709f93a0b" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-2-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-2/Mambaforge-4.10.3-2-MacOSX-x86_64.sh#cbd143702ed1d1176fa3b480eca1ec6eb0e32a2c9eab7134877ff32dabae91e0" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-3-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-3/Mambaforge-4.10.3-3-Linux-aarch64.sh#c53eda563935e7ed5d07816477758374f4c541d912ee5732f2f9ace37d9fab75" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-3-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-3/Mambaforge-4.10.3-3-Linux-ppc64le.sh#3b762a3cf77fffebc56d3ecdefe590bf065139b36f556bb57f7f83a0ebe8561b" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-3-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-3/Mambaforge-4.10.3-3-Linux-x86_64.sh#a012c24e1cc3bcbe74a1e5693e510830e7c2956e85877b08d1e28707a0bd8d75" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-3-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-3/Mambaforge-4.10.3-3-MacOSX-arm64.sh#6cbae54d7a2d99cdcf747d74412a0c6490c8240cbb2d870655f61a9600bc2f06" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-3-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-3/Mambaforge-4.10.3-3-MacOSX-x86_64.sh#69f626a18eb1a6fda52d9f005114604acff1fd2d7c10d46e56543dca7d78f30d" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-4-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-4/Mambaforge-4.10.3-4-Linux-aarch64.sh#f37435d5e2bc3eb14ec7f5bc64f9c45997f8e0a6d2fef3a7bb1ffa19f118817b" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-4-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-4/Mambaforge-4.10.3-4-Linux-ppc64le.sh#68319a11298b8c13a15960cd9d2a5777fd34420b73587a7f2e8e4757752f3252" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-4-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-4/Mambaforge-4.10.3-4-Linux-x86_64.sh#5017562c434185b4d9d311274c14717077f6c09a238a4d34a1caf7618d26ddd4" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-4-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-4/Mambaforge-4.10.3-4-MacOSX-arm64.sh#901f2c2b4be08cadf6968f408d4a1ee632ddb011a07ce4b480b83d8da142255f" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-4-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-4/Mambaforge-4.10.3-4-MacOSX-x86_64.sh#b5fd40995aebd7631f761324eb425ee813fb4604ce8d8fde3c03cb60cac1716e" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-5-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-5/Mambaforge-4.10.3-5-Linux-aarch64.sh#5e471d796d7b1749949c0c0d79841e00f1b477833ce82b4b05b7b9886a1735eb" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-5-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-5/Mambaforge-4.10.3-5-Linux-ppc64le.sh#892ccb32b847978062c8045e96827a403d59fe64f318e0b92303be6a08e4d3f7" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-5-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-5/Mambaforge-4.10.3-5-Linux-x86_64.sh#2692f9ae27327412cbf018ec0218d21a99b013d0597ccaefc988540c8a9ced65" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-5-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-5/Mambaforge-4.10.3-5-MacOSX-arm64.sh#1c7517e204814f7227ef0d2e0fbf95b43f6afae978e882cd017779e31f8b26cb" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-5-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-5/Mambaforge-4.10.3-5-MacOSX-x86_64.sh#547823784a2b79641f29d06f70f74ae25775eec1680c6cca14888c4907441f5c" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-6-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-6/Mambaforge-4.10.3-6-Linux-aarch64.sh#b6d3c0af4ba6202dc9994e70933d2de47ef8c4e6891afce768889a7d44e1db28" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-6-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-6/Mambaforge-4.10.3-6-Linux-ppc64le.sh#9d50677aeff37b56b0d6067339aad8c964942e28fc74a24a7602416a3dcc35b2" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-6-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-6/Mambaforge-4.10.3-6-Linux-x86_64.sh#c63907ba0971d2ca9a8775bd7ea48b635b2bdce4838b2f2d3a8e751876849595" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-6-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-6/Mambaforge-4.10.3-6-MacOSX-arm64.sh#c753e99380e3f777d690e7131fc79c6f9cb8fb79af23fb53c7b8a0ade3361fec" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-6-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-6/Mambaforge-4.10.3-6-MacOSX-x86_64.sh#955a6255871d9b53975e1c1581910844bcf33cbca613c7dba2842f6269917da6" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-7-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-7/Mambaforge-4.10.3-7-Linux-aarch64.sh#ac95f137b287b3408e4f67f07a284357b1119ee157373b788b34e770ef2392b2" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-7-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-7/Mambaforge-4.10.3-7-Linux-ppc64le.sh#21c0190d2462eea68c78a600ce28828238d6a450858a289d7d4c03d9a2551ee8" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-7-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-7/Mambaforge-4.10.3-7-Linux-x86_64.sh#fc872522ec427fcab10167a93e802efaf251024b58cc27b084b915a9a73c4474" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-7-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-7/Mambaforge-4.10.3-7-MacOSX-arm64.sh#49c7ba06fe663c634929d5d85b4c06840f4ab9844744be691aab90848c52444e" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-7-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-7/Mambaforge-4.10.3-7-MacOSX-x86_64.sh#94ed8b8a647f48a815590958217aabebd4a3e3e10edaf2c5772d50a75727773a" "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

View File

@@ -0,0 +1,16 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-8-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-8/Mambaforge-4.10.3-8-MacOSX-arm64.sh#f40271609a59bad71e7b1c6fa61a36065ea35222a9497614bc970572594e1f5a" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-8-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-8/Mambaforge-4.10.3-8-MacOSX-x86_64.sh#4f3dfd9475ed226f6a4478fe5c0585117528700557fe06fb9db054a354f07951" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.10.3-9-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-9/Mambaforge-4.10.3-9-Linux-aarch64.sh#91fcdf2dfca49d68daaa9927d38f77a82718b5b72333180f9855e5b2cfa07c3b" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.10.3-9-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-9/Mambaforge-4.10.3-9-Linux-ppc64le.sh#4873079e88bcda0225af7c6acf59b48b272bb147ab9506e1b80cdab035a53b02" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.10.3-9-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-9/Mambaforge-4.10.3-9-Linux-x86_64.sh#f53ab6584385a4648608993de2a66bb84b9255c87e1f4315bb39cbfc05b19e87" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.10.3-9-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-9/Mambaforge-4.10.3-9-MacOSX-arm64.sh#968fe531ee2d9900409853085e6b458077144c1674061a5501938e3581b5adf4" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.10.3-9-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.10.3-9/Mambaforge-4.10.3-9-MacOSX-x86_64.sh#d669b345a7612552a9a218e3499b7a3a7c8deec2925d203155bd0922250b2823" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.11.0-0-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-0/Mambaforge-4.11.0-0-Linux-aarch64.sh#9ad5db1775ed7f6a390774a7b7a2aeac3992499ee4b01e801f53528857112dc0" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.11.0-0-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-0/Mambaforge-4.11.0-0-Linux-ppc64le.sh#6fe80e207d409eb6c0922e068aa23aff5032083d9a5c2aacecc446a1d20f357b" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.11.0-0-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-0/Mambaforge-4.11.0-0-Linux-x86_64.sh#49268ee30d4418be4de852dda3aa4387f8c95b55a76f43fb1af68dcbf8b205c3" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.11.0-0-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-0/Mambaforge-4.11.0-0-MacOSX-arm64.sh#7703e27a2ceadb747a69f2c6a88b3cb859cb4bb4268fc85b03739e22d0eb160b" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.11.0-0-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-0/Mambaforge-4.11.0-0-MacOSX-x86_64.sh#2039f744e272d47878f0bc2ae372f03c7f07881f39a93d693d5445744f36f19d" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.11.0-1-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-1/Mambaforge-4.11.0-1-Linux-aarch64.sh#8b2cd64b89c7e92a444dd2df993a4c0aeda20b1d090aeef8956bbb3fa5c526fe" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.11.0-1-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-1/Mambaforge-4.11.0-1-Linux-ppc64le.sh#c7fb2000b4447a410fd18d334a9b658f8682b19962fe0e22d1d003078dc89dfe" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.11.0-1-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-1/Mambaforge-4.11.0-1-Linux-x86_64.sh#32eb24c99062d5c97d1b8ab55cae19e37cca08464a3249e5eac65339927697e9" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.11.0-1-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-1/Mambaforge-4.11.0-1-MacOSX-arm64.sh#ce002867552011148b77e1df022465c584d25d0aec02fc15fdc96b68a0da1545" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.11.0-1-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-1/Mambaforge-4.11.0-1-MacOSX-x86_64.sh#11b0e24649ca1931cfcc92ff2b3a67d43e7f2485a1f57b7f512b5b7cd6f3f27c" "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

View File

@@ -0,0 +1,25 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"Linux-aarch64" )
install_script "Mambaforge-4.11.0-2-Linux-aarch64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-2/Mambaforge-4.11.0-2-Linux-aarch64.sh#dc24d61b3c57fde5bb05367a9514bcdf7acd820f97ef913e94781c78dff55f8d" "miniconda" verify_py310
;;
"Linux-ppc64le" )
install_script "Mambaforge-4.11.0-2-Linux-ppc64le.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-2/Mambaforge-4.11.0-2-Linux-ppc64le.sh#8936568238c0ab4ae6444390cbe22853f8852080b5bc85912e1d41c8d3bbaea7" "miniconda" verify_py310
;;
"Linux-x86_64" )
install_script "Mambaforge-4.11.0-2-Linux-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-2/Mambaforge-4.11.0-2-Linux-x86_64.sh#5708db10e2e84035f9ed5700731435bf4027c73b0d5d41562cb5cf5dd9048925" "miniconda" verify_py310
;;
"MacOSX-arm64" )
install_script "Mambaforge-4.11.0-2-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-2/Mambaforge-4.11.0-2-MacOSX-arm64.sh#8265d0902b6c3914a64afa7899c6398b1db7005603ad5d190dc0f0c87e8a8446" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.11.0-2-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-2/Mambaforge-4.11.0-2-MacOSX-x86_64.sh#e6312bcd55bac1036ce0d3c52a36bf57d3f65d3ec4f36f6267617dbb7edfe16d" "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

View File

@@ -0,0 +1,16 @@
case "$(anaconda_architecture 2>/dev/null || true)" in
"MacOSX-arm64" )
install_script "Mambaforge-4.11.0-3-MacOSX-arm64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-3/Mambaforge-4.11.0-3-MacOSX-arm64.sh#7f16bf19722987cba7b077a010276262d8c3b521cb5c759f0b981e0fb0877d50" "miniconda" verify_py310
;;
"MacOSX-x86_64" )
install_script "Mambaforge-4.11.0-3-MacOSX-x86_64.sh" "https://github.com/conda-forge/miniforge/releases/download/4.11.0-3/Mambaforge-4.11.0-3-MacOSX-x86_64.sh#e0e60c1542d087b514c3a81a1d4df9f0cc1d127b5245f1685bf77b2562ad6314" "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

Some files were not shown because too many files have changed in this diff Show More