mirror of
https://github.com/pyenv/pyenv.git
synced 2025-11-08 11:33:49 -05:00
Compare commits
255 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
af1a54482b | ||
|
|
64c70feb08 | ||
|
|
7b713a88c4 | ||
|
|
1874f95a0e | ||
|
|
1a882c6053 | ||
|
|
05dcd45741 | ||
|
|
a2dff4809b | ||
|
|
ad0d131032 | ||
|
|
7c17c741eb | ||
|
|
ba8b58f90d | ||
|
|
fe76b05445 | ||
|
|
c5d2639082 | ||
|
|
d4bd7bbe2b | ||
|
|
38ac747239 | ||
|
|
8f655d2ca6 | ||
|
|
d0b78fd5fe | ||
|
|
43f40eca05 | ||
|
|
687944d991 | ||
|
|
0f337a6c9a | ||
|
|
afe2615a1c | ||
|
|
d7d5ab5148 | ||
|
|
e79dd97afa | ||
|
|
021b6c2da0 | ||
|
|
e008430451 | ||
|
|
09fc5b8824 | ||
|
|
6eeda1f87e | ||
|
|
452647ab33 | ||
|
|
4086e452fd | ||
|
|
82c8d511c4 | ||
|
|
578c7507c6 | ||
|
|
23c727a767 | ||
|
|
fb73c4b714 | ||
|
|
3fa5812bfc | ||
|
|
c8a23e26e6 | ||
|
|
def5cd994e | ||
|
|
b5576240a2 | ||
|
|
920ef1456a | ||
|
|
528d10e96f | ||
|
|
cf9d0dcd7b | ||
|
|
aa5fd27e2f | ||
|
|
73b6307399 | ||
|
|
a57e0b5019 | ||
|
|
b3c91b37d6 | ||
|
|
777089466d | ||
|
|
20189ff06f | ||
|
|
5a8dbcf143 | ||
|
|
9a4f9c2511 | ||
|
|
bee178a95d | ||
|
|
0f75cd8800 | ||
|
|
29c4f279a3 | ||
|
|
be4939604e | ||
|
|
fc616a0aee | ||
|
|
b613a4abeb | ||
|
|
b1ee6c93c4 | ||
|
|
9fad1f46c5 | ||
|
|
f51d3dcb47 | ||
|
|
deb4935187 | ||
|
|
e28d747b83 | ||
|
|
ddd37eb823 | ||
|
|
be2bd5f03d | ||
|
|
4ef81b5c7a | ||
|
|
6bb75b3ba7 | ||
|
|
f507d08064 | ||
|
|
ad15c75e0e | ||
|
|
6052caa038 | ||
|
|
e8a4b54231 | ||
|
|
bcbdadf10d | ||
|
|
904dd5f828 | ||
|
|
3226a1870b | ||
|
|
0d19efecf5 | ||
|
|
ecab7b0d17 | ||
|
|
3bfc97ad29 | ||
|
|
276ce32643 | ||
|
|
b30508f9b8 | ||
|
|
0e80d0725b | ||
|
|
6bec7a50fe | ||
|
|
28be65992d | ||
|
|
68918e69b7 | ||
|
|
86a4423bbb | ||
|
|
0ab9683e58 | ||
|
|
7fe647968d | ||
|
|
c8daaa3954 | ||
|
|
88be70722f | ||
|
|
47d88d2c5f | ||
|
|
6b758c8cf9 | ||
|
|
017b6d877e | ||
|
|
063aa457e4 | ||
|
|
fcd7806529 | ||
|
|
a3f0bddc2a | ||
|
|
f72c1712dc | ||
|
|
a7b181c3ca | ||
|
|
c8c324afb4 | ||
|
|
72c5b034ca | ||
|
|
446411dc64 | ||
|
|
9fe80f28e5 | ||
|
|
9248255f70 | ||
|
|
368e04f3fa | ||
|
|
76e93b073e | ||
|
|
e3fe82a9b1 | ||
|
|
dd60d5fae2 | ||
|
|
96828af31e | ||
|
|
c998eae677 | ||
|
|
c20fc7bd6a | ||
|
|
f1a1f59c87 | ||
|
|
b64b0ab5e2 | ||
|
|
1a0b555baf | ||
|
|
819e2b8f45 | ||
|
|
bd618ea9ef | ||
|
|
b77b0be089 | ||
|
|
906246da4c | ||
|
|
12e74e147a | ||
|
|
2b0dd7355d | ||
|
|
f40397088c | ||
|
|
e447fe5b73 | ||
|
|
4242694a0e | ||
|
|
83619f3fbe | ||
|
|
4bd8a975f4 | ||
|
|
2a5bbf6cb5 | ||
|
|
b9a27af7b8 | ||
|
|
c03d9cf84c | ||
|
|
c7f2c4db45 | ||
|
|
3bc3a624db | ||
|
|
f4598bc1f0 | ||
|
|
fc4c0ac52d | ||
|
|
579c34e570 | ||
|
|
2369ac2a08 | ||
|
|
25c974d59a | ||
|
|
2ea797e226 | ||
|
|
7d7f8b94ae | ||
|
|
e715e03be0 | ||
|
|
b3a5b5eee3 | ||
|
|
894bcd8717 | ||
|
|
03ee3ffd32 | ||
|
|
3d83bcdbef | ||
|
|
f897c50202 | ||
|
|
773c65416b | ||
|
|
ca1593c80e | ||
|
|
cb5da5e831 | ||
|
|
31f372034d | ||
|
|
ff93c58bab | ||
|
|
2bb59169db | ||
|
|
f9e519611a | ||
|
|
ae04877154 | ||
|
|
e82e12739c | ||
|
|
6b9795728e | ||
|
|
23576296ae | ||
|
|
2128b4f27d | ||
|
|
9ba6124833 | ||
|
|
6c63e086e9 | ||
|
|
540c94bdb1 | ||
|
|
18f62f266d | ||
|
|
49cc88094a | ||
|
|
cad18bb332 | ||
|
|
79fdf1e3bb | ||
|
|
03bba03291 | ||
|
|
cf50e2a2db | ||
|
|
b3d52b05d2 | ||
|
|
73dc5547fc | ||
|
|
3f0dd1962f | ||
|
|
48b0224aaf | ||
|
|
8cfa967d74 | ||
|
|
a57106c932 | ||
|
|
189e73e5e8 | ||
|
|
8680247381 | ||
|
|
606ff454a1 | ||
|
|
b05d15f673 | ||
|
|
881ba40ff4 | ||
|
|
58bbbf8880 | ||
|
|
c1674cd552 | ||
|
|
74f923b5fc | ||
|
|
59c560893a | ||
|
|
4971d9e35e | ||
|
|
6d13db992f | ||
|
|
13d8568620 | ||
|
|
cc56f76733 | ||
|
|
4c261e6ea1 | ||
|
|
31355676f0 | ||
|
|
c162dcd932 | ||
|
|
0b6320d371 | ||
|
|
3bfaa33c1b | ||
|
|
cd2858aa17 | ||
|
|
19359de7b8 | ||
|
|
8dd46e3915 | ||
|
|
ed1083ec27 | ||
|
|
904fe964b0 | ||
|
|
036fd63bbd | ||
|
|
1250d7dd30 | ||
|
|
ad6a950734 | ||
|
|
6da0e89207 | ||
|
|
e03118235a | ||
|
|
a8f921ce4d | ||
|
|
4a031504db | ||
|
|
75022d5d7c | ||
|
|
a12f947cc3 | ||
|
|
0b5e16add3 | ||
|
|
5b0ac41dec | ||
|
|
44510a68f1 | ||
|
|
16c4924f22 | ||
|
|
ac30d5f4e4 | ||
|
|
9f5dcbffd4 | ||
|
|
faceb4b79c | ||
|
|
d7389c10ee | ||
|
|
0726e02e3a | ||
|
|
03a5d65387 | ||
|
|
776f6ff9fa | ||
|
|
bb0f2ae1a7 | ||
|
|
ea6085e3f3 | ||
|
|
2c2619a49e | ||
|
|
1f526edbdd | ||
|
|
8b226c9679 | ||
|
|
f3521e88be | ||
|
|
5b08a6492b | ||
|
|
d722f059a0 | ||
|
|
093d0b3a49 | ||
|
|
73d4f3102a | ||
|
|
aa07a3a37c | ||
|
|
e6446555f3 | ||
|
|
c5e0d2cd94 | ||
|
|
cfe684ef42 | ||
|
|
1d28067353 | ||
|
|
0740fdf910 | ||
|
|
75fc9f6fd4 | ||
|
|
a0fbdad292 | ||
|
|
6a104f68d0 | ||
|
|
f6f1803ac9 | ||
|
|
23559ee6d1 | ||
|
|
4e31668c21 | ||
|
|
2b22145670 | ||
|
|
7c1c180551 | ||
|
|
a648682ed6 | ||
|
|
47b0ce77c0 | ||
|
|
fdabd14c2b | ||
|
|
e52ad61389 | ||
|
|
2e5983b004 | ||
|
|
27b5f62dfb | ||
|
|
7c1e3a710c | ||
|
|
13f273188d | ||
|
|
c89a69a6ed | ||
|
|
a8afc61146 | ||
|
|
e4a0c12b1b | ||
|
|
afeb971fa2 | ||
|
|
965421d5d4 | ||
|
|
ae22c69505 | ||
|
|
37a6070855 | ||
|
|
1ae5596bfa | ||
|
|
ff9d3ca69e | ||
|
|
d98d3f5055 | ||
|
|
f5cbba0636 | ||
|
|
16f7ea03e8 | ||
|
|
22fa683571 | ||
|
|
0eba0a5bd5 | ||
|
|
0990e7843d | ||
|
|
aee9c82c29 | ||
|
|
fdaeaf1f97 | ||
|
|
207f33fc5e |
11
.editorconfig
Normal file
11
.editorconfig
Normal 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
|
||||||
5
.github/ISSUE_TEMPLATE.md
vendored
5
.github/ISSUE_TEMPLATE.md
vendored
@@ -19,3 +19,8 @@ Make sure you have checked all steps below.
|
|||||||
- [ ] C Compiler information (e.g. gcc 7.3):
|
- [ ] C Compiler information (e.g. gcc 7.3):
|
||||||
- [ ] Please attach the debug trace of the failing command as a gist:
|
- [ ] 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`).
|
* 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`.
|
||||||
|
|||||||
19
.github/workflows/macos_build.yml
vendored
19
.github/workflows/macos_build.yml
vendored
@@ -1,18 +1,23 @@
|
|||||||
name: macos_build
|
name: macos_build
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # to fetch code (actions/checkout)
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
macos_build:
|
macos_build:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version:
|
python-version:
|
||||||
- 3.7.10
|
- "3.7"
|
||||||
- 3.8.10
|
- "3.8"
|
||||||
- 3.9.5
|
- "3.9"
|
||||||
- 3.10.0
|
- "3.10"
|
||||||
runs-on: macos-10.15
|
- "3.11"
|
||||||
|
runs-on: macos-11
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
# Normally, we would use the superbly maintained...
|
# Normally, we would use the superbly maintained...
|
||||||
# - uses: actions/setup-python@v2
|
# - uses: actions/setup-python@v2
|
||||||
# with:
|
# with:
|
||||||
@@ -27,7 +32,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo $PYENV_ROOT
|
echo $PYENV_ROOT
|
||||||
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
||||||
bin/pyenv install ${{ matrix.python-version }}
|
bin/pyenv install -v ${{ matrix.python-version }}
|
||||||
bin/pyenv global ${{ matrix.python-version }}
|
bin/pyenv global ${{ matrix.python-version }}
|
||||||
bin/pyenv rehash
|
bin/pyenv rehash
|
||||||
- run: python --version
|
- run: python --version
|
||||||
|
|||||||
124
.github/workflows/modified_scripts_build.yml
vendored
124
.github/workflows/modified_scripts_build.yml
vendored
@@ -6,16 +6,19 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
versions: ${{steps.modified-versions.outputs.versions}}
|
versions: ${{steps.modified-versions.outputs.versions}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- run: git fetch origin "$GITHUB_BASE_REF"
|
- run: git fetch origin "$GITHUB_BASE_REF"
|
||||||
- shell: bash
|
- shell: bash
|
||||||
run: >
|
run: >
|
||||||
versions=$(git diff "origin/$GITHUB_BASE_REF" --name-only -z
|
versions=$(git diff "origin/$GITHUB_BASE_REF" --name-only -z
|
||||||
| perl -ne 'BEGIN {$\="\n";$/="\0";} chomp;
|
| perl -ne 'BEGIN {$\="\n";$/="\0";} chomp;
|
||||||
if (/^plugins\/python-build\/share\/python-build\/(?:([^\/]+)|patches\/([^\/]+)\/.*)$/)
|
if (/^plugins\/python-build\/share\/python-build\/(?:([^\/]+)|patches\/([^\/]+)\/.*)$/ and -e $& )
|
||||||
{ print $1.$2; }' \
|
{ print $1.$2; }' \
|
||||||
| sort -u);
|
| 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
|
- id: modified-versions
|
||||||
run: |
|
run: |
|
||||||
echo -n "::set-output name=versions::"
|
echo -n "::set-output name=versions::"
|
||||||
@@ -27,33 +30,54 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
|
python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
|
||||||
os: ["macos-10.15", "macos-11"]
|
os: ["macos-11", "macos-12"]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- run: |
|
|
||||||
brew install openssl openssl@1.1 readline sqlite3 xz zlib
|
|
||||||
- run: |
|
- run: |
|
||||||
|
#envvars
|
||||||
export PYENV_ROOT="$GITHUB_WORKSPACE"
|
export PYENV_ROOT="$GITHUB_WORKSPACE"
|
||||||
echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
|
echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
|
||||||
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
||||||
- run: |
|
- run: |
|
||||||
pyenv install ${{ matrix.python-version }}
|
#prerequisites
|
||||||
pyenv global ${{ matrix.python-version }}
|
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: |
|
- run: |
|
||||||
python --version
|
#build
|
||||||
python -m pip --version
|
pyenv install -v ${{ matrix.python-version }}
|
||||||
- shell: python # Prove that actual Python == expected Python
|
pyenv global ${{ matrix.python-version }}
|
||||||
env:
|
# Micropython doesn't support --version
|
||||||
|
- run: |
|
||||||
|
#print version
|
||||||
|
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
||||||
|
python -c 'import sys; print(sys.version)'
|
||||||
|
else
|
||||||
|
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 }}
|
EXPECTED_PYTHON: ${{ matrix.python-version }}
|
||||||
run: |
|
run: |
|
||||||
import os, sys, os.path
|
#check
|
||||||
correct_dir = os.path.join(
|
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
||||||
os.environ['PYENV_ROOT'],
|
[[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
|
||||||
'versions',
|
python -c 'import sys; assert sys.implementation.name == "micropython"'
|
||||||
os.environ['EXPECTED_PYTHON'],
|
else
|
||||||
'bin')
|
python -c 'if True:
|
||||||
assert os.path.dirname(sys.executable) == correct_dir
|
import os, sys, os.path
|
||||||
|
correct_dir = os.path.join(
|
||||||
|
os.environ["PYENV_ROOT"],
|
||||||
|
"versions",
|
||||||
|
os.environ["EXPECTED_PYTHON"],
|
||||||
|
"bin")
|
||||||
|
assert os.path.dirname(sys.executable) == correct_dir'
|
||||||
|
fi
|
||||||
# bundled executables in some Anaconda releases cause the post-run step to hang in MacOS
|
# bundled executables in some Anaconda releases cause the post-run step to hang in MacOS
|
||||||
- run: |
|
- run: |
|
||||||
pyenv global system
|
pyenv global system
|
||||||
@@ -66,32 +90,54 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
|
python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
|
||||||
os: ["ubuntu-18.04", "ubuntu-20.04"]
|
os: ["ubuntu-20.04", "ubuntu-22.04"]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
- run: |
|
|
||||||
sudo apt-get update -q; sudo apt-get install -yq build-essential \
|
|
||||||
libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev \
|
|
||||||
wget curl llvm libncurses5-dev libncursesw5-dev \
|
|
||||||
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
|
|
||||||
- run: |
|
- run: |
|
||||||
|
#envvars
|
||||||
export PYENV_ROOT="$GITHUB_WORKSPACE"
|
export PYENV_ROOT="$GITHUB_WORKSPACE"
|
||||||
echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
|
echo "PYENV_ROOT=$PYENV_ROOT" >> $GITHUB_ENV
|
||||||
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
||||||
- run: |
|
- run: |
|
||||||
pyenv install ${{ matrix.python-version }}
|
#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 }}
|
pyenv global ${{ matrix.python-version }}
|
||||||
- run: python --version
|
# Micropython doesn't support --version
|
||||||
- run: python -m pip --version
|
- run: |
|
||||||
- shell: python # Prove that actual Python == expected Python
|
#print version
|
||||||
env:
|
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
||||||
|
python -c 'import sys; print(sys.version)'
|
||||||
|
else
|
||||||
|
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 }}
|
EXPECTED_PYTHON: ${{ matrix.python-version }}
|
||||||
run: |
|
run: |
|
||||||
import os, sys, os.path
|
#check
|
||||||
correct_dir = os.path.join(
|
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
||||||
os.environ['PYENV_ROOT'],
|
[[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
|
||||||
'versions',
|
python -c 'import sys; assert sys.implementation.name == "micropython"'
|
||||||
os.environ['EXPECTED_PYTHON'],
|
else
|
||||||
'bin')
|
python -c 'if True:
|
||||||
assert os.path.dirname(sys.executable) == correct_dir
|
import os, sys, os.path
|
||||||
|
correct_dir = os.path.join(
|
||||||
|
os.environ["PYENV_ROOT"],
|
||||||
|
"versions",
|
||||||
|
os.environ["EXPECTED_PYTHON"],
|
||||||
|
"bin")
|
||||||
|
assert os.path.dirname(sys.executable) == correct_dir'
|
||||||
|
fi
|
||||||
|
|||||||
56
.github/workflows/no-response.yml
vendored
56
.github/workflows/no-response.yml
vendored
@@ -1,26 +1,30 @@
|
|||||||
name: No Response
|
name: No Response
|
||||||
|
|
||||||
# Both `issue_comment` and `scheduled` event types are required for this Action
|
# Both `issue_comment` and `scheduled` event types are required for this Action
|
||||||
# to work properly.
|
# to work properly.
|
||||||
on:
|
on:
|
||||||
issue_comment:
|
issue_comment:
|
||||||
types: [created]
|
types: [created]
|
||||||
schedule:
|
schedule:
|
||||||
# Schedule for ten minutes after the hour, every hour
|
# Schedule for ten minutes after the hour, every hour
|
||||||
- cron: '10 * * * *'
|
- cron: '10 * * * *'
|
||||||
|
|
||||||
jobs:
|
permissions: {}
|
||||||
noResponse:
|
jobs:
|
||||||
runs-on: ubuntu-latest
|
noResponse:
|
||||||
steps:
|
permissions:
|
||||||
- uses: lee-dohm/no-response@v0.5.0
|
issues: write # to update issues (lee-dohm/no-response)
|
||||||
with:
|
|
||||||
token: ${{ github.token }}
|
runs-on: ubuntu-latest
|
||||||
daysUntilClose: 30
|
steps:
|
||||||
responseRequiredLabel: need-feedback
|
- uses: lee-dohm/no-response@v0.5.0
|
||||||
closeComment: >
|
with:
|
||||||
This issue has been automatically closed because there has been no response
|
token: ${{ github.token }}
|
||||||
to our request for more information from the original author. With only the
|
daysUntilClose: 30
|
||||||
information that is currently in the issue, we don't have enough information
|
responseRequiredLabel: need-feedback
|
||||||
to take action. Please reach out if you have or find the answers we need so
|
closeComment: >
|
||||||
that we can investigate further.
|
This issue has been automatically closed because there has been no response
|
||||||
|
to our request for more information from the original author. With only the
|
||||||
|
information that is currently in the issue, we don't have enough information
|
||||||
|
to take action. Please reach out if you have or find the answers we need so
|
||||||
|
that we can investigate further.
|
||||||
|
|||||||
15
.github/workflows/pyenv_tests.yml
vendored
15
.github/workflows/pyenv_tests.yml
vendored
@@ -1,18 +1,22 @@
|
|||||||
name: pyenv_tests
|
name: pyenv_tests
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # to fetch code (actions/checkout)
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
pyenv_tests:
|
pyenv_tests:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
|
- ubuntu-22.04
|
||||||
- ubuntu-20.04
|
- ubuntu-20.04
|
||||||
- ubuntu-18.04
|
- macos-12
|
||||||
- macos-11
|
- macos-11
|
||||||
- macos-10.15
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
# Normally, we would use the superbly maintained...
|
# Normally, we would use the superbly maintained...
|
||||||
# - uses: actions/setup-python@v2
|
# - uses: actions/setup-python@v2
|
||||||
# with:
|
# with:
|
||||||
@@ -38,3 +42,8 @@ jobs:
|
|||||||
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
||||||
- run: |
|
- run: |
|
||||||
make test
|
make test
|
||||||
|
- env:
|
||||||
|
PYENV_NATIVE_EXT: 1
|
||||||
|
run: |
|
||||||
|
(cd src; ./configure; make)
|
||||||
|
bats/bin/bats test/{pyenv,hooks,versions}.bats
|
||||||
25
.github/workflows/ubuntu_build.yml
vendored
25
.github/workflows/ubuntu_build.yml
vendored
@@ -1,27 +1,32 @@
|
|||||||
name: ubuntu_build
|
name: ubuntu_build
|
||||||
on: [pull_request, push]
|
on: [pull_request, push]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read # to fetch code (actions/checkout)
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
ubuntu_build:
|
ubuntu_build:
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version:
|
python-version:
|
||||||
- 3.7.10
|
- "3.7"
|
||||||
- 3.8.10
|
- "3.8"
|
||||||
- 3.9.5
|
- "3.9"
|
||||||
- 3.10.0
|
- "3.10"
|
||||||
runs-on: Ubuntu-20.04
|
- "3.11"
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
# Normally, we would use the superbly maintained...
|
# Normally, we would use the superbly maintained...
|
||||||
# - uses: actions/setup-python@v2
|
# - uses: actions/setup-python@v2
|
||||||
# with:
|
# with:
|
||||||
# python-version: ${{ matrix.python-version }}
|
# python-version: ${{ matrix.python-version }}
|
||||||
# ... but in the repo, we want to test pyenv builds on Ubuntu
|
# ... but in the repo, we want to test pyenv builds on Ubuntu
|
||||||
- run: |
|
- run: |
|
||||||
sudo apt-get install -y build-essential libssl-dev zlib1g-dev libbz2-dev \
|
sudo apt-get update -q; sudo apt install -yq make build-essential libssl-dev zlib1g-dev \
|
||||||
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
|
libbz2-dev libreadline-dev libsqlite3-dev curl \
|
||||||
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
|
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
|
||||||
# https://github.com/pyenv/pyenv#installation
|
# https://github.com/pyenv/pyenv#installation
|
||||||
- run: pwd
|
- run: pwd
|
||||||
- env:
|
- env:
|
||||||
@@ -29,7 +34,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo $PYENV_ROOT
|
echo $PYENV_ROOT
|
||||||
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
echo "$PYENV_ROOT/shims:$PYENV_ROOT/bin" >> $GITHUB_PATH
|
||||||
bin/pyenv install ${{ matrix.python-version }}
|
bin/pyenv install -v ${{ matrix.python-version }}
|
||||||
bin/pyenv global ${{ matrix.python-version }}
|
bin/pyenv global ${{ matrix.python-version }}
|
||||||
bin/pyenv rehash
|
bin/pyenv rehash
|
||||||
- run: python --version
|
- run: python --version
|
||||||
|
|||||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -8,3 +8,5 @@
|
|||||||
/src/*.o
|
/src/*.o
|
||||||
/bats/
|
/bats/
|
||||||
/default-packages
|
/default-packages
|
||||||
|
.idea
|
||||||
|
*.un~
|
||||||
|
|||||||
83
.travis.yml
83
.travis.yml
@@ -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
|
|
||||||
182
CHANGELOG.md
182
CHANGELOG.md
@@ -1,4 +1,184 @@
|
|||||||
## Version History
|
# Version History
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
* Add CPython 3.11.0rc1 (#2434)
|
||||||
|
* Add support for multiple versions in `pyenv uninstall` (#2432)
|
||||||
|
* Add micropython 1.18 and 1.19.1 (#2443)
|
||||||
|
* CI: support Micropython, deleted scripts; build with -v (#2447)
|
||||||
|
* Re-allow paths in .python-version while still preventing CVE-2022-35861 (#2442)
|
||||||
|
* CI: Bump OS versions (#2448)
|
||||||
|
* Add Cinder 3.8 (#2433)
|
||||||
|
|
||||||
|
## Release 2.3.3
|
||||||
|
|
||||||
|
* Use version sort in `pyenv versions` (#2405)
|
||||||
|
* Add CPython 3.11.0b4 (#2411)
|
||||||
|
* Python-build: Replace deprecated git protocol use with https in docs (#2413)
|
||||||
|
* Fix relative path traversal due to using version string in path (#2412)
|
||||||
|
* Allow pypy2 and pypy3 patching (#2421, #2419)
|
||||||
|
* Add CPython 3.11.0b5 (#2420)
|
||||||
|
* Add GraalPython 22.2.0 (#2425)
|
||||||
|
* Add CPython 3.10.6 (#2428)
|
||||||
|
|
||||||
## Release 2.3.2
|
## Release 2.3.2
|
||||||
|
|
||||||
|
|||||||
29
COMMANDS.md
29
COMMANDS.md
@@ -20,6 +20,7 @@ The most common subcommands are:
|
|||||||
* [`pyenv exec`](#pyenv-exec)
|
* [`pyenv exec`](#pyenv-exec)
|
||||||
* [`pyenv root`](#pyenv-root)
|
* [`pyenv root`](#pyenv-root)
|
||||||
* [`pyenv prefix`](#pyenv-prefix)
|
* [`pyenv prefix`](#pyenv-prefix)
|
||||||
|
* [`pyenv latest`](#pyenv-latest)
|
||||||
* [`pyenv hooks`](#pyenv-hooks)
|
* [`pyenv hooks`](#pyenv-hooks)
|
||||||
* [`pyenv shims`](#pyenv-shims)
|
* [`pyenv shims`](#pyenv-shims)
|
||||||
* [`pyenv init`](#pyenv-init)
|
* [`pyenv init`](#pyenv-init)
|
||||||
@@ -228,7 +229,13 @@ Then install the desired versions:
|
|||||||
2.6.8
|
2.6.8
|
||||||
* 2.7.6 (set by /home/yyuu/.pyenv/version)
|
* 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
|
pyenv install 3.8:latest
|
||||||
|
|
||||||
@@ -238,9 +245,9 @@ To install the latest major release for Python 3 try:
|
|||||||
|
|
||||||
## `pyenv uninstall`
|
## `pyenv uninstall`
|
||||||
|
|
||||||
Uninstall a specific Python version.
|
Uninstall Python versions.
|
||||||
|
|
||||||
Usage: pyenv uninstall [-f|--force] <version>
|
Usage: pyenv uninstall [-f|--force] <version> ...
|
||||||
|
|
||||||
-f Attempt to remove the specified version without prompting
|
-f Attempt to remove the specified version without prompting
|
||||||
for confirmation. If the version does not exist, do not
|
for confirmation. If the version does not exist, do not
|
||||||
@@ -330,6 +337,19 @@ locations of the currently selected versions.
|
|||||||
$ pyenv prefix 3.9.7
|
$ pyenv prefix 3.9.7
|
||||||
/home/user/.pyenv/versions/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`
|
## `pyenv hooks`
|
||||||
|
|
||||||
Lists installed hook scripts for a given pyenv command.
|
Lists installed hook scripts for a given pyenv command.
|
||||||
@@ -366,11 +386,12 @@ List existing pyenv shims.
|
|||||||
|
|
||||||
Configure the shell environment for pyenv
|
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
|
- Initialize shims directory, print PYENV_SHELL variable, completions path
|
||||||
and shell function
|
and shell function
|
||||||
--path Print shims path
|
--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
|
--no-rehash Add no rehash command to output
|
||||||
|
|
||||||
## `pyenv completions`
|
## `pyenv completions`
|
||||||
|
|||||||
215
CONTRIBUTING.md
215
CONTRIBUTING.md
@@ -1,106 +1,109 @@
|
|||||||
General guidance
|
General guidance
|
||||||
================
|
================
|
||||||
|
|
||||||
* The usual principes of respecting existing conventions and making sure that your changes
|
* The usual principles of respecting existing conventions and making sure that your changes
|
||||||
are in line with the overall product design apply when contributing code to Pyenv.
|
are in line with the overall product design apply when contributing code to Pyenv.
|
||||||
|
|
||||||
* We are limited to Bash 3.2 features
|
* We are limited to Bash 3.2 features
|
||||||
|
|
||||||
That's because that's the version shipped with MacOS.
|
That's because that's the version shipped with MacOS.
|
||||||
(They didn't upgrade past it and switched to Zsh because later versions
|
(They didn't upgrade past it and switched to Zsh because later versions
|
||||||
are covered by GPLv3 which has additional restrictions unacceptable for Apple.)
|
are covered by GPLv3 which has additional restrictions unacceptable for Apple.)
|
||||||
|
|
||||||
* Be extra careful when submitting logic specific for the Apple Silicon platform
|
You can still add performance optimizations etc that take advantage of newer Bash features
|
||||||
|
as long as there is a fallback execution route for Bash 3.
|
||||||
As of this writing, Github Actions do not support it and only one team member has the necessary hardware.
|
|
||||||
So we may be unable to test your changes and may have to take your word for it.
|
* Be extra careful when submitting logic specific for the Apple Silicon platform
|
||||||
|
|
||||||
|
As of this writing, Github Actions do not support it and only one team member has the necessary hardware.
|
||||||
Formatting PRs
|
So we may be unable to test your changes and may have to take your word for it.
|
||||||
==============
|
|
||||||
|
|
||||||
We strive to keep commit history one-concern-per-commit to keep it meaningful and easy to follow.
|
Formatting PRs
|
||||||
If a pull request (PR) addresses a single concern (the typical case), we usually squash commits
|
==============
|
||||||
from it together when merging so its commit history doesn't matter.
|
|
||||||
If however a PR addresses multiple separate concerns, each of them should be presented as a separate commit.
|
We strive to keep commit history one-concern-per-commit to keep it meaningful and easy to follow.
|
||||||
Adding multiple new Python releases of the same flavor is okay with either a single or multiple commits.
|
If a pull request (PR) addresses a single concern (the typical case), we usually squash commits
|
||||||
|
from it together when merging so its commit history doesn't matter.
|
||||||
|
If however a PR addresses multiple separate concerns, each of them should be presented as a separate commit.
|
||||||
Authoring installation scripts
|
Adding multiple new Python releases of the same flavor is okay with either a single or multiple commits.
|
||||||
==============================
|
|
||||||
|
|
||||||
Adding new Python release support
|
Authoring installation scripts
|
||||||
---------------------------------
|
==============================
|
||||||
|
|
||||||
The easiest way to add support for a new Python release is to copy the script from the previous one
|
Adding new Python release support
|
||||||
and adjust it as necessary. In many cases, just changing version numbers, URLs and hashes is enough.
|
---------------------------------
|
||||||
Do pay attention to other "magic numbers" that may be present in a script --
|
|
||||||
e.g. the set of architectures and OS versions supported by a release -- since those change from time to time, too.
|
The easiest way to add support for a new Python release is to copy the script from the previous one
|
||||||
|
and adjust it as necessary. In many cases, just changing version numbers, URLs and hashes is enough.
|
||||||
Make sure to also copy any patches for the previous release that still apply to the new one.
|
Do pay attention to other "magic numbers" that may be present in a script --
|
||||||
Typically, a patch no longer applies if it addresses a problem that's already fixed in the new release.
|
e.g. the set of architectures and OS versions supported by a release -- since those change from time to time, too.
|
||||||
|
|
||||||
For prereleases, we only create an entry for the latest prerelease in a specific version line.
|
Make sure to also copy any patches for the previous release that still apply to the new one.
|
||||||
When submitting a newer prerelease, replace the older one.
|
Typically, a patch no longer applies if it addresses a problem that's already fixed in the new release.
|
||||||
|
|
||||||
|
For prereleases, we only create an entry for the latest prerelease in a specific version line.
|
||||||
Adding version-specific fixes/patches
|
When submitting a newer prerelease, replace the older one.
|
||||||
-------------------------------------
|
|
||||||
|
|
||||||
We accept fixes to issues in specific Python releases that prevent users from using them with Pyenv.
|
Adding version-specific fixes/patches
|
||||||
|
-------------------------------------
|
||||||
In the default configuration for a Python release, we strive to provide as close to vanilla experience as practical,
|
|
||||||
to maintain [the principle of the least surprise](https://en.wikipedia.org/wiki/Principle_of_least_astonishment).
|
We accept fixes to issues in specific Python releases that prevent users from using them with Pyenv.
|
||||||
As such, any such fixes:
|
|
||||||
|
In the default configuration for a Python release, we strive to provide as close to vanilla experience as practical,
|
||||||
* Must not break or degrade (e.g. disable features) the build in any of the environments that the release officially supports
|
to maintain [the principle of the least surprise](https://en.wikipedia.org/wiki/Principle_of_least_astonishment).
|
||||||
* Must not introduce incompatibilities with the vanilla release (including binary incompatibilities)
|
As such, any such fixes:
|
||||||
* Should not patch things unnecessarily, to minimize the risk of the aforementioned undesirable side effects.
|
|
||||||
* E.g. if the fix is for a specific environment, its logic ought to only fire in this specific environment and not touch execution paths for other environments.
|
* Must not break or degrade (e.g. disable features) the build in any of the environments that the release officially supports
|
||||||
* As such, it's advisable to briefly explain in the PR what each added patch does and why it is necessary to fix the declared problem
|
* Must not introduce incompatibilities with the vanilla release (including binary incompatibilities)
|
||||||
|
* Should not patch things unnecessarily, to minimize the risk of the aforementioned undesirable side effects.
|
||||||
Generally, version-specific fixes belong in the scripts for the affected releases and/or patches for them -- this guarantees that their effect is limited to only those releases.
|
* E.g. if the fix is for a specific environment, its logic ought to only fire in this specific environment and not touch execution paths for other environments.
|
||||||
|
* As such, it's advisable to briefly explain in the PR what each added patch does and why it is necessary to fix the declared problem
|
||||||
<h3>Backporting upstream patches</h3>
|
|
||||||
|
Generally, version-specific fixes belong in the scripts for the affected releases and/or patches for them -- this guarantees that their effect is limited to only those releases.
|
||||||
Usually, this is the easiest way to backport a fix for a problem that is fixed in a newer release.
|
|
||||||
|
<h3>Backporting upstream patches</h3>
|
||||||
* Clone Python, check out the tag for the appropriate release and create a branch
|
|
||||||
* Apply existing patches if there are any (with either `patch` or `git am`) and commit
|
Usually, this is the easiest way to backport a fix for a problem that is fixed in a newer release.
|
||||||
* Cherry-pick the upstream commit that fixes the problem in a newer release
|
|
||||||
* Commit and `git format-patch`
|
* Clone Python, check out the tag for the appropriate release and create a branch
|
||||||
* Commit the generated patch file into Pyenv, test your changes and submit a PR
|
* Apply existing patches if there are any (with either `patch` or `git am`) and commit
|
||||||
|
* Cherry-pick the upstream commit that fixes the problem in a newer release
|
||||||
|
* Commit and `git format-patch`
|
||||||
Deprecation policy
|
* Commit the generated patch file into Pyenv, test your changes and submit a PR
|
||||||
------------------
|
|
||||||
|
|
||||||
We do not provide official support for EOL releases and environments or otherwise provide any kind of extended support for old Python releases.
|
Deprecation policy
|
||||||
|
------------------
|
||||||
We do however accept fixes from interested parties that would allow running older, including EOL, releases in newer environments.
|
|
||||||
In addition to the above requirements for release-specific fixes,
|
We do not provide official support for EOL releases and environments or otherwise provide any kind of extended support for old Python releases.
|
||||||
|
|
||||||
* Such a fix must not add maintenance burden (e.g. add new logic to `python-build` that has to be kept there indefinitely)
|
We do however accept fixes from interested parties that would allow running older, including EOL, releases in environments that they do not officially support.
|
||||||
* 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.
|
In addition to the above requirements for release-specific fixes,
|
||||||
* 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.
|
|
||||||
Since old releases never change, it's pretty safe to assume that the fixes will continue to work until a later version
|
* Such a fix must not add maintenance burden (e.g. add new logic to `python-build` that has to be kept there indefinitely)
|
||||||
of an environment introduces further incompatible changes.
|
* 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 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
|
||||||
Advanced changes / adding new Python flavor support
|
of an environment introduces further incompatible changes.
|
||||||
---------------------------------------------------
|
|
||||||
|
|
||||||
An installation script is sourced from `python-build`. All installation scripts are based on the same logic:
|
Advanced changes / adding new Python flavor support
|
||||||
|
---------------------------------------------------
|
||||||
1. Select the source to download and other variable parameters as needed.
|
|
||||||
|
An installation script is sourced from `python-build`. All installation scripts are based on the same logic:
|
||||||
This includes showing an error if the user's environment (OS, architecture) is not supported by the release.
|
|
||||||
Binary releases that only officially support specific distro(s) typically show a warning in other distros instead.
|
1. Select the source to download and other variable parameters as needed.
|
||||||
|
|
||||||
2. Run one of the `install_*` shell functions
|
This includes showing an error if the user's environment (OS, architecture) is not supported by the release.
|
||||||
|
Binary releases that only officially support specific distro(s) typically show a warning in other distros instead.
|
||||||
`install_*` shell functions defined in `python-build` install Python from different kinds of sources -- compressed package (binary or source), upstream installation script, VCS checkout. Pick one that's the most appropriate for your packaging.
|
|
||||||
|
2. Run one of the `install_*` shell functions
|
||||||
Each of them accepts a couple of function-specific arguments which are followed by arguments that constitute the build sequence. Each `<argument>` in the build sequence corresponds to the `install_*_<argument>` function in `python-build`. Check what's available and add any functions with logic specific to your flavor if needed.
|
|
||||||
|
`install_*` shell functions defined in `python-build` install Python from different kinds of sources -- compressed package (binary or source), upstream installation script, VCS checkout. Pick one that's the most appropriate for your packaging.
|
||||||
We strive to keep out of `python-build` parts of build logic that are release-specific and/or tend to change abruptly between releases -- e.g. sets of supported architectures and other software's versions. This results in logic duplication between installation scripts -- but since old releases never change once released, this doesn't really add to the maintenance burden. As a rule of thumb, `python-build` can host parts of logic that are expected to stay the same for an indefinite amount of time -- for an entire Python flavor or release line.
|
|
||||||
|
Each of them accepts a couple of function-specific arguments which are followed by arguments that constitute the build sequence. Each `<argument>` in the build sequence corresponds to the `install_*_<argument>` function in `python-build`. Check what's available and add any functions with logic specific to your flavor if needed.
|
||||||
|
|
||||||
|
We strive to keep out of `python-build` parts of build logic that are release-specific and/or tend to change abruptly between releases -- e.g. sets of supported architectures and other software's versions. This results in logic duplication between installation scripts -- but since old releases never change once released, this doesn't really add to the maintenance burden. As a rule of thumb, `python-build` can host parts of logic that are expected to stay the same for an indefinite amount of time -- for an entire Python flavor or release line.
|
||||||
|
|||||||
15
MAINTENANCE.md
Normal file
15
MAINTENANCE.md
Normal 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
|
||||||
8
Makefile
8
Makefile
@@ -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.
|
# Do not pass in user flags to build tests.
|
||||||
unexport PYTHON_CFLAGS
|
unexport PYTHON_CFLAGS
|
||||||
unexport PYTHON_CONFIGURE_OPTS
|
unexport PYTHON_CONFIGURE_OPTS
|
||||||
|
|
||||||
test: bats
|
test: test-unit test-plugin
|
||||||
|
|
||||||
|
test-unit: bats
|
||||||
PATH="./bats/bin:$$PATH" test/run
|
PATH="./bats/bin:$$PATH" test/run
|
||||||
|
|
||||||
|
test-plugin: bats
|
||||||
cd plugins/python-build && $(PWD)/bats/bin/bats $${CI:+--tap} test
|
cd plugins/python-build && $(PWD)/bats/bin/bats $${CI:+--tap} test
|
||||||
|
|
||||||
PYTHON_BUILD_ROOT := $(CURDIR)/plugins/python-build
|
PYTHON_BUILD_ROOT := $(CURDIR)/plugins/python-build
|
||||||
|
|||||||
113
README.md
113
README.md
@@ -53,17 +53,21 @@ This project was forked from [rbenv](https://github.com/rbenv/rbenv) and
|
|||||||
* [Install Python build dependencies](#install-python-build-dependencies)
|
* [Install Python build dependencies](#install-python-build-dependencies)
|
||||||
* **[Usage](#usage)**
|
* **[Usage](#usage)**
|
||||||
* [Install additional Python versions](#install-additional-python-versions)
|
* [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)
|
* [Python versions with extended support](#python-versions-with-extended-support)
|
||||||
* [Switch between Python versions](#switch-between-python-versions)
|
* [Switch between Python versions](#switch-between-python-versions)
|
||||||
* [Uninstall Python versions](#uninstall-python-versions)
|
* [Uninstall Python versions](#uninstall-python-versions)
|
||||||
* [Other operations](#other-operations)
|
* [Other operations](#other-operations)
|
||||||
* [Upgrading](#upgrading)
|
* [Upgrading](#upgrading)
|
||||||
|
* [Upgrading with Homebrew](#upgrading-with-homebrew)
|
||||||
|
* [Upgrading with Installer or Git checkout](#upgrading-with-installer-or-git-checkout)
|
||||||
* [Uninstalling pyenv](#uninstalling-pyenv)
|
* [Uninstalling pyenv](#uninstalling-pyenv)
|
||||||
|
* [Pyenv plugins](#pyenv-plugins)
|
||||||
* [Advanced Configuration](#advanced-configuration)
|
* [Advanced Configuration](#advanced-configuration)
|
||||||
* [Using Pyenv without shims](#using-pyenv-without-shims)
|
* [Using Pyenv without shims](#using-pyenv-without-shims)
|
||||||
* [Environment variables](#environment-variables)
|
* [Environment variables](#environment-variables)
|
||||||
* **[Development](#development)**
|
* **[Development](#development)**
|
||||||
* [Contributing](#contributing)**
|
* [Contributing](#contributing)
|
||||||
* [Version History](#version-history)
|
* [Version History](#version-history)
|
||||||
* [License](#license)
|
* [License](#license)
|
||||||
|
|
||||||
@@ -244,7 +248,9 @@ which does install native Windows Python versions.
|
|||||||
|
|
||||||
#### Automatic installer
|
#### Automatic installer
|
||||||
|
|
||||||
Visit our other project:
|
`curl https://pyenv.run | bash`
|
||||||
|
|
||||||
|
For more details visit our other project:
|
||||||
https://github.com/pyenv/pyenv-installer
|
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.**
|
* **Check out Pyenv where you want it installed.**
|
||||||
A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else):
|
A good place to choose is `$HOME/.pyenv` (but you can install it somewhere else):
|
||||||
|
```
|
||||||
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
|
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
|
||||||
|
```
|
||||||
* Optionally, try to compile a dynamic Bash extension to speed up Pyenv. Don't
|
* Optionally, try to compile a dynamic Bash extension to speed up Pyenv. Don't
|
||||||
worry if it fails; Pyenv will still work normally:
|
worry if it fails; Pyenv will still work normally:
|
||||||
|
```
|
||||||
cd ~/.pyenv && src/configure && make -C src
|
cd ~/.pyenv && src/configure && make -C src
|
||||||
|
```
|
||||||
|
|
||||||
### Set up your shell environment for Pyenv
|
### Set up your shell environment for Pyenv
|
||||||
|
|
||||||
@@ -288,7 +294,7 @@ See [Advanced configuration](#advanced-configuration) for details and more confi
|
|||||||
configuration commands to both `.bashrc` (for interactive shells)
|
configuration commands to both `.bashrc` (for interactive shells)
|
||||||
and the profile file that Bash would use (for login shells).
|
and the profile file that Bash would use (for login shells).
|
||||||
|
|
||||||
First, add the commands to `~/.bashrc`:
|
First, add the commands to `~/.bashrc` by running the following in your terminal:
|
||||||
|
|
||||||
~~~ bash
|
~~~ bash
|
||||||
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
|
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
|
||||||
@@ -324,14 +330,21 @@ See [Advanced configuration](#advanced-configuration) for details and more confi
|
|||||||
|
|
||||||
- For **Fish shell**:
|
- 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
|
~~~ fish
|
||||||
set -Ux PYENV_ROOT $HOME/.pyenv
|
set -Ux PYENV_ROOT $HOME/.pyenv
|
||||||
set -U fish_user_paths $PYENV_ROOT/bin $fish_user_paths
|
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
|
~~~ fish
|
||||||
pyenv init - | source
|
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.
|
**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
|
### Restart your shell
|
||||||
|
|
||||||
@@ -376,19 +394,42 @@ For example, to download and install Python 3.10.4, run:
|
|||||||
pyenv install 3.10.4
|
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
|
**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).
|
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,
|
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)
|
see [_Special environment variables_ in Python-Build's README](plugins/python-build/README.md#special-environment-variables)
|
||||||
for details.
|
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,
|
**NOTE:** If you are having trouble installing a Python version,
|
||||||
please visit the wiki page about
|
please visit the wiki page about
|
||||||
[Common Build Problems](https://github.com/pyenv/pyenv/wiki/Common-build-problems).
|
[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
|
#### 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
|
it's safe to assume that they will continue working until there are further incompatible changes
|
||||||
in a later version of those environments.
|
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.7.8-3.7.15, 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.5.10, 3.6.15* : MacOS 11+ and XCode 13.3
|
||||||
* *2.7.18* : MacOS 10.15+ and Apple Silicon
|
* *2.7.18* : MacOS 10.15+ and Apple Silicon
|
||||||
|
|
||||||
|
|
||||||
@@ -432,7 +473,7 @@ for more details on how the selection works and more information on its usage.
|
|||||||
As time goes on, you will accumulate Python versions in your
|
As time goes on, you will accumulate Python versions in your
|
||||||
`$(pyenv root)/versions` directory.
|
`$(pyenv root)/versions` directory.
|
||||||
|
|
||||||
To remove old Python versions, use [`pyenv uninstall <version>`](COMMANDS.md#pyenv-uninstall).
|
To remove old Python versions, use [`pyenv uninstall <versions>`](COMMANDS.md#pyenv-uninstall).
|
||||||
|
|
||||||
Alternatively, you can simply `rm -rf` the directory of the version you want
|
Alternatively, you can simply `rm -rf` the directory of the version you want
|
||||||
to remove. You can find the directory of a particular Python version
|
to remove. You can find the directory of a particular Python version
|
||||||
@@ -452,12 +493,34 @@ Note that Pyenv plugins that you install may add their own subcommands.
|
|||||||
|
|
||||||
## Upgrading
|
## Upgrading
|
||||||
|
|
||||||
|
### Upgrading with Homebrew
|
||||||
|
|
||||||
If you've installed Pyenv using Homebrew, upgrade using:
|
If you've installed Pyenv using Homebrew, upgrade using:
|
||||||
```sh
|
```sh
|
||||||
brew upgrade pyenv
|
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.
|
upgrade your installation at any time using Git.
|
||||||
|
|
||||||
To upgrade to the latest development version of pyenv, use `git pull`:
|
To upgrade to the latest development version of pyenv, use `git pull`:
|
||||||
@@ -505,6 +568,19 @@ uninstall from the system.
|
|||||||
brew uninstall pyenv
|
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
|
## Advanced Configuration
|
||||||
|
|
||||||
Skip this section unless you must know what every line in your shell
|
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
|
## Development
|
||||||
|
|
||||||
The pyenv source code is [hosted on
|
The pyenv source code is [hosted on
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ if enable -f "${BASH_SOURCE%/*}"/../libexec/pyenv-realpath.dylib realpath 2>/dev
|
|||||||
else
|
else
|
||||||
[ -z "$PYENV_NATIVE_EXT" ] || abort "failed to load \`realpath' builtin"
|
[ -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?"
|
[ -n "$READLINK" ] || abort "cannot find readlink - are you missing GNU coreutils?"
|
||||||
|
|
||||||
resolve_link() {
|
resolve_link() {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
set -e
|
set -e
|
||||||
[ -n "$PYENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
version="2.3.2"
|
version="2.3.22"
|
||||||
git_revision=""
|
git_revision=""
|
||||||
|
|
||||||
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then
|
if cd "${BASH_SOURCE%/*}" 2>/dev/null && git remote -v 2>/dev/null | grep -q pyenv; then
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ extract_initial_comment_block() {
|
|||||||
collect_documentation() {
|
collect_documentation() {
|
||||||
# `tail` prevents "broken pipe" errors due to `head` closing the pipe without reading everything
|
# `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
|
# 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:/ {
|
||||||
summary = substr($0, 10)
|
summary = substr($0, 10)
|
||||||
next
|
next
|
||||||
|
|||||||
@@ -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
|
echo "pyenv: failed to load \`realpath' builtin" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
READLINK=$(type -P greadlink readlink | head -1)
|
READLINK=$(type -P readlink)
|
||||||
if [ -z "$READLINK" ]; then
|
if [ -z "$READLINK" ]; then
|
||||||
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: Configure the shell environment for pyenv
|
# 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
|
set -e
|
||||||
[ -n "$PYENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
@@ -9,7 +9,9 @@ set -e
|
|||||||
if [ "$1" = "--complete" ]; then
|
if [ "$1" = "--complete" ]; then
|
||||||
echo -
|
echo -
|
||||||
echo --path
|
echo --path
|
||||||
|
echo --no-push-path
|
||||||
echo --no-rehash
|
echo --no-rehash
|
||||||
|
echo --detect-shell
|
||||||
echo bash
|
echo bash
|
||||||
echo fish
|
echo fish
|
||||||
echo ksh
|
echo ksh
|
||||||
@@ -19,6 +21,7 @@ fi
|
|||||||
|
|
||||||
mode="help"
|
mode="help"
|
||||||
no_rehash=""
|
no_rehash=""
|
||||||
|
no_push_path=""
|
||||||
for args in "$@"
|
for args in "$@"
|
||||||
do
|
do
|
||||||
if [ "$args" = "-" ]; then
|
if [ "$args" = "-" ]; then
|
||||||
@@ -30,6 +33,16 @@ do
|
|||||||
mode="path"
|
mode="path"
|
||||||
shift
|
shift
|
||||||
fi
|
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
|
if [ "$args" = "--no-rehash" ]; then
|
||||||
no_rehash=1
|
no_rehash=1
|
||||||
@@ -69,12 +82,19 @@ function main() {
|
|||||||
print_shell_function
|
print_shell_function
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
|
"detect-shell")
|
||||||
|
detect_profile 1
|
||||||
|
print_detect_shell
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
# should never get here
|
# should never get here
|
||||||
exit 2
|
exit 2
|
||||||
}
|
}
|
||||||
|
|
||||||
function help_() {
|
function detect_profile() {
|
||||||
|
local detect_for_detect_shell="$1"
|
||||||
|
|
||||||
case "$shell" in
|
case "$shell" in
|
||||||
bash )
|
bash )
|
||||||
if [ -e '~/.bash_profile' ]; then
|
if [ -e '~/.bash_profile' ]; then
|
||||||
@@ -89,16 +109,35 @@ function help_() {
|
|||||||
profile='~/.zprofile'
|
profile='~/.zprofile'
|
||||||
rc='~/.zshrc'
|
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'
|
profile='~/.profile'
|
||||||
rc='~/.profile'
|
rc='~/.profile'
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
profile='your shell'\''s login startup file'
|
if [ -n "$detect_for_detect_shell" ]; then
|
||||||
rc='your shell'\''s interactive startup file'
|
profile=
|
||||||
|
rc=
|
||||||
|
else
|
||||||
|
profile='your shell'\''s login startup file'
|
||||||
|
rc='your shell'\''s interactive startup file'
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
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
|
case "$shell" in
|
||||||
fish )
|
fish )
|
||||||
@@ -141,24 +180,56 @@ function init_dirs() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function print_path() {
|
function print_path() {
|
||||||
case "$shell" in
|
# if no_push_path is set, guard the PATH manipulation with a check on whether
|
||||||
fish )
|
# the shim is already in the PATH.
|
||||||
echo 'while set index (contains -i -- '\'"${PYENV_ROOT}/shims"\'' $PATH)'
|
if [ -n "$no_push_path" ]; then
|
||||||
echo 'set -eg PATH[$index]; end; set -e index'
|
case "$shell" in
|
||||||
echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH'
|
fish )
|
||||||
;;
|
echo 'if not contains -- "'"${PYENV_ROOT}/shims"'" $PATH'
|
||||||
* )
|
print_path_prepend_shims
|
||||||
# Some distros (notably Debian-based) set Bash's SSH_SOURCE_BASHRC compilation option
|
echo 'end'
|
||||||
# that makes it source `bashrc` under SSH even when not interactive.
|
;;
|
||||||
# This is inhibited by a guard in Debian's stock `bashrc` but some people remove it
|
* )
|
||||||
# in order to get proper environment for noninteractive remote commands
|
echo 'if [[ ":$PATH:" != *'\':"${PYENV_ROOT}"/shims:\''* ]]; then'
|
||||||
# (SSH provides /etc/ssh/sshrc and ~/.ssh/rc for that but no-one seems to use them for some reason).
|
print_path_prepend_shims
|
||||||
# This has caused an infinite `bashrc` execution loop for those people in the below nested Bash invocation (#2367).
|
echo 'fi'
|
||||||
# --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[*]}"'\'')"'
|
esac
|
||||||
echo 'export PATH="'"${PYENV_ROOT}"'/shims:${PATH}"'
|
else
|
||||||
;;
|
case "$shell" in
|
||||||
esac
|
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
|
||||||
|
# that makes it source `bashrc` under SSH even when not interactive.
|
||||||
|
# This is inhibited by a guard in Debian's stock `bashrc` but some people remove it
|
||||||
|
# in order to get proper environment for noninteractive remote commands
|
||||||
|
# (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); '
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
function print_env() {
|
function print_env() {
|
||||||
@@ -203,7 +274,7 @@ function pyenv
|
|||||||
end
|
end
|
||||||
EOS
|
EOS
|
||||||
;;
|
;;
|
||||||
ksh )
|
ksh | ksh93 | mksh )
|
||||||
cat <<EOS
|
cat <<EOS
|
||||||
function pyenv {
|
function pyenv {
|
||||||
typeset command
|
typeset command
|
||||||
|
|||||||
80
libexec/pyenv-latest
Executable file
80
libexec/pyenv-latest
Executable 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
|
||||||
@@ -42,6 +42,7 @@ OLDIFS="$IFS"
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
version="$(pyenv-latest -q "$version" || echo "$version")"
|
||||||
PYENV_PREFIX_PATH="${PYENV_ROOT}/versions/${version}"
|
PYENV_PREFIX_PATH="${PYENV_ROOT}/versions/${version}"
|
||||||
fi
|
fi
|
||||||
if [ -d "$PYENV_PREFIX_PATH" ]; then
|
if [ -d "$PYENV_PREFIX_PATH" ]; then
|
||||||
|
|||||||
@@ -5,15 +5,37 @@ set -e
|
|||||||
|
|
||||||
VERSION_FILE="$1"
|
VERSION_FILE="$1"
|
||||||
|
|
||||||
|
function is_version_safe() {
|
||||||
|
# As needed, check that the constructed path exists as a child path of PYENV_ROOT/versions
|
||||||
|
version="$1"
|
||||||
|
if [[ "$version" == ".." || "$version" == */* ]]; then
|
||||||
|
# Sanity check the value of version to prevent malicious path-traversal
|
||||||
|
(
|
||||||
|
cd "$PYENV_ROOT/versions/$version" &>/dev/null || exit 1
|
||||||
|
[[ "$PWD" == "$PYENV_ROOT/versions/"* ]]
|
||||||
|
)
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if [ -s "$VERSION_FILE" ]; then
|
if [ -s "$VERSION_FILE" ]; then
|
||||||
# Read the first non-whitespace word from the specified version file.
|
# Read the first non-whitespace word from the specified version file.
|
||||||
# Be careful not to load it whole in case there's something crazy in it.
|
# Be careful not to load it whole in case there's something crazy in it.
|
||||||
IFS="${IFS}"$'\r'
|
IFS="$IFS"$'\r'
|
||||||
sep=
|
sep=
|
||||||
while read -n 1024 -r version _ || [[ $version ]]; do
|
while read -n 1024 -r version _ || [[ $version ]]; do
|
||||||
[[ -z $version || $version == \#* ]] && continue
|
if [[ -z "$version" || "$version" == \#* ]]; then
|
||||||
printf "%s%s" "$sep" "$version"
|
# Skip empty lines and comments
|
||||||
sep=:
|
continue
|
||||||
|
elif ! is_version_safe "$version"; then
|
||||||
|
# CVE-2022-35861 allowed arbitrary code execution in some contexts and is mitigated by is_version_safe.
|
||||||
|
echo "pyenv: invalid version \`$version' ignored in \`$VERSION_FILE'" >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
printf "%s%s" "$sep" "$version"
|
||||||
|
sep=:
|
||||||
done <"$VERSION_FILE"
|
done <"$VERSION_FILE"
|
||||||
[[ $sep ]] && { echo; exit; }
|
[[ $sep ]] && { echo; exit; }
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ OLDIFS="$IFS"
|
|||||||
versions=("${versions[@]}" "${version}")
|
versions=("${versions[@]}" "${version}")
|
||||||
elif version_exists "${version#python-}"; then
|
elif version_exists "${version#python-}"; then
|
||||||
versions=("${versions[@]}" "${version#python-}")
|
versions=("${versions[@]}" "${version#python-}")
|
||||||
|
elif resolved_version="$(pyenv-latest -q "$version")"; then
|
||||||
|
versions=("${versions[@]}" "${resolved_version}")
|
||||||
else
|
else
|
||||||
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
|
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
|
||||||
any_not_installed=1
|
any_not_installed=1
|
||||||
|
|||||||
@@ -1,23 +1,24 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Summary: List all Python versions available to pyenv
|
# 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/*'.
|
# Lists all Python versions found in `$PYENV_ROOT/versions/*'.
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
[ -n "$PYENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
unset bare
|
unset bare skip_aliases skip_envs
|
||||||
unset skip_aliases
|
|
||||||
# Provide pyenv completions
|
# Provide pyenv completions
|
||||||
for arg; do
|
for arg; do
|
||||||
case "$arg" in
|
case "$arg" in
|
||||||
--complete )
|
--complete )
|
||||||
echo --bare
|
echo --bare
|
||||||
echo --skip-aliases
|
echo --skip-aliases
|
||||||
|
echo --skip-envs
|
||||||
exit ;;
|
exit ;;
|
||||||
--bare ) bare=1 ;;
|
--bare ) bare=1 ;;
|
||||||
--skip-aliases ) skip_aliases=1 ;;
|
--skip-aliases ) skip_aliases=1 ;;
|
||||||
|
--skip-envs ) skip_envs=1 ;;
|
||||||
* )
|
* )
|
||||||
pyenv-help --usage versions >&2
|
pyenv-help --usage versions >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -33,7 +34,7 @@ if ! enable -f "${BASH_SOURCE%/*}"/pyenv-realpath.dylib realpath 2>/dev/null; th
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
READLINK=$(type -P greadlink readlink | head -1)
|
READLINK=$(type -P readlink)
|
||||||
if [ -z "$READLINK" ]; then
|
if [ -z "$READLINK" ]; then
|
||||||
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
||||||
exit 1
|
exit 1
|
||||||
@@ -70,8 +71,6 @@ else
|
|||||||
current_versions=()
|
current_versions=()
|
||||||
fi
|
fi
|
||||||
if [ -n "$bare" ]; then
|
if [ -n "$bare" ]; then
|
||||||
hit_prefix=""
|
|
||||||
miss_prefix=""
|
|
||||||
include_system=""
|
include_system=""
|
||||||
else
|
else
|
||||||
hit_prefix="* "
|
hit_prefix="* "
|
||||||
@@ -104,12 +103,25 @@ exists() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
print_version() {
|
print_version() {
|
||||||
if [[ ${BASH_VERSINFO[0]} -ge 4 && ${current_versions["$1"]} ]]; then
|
local version="${1:?}"
|
||||||
echo "${hit_prefix}$1 (set by $(pyenv-version-origin))"
|
if [[ -n $bare ]]; then
|
||||||
elif (( ${BASH_VERSINFO[0]} <= 3 )) && exists "$1" "${current_versions[@]}"; then
|
echo "$version"
|
||||||
echo "${hit_prefix}$1 (set by $(pyenv-version-origin))"
|
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
|
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
|
fi
|
||||||
num_versions=$((num_versions + 1))
|
num_versions=$((num_versions + 1))
|
||||||
}
|
}
|
||||||
@@ -119,24 +131,38 @@ if [ -n "$include_system" ] && \
|
|||||||
(PYENV_VERSION=system pyenv-which python >/dev/null 2>&1 || \
|
(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 python3 >/dev/null 2>&1 || \
|
||||||
PYENV_VERSION=system pyenv-which python2 >/dev/null 2>&1) ; then
|
PYENV_VERSION=system pyenv-which python2 >/dev/null 2>&1) ; then
|
||||||
print_version system
|
print_version system "/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
shopt -s dotglob nullglob
|
shopt -s dotglob nullglob
|
||||||
for path in "$versions_dir"/*; do
|
versions_dir_entries=("$versions_dir"/*)
|
||||||
|
if sort --version-sort </dev/null >/dev/null 2>&1; then
|
||||||
|
# system sort supports version sorting
|
||||||
|
OLDIFS="$IFS"
|
||||||
|
IFS=$'\n'
|
||||||
|
versions_dir_entries=($(
|
||||||
|
printf "%s\n" "${versions_dir_entries[@]}" |
|
||||||
|
sort --version-sort
|
||||||
|
))
|
||||||
|
IFS="$OLDIFS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
for path in "${versions_dir_entries[@]}"; do
|
||||||
if [ -d "$path" ]; then
|
if [ -d "$path" ]; then
|
||||||
if [ -n "$skip_aliases" ] && [ -L "$path" ]; then
|
if [ -n "$skip_aliases" ] && [ -L "$path" ]; then
|
||||||
target="$(realpath "$path")"
|
target="$(realpath "$path")"
|
||||||
[ "${target%/*}" != "$versions_dir" ] || continue
|
[ "${target%/*}" == "$versions_dir" ] && continue
|
||||||
[ "${target%/*/envs/*}" != "$versions_dir" ] || continue
|
[ "${target%/*/envs/*}" == "$versions_dir" ] && continue
|
||||||
|
fi
|
||||||
|
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/}" "${env_path}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
print_version "${path##*/}"
|
|
||||||
# virtual environments created by anaconda/miniconda
|
|
||||||
for env_path in "${path}/envs/"*; do
|
|
||||||
if [ -d "${env_path}" ]; then
|
|
||||||
print_version "${env_path#${PYENV_ROOT}/versions/}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
shopt -u dotglob nullglob
|
shopt -u dotglob nullglob
|
||||||
|
|||||||
@@ -47,12 +47,20 @@ OLDIFS="$IFS"
|
|||||||
IFS=: versions=(${PYENV_VERSION:-$(pyenv-version-name)})
|
IFS=: versions=(${PYENV_VERSION:-$(pyenv-version-name)})
|
||||||
IFS="$OLDIFS"
|
IFS="$OLDIFS"
|
||||||
|
|
||||||
|
declare -a nonexistent_versions
|
||||||
|
|
||||||
for version in "${versions[@]}" "$system"; do
|
for version in "${versions[@]}" "$system"; do
|
||||||
if [ "$version" = "system" ]; then
|
if [ "$version" = "system" ]; then
|
||||||
PATH="$(remove_from_path "${PYENV_ROOT}/shims")"
|
PATH="$(remove_from_path "${PYENV_ROOT}/shims")"
|
||||||
PYENV_COMMAND_PATH="$(command -v "$PYENV_COMMAND" || true)"
|
PYENV_COMMAND_PATH="$(command -v "$PYENV_COMMAND" || true)"
|
||||||
else
|
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
|
fi
|
||||||
if [ -x "$PYENV_COMMAND_PATH" ]; then
|
if [ -x "$PYENV_COMMAND_PATH" ]; then
|
||||||
break
|
break
|
||||||
@@ -69,17 +77,10 @@ done
|
|||||||
if [ -x "$PYENV_COMMAND_PATH" ]; then
|
if [ -x "$PYENV_COMMAND_PATH" ]; then
|
||||||
echo "$PYENV_COMMAND_PATH"
|
echo "$PYENV_COMMAND_PATH"
|
||||||
else
|
else
|
||||||
any_not_installed=0
|
if (( ${#nonexistent_versions[@]} )); then
|
||||||
for version in "${versions[@]}"; do
|
for version in "${nonexistent_versions[@]}"; do
|
||||||
if [ "$version" = "system" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
if ! [ -d "${PYENV_ROOT}/versions/${version}" ]; then
|
|
||||||
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
|
echo "pyenv: version \`$version' is not installed (set by $(pyenv-version-origin))" >&2
|
||||||
any_not_installed=1
|
done
|
||||||
fi
|
|
||||||
done
|
|
||||||
if [ "$any_not_installed" = 1 ]; then
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
.TH PYENV 1 "12 Dec 2020" "PYENV"
|
.TH PYENV 1 "24 Apr 2023" "PYENV"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
pyenv \- Simple Python version management
|
pyenv \- Simple Python version management
|
||||||
.SH SYNOPSIS
|
.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
|
\fBAppend\fR the following to \fB$HOME/.bashrc\fR
|
||||||
.P
|
.P
|
||||||
.RS 15
|
.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
|
.RE
|
||||||
.\"OR
|
|
||||||
.\"\fBsh echo \-e \if command \-v pyenv 1>/dev/null 2>&1; then\en eval "$(pyenv init \-)"\enfi' >> ~/\.bashrc\fR
|
|
||||||
.RS 3
|
.RS 3
|
||||||
.P
|
.P
|
||||||
.nh
|
.nh
|
||||||
@@ -106,7 +108,7 @@ Set or show the shell\-specific Python version
|
|||||||
List existing pyenv shims
|
List existing pyenv shims
|
||||||
.TP
|
.TP
|
||||||
.B uninstall
|
.B uninstall
|
||||||
Uninstall a specific Python version
|
Uninstall Python versions
|
||||||
.TP
|
.TP
|
||||||
.B version
|
.B version
|
||||||
Show the current Python version(s) and its origin
|
Show the current Python version(s) and its origin
|
||||||
@@ -452,10 +454,10 @@ $ pyenv versions
|
|||||||
.fi
|
.fi
|
||||||
.IP "" 0
|
.IP "" 0
|
||||||
.SS "pyenv uninstall"
|
.SS "pyenv uninstall"
|
||||||
Uninstall a specific Python version\.
|
Uninstall Python versions\.
|
||||||
.IP "" 4
|
.IP "" 4
|
||||||
.nf
|
.nf
|
||||||
Usage: pyenv uninstall [\-f|\-\-force] <version>
|
Usage: pyenv uninstall [\-f|\-\-force] <version> ...
|
||||||
|
|
||||||
\-f Attempt to remove the specified version without prompting
|
\-f Attempt to remove the specified version without prompting
|
||||||
for confirmation\. If the version does not exist, do not
|
for confirmation\. If the version does not exist, do not
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ Installing python-build as a standalone program will give you access to the
|
|||||||
`python-build` command for precise control over Python version installation. If you
|
`python-build` command for precise control over Python version installation. If you
|
||||||
have pyenv installed, you will also be able to use the `pyenv install` command.
|
have pyenv installed, you will also be able to use the `pyenv install` command.
|
||||||
|
|
||||||
git clone git://github.com/pyenv/pyenv.git
|
git clone https://github.com/pyenv/pyenv.git
|
||||||
cd pyenv/plugins/python-build
|
cd pyenv/plugins/python-build
|
||||||
./install.sh
|
./install.sh
|
||||||
|
|
||||||
@@ -113,6 +113,7 @@ You can set certain environment variables to control the build process.
|
|||||||
checksum of the file to the mirror URL.
|
checksum of the file to the mirror URL.
|
||||||
* `PYTHON_BUILD_SKIP_MIRROR`, if set, forces python-build to download packages from
|
* `PYTHON_BUILD_SKIP_MIRROR`, if set, forces python-build to download packages from
|
||||||
their original source URLs instead of using a mirror.
|
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
|
* `PYTHON_BUILD_ROOT` overrides the default location from where build definitions
|
||||||
in `share/python-build/` are looked up.
|
in `share/python-build/` are looked up.
|
||||||
* `PYTHON_BUILD_DEFINITIONS` can be a list of colon-separated paths that get
|
* `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
|
$ 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
|
### Checksum verification
|
||||||
|
|
||||||
If you have the `shasum`, `openssl`, or `sha256sum` tool installed, python-build will
|
If you have the `shasum`, `openssl`, or `sha256sum` tool installed, python-build will
|
||||||
@@ -231,7 +247,7 @@ the full build log for build failures.
|
|||||||
|
|
||||||
### Testing new python versions
|
### Testing new python versions
|
||||||
|
|
||||||
If you are contributing a new python version for python-build,
|
If you are contributing a new python version for python-build,
|
||||||
you can test the build in a [docker](https://www.docker.com/) container based on Ubuntu 18.04.
|
you can test the build in a [docker](https://www.docker.com/) container based on Ubuntu 18.04.
|
||||||
|
|
||||||
With docker installed:
|
With docker installed:
|
||||||
@@ -249,7 +265,7 @@ docker run -it my_container
|
|||||||
```
|
```
|
||||||
|
|
||||||
The container will need to be rebuilt whenever you change the repo,
|
The container will need to be rebuilt whenever you change the repo,
|
||||||
but after the first build, this will be very fast,
|
but after the first build, this will be very fast,
|
||||||
as the layer including the build dependencies will be cached.
|
as the layer including the build dependencies will be cached.
|
||||||
|
|
||||||
Changes made inside the container will not be persisted.
|
Changes made inside the container will not be persisted.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Summary: Install a Python version using python-build
|
# 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 [-f] [-kvp] <definition-file>
|
||||||
# pyenv install -l|--list
|
# pyenv install -l|--list
|
||||||
# pyenv install --version
|
# pyenv install --version
|
||||||
@@ -59,7 +59,7 @@ usage() {
|
|||||||
|
|
||||||
definitions() {
|
definitions() {
|
||||||
local query="$1"
|
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() {
|
indent() {
|
||||||
@@ -113,17 +113,15 @@ for option in "${OPTIONS[@]}"; do
|
|||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
[ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
|
|
||||||
|
|
||||||
unset VERSION_NAME
|
unset VERSION_NAME
|
||||||
|
|
||||||
# The first argument contains the definition to install. If the
|
# The first argument contains the definition to install. If the
|
||||||
# argument is missing, try to install whatever local app-specific
|
# argument is missing, try to install whatever local app-specific
|
||||||
# version is specified by pyenv. Show usage instructions if a local
|
# version is specified by pyenv. Show usage instructions if a local
|
||||||
# version is not specified.
|
# version is not specified.
|
||||||
DEFINITION="${ARGUMENTS[0]}"
|
DEFINITIONS=("${ARGUMENTS[@]}")
|
||||||
[ -n "$DEFINITION" ] || DEFINITION="$(pyenv-local 2>/dev/null || true)"
|
[[ "${#DEFINITIONS[*]}" -eq 0 ]] && DEFINITIONS=($(pyenv-local 2>/dev/null || true))
|
||||||
[ -n "$DEFINITION" ] || usage 1 >&2
|
[[ "${#DEFINITIONS[*]}" -eq 0 ]] && usage 1 >&2
|
||||||
|
|
||||||
# Define `before_install` and `after_install` functions that allow
|
# Define `before_install` and `after_install` functions that allow
|
||||||
# plugin hooks to register a string of code for execution before or
|
# plugin hooks to register a string of code for execution before or
|
||||||
@@ -140,102 +138,6 @@ after_install() {
|
|||||||
after_hooks["${#after_hooks[@]}"]="$hook"
|
after_hooks["${#after_hooks[@]}"]="$hook"
|
||||||
}
|
}
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
|
||||||
IFS=$'\n' scripts=(`pyenv-hooks install`)
|
|
||||||
IFS="$OLDIFS"
|
|
||||||
for script in "${scripts[@]}"; do source "$script"; done
|
|
||||||
|
|
||||||
|
|
||||||
# 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}"
|
|
||||||
|
|
||||||
[ -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 ;;
|
|
||||||
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
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
if [ -z "${PYENV_BOOTSTRAP_VERSION}" ]; then
|
|
||||||
case "${VERSION_NAME}" in
|
|
||||||
[23]"."* )
|
|
||||||
# Default PYENV_VERSION to the friendly Python version. (The
|
|
||||||
# CPython installer requires an existing Python installation to run. An
|
|
||||||
# unsatisfied local .python-version file can cause the installer to
|
|
||||||
# fail.)
|
|
||||||
for version_info in "${VERSION_NAME%-dev}" "${VERSION_NAME%.*}" "${VERSION_NAME%%.*}"; do
|
|
||||||
# Anaconda's `curl` doesn't work on platform where `/etc/pki/tls/certs/ca-bundle.crt` isn't available (e.g. Debian)
|
|
||||||
for version in $(pyenv-whence "python${version_info}" 2>/dev/null || true); do
|
|
||||||
if [[ "${version}" != "anaconda"* ]] && [[ "${version}" != "miniconda"* ]]; then
|
|
||||||
PYENV_BOOTSTRAP_VERSION="${version}"
|
|
||||||
break 2
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
"pypy"*"-dev" | "pypy"*"-src" )
|
|
||||||
# PyPy/PyPy3 requires existing Python 2.7 to build
|
|
||||||
if [ -n "${PYENV_RPYTHON_VERSION}" ]; then
|
|
||||||
PYENV_BOOTSTRAP_VERSION="${PYENV_RPYTHON_VERSION}"
|
|
||||||
else
|
|
||||||
for version in $(pyenv-versions --bare | sort -r); do
|
|
||||||
if [[ "${version}" == "2.7"* ]]; then
|
|
||||||
PYENV_BOOTSTRAP_VERSION="$version"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if [ -n "$PYENV_BOOTSTRAP_VERSION" ]; then
|
|
||||||
for dep in curses genc 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
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo "pyenv-install: $VERSION_NAME: PyPy requires Python 2.7 to build from source." >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "${PYENV_BOOTSTRAP_VERSION}" ]; then
|
|
||||||
export PYENV_VERSION="${PYENV_BOOTSTRAP_VERSION}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Execute `before_install` hooks.
|
|
||||||
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
|
||||||
|
|
||||||
# Plan cleanup on unsuccessful installation.
|
# Plan cleanup on unsuccessful installation.
|
||||||
cleanup() {
|
cleanup() {
|
||||||
[ -z "${PREFIX_EXISTS}" ] && rm -rf "$PREFIX"
|
[ -z "${PREFIX_EXISTS}" ] && rm -rf "$PREFIX"
|
||||||
@@ -243,43 +145,151 @@ cleanup() {
|
|||||||
|
|
||||||
trap cleanup SIGINT
|
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.
|
OLDIFS="$IFS"
|
||||||
if [ "$STATUS" == "2" ]; then
|
IFS=$'\n' scripts=(`pyenv-hooks install`)
|
||||||
{ candidates="$(definitions "$DEFINITION")"
|
IFS="$OLDIFS"
|
||||||
here="$(dirname "${0%/*}")/../.."
|
for script in "${scripts[@]}"; do source "$script"; done
|
||||||
if [ -n "$candidates" ]; then
|
|
||||||
|
COMBINED_STATUS=0
|
||||||
|
for DEFINITION in "${DEFINITIONS[@]}"; do
|
||||||
|
STATUS=0
|
||||||
|
|
||||||
|
# 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")"
|
||||||
|
|
||||||
|
# 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}"
|
||||||
|
|
||||||
|
[ -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 ) ;;
|
||||||
|
* ) { 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
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
if [ -z "${PYENV_BOOTSTRAP_VERSION}" ]; then
|
||||||
|
case "${VERSION_NAME}" in
|
||||||
|
[23]"."* )
|
||||||
|
# Default PYENV_VERSION to the friendly Python version. (The
|
||||||
|
# CPython installer requires an existing Python installation to run. An
|
||||||
|
# unsatisfied local .python-version file can cause the installer to
|
||||||
|
# fail.)
|
||||||
|
for version_info in "${VERSION_NAME%-dev}" "${VERSION_NAME%.*}" "${VERSION_NAME%%.*}"; do
|
||||||
|
# Anaconda's `curl` doesn't work on platform where `/etc/pki/tls/certs/ca-bundle.crt` isn't available (e.g. Debian)
|
||||||
|
for version in $(pyenv-whence "python${version_info}" 2>/dev/null || true); do
|
||||||
|
if [[ "${version}" != "anaconda"* ]] && [[ "${version}" != "miniconda"* ]]; then
|
||||||
|
PYENV_BOOTSTRAP_VERSION="${version}"
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
"pypy"*"-dev" | "pypy"*"-src" )
|
||||||
|
# PyPy/PyPy3 requires existing Python 2.7 to build
|
||||||
|
if [ -n "${PYENV_RPYTHON_VERSION}" ]; then
|
||||||
|
PYENV_BOOTSTRAP_VERSION="${PYENV_RPYTHON_VERSION}"
|
||||||
|
else
|
||||||
|
for version in $(pyenv-versions --bare | sort -r); do
|
||||||
|
if [[ "${version}" == "2.7"* ]]; then
|
||||||
|
PYENV_BOOTSTRAP_VERSION="$version"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [ -n "$PYENV_BOOTSTRAP_VERSION" ]; then
|
||||||
|
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
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "pyenv-install: $VERSION_NAME: PyPy requires Python 2.7 to build from source." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "${PYENV_BOOTSTRAP_VERSION}" ]; then
|
||||||
|
export PYENV_VERSION="${PYENV_BOOTSTRAP_VERSION}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Execute `before_install` hooks.
|
||||||
|
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||||
|
|
||||||
|
# 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; }
|
||||||
|
|
||||||
|
# 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
|
||||||
|
echo
|
||||||
|
echo "The following versions contain \`$DEFINITION' in the name:"
|
||||||
|
echo "$candidates" | indent
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
echo "The following versions contain \`$DEFINITION' in the name:"
|
echo "See all available versions with \`pyenv install --list'."
|
||||||
echo "$candidates" | indent
|
echo
|
||||||
fi
|
echo -n "If the version you need is missing, try upgrading pyenv"
|
||||||
echo
|
if [ "$here" != "${here#$(brew --prefix 2>/dev/null)}" ]; then
|
||||||
echo "See all available versions with \`pyenv install --list'."
|
printf ":\n\n"
|
||||||
echo
|
echo " brew update && brew upgrade pyenv"
|
||||||
echo -n "If the version you need is missing, try upgrading pyenv"
|
elif [ -d "${here}/.git" ]; then
|
||||||
if [ "$here" != "${here#$(brew --prefix 2>/dev/null)}" ]; then
|
printf ":\n\n"
|
||||||
printf ":\n\n"
|
echo " cd ${here} && git pull && cd -"
|
||||||
echo " brew update && brew upgrade pyenv"
|
else
|
||||||
elif [ -d "${here}/.git" ]; then
|
printf ".\n"
|
||||||
printf ":\n\n"
|
fi
|
||||||
echo " cd ${here} && git pull && cd -"
|
} >&2
|
||||||
else
|
fi
|
||||||
printf ".\n"
|
|
||||||
fi
|
|
||||||
} >&2
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Execute `after_install` hooks.
|
# Execute `after_install` hooks.
|
||||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||||
|
|
||||||
# Run `pyenv-rehash` after a successful installation.
|
# Run `pyenv-rehash` after a successful installation.
|
||||||
if [ "$STATUS" == "0" ]; then
|
if [[ $STATUS -eq 0 ]]; then
|
||||||
pyenv-rehash
|
pyenv-rehash
|
||||||
else
|
else
|
||||||
cleanup
|
cleanup
|
||||||
fi
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
exit "$STATUS"
|
done
|
||||||
|
|
||||||
|
|
||||||
|
exit "${COMBINED_STATUS}"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Summary: Uninstall a specific Python version
|
# Summary: Uninstall Python versions
|
||||||
#
|
#
|
||||||
# Usage: pyenv uninstall [-f|--force] <version>
|
# Usage: pyenv uninstall [-f|--force] <version> ...
|
||||||
#
|
#
|
||||||
# -f Attempt to remove the specified version without prompting
|
# -f Attempt to remove the specified version without prompting
|
||||||
# for confirmation. If the version does not exist, do not
|
# for confirmation. If the version does not exist, do not
|
||||||
@@ -33,14 +33,17 @@ if [ "$1" = "-f" ] || [ "$1" = "--force" ]; then
|
|||||||
shift
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ "$#" -eq 1 ] || usage 1 >&2
|
[ "$#" -gt 0 ] || usage 1 >&2
|
||||||
|
|
||||||
DEFINITION="$1"
|
versions=("$@")
|
||||||
case "$DEFINITION" in
|
|
||||||
"" | -* )
|
for version in "${versions[@]}"; do
|
||||||
usage 1 >&2
|
case "$version" in
|
||||||
;;
|
"" | -* )
|
||||||
esac
|
usage 1 >&2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
declare -a before_hooks after_hooks
|
declare -a before_hooks after_hooks
|
||||||
|
|
||||||
@@ -59,29 +62,36 @@ IFS=$'\n' scripts=(`pyenv-hooks uninstall`)
|
|||||||
IFS="$OLDIFS"
|
IFS="$OLDIFS"
|
||||||
for script in "${scripts[@]}"; do source "$script"; done
|
for script in "${scripts[@]}"; do source "$script"; done
|
||||||
|
|
||||||
|
uninstall-python() {
|
||||||
|
local DEFINITION="$1"
|
||||||
|
|
||||||
VERSION_NAME="${DEFINITION##*/}"
|
local VERSION_NAME="${DEFINITION##*/}"
|
||||||
PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
|
local PREFIX="${PYENV_ROOT}/versions/${VERSION_NAME}"
|
||||||
|
|
||||||
if [ -z "$FORCE" ]; then
|
if [ -z "$FORCE" ]; then
|
||||||
if [ ! -d "$PREFIX" ]; then
|
if [ ! -d "$PREFIX" ]; then
|
||||||
echo "pyenv: version \`$VERSION_NAME' not installed" >&2
|
echo "pyenv: version \`$VERSION_NAME' not installed" >&2
|
||||||
exit 1
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
read -p "pyenv: remove $PREFIX? [y|N] "
|
||||||
|
case "$REPLY" in
|
||||||
|
y | Y | yes | YES ) ;;
|
||||||
|
* ) exit 1 ;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
read -p "pyenv: remove $PREFIX? [y|N] "
|
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
||||||
case "$REPLY" in
|
|
||||||
y | Y | yes | YES ) ;;
|
|
||||||
* ) exit 1 ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
for hook in "${before_hooks[@]}"; do eval "$hook"; done
|
if [ -d "$PREFIX" ]; then
|
||||||
|
rm -rf "$PREFIX"
|
||||||
|
pyenv-rehash
|
||||||
|
echo "pyenv: $VERSION_NAME uninstalled"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -d "$PREFIX" ]; then
|
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
||||||
rm -rf "$PREFIX"
|
}
|
||||||
pyenv-rehash
|
|
||||||
echo "pyenv: $VERSION_NAME uninstalled"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for hook in "${after_hooks[@]}"; do eval "$hook"; done
|
for version in "${versions[@]}"; do
|
||||||
|
uninstall-python "$version"
|
||||||
|
done
|
||||||
|
|||||||
@@ -56,9 +56,14 @@ lib() {
|
|||||||
}
|
}
|
||||||
lib "$1"
|
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() {
|
resolve_link() {
|
||||||
$(type -P greadlink readlink | head -1) "$1"
|
$READLINK "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
abs_dirname() {
|
abs_dirname() {
|
||||||
@@ -102,7 +107,7 @@ os_information() {
|
|||||||
source /etc/os-release
|
source /etc/os-release
|
||||||
echo "$NAME" $VERSION_ID
|
echo "$NAME" $VERSION_ID
|
||||||
else
|
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)}"
|
echo "${os:-$(uname -sr)}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -112,6 +117,11 @@ is_mac() {
|
|||||||
[ $# -eq 0 ] || [ "$(osx_version)" "$@" ]
|
[ $# -eq 0 ] || [ "$(osx_version)" "$@" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
can_use_homebrew() {
|
||||||
|
[ -z "$PYTHON_BUILD_SKIP_HOMEBREW" ] || return 1
|
||||||
|
is_mac || return 1
|
||||||
|
}
|
||||||
|
|
||||||
# 9.1 -> 901
|
# 9.1 -> 901
|
||||||
# 10.9 -> 1009
|
# 10.9 -> 1009
|
||||||
# 10.10 -> 1010
|
# 10.10 -> 1010
|
||||||
@@ -228,9 +238,7 @@ install_package_using() {
|
|||||||
make_package "${make_args[@]}"
|
make_package "${make_args[@]}"
|
||||||
popd >&4
|
popd >&4
|
||||||
|
|
||||||
{ echo "Installed ${package_name} to ${PREFIX_PATH}"
|
echo "Installed ${package_name} to ${PREFIX_PATH}" >&2
|
||||||
echo
|
|
||||||
} >&2
|
|
||||||
}
|
}
|
||||||
|
|
||||||
make_package() {
|
make_package() {
|
||||||
@@ -253,7 +261,7 @@ compute_sha2() {
|
|||||||
output="$(shasum -a 256 -b)" || return 1
|
output="$(shasum -a 256 -b)" || return 1
|
||||||
echo "${output% *}"
|
echo "${output% *}"
|
||||||
elif type openssl &>/dev/null; then
|
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
|
output="$("$openssl" dgst -sha256 2>/dev/null)" || return 1
|
||||||
echo "${output##* }"
|
echo "${output##* }"
|
||||||
elif type sha256sum &>/dev/null; then
|
elif type sha256sum &>/dev/null; then
|
||||||
@@ -355,12 +363,38 @@ http_head_aria2c() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
http_get_aria2c() {
|
http_get_aria2c() {
|
||||||
local out="${2:-$(mktemp "out.XXXXXX")}"
|
# aria2c always treats -o argument as a relative path
|
||||||
if aria2c --allow-overwrite=true --no-conf=true -o "${out}" ${ARIA2_OPTS} "$1" >&4; then
|
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}"
|
[ -n "$2" ] || cat "${out}"
|
||||||
else
|
else
|
||||||
false
|
false
|
||||||
fi
|
fi
|
||||||
|
ret=$?
|
||||||
|
|
||||||
|
if [[ -n "$2" && -n $aria2c_is_snap ]]; then
|
||||||
|
mv "$dir_out/$out" "$real_dir_out/$out"
|
||||||
|
fi
|
||||||
|
return "$ret"
|
||||||
}
|
}
|
||||||
|
|
||||||
http_head_curl() {
|
http_head_curl() {
|
||||||
@@ -709,7 +743,7 @@ build_package() {
|
|||||||
|
|
||||||
echo "Installing ${package_name}..." >&2
|
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
|
for command in $commands; do
|
||||||
"build_package_${command}" "$package_name"
|
"build_package_${command}" "$package_name"
|
||||||
@@ -774,6 +808,7 @@ build_package_standard_build() {
|
|||||||
else
|
else
|
||||||
use_homebrew_zlib || true
|
use_homebrew_zlib || true
|
||||||
fi
|
fi
|
||||||
|
use_dsymutil || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then
|
||||||
@@ -783,10 +818,10 @@ build_package_standard_build() {
|
|||||||
export CC=clang
|
export CC=clang
|
||||||
fi
|
fi
|
||||||
${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \
|
${!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
|
) >&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
|
} >&4 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -837,7 +872,7 @@ build_package_jython() {
|
|||||||
fix_jython_shebangs() {
|
fix_jython_shebangs() {
|
||||||
# Workaround for Jython 2.7+ (#458)
|
# Workaround for Jython 2.7+ (#458)
|
||||||
for file in "${PREFIX_PATH}/bin"/*; do
|
for file in "${PREFIX_PATH}/bin"/*; do
|
||||||
case "$(head -1 "${file}")" in
|
case "$(head -n1 "${file}")" in
|
||||||
"#!"*"/bin/jython" )
|
"#!"*"/bin/jython" )
|
||||||
sed -i.bak "1 s:.*:#\!${PREFIX_PATH}\/bin\/jython:" "${file}"
|
sed -i.bak "1 s:.*:#\!${PREFIX_PATH}\/bin\/jython:" "${file}"
|
||||||
;;
|
;;
|
||||||
@@ -899,7 +934,7 @@ build_package_micropython() {
|
|||||||
"$MAKE" $MAKE_OPTS
|
"$MAKE" $MAKE_OPTS
|
||||||
cd ../ports/unix
|
cd ../ports/unix
|
||||||
"$MAKE" $MAKE_OPTS axtls
|
"$MAKE" $MAKE_OPTS axtls
|
||||||
"$MAKE" $MAKE_OPTS CFLAGS_EXTRA="-DMICROPY_PY_SYS_PATH_DEFAULT='\"${PREFIX_PATH}/lib/micropython\"' $CFLAGS_EXTRA"
|
"$MAKE" $MAKE_OPTS CFLAGS_EXTRA="-DMICROPY_PY_SYS_PATH_DEFAULT='\".frozen:${PREFIX_PATH}/lib/micropython\"' $CFLAGS_EXTRA"
|
||||||
"$MAKE" install $MAKE_INSTALL_OPTS PREFIX="${PREFIX_PATH}"
|
"$MAKE" install $MAKE_INSTALL_OPTS PREFIX="${PREFIX_PATH}"
|
||||||
ln -fs micropython "${PREFIX_PATH}/bin/python"
|
ln -fs micropython "${PREFIX_PATH}/bin/python"
|
||||||
mkdir -p "${PREFIX_PATH}/lib/micropython"
|
mkdir -p "${PREFIX_PATH}/lib/micropython"
|
||||||
@@ -908,7 +943,13 @@ build_package_micropython() {
|
|||||||
|
|
||||||
pypy_architecture() {
|
pypy_architecture() {
|
||||||
case "$(uname -s)" in
|
case "$(uname -s)" in
|
||||||
"Darwin" ) echo "osx64" ;;
|
"Darwin" )
|
||||||
|
case "$(uname -m)" in
|
||||||
|
"arm64" ) echo "osarm64" ;;
|
||||||
|
"x86_64" ) echo "osx64" ;;
|
||||||
|
* ) return 1 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
"Linux" )
|
"Linux" )
|
||||||
case "$(uname -m)" in
|
case "$(uname -m)" in
|
||||||
"armel" ) echo "linux-armel" ;;
|
"armel" ) echo "linux-armel" ;;
|
||||||
@@ -932,10 +973,30 @@ pypy_architecture() {
|
|||||||
esac
|
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() {
|
pyston_architecture() {
|
||||||
pypy_architecture
|
pypy_architecture
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Note: not used by graalpy >= 23.3.0 anymore
|
||||||
build_package_graalpython() {
|
build_package_graalpython() {
|
||||||
build_package_copy
|
build_package_copy
|
||||||
ln -fs "${PREFIX_PATH}/bin/graalpython" "${PREFIX_PATH}/bin/python"
|
ln -fs "${PREFIX_PATH}/bin/graalpython" "${PREFIX_PATH}/bin/python"
|
||||||
@@ -1065,13 +1126,13 @@ setup_builtin_patches() {
|
|||||||
local package_name="$1"
|
local package_name="$1"
|
||||||
local package_patch_path="${DEFINITION_PATH%/*}/patches/${DEFINITION_PATH##*/}/${package_name}"
|
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
|
# 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
|
{ find "${package_patch_path}" -maxdepth 1 -type f
|
||||||
} 2>/dev/null | sort | xargs cat 1>"${package_name}.patch"
|
} 2>/dev/null | sort | xargs cat 1>"${package_name}.patch"
|
||||||
exec <&-
|
|
||||||
exec <"${package_name}.patch"
|
|
||||||
HAS_PATCH=true
|
HAS_PATCH=true
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -1079,7 +1140,7 @@ setup_builtin_patches() {
|
|||||||
cleanup_builtin_patches() {
|
cleanup_builtin_patches() {
|
||||||
local package_name="$1"
|
local package_name="$1"
|
||||||
rm -f "${package_name}.patch"
|
rm -f "${package_name}.patch"
|
||||||
HAS_PATCH="$ORIG_HAS_PATCH"
|
unset HAS_PATCH
|
||||||
}
|
}
|
||||||
|
|
||||||
fix_directory_permissions() {
|
fix_directory_permissions() {
|
||||||
@@ -1088,7 +1149,7 @@ fix_directory_permissions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
require_java7() {
|
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
|
if [[ $version != *[789]* ]]; then
|
||||||
colorize 1 "ERROR" >&3
|
colorize 1 "ERROR" >&3
|
||||||
echo ": Java 7 required. Please install a 1.7-compatible JRE." >&3
|
echo ": Java 7 required. Please install a 1.7-compatible JRE." >&3
|
||||||
@@ -1143,7 +1204,7 @@ require_gcc() {
|
|||||||
|
|
||||||
export CC="$gcc"
|
export CC="$gcc"
|
||||||
if is_mac -ge 1010; then
|
if is_mac -ge 1010; then
|
||||||
export MACOSX_DEPLOYMENT_TARGET=10.9
|
export MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET:-10.9}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1322,15 +1383,15 @@ configured_with_package_dir() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use_homebrew() {
|
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
|
# 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
|
# 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)"
|
local brew_prefix="$(brew --prefix 2>/dev/null || true)"
|
||||||
# /usr/local/lib:/usr/lib is the default library search path
|
# /usr/local/lib:/usr/lib is the default library search path
|
||||||
if [[ -n $brew_prefix && $brew_prefix != "/usr" && $brew_prefix != "/usr/local" ]]; then
|
if [[ -n $brew_prefix && $brew_prefix != "/usr" && $brew_prefix != "/usr/local" ]]; then
|
||||||
export CPPFLAGS="${CPPFLAGS:+${CPPFLAGS% } }-I${brew_prefix}/include"
|
export CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }-I${brew_prefix}/include"
|
||||||
export LDFLAGS="${LDFLAGS:+${LDFLAGS% } }-L${brew_prefix}/lib -Wl,-rpath,${brew_prefix}/lib"
|
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
|
# `python-config` ignores LDFLAGS envvar. Adding to LIBS is the only way to add extra stuff
|
||||||
# to `python-config --ldflags` output
|
# to `python-config --ldflags` output
|
||||||
export LIBS="${LIBS:+${LIBS% } }-L${brew_prefix}/lib -Wl,-rpath,${brew_prefix}/lib"
|
export LIBS="${LIBS:+${LIBS% } }-L${brew_prefix}/lib -Wl,-rpath,${brew_prefix}/lib"
|
||||||
@@ -1344,12 +1405,12 @@ needs_yaml() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use_homebrew_yaml() {
|
use_homebrew_yaml() {
|
||||||
is_mac || return 1
|
can_use_homebrew || return 1
|
||||||
local libdir="$(brew --prefix libyaml 2>/dev/null || true)"
|
local libdir="$(brew --prefix libyaml 2>/dev/null || true)"
|
||||||
if [ -d "$libdir" ]; then
|
if [ -d "$libdir" ]; then
|
||||||
echo "python-build: use libyaml from homebrew"
|
echo "python-build: use libyaml from homebrew"
|
||||||
export CPPFLAGS="-I$libdir/include ${CPPFLAGS}"
|
export CPPFLAGS="-I$libdir/include${CPPFLAGS:+ $CPPFLAGS}"
|
||||||
export LDFLAGS="-L$libdir/lib ${LDFLAGS}"
|
export LDFLAGS="-L$libdir/lib${LDFLAGS:+ ${LDFLAGS% }}"
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -1360,20 +1421,26 @@ use_freebsd_pkg() {
|
|||||||
if [ "FreeBSD" = "$(uname -s)" ]; then
|
if [ "FreeBSD" = "$(uname -s)" ]; then
|
||||||
# use openssl if installed from Ports Collection
|
# use openssl if installed from Ports Collection
|
||||||
if [ -f /usr/local/include/openssl/ssl.h ]; then
|
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
|
fi
|
||||||
|
|
||||||
# check if 11-R or later
|
# check if 11-R or later
|
||||||
release="$(uname -r)"
|
release="$(uname -r)"
|
||||||
if [ "${release%%.*}" -ge 11 ]; then
|
if [ "${release%%.*}" -ge 11 ]; then
|
||||||
# prefers readline to compile most of ruby versions
|
# Use packages from Ports Collection.
|
||||||
if pkg info -e readline > /dev/null; then
|
#
|
||||||
# use readline from Ports Collection
|
# Unlike Linux, BSD's cc does not look in /usr/local by default
|
||||||
package_option ruby configure --with-readline-dir="/usr/local"
|
# where Ports-installed packages are, but they are available via pkg-config.
|
||||||
elif pkg info -e libedit > /dev/null; then
|
# Surprisingly, CPython's Configure only uses pkg-config
|
||||||
# use libedit from Ports Collection
|
# to locate some of the dependencies and not others.
|
||||||
package_option ruby configure --enable-libedit
|
# Here we detect those that are (as of this writing) known
|
||||||
package_option ruby configure --with-libedit-dir="/usr/local"
|
# 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
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -1388,13 +1455,13 @@ has_broken_mac_readline() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use_homebrew_readline() {
|
use_homebrew_readline() {
|
||||||
is_mac || return 1
|
can_use_homebrew || return 1
|
||||||
if ! configured_with_package_dir "python" "readline/rlconf.h"; then
|
if ! configured_with_package_dir "python" "readline/rlconf.h"; then
|
||||||
local libdir="$(brew --prefix readline 2>/dev/null || true)"
|
local libdir="$(brew --prefix readline 2>/dev/null || true)"
|
||||||
if [ -d "$libdir" ]; then
|
if [ -d "$libdir" ]; then
|
||||||
echo "python-build: use readline from homebrew"
|
echo "python-build: use readline from homebrew"
|
||||||
export CPPFLAGS="-I$libdir/include ${CPPFLAGS}"
|
export CPPFLAGS="-I$libdir/include${CPPFLAGS:+ $CPPFLAGS}"
|
||||||
export LDFLAGS="-L$libdir/lib ${LDFLAGS}"
|
export LDFLAGS="-L$libdir/lib${LDFLAGS:+ $LDFLAGS}"
|
||||||
else
|
else
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -1412,8 +1479,8 @@ build_package_mac_readline() {
|
|||||||
READLINE_PREFIX_PATH="${PREFIX_PATH}/readline"
|
READLINE_PREFIX_PATH="${PREFIX_PATH}/readline"
|
||||||
|
|
||||||
# Tell Python to use this readline for its extension.
|
# Tell Python to use this readline for its extension.
|
||||||
export CPPFLAGS="-I${READLINE_PREFIX_PATH}/include ${CPPFLAGS}"
|
export CPPFLAGS="-I${READLINE_PREFIX_PATH}/include${CPPFLAGS:+ $CPPFLAGS}"
|
||||||
export LDFLAGS="-L${READLINE_PREFIX_PATH}/lib ${LDFLAGS}"
|
export LDFLAGS="-L${READLINE_PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
|
||||||
|
|
||||||
# Make sure pkg-config finds our build first.
|
# Make sure pkg-config finds our build first.
|
||||||
export PKG_CONFIG_PATH="${READLINE_PREFIX_PATH}/lib/pkgconfig${PKG_CONFIG_PATH:+:$PKG_CONFIG_PATH}"
|
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() {
|
use_homebrew_openssl() {
|
||||||
is_mac || return 1
|
can_use_homebrew || return 1
|
||||||
command -v brew >/dev/null || return 1
|
command -v brew >/dev/null || return 1
|
||||||
for openssl in ${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:-openssl}; do
|
for openssl in ${PYTHON_BUILD_HOMEBREW_OPENSSL_FORMULA:-openssl}; do
|
||||||
local ssldir="$(brew --prefix "${openssl}" || true)"
|
local ssldir="$(brew --prefix "${openssl}" || true)"
|
||||||
@@ -1440,8 +1507,8 @@ use_homebrew_openssl() {
|
|||||||
# https://bugs.python.org/issue21541
|
# https://bugs.python.org/issue21541
|
||||||
package_option python configure --with-openssl="${ssldir}"
|
package_option python configure --with-openssl="${ssldir}"
|
||||||
else
|
else
|
||||||
export CPPFLAGS="-I$ssldir/include ${CPPFLAGS}"
|
export CPPFLAGS="-I$ssldir/include ${CPPFLAGS:+ $CPPFLAGS}"
|
||||||
export LDFLAGS="-L$ssldir/lib ${LDFLAGS}"
|
export LDFLAGS="-L$ssldir/lib${LDFLAGS:+ $LDFLAGS}"
|
||||||
fi
|
fi
|
||||||
export PKG_CONFIG_PATH="$ssldir/lib/pkgconfig/:${PKG_CONFIG_PATH}"
|
export PKG_CONFIG_PATH="$ssldir/lib/pkgconfig/:${PKG_CONFIG_PATH}"
|
||||||
return
|
return
|
||||||
@@ -1463,8 +1530,8 @@ build_package_mac_openssl() {
|
|||||||
# https://bugs.python.org/issue21541
|
# https://bugs.python.org/issue21541
|
||||||
package_option python configure --with-openssl="${OPENSSL_PREFIX_PATH}"
|
package_option python configure --with-openssl="${OPENSSL_PREFIX_PATH}"
|
||||||
else
|
else
|
||||||
export CPPFLAGS="-I${OPENSSL_PREFIX_PATH}/include ${CPPFLAGS}"
|
export CPPFLAGS="-I${OPENSSL_PREFIX_PATH}/include ${CPPFLAGS:+ $CPPFLAGS}"
|
||||||
export LDFLAGS="-L${OPENSSL_PREFIX_PATH}/lib ${LDFLAGS}"
|
export LDFLAGS="-L${OPENSSL_PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Make sure pkg-config finds our build first.
|
# 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}" }
|
RbConfig::CONFIG.fetch("configure_args").shellsplit.each { |arg| $stderr.puts " #{arg}" }
|
||||||
exit 1
|
exit 1
|
||||||
end
|
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() {
|
use_homebrew_zlib() {
|
||||||
is_mac || return 1
|
can_use_homebrew || return 1
|
||||||
local brew_zlib="$(brew --prefix zlib 2>/dev/null || true)"
|
local brew_zlib="$(brew --prefix zlib 2>/dev/null || true)"
|
||||||
if [ -d "$brew_zlib" ]; then
|
if [ -d "$brew_zlib" ]; then
|
||||||
echo "python-build: use zlib from homebrew"
|
echo "python-build: use zlib from homebrew"
|
||||||
@@ -1538,25 +1605,30 @@ use_homebrew_zlib() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use_xcode_sdk_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)"
|
local xc_sdk_path="$(xcrun --show-sdk-path 2>/dev/null || true)"
|
||||||
if [ -d "$xc_sdk_path" ]; then
|
if [ -d "$xc_sdk_path" ]; then
|
||||||
echo "python-build: use zlib from xcode sdk"
|
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
|
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
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
use_homebrew_tcltk() {
|
use_homebrew_tcltk() {
|
||||||
is_mac || return 1
|
can_use_homebrew || return 1
|
||||||
# get the version from the folder that homebrew versions
|
# get the version from the folder that homebrew versions
|
||||||
local tcltk_libdir="$(brew --prefix tcl-tk 2>/dev/null || true)"
|
local tcltk_libdir="$(brew --prefix tcl-tk 2>/dev/null || true)"
|
||||||
if [ -d "$tcltk_libdir" ]; then
|
if [ -d "$tcltk_libdir" ]; then
|
||||||
echo "python-build: use tcl-tk from homebrew"
|
echo "python-build: use tcl-tk from homebrew"
|
||||||
local tcltk_version="$(sh -c '. '"$tcltk_libdir"'/lib/tclConfig.sh; echo $TCL_VERSION')"
|
if [[ -z "$PYTHON_BUILD_TCLTK_USE_PKGCONFIG" ]]; then
|
||||||
package_option python configure --with-tcltk-libs="-L$tcltk_libdir/lib -ltcl$tcltk_version -ltk$tcltk_version"
|
local tcltk_version="$(sh -c '. '"$tcltk_libdir"'/lib/tclConfig.sh; echo $TCL_VERSION')"
|
||||||
package_option python configure --with-tcltk-includes="-I$tcltk_libdir/include"
|
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
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1591,13 +1663,13 @@ use_custom_tcltk() {
|
|||||||
get_tcltk_flag_from() {
|
get_tcltk_flag_from() {
|
||||||
IFS=$'\n'
|
IFS=$'\n'
|
||||||
# parse input string into array
|
# parse input string into array
|
||||||
local opts_arr=( $(xargs -n1 <<<"$1") )
|
local opts_arr=( $(xargs -n1 <<<"$1") )
|
||||||
|
|
||||||
# iterate through `opts_arr`, break if `--with-tcltk-libs=` was found.
|
# iterate through `opts_arr`, break if `--with-tcltk-libs=` was found.
|
||||||
for opts in ${opts_arr[@]}; do
|
for opts in ${opts_arr[@]}; do
|
||||||
# `--with-tcltk-libs=` must be the prefix.
|
# `--with-tcltk-libs=` must be the prefix.
|
||||||
if [[ "$opts" == "--with-tcltk-libs="* ]]; then
|
if [[ "$opts" == "--with-tcltk-libs="* ]]; then
|
||||||
# return
|
# return
|
||||||
echo "$opts"
|
echo "$opts"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
@@ -1607,7 +1679,7 @@ get_tcltk_flag_from() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
use_tcltk() {
|
use_tcltk() {
|
||||||
if is_mac; then
|
if can_use_homebrew; then
|
||||||
local tcltk_libdir="$(brew --prefix tcl-tk 2>/dev/null || true)"
|
local tcltk_libdir="$(brew --prefix tcl-tk 2>/dev/null || true)"
|
||||||
fi
|
fi
|
||||||
local tcl_tk_libs="$(get_tcltk_flag_from "$PYTHON_CONFIGURE_OPTS")"
|
local tcl_tk_libs="$(get_tcltk_flag_from "$PYTHON_CONFIGURE_OPTS")"
|
||||||
@@ -1621,6 +1693,16 @@ use_tcltk() {
|
|||||||
fi
|
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() {
|
build_package_enable_shared() {
|
||||||
package_option python configure --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 is_mac && [ ! -d /usr/include/X11 ]; then
|
||||||
if [ -d /opt/X11/include ]; then
|
if [ -d /opt/X11/include ]; then
|
||||||
if [[ "$CPPFLAGS" != *-I/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
|
fi
|
||||||
else
|
else
|
||||||
package_option python configure --without-tk
|
package_option python configure --without-tk
|
||||||
@@ -1637,24 +1719,37 @@ build_package_auto_tcltk() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
apply_python_patch() {
|
# extglob must be set at both parse time and runtime
|
||||||
local patchfile
|
# https://stackoverflow.com/questions/49283740/bash-script-throws-syntax-errors-when-the-extglob-option-is-set-inside-a-subsh
|
||||||
|
shopt -s extglob
|
||||||
|
package_is_python() {
|
||||||
|
shopt -s extglob
|
||||||
case "$1" in
|
case "$1" in
|
||||||
Python-* | jython-* | pypy-* | stackless-* )
|
Python-* | jython-* | pypy-* | pypy[0-9].+([0-9])-* | stackless-* )
|
||||||
patchfile="$(mktemp "${TMP}/python-patch.XXXXXX")"
|
return 0
|
||||||
cat "${2:--}" >"$patchfile"
|
;;
|
||||||
|
|
||||||
local striplevel=0
|
|
||||||
grep -q '^diff --git a/' "$patchfile" && striplevel=1
|
|
||||||
patch -p$striplevel --force -i "$patchfile"
|
|
||||||
;;
|
|
||||||
esac
|
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"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
build_package_symlink_version_suffix() {
|
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
|
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"
|
rm -rf "${PREFIX_PATH}/bin.orig"
|
||||||
mv -f "${PREFIX_PATH}/bin" "${PREFIX_PATH}/bin.orig"
|
mv -f "${PREFIX_PATH}/bin" "${PREFIX_PATH}/bin.orig"
|
||||||
fi
|
fi
|
||||||
@@ -1708,7 +1803,7 @@ verify_python() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try_python_module() {
|
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"
|
{ colorize 1 "WARNING"
|
||||||
echo ": The Python $1 extension was not compiled${3:+ $3}. Missing the ${2:-$1}?"
|
echo ": The Python $1 extension was not compiled${3:+ $3}. Missing the ${2:-$1}?"
|
||||||
return 0
|
return 0
|
||||||
@@ -1717,7 +1812,7 @@ try_python_module() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
verify_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"
|
{ colorize 1 "ERROR"
|
||||||
echo ": The Python $1 extension was not compiled. Missing the ${2:-$1}?"
|
echo ": The Python $1 extension was not compiled. Missing the ${2:-$1}?"
|
||||||
echo
|
echo
|
||||||
@@ -1863,6 +1958,11 @@ build_package_verify_py312() {
|
|||||||
build_package_verify_py311 "$1" "${2:-3.12}"
|
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
|
# Post-install check for Python 3.x rolling release scripts
|
||||||
# XXX: Will need splitting into project-specific ones if there emerge
|
# XXX: Will need splitting into project-specific ones if there emerge
|
||||||
# multiple rolling-release scripts with different checks needed
|
# multiple rolling-release scripts with different checks needed
|
||||||
@@ -1989,7 +2089,7 @@ for option in "${OPTIONS[@]}"; do
|
|||||||
VERBOSE=true
|
VERBOSE=true
|
||||||
;;
|
;;
|
||||||
"p" | "patch" )
|
"p" | "patch" )
|
||||||
HAS_PATCH=true
|
HAS_STDIN_PATCH=true
|
||||||
;;
|
;;
|
||||||
"g" | "debug" )
|
"g" | "debug" )
|
||||||
DEBUG=true
|
DEBUG=true
|
||||||
@@ -2108,26 +2208,31 @@ if [ -n "$DEBUG" ]; then
|
|||||||
package_option python configure --with-pydebug
|
package_option python configure --with-pydebug
|
||||||
fi
|
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)
|
# python-build: Specify `--libdir` on configure to fix build on openSUSE (#36)
|
||||||
package_option python configure --libdir="${PREFIX_PATH}/lib"
|
package_option python configure --libdir="${PREFIX_PATH}/lib"
|
||||||
|
|
||||||
# python-build: Set `RPATH` if `--enable-shared` was given (#65, #66, #82)
|
# 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
|
# The ld on Darwin embeds the full paths to each dylib by default
|
||||||
if [[ "$LDFLAGS" != *"-rpath="* ]] && ! is_mac; then
|
if [[ "$LDFLAGS" != *"-rpath="* ]] ; then
|
||||||
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib ${LDFLAGS}"
|
export LDFLAGS="-Wl,-rpath,${PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# python-build: Set `RPATH` if --shared` was given for PyPy (#244)
|
# python-build: Set `RPATH` if --shared` was given for PyPy (#244)
|
||||||
if [[ "$PYPY_OPTS" == *"--shared"* ]]; then
|
if [[ "$PYPY_OPTS" == *"--shared"* ]]; then
|
||||||
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib ${LDFLAGS}"
|
export LDFLAGS="-Wl,-rpath=${PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
|
# Add support for framework installation (`--enable-framework`) of CPython (#55, #99)
|
||||||
|
shopt -s extglob
|
||||||
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
|
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
|
||||||
if ! is_mac; 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
|
exit 1
|
||||||
fi
|
fi
|
||||||
create_framework_dirs() {
|
create_framework_dirs() {
|
||||||
@@ -2143,15 +2248,29 @@ if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; the
|
|||||||
create_framework_dirs "${DEFINITION_PATH##*/}"
|
create_framework_dirs "${DEFINITION_PATH##*/}"
|
||||||
# the `/Library/Frameworks` suffix makes CPython build install apps under prefix rather than into /Applications (#1003)
|
# 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"
|
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
|
fi
|
||||||
|
shopt -u extglob
|
||||||
|
|
||||||
# Build against universal SDK
|
# Build against universal SDK
|
||||||
|
shopt -s extglob
|
||||||
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]]; then
|
if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]]; then
|
||||||
if ! is_mac; 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
|
exit 1
|
||||||
fi
|
fi
|
||||||
package_option python configure --enable-universalsdk=/
|
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
|
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
|
# 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
|
# since 2.7.5 and 3.3.0 -- i.e. in all non-EOL versions
|
||||||
@@ -2161,6 +2280,7 @@ if [[ "$CONFIGURE_OPTS $PYTHON_CONFIGURE_OPTS" == *"--enable-universalsdk"* ]];
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
shopt -u extglob
|
||||||
|
|
||||||
# Compile with `--enable-unicode=ucs4` by default (#257)
|
# Compile with `--enable-unicode=ucs4` by default (#257)
|
||||||
if [[ "$PYTHON_CONFIGURE_OPTS" != *"--enable-unicode="* ]]; then
|
if [[ "$PYTHON_CONFIGURE_OPTS" != *"--enable-unicode="* ]]; then
|
||||||
@@ -2287,8 +2407,8 @@ if [ -n "$VERBOSE" ]; then
|
|||||||
trap "kill $TAIL_PID" SIGINT SIGTERM EXIT
|
trap "kill $TAIL_PID" SIGINT SIGTERM EXIT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export LDFLAGS="-L${PREFIX_PATH}/lib ${LDFLAGS}"
|
export LDFLAGS="-L${PREFIX_PATH}/lib${LDFLAGS:+ $LDFLAGS}"
|
||||||
export CPPFLAGS="-I${PREFIX_PATH}/include ${CPPFLAGS}"
|
export CPPFLAGS="-I${PREFIX_PATH}/include${CPPFLAGS:+ $CPPFLAGS}"
|
||||||
|
|
||||||
unset PYTHONHOME
|
unset PYTHONHOME
|
||||||
unset PYTHONPATH
|
unset PYTHONPATH
|
||||||
|
|||||||
@@ -108,6 +108,7 @@ class PyVersion(StrEnum):
|
|||||||
PY37 = "py37"
|
PY37 = "py37"
|
||||||
PY38 = "py38"
|
PY38 = "py38"
|
||||||
PY39 = "py39"
|
PY39 = "py39"
|
||||||
|
PY310 = "py310"
|
||||||
|
|
||||||
def version(self):
|
def version(self):
|
||||||
first, *others = self.value[2:]
|
first, *others = self.value[2:]
|
||||||
@@ -120,7 +121,7 @@ class PyVersion(StrEnum):
|
|||||||
@total_ordering
|
@total_ordering
|
||||||
class VersionStr(str):
|
class VersionStr(str):
|
||||||
def info(self):
|
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):
|
def __eq__(self, other):
|
||||||
return str(self) == str(other)
|
return str(self) == str(other)
|
||||||
@@ -199,7 +200,7 @@ class CondaVersion(NamedTuple):
|
|||||||
return PyVersion.PY37
|
return PyVersion.PY37
|
||||||
return PyVersion.PY36
|
return PyVersion.PY36
|
||||||
|
|
||||||
raise ValueError(flavor)
|
raise ValueError(self.flavor)
|
||||||
|
|
||||||
|
|
||||||
class CondaSpec(NamedTuple):
|
class CondaSpec(NamedTuple):
|
||||||
@@ -213,7 +214,10 @@ class CondaSpec(NamedTuple):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_filestem(cls, stem, md5, repo, py_version=None):
|
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]
|
suffix = miniconda_n[-1]
|
||||||
if suffix in string.digits:
|
if suffix in string.digits:
|
||||||
tflavor = miniconda_n[:-1]
|
tflavor = miniconda_n[:-1]
|
||||||
@@ -371,7 +375,7 @@ if __name__ == "__main__":
|
|||||||
reason = "already exists"
|
reason = "already exists"
|
||||||
elif key.version_str.info() <= (4, 3, 30):
|
elif key.version_str.info() <= (4, 3, 30):
|
||||||
reason = "too old"
|
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"
|
reason = "ignoring hotfix releases"
|
||||||
|
|
||||||
if reason:
|
if reason:
|
||||||
|
|||||||
104
plugins/python-build/scripts/add_miniforge.py
Executable file
104
plugins/python-build/scripts/add_miniforge.py
Executable 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)
|
||||||
9
plugins/python-build/share/python-build/3.10.10
Normal file
9
plugins/python-build/share/python-build/3.10.10
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.10.11
Normal file
9
plugins/python-build/share/python-build/3.10.11
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.10.12
Normal file
9
plugins/python-build/share/python-build/3.10.12
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.10.6
Normal file
9
plugins/python-build/share/python-build/3.10.6
Normal 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.6" "https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tar.xz#f795ff87d11d4b0c7c33bc8851b0c28648d8a4583aa2100a98c22b4326b6d3f3" standard verify_py310 copy_python_gdb ensurepip
|
||||||
|
else
|
||||||
|
install_package "Python-3.10.6" "https://www.python.org/ftp/python/3.10.6/Python-3.10.6.tgz#848cb06a5caa85da5c45bd7a9221bb821e33fc2bdcba088c127c58fad44e6343" standard verify_py310 copy_python_gdb ensurepip
|
||||||
|
fi
|
||||||
9
plugins/python-build/share/python-build/3.10.7
Normal file
9
plugins/python-build/share/python-build/3.10.7
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.10.8
Normal file
9
plugins/python-build/share/python-build/3.10.8
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.10.9
Normal file
9
plugins/python-build/share/python-build/3.10.9
Normal 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
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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_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
|
install_git "Python-3.11-dev" "https://github.com/python/cpython" 3.11 standard verify_py311 copy_python_gdb ensurepip
|
||||||
|
|||||||
10
plugins/python-build/share/python-build/3.11.0
Normal file
10
plugins/python-build/share/python-build/3.11.0
Normal 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
|
||||||
@@ -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.0b3" "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b3.tar.xz#c9b99f5315ea30f8e9fcbce6807a3739e875480d29124e6d9940f6fabcb7c902" standard verify_py311 copy_python_gdb ensurepip
|
|
||||||
else
|
|
||||||
install_package "Python-3.11.0b3" "https://www.python.org/ftp/python/3.11.0/Python-3.11.0b3.tgz#f52b738043251c88e3d6bb86e30cbf0e1098470a06b9d49feb31f145af5e8149" standard verify_py311 copy_python_gdb ensurepip
|
|
||||||
fi
|
|
||||||
10
plugins/python-build/share/python-build/3.11.1
Normal file
10
plugins/python-build/share/python-build/3.11.1
Normal 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
|
||||||
10
plugins/python-build/share/python-build/3.11.2
Normal file
10
plugins/python-build/share/python-build/3.11.2
Normal 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
|
||||||
10
plugins/python-build/share/python-build/3.11.3
Normal file
10
plugins/python-build/share/python-build/3.11.3
Normal 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
|
||||||
10
plugins/python-build/share/python-build/3.11.4
Normal file
10
plugins/python-build/share/python-build/3.11.4
Normal 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
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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_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
|
||||||
|
|||||||
9
plugins/python-build/share/python-build/3.12.0b3
Normal file
9
plugins/python-build/share/python-build/3.12.0b3
Normal 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.0b3" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0b3.tar.xz#9160c6065e9885b37c2e57865d0bb27fc7e54aaa9c186c761da30d2bddbcc9ee" standard verify_py312 copy_python_gdb ensurepip
|
||||||
|
else
|
||||||
|
install_package "Python-3.12.0b3" "https://www.python.org/ftp/python/3.12.0/Python-3.12.0b3.tgz#ef50ddb9e55d7ac25f8fa2130e6cc52247556167c5be51081fe2c7c1a67476f4" standard verify_py312 copy_python_gdb ensurepip
|
||||||
|
fi
|
||||||
7
plugins/python-build/share/python-build/3.13-dev
Normal file
7
plugins/python-build/share/python-build/3.13-dev
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.7.14
Normal file
9
plugins/python-build/share/python-build/3.7.14
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.7.15
Normal file
9
plugins/python-build/share/python-build/3.7.15
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.7.16
Normal file
9
plugins/python-build/share/python-build/3.7.16
Normal 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
|
||||||
9
plugins/python-build/share/python-build/3.7.17
Normal file
9
plugins/python-build/share/python-build/3.7.17
Normal 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
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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_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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
12
plugins/python-build/share/python-build/3.8.14
Normal file
12
plugins/python-build/share/python-build/3.8.14
Normal 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
|
||||||
12
plugins/python-build/share/python-build/3.8.15
Normal file
12
plugins/python-build/share/python-build/3.8.15
Normal 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
|
||||||
12
plugins/python-build/share/python-build/3.8.16
Normal file
12
plugins/python-build/share/python-build/3.8.16
Normal 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
|
||||||
12
plugins/python-build/share/python-build/3.8.17
Normal file
12
plugins/python-build/share/python-build/3.8.17
Normal 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
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
12
plugins/python-build/share/python-build/3.9.14
Normal file
12
plugins/python-build/share/python-build/3.9.14
Normal 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
|
||||||
12
plugins/python-build/share/python-build/3.9.15
Normal file
12
plugins/python-build/share/python-build/3.9.15
Normal 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
|
||||||
12
plugins/python-build/share/python-build/3.9.16
Normal file
12
plugins/python-build/share/python-build/3.9.16
Normal 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
|
||||||
12
plugins/python-build/share/python-build/3.9.17
Normal file
12
plugins/python-build/share/python-build/3.9.17
Normal 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
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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_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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
prefer_openssl11
|
prefer_openssl11
|
||||||
export PYTHON_BUILD_CONFIGURE_WITH_OPENSSL=1
|
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 "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
|
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
|
if has_tar_xz_support; then
|
||||||
|
|||||||
28
plugins/python-build/share/python-build/anaconda3-2022.10
Normal file
28
plugins/python-build/share/python-build/anaconda3-2022.10
Normal 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
|
||||||
28
plugins/python-build/share/python-build/anaconda3-2023.03
Normal file
28
plugins/python-build/share/python-build/anaconda3-2023.03
Normal 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
|
||||||
43
plugins/python-build/share/python-build/cinder-3.10-dev
Normal file
43
plugins/python-build/share/python-build/cinder-3.10-dev
Normal 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
|
||||||
43
plugins/python-build/share/python-build/cinder-3.8-dev
Normal file
43
plugins/python-build/share/python-build/cinder-3.8-dev
Normal 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.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 "Cinder-3.8-dev" "https://github.com/facebookincubator/cinder" "cinder/3.8" standard verify_py38 copy_python_gdb ensurepip
|
||||||
54
plugins/python-build/share/python-build/graalpy-22.3.0
Normal file
54
plugins/python-build/share/python-build/graalpy-22.3.0
Normal 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
|
||||||
54
plugins/python-build/share/python-build/graalpy-23.0.0
Normal file
54
plugins/python-build/share/python-build/graalpy-23.0.0
Normal 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
|
||||||
48
plugins/python-build/share/python-build/graalpython-22.2.0
Normal file
48
plugins/python-build/share/python-build/graalpython-22.2.0
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# 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.2.0'
|
||||||
|
BUILD=''
|
||||||
|
|
||||||
|
case "$(pypy_architecture 2>/dev/null || true)" in
|
||||||
|
"linux64" )
|
||||||
|
graalpython_arch="linux"
|
||||||
|
checksum="75a7e5d7afc158169fd87df9c69c3801aa0293dd727ba09facad6b01e1b6dee5"
|
||||||
|
;;
|
||||||
|
"osx64" )
|
||||||
|
graalpython_arch="macos"
|
||||||
|
checksum="575d78ae2be8d4ce4adbc9c61229b6f1271f557f0f3ec410a494de7b29986dd7"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
{ echo
|
||||||
|
colorize 1 "ERROR"
|
||||||
|
echo ": No binary distribution of GraalPython is available for $(pypy_architecture 2>/dev/null || true)."
|
||||||
|
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 "graalpython-${VERSION}${BUILD}" "${urlprefix}/graalpython-${VERSION}-${graalpython_arch}-amd64.tar.gz#${checksum}" "graalpython" ensurepip
|
||||||
25
plugins/python-build/share/python-build/mambaforge-22.9.0-0
Normal file
25
plugins/python-build/share/python-build/mambaforge-22.9.0-0
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-22.9.0-1
Normal file
25
plugins/python-build/share/python-build/mambaforge-22.9.0-1
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-22.9.0-2
Normal file
25
plugins/python-build/share/python-build/mambaforge-22.9.0-2
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-22.9.0-3
Normal file
25
plugins/python-build/share/python-build/mambaforge-22.9.0-3
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.2-0
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.2-0
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-0
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-0
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-1
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-1
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-2
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-2
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-3
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-3
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-4
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-4
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-5
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-5
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-6
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-6
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-7
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-7
Normal 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
|
||||||
16
plugins/python-build/share/python-build/mambaforge-4.10.3-8
Normal file
16
plugins/python-build/share/python-build/mambaforge-4.10.3-8
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.10.3-9
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.10.3-9
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.11.0-0
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.11.0-0
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.11.0-1
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.11.0-1
Normal 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
|
||||||
25
plugins/python-build/share/python-build/mambaforge-4.11.0-2
Normal file
25
plugins/python-build/share/python-build/mambaforge-4.11.0-2
Normal 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
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user