mirror of
https://github.com/pyenv/pyenv.git
synced 2026-01-13 08:17:14 +09:00
Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
05ba9388a7 | ||
|
|
c62be31e8c | ||
|
|
c8129ceee6 | ||
|
|
d9182d6edc | ||
|
|
4cf95be5ee | ||
|
|
8c50260ba2 | ||
|
|
f614e5caa5 | ||
|
|
3c539aa0bc | ||
|
|
935e1a68cd | ||
|
|
98a7a6809c | ||
|
|
45ef1677c4 | ||
|
|
c35f26af3e | ||
|
|
967ed2c367 | ||
|
|
1d8240a641 | ||
|
|
e5a6b49e02 | ||
|
|
4a3aaf4327 | ||
|
|
2c27f44612 | ||
|
|
ff94d498db | ||
|
|
99faf7f217 | ||
|
|
bf37e78693 | ||
|
|
956f78df42 | ||
|
|
56bc05d5d6 | ||
|
|
8ef33165b8 | ||
|
|
48743aa8f3 | ||
|
|
2c38423a98 | ||
|
|
aa6c9b9694 | ||
|
|
a944da76c0 | ||
|
|
aeea3ac825 | ||
|
|
7998159daa | ||
|
|
5855d9dfca | ||
|
|
22993a239e | ||
|
|
6113214f65 | ||
|
|
7418835908 | ||
|
|
b259813357 | ||
|
|
dabaa901e9 | ||
|
|
4b33cb68b6 | ||
|
|
9b85239875 | ||
|
|
f19fe0f2be | ||
|
|
293798582a |
45
.github/workflows/add_version.yml
vendored
Normal file
45
.github/workflows/add_version.yml
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
name: Add versions
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch: {}
|
||||||
|
schedule:
|
||||||
|
# Every N hours
|
||||||
|
- cron: '0 */8 * * *'
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
add_cpython:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v6
|
||||||
|
- uses: actions/setup-python@v6
|
||||||
|
with:
|
||||||
|
python-version: 3
|
||||||
|
cache: 'pip'
|
||||||
|
cache-dependency-path: plugins/python-build/scripts/requirements.txt
|
||||||
|
- run: pip install -r plugins/python-build/scripts/requirements.txt
|
||||||
|
|
||||||
|
- name: check for a release
|
||||||
|
run: |
|
||||||
|
python plugins/python-build/scripts/add_cpython.py --verbose >added_versions.lst && rc=$? || rc=$?
|
||||||
|
echo "rc=$rc" >> $GITHUB_ENV
|
||||||
|
- name: set PR properties
|
||||||
|
shell: python
|
||||||
|
run: |
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
versions=[l.rstrip() for l in open("added_versions.lst")]
|
||||||
|
with open(os.environ['GITHUB_ENV'],'a') as f:
|
||||||
|
f.write(f'branch_name=auto_add_version/{"_".join(versions)}\n')
|
||||||
|
f.write(f'pr_name=Add {", ".join(versions)}\n')
|
||||||
|
os.remove("added_versions.lst")
|
||||||
|
|
||||||
|
- name: Create Pull Request
|
||||||
|
uses: peter-evans/create-pull-request@v8
|
||||||
|
if: env.rc == 0
|
||||||
|
with:
|
||||||
|
branch: ${{ env.branch_name }}
|
||||||
|
title: ${{ env.pr_name }}
|
||||||
7
.github/workflows/macos_build.yml
vendored
7
.github/workflows/macos_build.yml
vendored
@ -10,19 +10,14 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version:
|
python-version:
|
||||||
- "3.9"
|
|
||||||
- "3.10"
|
- "3.10"
|
||||||
- "3.11"
|
- "3.11"
|
||||||
- "3.12"
|
- "3.12"
|
||||||
- "3.13"
|
- "3.13"
|
||||||
|
- "3.14"
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
# Normally, we would use the superbly maintained...
|
|
||||||
# - uses: actions/setup-python@v2
|
|
||||||
# with:
|
|
||||||
# python-version: ${{ matrix.python-version }}
|
|
||||||
# ... but in the repo, we want to test pyenv builds on macOS
|
|
||||||
- run: |
|
- run: |
|
||||||
brew install openssl readline sqlite3 xz tcl-tk@8 libb2 zstd
|
brew install openssl readline sqlite3 xz tcl-tk@8 libb2 zstd
|
||||||
# https://github.com/pyenv/pyenv#installation
|
# https://github.com/pyenv/pyenv#installation
|
||||||
|
|||||||
110
.github/workflows/modified_scripts_build.yml
vendored
110
.github/workflows/modified_scripts_build.yml
vendored
@ -6,6 +6,7 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
versions: ${{steps.modified-versions.outputs.versions}}
|
versions: ${{steps.modified-versions.outputs.versions}}
|
||||||
versions_cpython_only: ${{steps.modified-versions.outputs.versions_cpython_only}}
|
versions_cpython_only: ${{steps.modified-versions.outputs.versions_cpython_only}}
|
||||||
|
versions_macos_build_exclude: ${{steps.modified-versions.outputs.versions_macos_build_exclude}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
- run: git fetch origin "$GITHUB_BASE_REF"
|
- run: git fetch origin "$GITHUB_BASE_REF"
|
||||||
@ -26,10 +27,47 @@ jobs:
|
|||||||
echo "versions_cpython_only<<$EOF" >> $GITHUB_ENV;
|
echo "versions_cpython_only<<$EOF" >> $GITHUB_ENV;
|
||||||
echo "$versions_cpython_only" >> $GITHUB_ENV;
|
echo "$versions_cpython_only" >> $GITHUB_ENV;
|
||||||
echo "$EOF" >> $GITHUB_ENV;
|
echo "$EOF" >> $GITHUB_ENV;
|
||||||
|
- run: pip install packaging
|
||||||
|
- name: Build exclusions JSON
|
||||||
|
shell: python
|
||||||
|
run: |
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import random
|
||||||
|
import re
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
import packaging.version
|
||||||
|
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
for line in os.environ['versions'].splitlines():
|
||||||
|
if m:=re.match(r'([^-]+)-(\d+\.\d+)-(\d+\.\d+.\d+)', line):
|
||||||
|
name, version = m.group(1), packaging.version.Version(m.group(3))
|
||||||
|
|
||||||
|
# Miniconda dropped MacOS x64 support
|
||||||
|
if (name == 'miniconda3' and version >= packaging.version.Version('25.9.1')):
|
||||||
|
result.append({'os':'macos-15-intel','python-version':line})
|
||||||
|
|
||||||
|
if m:=re.match(r'([^-]+)-(\d+\.\d+)', line):
|
||||||
|
name, version = m.group(1), packaging.version.Version(m.group(2))
|
||||||
|
|
||||||
|
# Anaconda dropped MacOS x64 support
|
||||||
|
if name == 'anaconda3' and version >= packaging.version.Version('2025.12'):
|
||||||
|
result.append({'os':'macos-15-intel','python-version':line})
|
||||||
|
|
||||||
|
EOF = str(random.getrandbits(15*8))
|
||||||
|
|
||||||
|
with open(os.environ['GITHUB_ENV'],'w') as f:
|
||||||
|
f.write(f"versions_macos_build_exclude_json<<{EOF}\n")
|
||||||
|
json.dump(result, f)
|
||||||
|
f.write(f'\n{EOF}\n')
|
||||||
|
|
||||||
- id: modified-versions
|
- id: modified-versions
|
||||||
run: |
|
run: |
|
||||||
echo "versions=`echo "${{ env.versions }}" | jq -R . | jq -sc .`" >> $GITHUB_OUTPUT
|
echo "versions=`echo "${{ env.versions }}" | jq -R . | jq -sc .`" >> $GITHUB_OUTPUT
|
||||||
echo "versions_cpython_only=`echo "${{ env.versions_cpython_only }}" | jq -R . | jq -sc .`" >> $GITHUB_OUTPUT
|
echo "versions_cpython_only=`echo "${{ env.versions_cpython_only }}" | jq -R . | jq -sc .`" >> $GITHUB_OUTPUT
|
||||||
|
echo 'versions_macos_build_exclude=${{ env.versions_macos_build_exclude_json }}' >> $GITHUB_OUTPUT
|
||||||
macos_build:
|
macos_build:
|
||||||
needs: discover_modified_scripts
|
needs: discover_modified_scripts
|
||||||
if: needs.discover_modified_scripts.outputs.versions != '[""]'
|
if: needs.discover_modified_scripts.outputs.versions != '[""]'
|
||||||
@ -38,6 +76,7 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
|
python-version: ${{fromJson(needs.discover_modified_scripts.outputs.versions)}}
|
||||||
os: ["macos-14", "macos-15", "macos-15-intel"]
|
os: ["macos-14", "macos-15", "macos-15-intel"]
|
||||||
|
exclude: ${{fromJson(needs.discover_modified_scripts.outputs.versions_macos_build_exclude)}}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
@ -90,6 +129,7 @@ jobs:
|
|||||||
- run: |
|
- run: |
|
||||||
pyenv global system
|
pyenv global system
|
||||||
rm -f "$(pyenv root)"/shims/*
|
rm -f "$(pyenv root)"/shims/*
|
||||||
|
|
||||||
|
|
||||||
macos_build_bundled_dependencies:
|
macos_build_bundled_dependencies:
|
||||||
needs: discover_modified_scripts
|
needs: discover_modified_scripts
|
||||||
@ -121,37 +161,22 @@ jobs:
|
|||||||
pyenv --debug install ${{ matrix.python-version }} && rc=$? || rc=$?
|
pyenv --debug install ${{ matrix.python-version }} && rc=$? || rc=$?
|
||||||
if [[ $rc -ne 0 ]]; then echo config.log:; cat $TMPDIR/python-build*/*/config.log; false; fi
|
if [[ $rc -ne 0 ]]; then echo config.log:; cat $TMPDIR/python-build*/*/config.log; false; fi
|
||||||
pyenv global ${{ matrix.python-version }}
|
pyenv global ${{ matrix.python-version }}
|
||||||
# Micropython doesn't support --version
|
|
||||||
- run: |
|
- run: |
|
||||||
#print version
|
#print version
|
||||||
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
python --version
|
||||||
python -c 'import sys; print(sys.version)'
|
python -m pip --version
|
||||||
else
|
|
||||||
python --version
|
|
||||||
python -m pip --version
|
|
||||||
fi
|
|
||||||
# Micropython doesn't support sys.executable, os.path, older versions even os
|
|
||||||
- env:
|
- env:
|
||||||
EXPECTED_PYTHON: ${{ matrix.python-version }}
|
EXPECTED_PYTHON: ${{ matrix.python-version }}
|
||||||
run: |
|
run: |
|
||||||
#check
|
#check
|
||||||
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
python -c '
|
||||||
[[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
|
import os, sys, os.path
|
||||||
python -c 'import sys; assert sys.implementation.name == "micropython"'
|
correct_dir = os.path.join(
|
||||||
else
|
os.environ["PYENV_ROOT"],
|
||||||
python -c 'if True:
|
"versions",
|
||||||
import os, sys, os.path
|
os.environ["EXPECTED_PYTHON"],
|
||||||
correct_dir = os.path.join(
|
"bin")
|
||||||
os.environ["PYENV_ROOT"],
|
assert os.path.dirname(sys.executable) == correct_dir'
|
||||||
"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
|
|
||||||
- run: |
|
|
||||||
pyenv global system
|
|
||||||
rm -f "$(pyenv root)"/shims/*
|
|
||||||
|
|
||||||
ubuntu_build:
|
ubuntu_build:
|
||||||
needs: discover_modified_scripts
|
needs: discover_modified_scripts
|
||||||
@ -212,6 +237,10 @@ jobs:
|
|||||||
"bin")
|
"bin")
|
||||||
assert os.path.dirname(sys.executable) == correct_dir'
|
assert os.path.dirname(sys.executable) == correct_dir'
|
||||||
fi
|
fi
|
||||||
|
# bundled executables in some Anaconda releases cause the post-run step to break
|
||||||
|
- run: |
|
||||||
|
pyenv global system
|
||||||
|
rm -f "$(pyenv root)"/shims/*
|
||||||
ubuntu_build_tar_gz:
|
ubuntu_build_tar_gz:
|
||||||
needs: discover_modified_scripts
|
needs: discover_modified_scripts
|
||||||
if: needs.discover_modified_scripts.outputs.versions_cpython_only != '[""]'
|
if: needs.discover_modified_scripts.outputs.versions_cpython_only != '[""]'
|
||||||
@ -245,30 +274,19 @@ jobs:
|
|||||||
pyenv --debug install ${{ matrix.python-version }} && rc=$? || rc=$?
|
pyenv --debug install ${{ matrix.python-version }} && rc=$? || rc=$?
|
||||||
if [[ $rc -ne 0 ]]; then echo config.log:; cat $TMPDIR/python-build*/*/config.log; false; fi
|
if [[ $rc -ne 0 ]]; then echo config.log:; cat $TMPDIR/python-build*/*/config.log; false; fi
|
||||||
pyenv global ${{ matrix.python-version }}
|
pyenv global ${{ matrix.python-version }}
|
||||||
# Micropython doesn't support --version
|
|
||||||
- run: |
|
- run: |
|
||||||
#print version
|
#print version
|
||||||
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
python --version
|
||||||
python -c 'import sys; print(sys.version)'
|
python -m pip --version
|
||||||
else
|
|
||||||
python --version
|
|
||||||
python -m pip --version
|
|
||||||
fi
|
|
||||||
# Micropython doesn't support sys.executable, os.path, older versions even os
|
|
||||||
- env:
|
- env:
|
||||||
EXPECTED_PYTHON: ${{ matrix.python-version }}
|
EXPECTED_PYTHON: ${{ matrix.python-version }}
|
||||||
run: |
|
run: |
|
||||||
#check
|
#check
|
||||||
if [[ "${{ matrix.python-version }}" == "micropython-"* ]]; then
|
python -c '
|
||||||
[[ $(pyenv which python) == "${{ env.PYENV_ROOT }}/versions/${{ matrix.python-version }}/bin/python" ]] || exit 1
|
import os, sys, os.path
|
||||||
python -c 'import sys; assert sys.implementation.name == "micropython"'
|
correct_dir = os.path.join(
|
||||||
else
|
os.environ["PYENV_ROOT"],
|
||||||
python -c 'if True:
|
"versions",
|
||||||
import os, sys, os.path
|
os.environ["EXPECTED_PYTHON"],
|
||||||
correct_dir = os.path.join(
|
"bin")
|
||||||
os.environ["PYENV_ROOT"],
|
assert os.path.dirname(sys.executable) == correct_dir'
|
||||||
"versions",
|
|
||||||
os.environ["EXPECTED_PYTHON"],
|
|
||||||
"bin")
|
|
||||||
assert os.path.dirname(sys.executable) == correct_dir'
|
|
||||||
fi
|
|
||||||
|
|||||||
14
.github/workflows/pyenv_tests.yml
vendored
14
.github/workflows/pyenv_tests.yml
vendored
@ -13,26 +13,14 @@ jobs:
|
|||||||
- ubuntu-24.04
|
- ubuntu-24.04
|
||||||
- ubuntu-22.04
|
- ubuntu-22.04
|
||||||
- macos-15-intel
|
- macos-15-intel
|
||||||
|
- macos-15
|
||||||
- macos-14
|
- macos-14
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
# Normally, we would use the superbly maintained...
|
|
||||||
# - uses: actions/setup-python@v2
|
|
||||||
# with:
|
|
||||||
# python-version: ${{ matrix.python-version }}
|
|
||||||
# ... but in the repo, we want to test pyenv builds on Ubuntu
|
|
||||||
# - run: |
|
|
||||||
# sudo apt-get install -y 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
|
|
||||||
# https://github.com/pyenv/pyenv#installation
|
|
||||||
- run: |
|
- run: |
|
||||||
if test "$RUNNER_OS" == "macOS"; then
|
if test "$RUNNER_OS" == "macOS"; then
|
||||||
brew install coreutils fish
|
brew install coreutils fish
|
||||||
elif [[ $(lsb_release -sr | awk -F. '{print $1}') -ge 20 ]]; then
|
|
||||||
# Ubuntu 18 has fish 2 which lacks many features that facilitate testing
|
|
||||||
sudo apt install fish -yq
|
|
||||||
fi
|
fi
|
||||||
- run: pwd
|
- run: pwd
|
||||||
- env:
|
- env:
|
||||||
|
|||||||
7
.github/workflows/ubuntu_build.yml
vendored
7
.github/workflows/ubuntu_build.yml
vendored
@ -10,19 +10,14 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
python-version:
|
python-version:
|
||||||
- "3.9"
|
|
||||||
- "3.10"
|
- "3.10"
|
||||||
- "3.11"
|
- "3.11"
|
||||||
- "3.12"
|
- "3.12"
|
||||||
- "3.13"
|
- "3.13"
|
||||||
|
- "3.14"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v6
|
- uses: actions/checkout@v6
|
||||||
# Normally, we would use the superbly maintained...
|
|
||||||
# - uses: actions/setup-python@v2
|
|
||||||
# with:
|
|
||||||
# python-version: ${{ matrix.python-version }}
|
|
||||||
# ... but in the repo, we want to test pyenv builds on Ubuntu
|
|
||||||
- run: |
|
- run: |
|
||||||
sudo apt-get update -q; sudo apt install -yq make build-essential libssl-dev zlib1g-dev \
|
sudo apt-get update -q; sudo apt install -yq make build-essential libssl-dev zlib1g-dev \
|
||||||
libbz2-dev libreadline-dev libsqlite3-dev curl \
|
libbz2-dev libreadline-dev libsqlite3-dev curl \
|
||||||
|
|||||||
16
CHANGELOG.md
16
CHANGELOG.md
@ -1,5 +1,21 @@
|
|||||||
# Version History
|
# Version History
|
||||||
|
|
||||||
|
## Release v2.6.18
|
||||||
|
* Fix an infinite loop if a shim is symlinked to and called from a different location with "system" version active by @native-api in https://github.com/pyenv/pyenv/pull/3375
|
||||||
|
* CI: Update and cleanup workflow scripts by @native-api in https://github.com/pyenv/pyenv/pull/3372
|
||||||
|
* Add PowerShell support by @fblanchetNaN in https://github.com/pyenv/pyenv/pull/2749
|
||||||
|
* rehash: support older BSD `mktemp` by @native-api in https://github.com/pyenv/pyenv/pull/3376
|
||||||
|
* rehash: report final lock acquisition error while silencing provisional ones; init: don't silence automatic rehash by @native-api in https://github.com/pyenv/pyenv/pull/3377
|
||||||
|
* pyenv launcher: introduce and export _PYENV_INSTALL_PREFIX by @rockandska in https://github.com/pyenv/pyenv/pull/3334
|
||||||
|
* README: Document how to change Python version in a shell spawned from a Python-based program (e.g. Jupyter) by @native-api in https://github.com/pyenv/pyenv/pull/3380
|
||||||
|
* Recognize an argument to -j in MAKEFLAGS when building extensions in 3.10-3.11 and latest 3.5-3.9 by @native-api in https://github.com/pyenv/pyenv/pull/3379
|
||||||
|
* CI: add a script to autogenerate CPython build scripts by @native-api in https://github.com/pyenv/pyenv/pull/3358
|
||||||
|
* Add miniconda3-25.11.1-1 by @binbjz in https://github.com/pyenv/pyenv/pull/3382
|
||||||
|
* CI: exclude unsupported MacOS-x64 for recent Miniconda versions by @binbjz in https://github.com/pyenv/pyenv/pull/3385
|
||||||
|
* Auto-accept TOS for miniconda3-25+ by @native-api in https://github.com/pyenv/pyenv/pull/3386
|
||||||
|
* Add anaconda-2025.12-1 by @native-api in https://github.com/pyenv/pyenv/pull/3387
|
||||||
|
* CI: automatically check for CPython releases and generate PRs by @native-api in https://github.com/pyenv/pyenv/pull/3388
|
||||||
|
|
||||||
## Release v2.6.17
|
## Release v2.6.17
|
||||||
* Add miniforge 25.9.1-0, 25.11.0-1 by @13steinj in https://github.com/pyenv/pyenv/pull/3371
|
* Add miniforge 25.9.1-0, 25.11.0-1 by @13steinj in https://github.com/pyenv/pyenv/pull/3371
|
||||||
* miniconda3-latest: auto accept TOS by @native-api in https://github.com/pyenv/pyenv/pull/3373
|
* miniconda3-latest: auto accept TOS by @native-api in https://github.com/pyenv/pyenv/pull/3373
|
||||||
|
|||||||
43
README.md
43
README.md
@ -67,6 +67,7 @@ This project was forked from [rbenv](https://github.com/rbenv/rbenv) and
|
|||||||
* [Locating Pyenv-provided Python Installations](#locating-pyenv-provided-python-installations)
|
* [Locating Pyenv-provided Python Installations](#locating-pyenv-provided-python-installations)
|
||||||
* [Advanced Configuration](#advanced-configuration)
|
* [Advanced Configuration](#advanced-configuration)
|
||||||
* [Using Pyenv without shims](#using-pyenv-without-shims)
|
* [Using Pyenv without shims](#using-pyenv-without-shims)
|
||||||
|
* [Running nested shells from Python-based programs](#running-nested-shells-from-python-based-programs)
|
||||||
* [Environment variables](#environment-variables)
|
* [Environment variables](#environment-variables)
|
||||||
* **[Development](#development)**
|
* **[Development](#development)**
|
||||||
* [Contributing](#contributing)
|
* [Contributing](#contributing)
|
||||||
@ -271,6 +272,20 @@ See [Advanced configuration](#advanced-configuration) for details and more confi
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
#### Microsoft PowerShell
|
||||||
|
|
||||||
|
<details>
|
||||||
|
|
||||||
|
Add the commands to `$profile.CurrentUserAllHosts` by running the following in your terminal:
|
||||||
|
|
||||||
|
~~~ pwsh
|
||||||
|
echo '$Env:PYENV_ROOT="$Env:HOME/.pyenv"' >> $profile.CurrentUserAllHosts
|
||||||
|
echo 'if (Test-Path -LP "$Env:PYENV_ROOT/bin" -PathType Container) {
|
||||||
|
$Env:PATH="$Env:PYENV_ROOT/bin:$Env:PATH" }' >> $profile.CurrentUserAllHosts
|
||||||
|
echo 'iex ((pyenv init -) -join "`n")' >> $profile.CurrentUserAllHosts
|
||||||
|
~~~
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
### C. Restart your shell
|
### C. Restart your shell
|
||||||
----
|
----
|
||||||
@ -689,7 +704,7 @@ opposed to this idea. Here's what `eval "$(pyenv init -)"` actually does:
|
|||||||
|
|
||||||
3. **Installs autocompletion.** This is entirely optional but pretty
|
3. **Installs autocompletion.** This is entirely optional but pretty
|
||||||
useful. Sourcing `<pyenv installation prefix>/completions/pyenv.bash` will set that
|
useful. Sourcing `<pyenv installation prefix>/completions/pyenv.bash` will set that
|
||||||
up. There are also completions for Zsh and Fish.
|
up. There are also completions for Zsh, Fish and PowerShell.
|
||||||
|
|
||||||
4. **Rehashes shims.** From time to time you'll need to rebuild your
|
4. **Rehashes shims.** From time to time you'll need to rebuild your
|
||||||
shim files. Doing this on init makes sure everything is up to
|
shim files. Doing this on init makes sure everything is up to
|
||||||
@ -740,6 +755,32 @@ as currently configured.
|
|||||||
`pyenv exec` works by prepending `$(pyenv root)/versions/<selected version>/bin`
|
`pyenv exec` works by prepending `$(pyenv root)/versions/<selected version>/bin`
|
||||||
to `PATH` in the `<command>`'s environment, the same as what e.g. RVM does.
|
to `PATH` in the `<command>`'s environment, the same as what e.g. RVM does.
|
||||||
|
|
||||||
|
### Running nested shells from Python-based programs
|
||||||
|
|
||||||
|
In addition to altering `PATH`, `pyenv exec` sets `PYENV_VERSION` in the
|
||||||
|
executed program's environment to ensure that it won't spontaneouly switch to
|
||||||
|
using a different Python version.
|
||||||
|
|
||||||
|
Some Python-based programs (e.g. Jupyter) can spawn nested shell sessions.
|
||||||
|
`pyenv version` in such a shell would dutily report that the current version was
|
||||||
|
set by an environment variable.
|
||||||
|
|
||||||
|
Depending on your use case, this version lock may be undesirable.
|
||||||
|
In this case, you need to change or unset the environment variable,
|
||||||
|
either directly or via `pyenv shell`.
|
||||||
|
|
||||||
|
To automate this, you can do so in your shell's interactive startup file,
|
||||||
|
detecting the nested shell session via some characteristic environment variable
|
||||||
|
that the spawning application sets.
|
||||||
|
|
||||||
|
E.g. in Jupyter's case (as of this writing), it's `JUPYTER_SERVER_ROOT`,
|
||||||
|
and the corresponding `~/.bashrc` line may look like this:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
[[ -n $JUPYTER_SERVER_ROOT ]] && unset PYENV_VERSION
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Environment variables
|
### Environment variables
|
||||||
|
|
||||||
|
|||||||
17
completions/pyenv.pwsh
Normal file
17
completions/pyenv.pwsh
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
$scriptblock = {
|
||||||
|
param($wordToComplete, $commandAst, $cursorPosition)
|
||||||
|
$words = $commandAst.ToString()
|
||||||
|
if ( $wordToComplete ) {
|
||||||
|
$matches = (($words[0..$cursorPosition] -join '') | Select-String -Pattern "\s+" -AllMatches).Matches
|
||||||
|
if ( $matches ) {
|
||||||
|
$cursorPosition = $matches[-1].Index - 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$words = $words[0..$cursorPosition] -join '' -split "\s+"
|
||||||
|
if ( $words.Count -ge 2 ) {
|
||||||
|
pyenv completions $words[1] | where { $_ -match $wordToComplete }
|
||||||
|
} else {
|
||||||
|
pyenv commands | where { $_ -match $wordToComplete }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Register-ArgumentCompleter -Native -CommandName pyenv -ScriptBlock $scriptblock
|
||||||
@ -76,23 +76,27 @@ export PYENV_DIR
|
|||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
|
||||||
bin_path="$(abs_dirname "$0")"
|
_PYENV_INSTALL_PREFIX="$(abs_dirname "$0")"
|
||||||
for plugin_bin in "${bin_path%/*}"/plugins/*/bin; do
|
_PYENV_INSTALL_PREFIX="${_PYENV_INSTALL_PREFIX%/*}"
|
||||||
|
|
||||||
|
export _PYENV_INSTALL_PREFIX
|
||||||
|
|
||||||
|
for plugin_bin in "${_PYENV_INSTALL_PREFIX}"/plugins/*/bin; do
|
||||||
PATH="${plugin_bin}:${PATH}"
|
PATH="${plugin_bin}:${PATH}"
|
||||||
done
|
done
|
||||||
# PYENV_ROOT can be set to anything, so it may happen to be equal to the base path above,
|
# PYENV_ROOT can be set to anything, so it may happen to be equal to the base path above,
|
||||||
# resulting in duplicate PATH entries
|
# resulting in duplicate PATH entries
|
||||||
if [ "${bin_path%/*}" != "$PYENV_ROOT" ]; then
|
if [ "${_PYENV_INSTALL_PREFIX}" != "$PYENV_ROOT" ]; then
|
||||||
for plugin_bin in "${PYENV_ROOT}"/plugins/*/bin; do
|
for plugin_bin in "${PYENV_ROOT}"/plugins/*/bin; do
|
||||||
PATH="${plugin_bin}:${PATH}"
|
PATH="${plugin_bin}:${PATH}"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
export PATH="${bin_path}:${PATH}"
|
export PATH="${_PYENV_INSTALL_PREFIX}/libexec:${PATH}"
|
||||||
|
|
||||||
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:${PYENV_ROOT}/pyenv.d"
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:${PYENV_ROOT}/pyenv.d"
|
||||||
if [ "${bin_path%/*}" != "$PYENV_ROOT" ]; then
|
if [ "${_PYENV_INSTALL_PREFIX}" != "$PYENV_ROOT" ]; then
|
||||||
# Add pyenv's own `pyenv.d` unless pyenv was cloned to PYENV_ROOT
|
# Add pyenv's own `pyenv.d` unless pyenv was cloned to PYENV_ROOT
|
||||||
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:${bin_path%/*}/pyenv.d"
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:${_PYENV_INSTALL_PREFIX}/pyenv.d"
|
||||||
fi
|
fi
|
||||||
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:/usr/etc/pyenv.d:/usr/local/etc/pyenv.d:/etc/pyenv.d:/usr/lib/pyenv/hooks"
|
PYENV_HOOK_PATH="${PYENV_HOOK_PATH}:/usr/etc/pyenv.d:/usr/local/etc/pyenv.d:/etc/pyenv.d:/usr/lib/pyenv/hooks"
|
||||||
for plugin_hook in "${PYENV_ROOT}/plugins/"*/etc/pyenv.d; do
|
for plugin_hook in "${PYENV_ROOT}/plugins/"*/etc/pyenv.d; do
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
set -e
|
set -e
|
||||||
[ -n "$PYENV_DEBUG" ] && set -x
|
[ -n "$PYENV_DEBUG" ] && set -x
|
||||||
|
|
||||||
version="2.6.17"
|
version="2.6.18"
|
||||||
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
|
||||||
|
|||||||
@ -29,8 +29,17 @@ if [ -z "$PYENV_COMMAND" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -n $_PYENV_SHIM_PATH ]]; then
|
||||||
|
PROGRAM="$(echo "$PYENV_COMMAND" | tr a-z- A-Z_ | sed 's/[^A-Z0-9_]/_/g')"
|
||||||
|
NR_PYENV_SHIM_PATHS_PROGRAM="_PYENV_SHIM_PATHS_${PROGRAM}"
|
||||||
|
export -- "$NR_PYENV_SHIM_PATHS_PROGRAM=$_PYENV_SHIM_PATH${!NR_PYENV_SHIM_PATHS_PROGRAM:+:${!NR_PYENV_SHIM_PATHS_PROGRAM}}"
|
||||||
|
unset PROGRAM NR_PYENV_SHIM_PATHS_PROGRAM
|
||||||
|
unset _PYENV_SHIM_PATH
|
||||||
|
fi
|
||||||
|
|
||||||
PYENV_COMMAND_PATH="$(pyenv-which "$PYENV_COMMAND")"
|
PYENV_COMMAND_PATH="$(pyenv-which "$PYENV_COMMAND")"
|
||||||
PYENV_BIN_PATH="${PYENV_COMMAND_PATH%/*}"
|
PYENV_BIN_PATH="${PYENV_COMMAND_PATH%/*}"
|
||||||
|
|
||||||
export PYENV_VERSION
|
export PYENV_VERSION
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
OLDIFS="$IFS"
|
||||||
|
|||||||
@ -15,6 +15,7 @@ if [ "$1" = "--complete" ]; then
|
|||||||
echo bash
|
echo bash
|
||||||
echo fish
|
echo fish
|
||||||
echo ksh
|
echo ksh
|
||||||
|
echo pwsh
|
||||||
echo zsh
|
echo zsh
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
@ -102,6 +103,10 @@ function detect_profile() {
|
|||||||
profile_explain="~/.bash_profile if it exists, otherwise ~/.profile"
|
profile_explain="~/.bash_profile if it exists, otherwise ~/.profile"
|
||||||
rc='~/.bashrc'
|
rc='~/.bashrc'
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
profile='~/.config/powershell/profile.ps1'
|
||||||
|
rc='~/.config/powershell/profile.ps1'
|
||||||
|
;;
|
||||||
zsh )
|
zsh )
|
||||||
profile='~/.zprofile'
|
profile='~/.zprofile'
|
||||||
rc='~/.zshrc'
|
rc='~/.zshrc'
|
||||||
@ -150,6 +155,15 @@ function help_() {
|
|||||||
echo 'pyenv init - fish | source'
|
echo 'pyenv init - fish | source'
|
||||||
echo
|
echo
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
echo '# Load pyenv automatically by appending'
|
||||||
|
echo "# the following to $profile :"
|
||||||
|
echo
|
||||||
|
echo '$Env:PYENV_ROOT="$Env:HOME/.pyenv"'
|
||||||
|
echo 'if (Test-Path -LP "$Env:PYENV_ROOT/bin" -PathType Container) {'
|
||||||
|
echo ' $Env:PATH="$Env:PYENV_ROOT/bin:$Env:PATH" }'
|
||||||
|
echo 'iex ((pyenv init -) -join "`n")'
|
||||||
|
;;
|
||||||
* )
|
* )
|
||||||
echo '# Load pyenv automatically by appending'
|
echo '# Load pyenv automatically by appending'
|
||||||
echo -n "# the following to "
|
echo -n "# the following to "
|
||||||
@ -186,6 +200,11 @@ function print_path() {
|
|||||||
print_path_prepend_shims
|
print_path_prepend_shims
|
||||||
echo 'end'
|
echo 'end'
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
echo 'if ( $Env:PATH -notmatch "'"${PYENV_ROOT}/shims"'" ) {'
|
||||||
|
print_path_prepend_shims
|
||||||
|
echo '}'
|
||||||
|
;;
|
||||||
* )
|
* )
|
||||||
echo 'if [[ ":$PATH:" != *'\':"${PYENV_ROOT}"/shims:\''* ]]; then'
|
echo 'if [[ ":$PATH:" != *'\':"${PYENV_ROOT}"/shims:\''* ]]; then'
|
||||||
print_path_prepend_shims
|
print_path_prepend_shims
|
||||||
@ -199,6 +218,10 @@ function print_path() {
|
|||||||
echo 'set -eg PATH[$pyenv_index]; end; set -e pyenv_index'
|
echo 'set -eg PATH[$pyenv_index]; end; set -e pyenv_index'
|
||||||
print_path_prepend_shims
|
print_path_prepend_shims
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
echo '$Env:PATH="$(($Env:PATH -split '"':'"' | where { -not ($_ -match '"'${PYENV_ROOT}/shims'"') }) -join '"':'"')"'
|
||||||
|
print_path_prepend_shims
|
||||||
|
;;
|
||||||
* )
|
* )
|
||||||
# Some distros (notably Debian-based) set Bash's SSH_SOURCE_BASHRC compilation option
|
# Some distros (notably Debian-based) set Bash's SSH_SOURCE_BASHRC compilation option
|
||||||
# that makes it source `bashrc` under SSH even when not interactive.
|
# that makes it source `bashrc` under SSH even when not interactive.
|
||||||
@ -223,6 +246,9 @@ function print_path_prepend_shims() {
|
|||||||
fish )
|
fish )
|
||||||
echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH'
|
echo 'set -gx PATH '\'"${PYENV_ROOT}/shims"\'' $PATH'
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
echo '$Env:PATH="'"${PYENV_ROOT}"'/shims:$Env:PATH"'
|
||||||
|
;;
|
||||||
* )
|
* )
|
||||||
echo 'export PATH="'"${PYENV_ROOT}"'/shims:${PATH}"'
|
echo 'export PATH="'"${PYENV_ROOT}"'/shims:${PATH}"'
|
||||||
;;
|
;;
|
||||||
@ -234,6 +260,9 @@ function print_env() {
|
|||||||
fish )
|
fish )
|
||||||
echo "set -gx PYENV_SHELL $shell"
|
echo "set -gx PYENV_SHELL $shell"
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
echo '$Env:PYENV_SHELL="'"$shell"'"'
|
||||||
|
;;
|
||||||
* )
|
* )
|
||||||
echo "export PYENV_SHELL=$shell"
|
echo "export PYENV_SHELL=$shell"
|
||||||
;;
|
;;
|
||||||
@ -241,15 +270,29 @@ function print_env() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function print_completion() {
|
function print_completion() {
|
||||||
completion="${0%/*/*}/completions/pyenv.${shell}"
|
completion="${_PYENV_INSTALL_PREFIX}/completions/pyenv.${shell}"
|
||||||
if [ -r "$completion" ]; then
|
if [ -r "$completion" ]; then
|
||||||
echo "source '$completion'"
|
case "$shell" in
|
||||||
|
pwsh )
|
||||||
|
echo "iex (gc $completion -Raw)"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo "source '$completion'"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function print_rehash() {
|
function print_rehash() {
|
||||||
if [ -z "$no_rehash" ]; then
|
if [ -z "$no_rehash" ]; then
|
||||||
echo 'command pyenv rehash 2>/dev/null'
|
case "$shell" in
|
||||||
|
pwsh )
|
||||||
|
echo '& pyenv rehash'
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
echo 'command pyenv rehash'
|
||||||
|
;;
|
||||||
|
esac
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,6 +313,25 @@ function print_shell_function() {
|
|||||||
end
|
end
|
||||||
end'
|
end'
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
cat <<EOS
|
||||||
|
function pyenv {
|
||||||
|
\$command=""
|
||||||
|
if ( \$args.Count -gt 0 ) {
|
||||||
|
\$command, \$args = \$args
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ("${commands[*]}" -split ' ') -contains \$command ) {
|
||||||
|
\$shell_cmds = (& (get-command -commandtype application pyenv) sh-\$command \$args)
|
||||||
|
if ( \$shell_cmds.Count -gt 0 ) {
|
||||||
|
iex (\$shell_cmds -join "\`n")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
& (get-command -commandtype application pyenv) \$command \$args
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOS
|
||||||
|
;;
|
||||||
ksh | ksh93 | mksh )
|
ksh | ksh93 | mksh )
|
||||||
echo \
|
echo \
|
||||||
'function pyenv {
|
'function pyenv {
|
||||||
@ -281,8 +343,8 @@ end'
|
|||||||
local command=${1:-}'
|
local command=${1:-}'
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ "$shell" != "fish" ]; then
|
if [ "$shell" != "fish" ] && [ "$shell" != "pwsh" ]; then
|
||||||
IFS="|"
|
IFS="|"
|
||||||
echo \
|
echo \
|
||||||
' [ "$#" -gt 0 ] && shift
|
' [ "$#" -gt 0 ] && shift
|
||||||
|
|||||||
@ -10,6 +10,8 @@ PROTOTYPE_SHIM_PATH="${SHIM_PATH}/.pyenv-shim"
|
|||||||
# Create the shims directory if it doesn't already exist.
|
# Create the shims directory if it doesn't already exist.
|
||||||
mkdir -p "$SHIM_PATH"
|
mkdir -p "$SHIM_PATH"
|
||||||
|
|
||||||
|
declare last_acquire_error
|
||||||
|
|
||||||
acquire_lock() {
|
acquire_lock() {
|
||||||
# Ensure only one instance of pyenv-rehash is running at a time by
|
# Ensure only one instance of pyenv-rehash is running at a time by
|
||||||
# setting the shell's `noclobber` option and attempting to write to
|
# setting the shell's `noclobber` option and attempting to write to
|
||||||
@ -17,15 +19,11 @@ acquire_lock() {
|
|||||||
# to stderr and exit with a non-zero status.
|
# to stderr and exit with a non-zero status.
|
||||||
local ret
|
local ret
|
||||||
set -o noclobber
|
set -o noclobber
|
||||||
echo > "$PROTOTYPE_SHIM_PATH" 2>| /dev/null || ret=1
|
last_acquire_error="$( { ( echo -n > "$PROTOTYPE_SHIM_PATH"; ) 2>&1 1>&3 3>&1-; } 3>&1)" || ret=1
|
||||||
set +o noclobber
|
set +o noclobber
|
||||||
[ -z "${ret}" ]
|
[ -z "${ret}" ]
|
||||||
}
|
}
|
||||||
|
|
||||||
# If we were able to obtain a lock, register a trap to clean up the
|
|
||||||
# prototype shim when the process exits.
|
|
||||||
trap release_lock EXIT
|
|
||||||
|
|
||||||
remove_prototype_shim() {
|
remove_prototype_shim() {
|
||||||
rm -f "$PROTOTYPE_SHIM_PATH"
|
rm -f "$PROTOTYPE_SHIM_PATH"
|
||||||
}
|
}
|
||||||
@ -39,11 +37,17 @@ if [ ! -w "$SHIM_PATH" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
unset acquired
|
declare acquired tested_for_other_write_errors
|
||||||
start=$SECONDS
|
declare start=$SECONDS
|
||||||
while (( SECONDS <= start + ${PYENV_REHASH_TIMEOUT:-60} )); do
|
PYENV_REHASH_TIMEOUT=${PYENV_REHASH_TIMEOUT:-60}
|
||||||
if acquire_lock 2>/dev/null; then
|
while (( SECONDS <= start + PYENV_REHASH_TIMEOUT )); do
|
||||||
|
if acquire_lock; then
|
||||||
acquired=1
|
acquired=1
|
||||||
|
|
||||||
|
# If we were able to obtain a lock, register a trap to clean up the
|
||||||
|
# prototype shim when the process exits.
|
||||||
|
trap release_lock EXIT
|
||||||
|
|
||||||
break
|
break
|
||||||
else
|
else
|
||||||
#Landlock sandbox subsystem in the Linux kernel returns false information in access() as of 6.14.0,
|
#Landlock sandbox subsystem in the Linux kernel returns false information in access() as of 6.14.0,
|
||||||
@ -52,8 +56,8 @@ while (( SECONDS <= start + ${PYENV_REHASH_TIMEOUT:-60} )); do
|
|||||||
#So check for writablity by trying to write to a different file,
|
#So check for writablity by trying to write to a different file,
|
||||||
# in a way that taxes the usual use case as little as possible.
|
# in a way that taxes the usual use case as little as possible.
|
||||||
if [[ -z $tested_for_other_write_errors ]]; then
|
if [[ -z $tested_for_other_write_errors ]]; then
|
||||||
( t="$(mktemp -p "$SHIM_PATH")" && rm "$t" ) && tested_for_other_write_errors=1 ||
|
( t="$(TMPDIR="$SHIM_PATH" mktemp)" && rm "$t" ) && tested_for_other_write_errors=1 ||
|
||||||
{ echo "pyenv: cannot rehash: $SHIM_PATH isnt writable" >&2; break; }
|
{ echo "pyenv: cannot rehash: $SHIM_PATH isn't writable" >&2; break; }
|
||||||
fi
|
fi
|
||||||
# POSIX sleep(1) doesn't provide subsecond precision, but many others do
|
# POSIX sleep(1) doesn't provide subsecond precision, but many others do
|
||||||
sleep 0.1 2>/dev/null || sleep 1
|
sleep 0.1 2>/dev/null || sleep 1
|
||||||
@ -62,7 +66,9 @@ done
|
|||||||
|
|
||||||
if [ -z "${acquired}" ]; then
|
if [ -z "${acquired}" ]; then
|
||||||
if [[ -n $tested_for_other_write_errors ]]; then
|
if [[ -n $tested_for_other_write_errors ]]; then
|
||||||
echo "pyenv: cannot rehash: $PROTOTYPE_SHIM_PATH exists" >&2
|
echo "pyenv: cannot rehash: couldn't acquire lock"\
|
||||||
|
"$PROTOTYPE_SHIM_PATH for $PYENV_REHASH_TIMEOUT seconds. Last error message:" >&2
|
||||||
|
echo "$last_acquire_error" >&2
|
||||||
fi
|
fi
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -82,6 +88,10 @@ set -e
|
|||||||
program="\${0##*/}"
|
program="\${0##*/}"
|
||||||
|
|
||||||
export PYENV_ROOT="$PYENV_ROOT"
|
export PYENV_ROOT="$PYENV_ROOT"
|
||||||
|
SHIM_PATH=\${0%/*}
|
||||||
|
if [[ \$SHIM_PATH != "$PYENV_ROOT/shims" ]]; then
|
||||||
|
export _PYENV_SHIM_PATH="\$SHIM_PATH"
|
||||||
|
fi
|
||||||
exec "$(command -v pyenv)" exec "\$program" "\$@"
|
exec "$(command -v pyenv)" exec "\$program" "\$@"
|
||||||
SH
|
SH
|
||||||
chmod +x "$PROTOTYPE_SHIM_PATH"
|
chmod +x "$PROTOTYPE_SHIM_PATH"
|
||||||
|
|||||||
@ -11,11 +11,17 @@ shell="$(basename "${PYENV_SHELL:-$SHELL}")"
|
|||||||
|
|
||||||
# When pyenv shell integration is enabled, delegate to pyenv-rehash,
|
# When pyenv shell integration is enabled, delegate to pyenv-rehash,
|
||||||
# then tell the shell to empty its command lookup cache.
|
# then tell the shell to empty its command lookup cache.
|
||||||
echo "command pyenv rehash"
|
case "$shell" in
|
||||||
|
pwsh)
|
||||||
|
echo "& (get-command pyenv -commandtype application) rehash"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "command pyenv rehash"
|
||||||
|
esac
|
||||||
|
|
||||||
case "$shell" in
|
case "$shell" in
|
||||||
fish )
|
fish | pwsh )
|
||||||
# no rehash support
|
# no executable cache
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
echo "hash -r 2>/dev/null || true"
|
echo "hash -r 2>/dev/null || true"
|
||||||
|
|||||||
@ -48,6 +48,9 @@ if [ "$versions" = "--unset" ]; then
|
|||||||
echo 'set -gu PYENV_VERSION_OLD "$PYENV_VERSION"'
|
echo 'set -gu PYENV_VERSION_OLD "$PYENV_VERSION"'
|
||||||
echo "set -e PYENV_VERSION"
|
echo "set -e PYENV_VERSION"
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
echo '$Env:PYENV_VERSION, $Env:PYENV_VERSION_OLD = $null, $Env:PYENV_VERSION'
|
||||||
|
;;
|
||||||
* )
|
* )
|
||||||
echo 'PYENV_VERSION_OLD="${PYENV_VERSION-}"'
|
echo 'PYENV_VERSION_OLD="${PYENV_VERSION-}"'
|
||||||
echo "unset PYENV_VERSION"
|
echo "unset PYENV_VERSION"
|
||||||
@ -74,6 +77,16 @@ else
|
|||||||
echo "pyenv: PYENV_VERSION_OLD is not set" >&2
|
echo "pyenv: PYENV_VERSION_OLD is not set" >&2
|
||||||
false
|
false
|
||||||
end
|
end
|
||||||
|
EOS
|
||||||
|
;;
|
||||||
|
pwsh )
|
||||||
|
cat <<EOS
|
||||||
|
if ( Get-Item -Path Env:\PYENV_VERSION* ) {
|
||||||
|
\$Env:PYENV_VERSION, \$Env:PYENV_VERSION_OLD = \$Env:PYENV_VERSION_OLD, \$Env:PYENV_VERSION
|
||||||
|
} else {
|
||||||
|
Write-Error "pyenv: Env:PYENV_VERSION_OLD is not set"
|
||||||
|
return \$false
|
||||||
|
}
|
||||||
EOS
|
EOS
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
@ -109,6 +122,9 @@ if pyenv-prefix "${versions[@]}" >/dev/null; then
|
|||||||
echo 'set -gu PYENV_VERSION_OLD "$PYENV_VERSION"'
|
echo 'set -gu PYENV_VERSION_OLD "$PYENV_VERSION"'
|
||||||
echo "set -gx PYENV_VERSION \"$version\""
|
echo "set -gx PYENV_VERSION \"$version\""
|
||||||
;;
|
;;
|
||||||
|
pwsh )
|
||||||
|
echo '$Env:PYENV_VERSION, $Env:PYENV_VERSION_OLD = "'"${version}"'", $Env:PYENV_VERSION'
|
||||||
|
;;
|
||||||
* )
|
* )
|
||||||
echo 'PYENV_VERSION_OLD="${PYENV_VERSION-}"'
|
echo 'PYENV_VERSION_OLD="${PYENV_VERSION-}"'
|
||||||
echo "export PYENV_VERSION=\"${version}\""
|
echo "export PYENV_VERSION=\"${version}\""
|
||||||
|
|||||||
@ -42,15 +42,19 @@ done
|
|||||||
|
|
||||||
|
|
||||||
remove_from_path() {
|
remove_from_path() {
|
||||||
local path_to_remove="$1"
|
local -a paths_to_remove
|
||||||
local path_before
|
IFS=: paths_to_remove=($1)
|
||||||
|
local path_to_remove path_before
|
||||||
local result=":${PATH//\~/$HOME}:"
|
local result=":${PATH//\~/$HOME}:"
|
||||||
while [ "$path_before" != "$result" ]; do
|
for path_to_remove in "${paths_to_remove[@]}"; do
|
||||||
path_before="$result"
|
while true; do
|
||||||
result="${result//:$path_to_remove:/:}"
|
path_before="$result"
|
||||||
|
result="${result//:$path_to_remove:/:}"
|
||||||
|
if [[ ${#path_before} == "${#result}" ]]; then break; fi
|
||||||
|
done
|
||||||
done
|
done
|
||||||
result="${result%:}"
|
result="${result:1:${#result}-2}"
|
||||||
echo "${result#:}"
|
echo "$result"
|
||||||
}
|
}
|
||||||
|
|
||||||
if [ -z "$PYENV_COMMAND" ]; then
|
if [ -z "$PYENV_COMMAND" ]; then
|
||||||
@ -66,8 +70,10 @@ 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")"
|
PROGRAM="$(echo "$PYENV_COMMAND" | tr a-z- A-Z_ | sed 's/[^A-Z0-9_]/_/g')"
|
||||||
PYENV_COMMAND_PATH="$(command -v "$PYENV_COMMAND" || true)"
|
NR_CUSTOM_SHIM_PATHS="_PYENV_SHIM_PATHS_$PROGRAM"
|
||||||
|
SEARCH_PATH="$(remove_from_path "${PYENV_ROOT}/shims${!NR_CUSTOM_SHIM_PATHS:+:${!NR_CUSTOM_SHIM_PATHS}}")"
|
||||||
|
PYENV_COMMAND_PATH="$(PATH="$SEARCH_PATH" command -v "$PYENV_COMMAND" || true)"
|
||||||
else
|
else
|
||||||
# $version may be a prefix to be resolved by pyenv-latest
|
# $version may be a prefix to be resolved by pyenv-latest
|
||||||
version_path="$(pyenv-prefix "${version}" 2>/dev/null)" || \
|
version_path="$(pyenv-prefix "${version}" 2>/dev/null)" || \
|
||||||
|
|||||||
@ -256,7 +256,6 @@ for DEFINITION in "${DEFINITIONS[@]}"; do
|
|||||||
# Display a more helpful message if the definition wasn't found.
|
# Display a more helpful message if the definition wasn't found.
|
||||||
if [ "$STATUS" == "2" ]; then
|
if [ "$STATUS" == "2" ]; then
|
||||||
{ candidates="$(definitions "$DEFINITION")"
|
{ candidates="$(definitions "$DEFINITION")"
|
||||||
here="$(dirname "${0%/*}")/../.."
|
|
||||||
if [ -n "$candidates" ]; then
|
if [ -n "$candidates" ]; then
|
||||||
echo
|
echo
|
||||||
echo "The following versions contain \`$DEFINITION' in the name:"
|
echo "The following versions contain \`$DEFINITION' in the name:"
|
||||||
@ -266,12 +265,13 @@ for DEFINITION in "${DEFINITIONS[@]}"; do
|
|||||||
echo "See all available versions with \`pyenv install --list'."
|
echo "See all available versions with \`pyenv install --list'."
|
||||||
echo
|
echo
|
||||||
echo -n "If the version you need is missing, try upgrading pyenv"
|
echo -n "If the version you need is missing, try upgrading pyenv"
|
||||||
if [ "$here" != "${here#$(brew --prefix 2>/dev/null)}" ]; then
|
declare brew_prefix
|
||||||
|
if brew_prefix="$(brew --prefix 2>/dev/null)" && [[ $_PYENV_INSTALL_PREFIX/ == "$brew_prefix/"* ]]; then
|
||||||
printf ":\n\n"
|
printf ":\n\n"
|
||||||
echo " brew update && brew upgrade pyenv"
|
echo " brew update && brew upgrade pyenv"
|
||||||
elif [ -d "${here}/.git" ]; then
|
elif [ -d "${_PYENV_INSTALL_PREFIX}/.git" ]; then
|
||||||
printf ":\n\n"
|
printf ":\n\n"
|
||||||
echo " cd ${here} && git pull && cd -"
|
echo " cd ${_PYENV_INSTALL_PREFIX} && git pull && cd -"
|
||||||
else
|
else
|
||||||
printf ".\n"
|
printf ".\n"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
# -g/--debug Build a debug version
|
# -g/--debug Build a debug version
|
||||||
#
|
#
|
||||||
|
|
||||||
PYTHON_BUILD_VERSION="2.6.17"
|
PYTHON_BUILD_VERSION="2.6.18"
|
||||||
|
|
||||||
OLDIFS="$IFS"
|
OLDIFS="$IFS"
|
||||||
|
|
||||||
@ -1769,12 +1769,16 @@ build_package_mac_openssl() {
|
|||||||
local nokerberos
|
local nokerberos
|
||||||
[[ "$1" != openssl-1.0.* ]] || nokerberos=1
|
[[ "$1" != openssl-1.0.* ]] || nokerberos=1
|
||||||
|
|
||||||
|
# switches introduced in OpenSSL 1.1.1
|
||||||
|
local notests
|
||||||
|
[[ $(openssl_version $1) -ge 10101 ]] && notests=1
|
||||||
|
|
||||||
# switches introduced in OpenSSL 3.2
|
# switches introduced in OpenSSL 3.2
|
||||||
local extra_no_features
|
local extra_no_features
|
||||||
[[ $(openssl_version $1) -ge 30200 ]] && extra_no_features=1
|
[[ $(openssl_version $1) -ge 30200 ]] && extra_no_features=1
|
||||||
|
|
||||||
# Compile a shared lib with zlib dynamically linked.
|
# Compile a shared lib with zlib dynamically linked.
|
||||||
package_option openssl configure --openssldir="$OPENSSLDIR" zlib-dynamic no-ssl3 shared ${nokerberos:+no-ssl2 no-krb5} ${extra_no_features:+no-docs no-apps} no-tests
|
package_option openssl configure --openssldir="$OPENSSLDIR" zlib-dynamic no-ssl3 shared ${nokerberos:+no-ssl2 no-krb5} ${extra_no_features:+no-docs no-apps} ${notests:+no-tests}
|
||||||
|
|
||||||
build_package_standard "$@"
|
build_package_standard "$@"
|
||||||
|
|
||||||
|
|||||||
1
plugins/python-build/scripts/.gitignore
vendored
Normal file
1
plugins/python-build/scripts/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
/venv
|
||||||
589
plugins/python-build/scripts/add_cpython.py
Executable file
589
plugins/python-build/scripts/add_cpython.py
Executable file
@ -0,0 +1,589 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Script to add CPython releases.
|
||||||
|
|
||||||
|
Checks the CPython download archives for new versions,
|
||||||
|
then writes a build script for any which do not exist locally,
|
||||||
|
saving it to plugins/python-build/share/python-build.
|
||||||
|
|
||||||
|
"""
|
||||||
|
import argparse
|
||||||
|
import dataclasses
|
||||||
|
import hashlib
|
||||||
|
import io
|
||||||
|
import itertools
|
||||||
|
import logging
|
||||||
|
import operator
|
||||||
|
import pathlib
|
||||||
|
import pprint
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
import typing
|
||||||
|
import urllib.parse
|
||||||
|
|
||||||
|
import jc
|
||||||
|
import more_itertools
|
||||||
|
import packaging.version
|
||||||
|
import requests
|
||||||
|
import requests_html
|
||||||
|
import sortedcontainers
|
||||||
|
import tqdm
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
CUTOFF_VERSION=packaging.version.Version('3.9')
|
||||||
|
EXCLUDED_VERSIONS= {
|
||||||
|
packaging.version.Version("3.9.3") #recalled upstream
|
||||||
|
}
|
||||||
|
|
||||||
|
here = pathlib.Path(__file__).resolve()
|
||||||
|
OUT_DIR: pathlib.Path = here.parent.parent / "share" / "python-build"
|
||||||
|
|
||||||
|
T_THUNK=\
|
||||||
|
'''export PYTHON_BUILD_FREE_THREADING=1
|
||||||
|
source "${BASH_SOURCE[0]%t}"'''
|
||||||
|
|
||||||
|
|
||||||
|
def adapt_script(version: packaging.version.Version,
|
||||||
|
previous_version: packaging.version.Version) -> typing.Union[pathlib.Path, None]:
|
||||||
|
|
||||||
|
previous_version_path = OUT_DIR.joinpath(str(previous_version))
|
||||||
|
|
||||||
|
with previous_version_path.open("r", encoding='utf-8') as f:
|
||||||
|
script = f.readlines()
|
||||||
|
result = io.StringIO()
|
||||||
|
for line in script:
|
||||||
|
if m:=re.match(r'\s*install_package\s+"(?P<package>Python-\S+)"\s+'
|
||||||
|
r'"(?P<url>\S+)"\s+.*\s+verify_py(?P<verify_py_suffix>\d+)\s+.*$',
|
||||||
|
line):
|
||||||
|
existing_url_path = urllib.parse.urlparse(m.group('url')).path
|
||||||
|
try:
|
||||||
|
matched_download = more_itertools.one(
|
||||||
|
item for item in VersionDirectory.available[version].downloads
|
||||||
|
if existing_url_path.endswith(item.extension))
|
||||||
|
except ValueError:
|
||||||
|
logger.error(f'Cannot match existing URL path\'s {existing_url_path} extension '
|
||||||
|
f'to available downloads {VersionDirectory.available[version].downloads}')
|
||||||
|
return
|
||||||
|
new_package_name, new_package_url = matched_download.package_name, matched_download.url
|
||||||
|
new_package_hash = Url.sha256_url(new_package_url, VersionDirectory.session)
|
||||||
|
|
||||||
|
verify_py_suffix = str(version.major)+str(version.minor)
|
||||||
|
|
||||||
|
line = Re.sub_groups(m,
|
||||||
|
package=new_package_name,
|
||||||
|
url=new_package_url+'#'+new_package_hash,
|
||||||
|
verify_py_suffix=verify_py_suffix)
|
||||||
|
|
||||||
|
elif m:=re.match(r'\s*install_package\s+"(?P<package>openssl-\S+)"\s+'
|
||||||
|
r'"(?P<url>\S+)"\s.*$',
|
||||||
|
line):
|
||||||
|
item = VersionDirectory.openssl.get_store_latest_release()
|
||||||
|
|
||||||
|
line = Re.sub_groups(m,
|
||||||
|
package=item.package_name,
|
||||||
|
url=item.url + '#' + item.hash)
|
||||||
|
|
||||||
|
elif m:=re.match(r'\s*install_package\s+"(?P<package>readline-\S+)"\s+'
|
||||||
|
r'"(?P<url>\S+)"\s.*$',
|
||||||
|
line):
|
||||||
|
item = VersionDirectory.readline.get_store_latest_release()
|
||||||
|
|
||||||
|
line = Re.sub_groups(m,
|
||||||
|
package=item.package_name,
|
||||||
|
url=item.url + '#' + item.hash)
|
||||||
|
|
||||||
|
result.write(line)
|
||||||
|
|
||||||
|
result_path = OUT_DIR.joinpath(str(version))
|
||||||
|
logger.info(f"Writing {result_path}")
|
||||||
|
result_path.write_text(result.getvalue(), encoding='utf-8')
|
||||||
|
result.close()
|
||||||
|
|
||||||
|
return result_path
|
||||||
|
|
||||||
|
def add_version(version: packaging.version.Version):
|
||||||
|
|
||||||
|
previous_version = VersionDirectory.existing.pick_previous_version(version).version
|
||||||
|
|
||||||
|
is_prerelease_upgrade = previous_version.major==version.major\
|
||||||
|
and previous_version.minor==version.minor\
|
||||||
|
and previous_version.micro==version.micro
|
||||||
|
|
||||||
|
logger.info(f"Adding {version} based on {previous_version}"
|
||||||
|
+ (" (prerelease upgrade)" if is_prerelease_upgrade else ""))
|
||||||
|
|
||||||
|
VersionDirectory.available.get_store_available_source_downloads(version)
|
||||||
|
|
||||||
|
new_path = adapt_script(version,
|
||||||
|
previous_version)
|
||||||
|
if not new_path:
|
||||||
|
return False
|
||||||
|
VersionDirectory.existing.append(_CPythonExistingScriptInfo(version,str(new_path)))
|
||||||
|
|
||||||
|
cleanup_prerelease_upgrade(is_prerelease_upgrade, previous_version)
|
||||||
|
|
||||||
|
handle_t_thunks(version, previous_version, is_prerelease_upgrade)
|
||||||
|
|
||||||
|
print(version)
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
def cleanup_prerelease_upgrade(
|
||||||
|
is_prerelease_upgrade: bool,
|
||||||
|
previous_version: packaging.version.Version)\
|
||||||
|
-> None:
|
||||||
|
if is_prerelease_upgrade:
|
||||||
|
previous_version_path = OUT_DIR / str(previous_version)
|
||||||
|
logger.info(f'Deleting {previous_version_path}')
|
||||||
|
previous_version_path.unlink()
|
||||||
|
del VersionDirectory.existing[previous_version]
|
||||||
|
|
||||||
|
|
||||||
|
def handle_t_thunks(version, previous_version, is_prerelease_upgrade):
|
||||||
|
if (version.major, version.minor) >= (3, 13):
|
||||||
|
# an old thunk may have older version-specific code
|
||||||
|
# so it's safer to write a known version-independent template
|
||||||
|
thunk_path = OUT_DIR.joinpath(str(version) + "t")
|
||||||
|
logger.info(f"Writing {thunk_path}")
|
||||||
|
thunk_path.write_text(T_THUNK, encoding='utf-8')
|
||||||
|
if is_prerelease_upgrade:
|
||||||
|
previous_thunk_path = OUT_DIR.joinpath(str(previous_version) + "t")
|
||||||
|
logger.info(f"Deleting {previous_thunk_path}")
|
||||||
|
previous_thunk_path.unlink()
|
||||||
|
|
||||||
|
Arguments: argparse.Namespace
|
||||||
|
|
||||||
|
def main():
|
||||||
|
global Arguments
|
||||||
|
Arguments = parse_args()
|
||||||
|
logging.basicConfig(level=logging.DEBUG if Arguments.verbose else logging.INFO)
|
||||||
|
|
||||||
|
cached_session=requests_html.HTMLSession()
|
||||||
|
global VersionDirectory
|
||||||
|
VersionDirectory = _VersionDirectory(cached_session)
|
||||||
|
|
||||||
|
VersionDirectory.existing.populate()
|
||||||
|
VersionDirectory.available.populate()
|
||||||
|
|
||||||
|
for initial_release in (v for v in frozenset(VersionDirectory.available.keys())
|
||||||
|
if v.micro == 0 and v not in VersionDirectory.existing):
|
||||||
|
# may actually be a prerelease
|
||||||
|
VersionDirectory.available.get_store_available_source_downloads(initial_release, True)
|
||||||
|
del initial_release
|
||||||
|
|
||||||
|
versions_to_add = sorted(VersionDirectory.available.keys() - VersionDirectory.existing.keys())
|
||||||
|
|
||||||
|
logger.info("Versions to add:\n"+pprint.pformat(versions_to_add))
|
||||||
|
result = False
|
||||||
|
for version_to_add in versions_to_add:
|
||||||
|
result = add_version(version_to_add) or result
|
||||||
|
return int(not result)
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser(description=__doc__)
|
||||||
|
parser.add_argument(
|
||||||
|
"-d", "--dry-run", action="store_true",
|
||||||
|
help="Do not write scripts, just report them to stdout",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-v", "--verbose", action="store_true", default=0,
|
||||||
|
help="Increase verbosity of logging",
|
||||||
|
)
|
||||||
|
parsed = parser.parse_args()
|
||||||
|
return parsed
|
||||||
|
|
||||||
|
|
||||||
|
T = typing.TypeVar('T', bound=object)
|
||||||
|
|
||||||
|
K = typing.TypeVar('K', bound=typing.Hashable)
|
||||||
|
|
||||||
|
class KeyedList(typing.List[T], typing.Mapping[K, T]):
|
||||||
|
key_field: str
|
||||||
|
item_init: typing.Callable[..., T] = None
|
||||||
|
|
||||||
|
def __init__(self, seq: typing.Union[typing.Iterable[T], None] = None):
|
||||||
|
super().__init__()
|
||||||
|
self._map = {}
|
||||||
|
if seq is not None:
|
||||||
|
self.__iadd__(seq)
|
||||||
|
|
||||||
|
# read
|
||||||
|
|
||||||
|
def __getitem__(self, key: K) -> T:
|
||||||
|
return self._map[key]
|
||||||
|
|
||||||
|
def __contains__(self, key: K):
|
||||||
|
return key in self._map
|
||||||
|
|
||||||
|
def keys(self) -> typing.AbstractSet[K]:
|
||||||
|
return self._map.keys()
|
||||||
|
|
||||||
|
# write
|
||||||
|
|
||||||
|
def append(self, item: T) -> None:
|
||||||
|
key = self._getkey(item)
|
||||||
|
if key in self:
|
||||||
|
raise ValueError(f"Key '{key:r}' already present")
|
||||||
|
super().append(item)
|
||||||
|
self._map[key] = item
|
||||||
|
|
||||||
|
def __iadd__(self, other: typing.Iterable[T]):
|
||||||
|
for item in other:
|
||||||
|
self.append(item)
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __delitem__(self, key: K):
|
||||||
|
super().remove(self[key])
|
||||||
|
del self._map[key]
|
||||||
|
|
||||||
|
def clear(self):
|
||||||
|
super().__delitem__(slice(None,None))
|
||||||
|
self._map.clear()
|
||||||
|
|
||||||
|
# read-write
|
||||||
|
|
||||||
|
def get_or_create(self, key: K, **kwargs):
|
||||||
|
try:
|
||||||
|
return self[key]
|
||||||
|
except KeyError as e:
|
||||||
|
if self.item_init is None:
|
||||||
|
raise AttributeError("'item_init' must be set to use automatic item creation") from e
|
||||||
|
kwargs[self.key_field] = key
|
||||||
|
item = self.item_init(**kwargs)
|
||||||
|
self.append(item)
|
||||||
|
return item
|
||||||
|
|
||||||
|
# info
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return self.__class__.__name__ + "([" + ", ".join(repr(i) for i in self) + "])"
|
||||||
|
|
||||||
|
# private
|
||||||
|
|
||||||
|
def _getkey(self, item: T) -> K:
|
||||||
|
return getattr(item, self.key_field)
|
||||||
|
|
||||||
|
del T, K
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class _CPythonAvailableVersionDownloadInfo:
|
||||||
|
extension: str
|
||||||
|
package_name: str
|
||||||
|
url: str
|
||||||
|
|
||||||
|
class _CPythonAvailableVersionDownloadsDirectory(KeyedList[_CPythonAvailableVersionDownloadInfo, str]):
|
||||||
|
key_field = "extension"
|
||||||
|
|
||||||
|
|
||||||
|
@dataclasses.dataclass(frozen=True)
|
||||||
|
class _CPythonAvailableVersionInfo:
|
||||||
|
version: packaging.version.Version
|
||||||
|
download_page_url: str
|
||||||
|
downloads: _CPythonAvailableVersionDownloadsDirectory = dataclasses.field(
|
||||||
|
default_factory=lambda:_CPythonAvailableVersionDownloadsDirectory()
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class CPythonAvailableVersionsDirectory(KeyedList[_CPythonAvailableVersionInfo, packaging.version.Version]):
|
||||||
|
key_field = "version"
|
||||||
|
_session: requests.Session
|
||||||
|
item_init = _CPythonAvailableVersionInfo
|
||||||
|
|
||||||
|
def __init__(self, session: requests.Session, seq=None):
|
||||||
|
super().__init__(seq)
|
||||||
|
self._session = session
|
||||||
|
|
||||||
|
def populate(self):
|
||||||
|
"""
|
||||||
|
Fetch remote versions
|
||||||
|
"""
|
||||||
|
logger.info("Fetching available CPython versions")
|
||||||
|
for name, url in DownloadPage.enum_download_entries(
|
||||||
|
"https://www.python.org/ftp/python/",
|
||||||
|
r'^(\d+.*)/$', self._session,
|
||||||
|
make_name= lambda m: m.group(1)
|
||||||
|
):
|
||||||
|
v = packaging.version.Version(name)
|
||||||
|
if v < CUTOFF_VERSION or v in EXCLUDED_VERSIONS:
|
||||||
|
continue
|
||||||
|
logger.debug(f'Available version: {name} ({v}), {url}')
|
||||||
|
self.append(_CPythonAvailableVersionInfo(
|
||||||
|
v,
|
||||||
|
url
|
||||||
|
))
|
||||||
|
|
||||||
|
def get_store_available_source_downloads(self, version, refine_mode=False):
|
||||||
|
entry = self[version]
|
||||||
|
if entry.downloads:
|
||||||
|
#already retrieved
|
||||||
|
return
|
||||||
|
additional_versions_found =\
|
||||||
|
CPythonAvailableVersionsDirectory(self._session) if refine_mode else None
|
||||||
|
exact_download_found = False
|
||||||
|
for name, url in DownloadPage.enum_download_entries(
|
||||||
|
entry.download_page_url,
|
||||||
|
r'Python-.*\.(tar\.xz|tgz)$',
|
||||||
|
self._session):
|
||||||
|
m = re.match(r'(?P<package>Python-(?P<version>.*))\.(?P<extension>tar\.xz|tgz)$', name)
|
||||||
|
|
||||||
|
download_version = packaging.version.Version(m.group("version"))
|
||||||
|
if download_version != version:
|
||||||
|
if not refine_mode:
|
||||||
|
raise ValueError(f"Unexpectedly found a download {name} for {download_version} "
|
||||||
|
f"at page {entry.download_page_url} for {version}")
|
||||||
|
entry_to_fill = additional_versions_found.get_or_create(
|
||||||
|
download_version,
|
||||||
|
download_page_url=entry.download_page_url
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
exact_download_found = True
|
||||||
|
entry_to_fill = entry
|
||||||
|
|
||||||
|
entry_to_fill.downloads.append(_CPythonAvailableVersionDownloadInfo(
|
||||||
|
m.group("extension"), m.group('package'), url
|
||||||
|
))
|
||||||
|
|
||||||
|
if not exact_download_found:
|
||||||
|
actual_version = max(additional_versions_found.keys())
|
||||||
|
logger.debug(f"Refining available version {version} to {actual_version}")
|
||||||
|
del self[version]
|
||||||
|
|
||||||
|
self.append(
|
||||||
|
additional_versions_found[
|
||||||
|
actual_version
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
|
class _CPythonExistingScriptInfo(typing.NamedTuple):
|
||||||
|
version: packaging.version.Version
|
||||||
|
filename: str
|
||||||
|
|
||||||
|
class CPythonExistingScriptsDirectory(KeyedList[_CPythonExistingScriptInfo, packaging.version.Version]):
|
||||||
|
key_field = "version"
|
||||||
|
_filename_pattern = r'^\d+\.\d+(?:(t?)(-\w+)|(.\d+((?:a|b|rc)\d)?(t?)))$'
|
||||||
|
|
||||||
|
def populate(self):
|
||||||
|
"""
|
||||||
|
Enumerate existing installation scripts in share/python-build/ by pattern
|
||||||
|
"""
|
||||||
|
logger.info(f"Enumerating existing versions in {OUT_DIR}")
|
||||||
|
for entry_name in (p.name for p in OUT_DIR.iterdir() if p.is_file()):
|
||||||
|
if (not (m := re.match(self._filename_pattern, entry_name))
|
||||||
|
or m.group(1) == 't' or m.group(5) == 't'):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
v = packaging.version.Version(entry_name)
|
||||||
|
if v < CUTOFF_VERSION:
|
||||||
|
continue
|
||||||
|
# branch tip scrpts are different from release scripts and thus unusable as a pattern
|
||||||
|
if v.dev is not None:
|
||||||
|
continue
|
||||||
|
logger.debug(f"Existing version {v}")
|
||||||
|
|
||||||
|
self.append(_CPythonExistingScriptInfo(v, entry_name))
|
||||||
|
|
||||||
|
except ValueError as e:
|
||||||
|
logger.error(f"Unable to parse existing version {entry_name}: {e}")
|
||||||
|
|
||||||
|
def pick_previous_version(self,
|
||||||
|
version: packaging.version.Version) \
|
||||||
|
-> _CPythonExistingScriptInfo:
|
||||||
|
return max(v for v in self if v.version < version)
|
||||||
|
|
||||||
|
|
||||||
|
class _OpenSSLVersionInfo(typing.NamedTuple):
|
||||||
|
version: packaging.version.Version
|
||||||
|
package_name: str
|
||||||
|
url: str
|
||||||
|
hash: str
|
||||||
|
|
||||||
|
class OpenSSLVersionsDirectory(KeyedList[_OpenSSLVersionInfo, packaging.version.Version]):
|
||||||
|
key_field = "version"
|
||||||
|
|
||||||
|
def get_store_latest_release(self) \
|
||||||
|
-> _OpenSSLVersionInfo:
|
||||||
|
if self:
|
||||||
|
#already retrieved
|
||||||
|
return self[max(self.keys())]
|
||||||
|
|
||||||
|
j = requests.get("https://api.github.com/repos/openssl/openssl/releases/latest").json()
|
||||||
|
# noinspection PyTypeChecker
|
||||||
|
# urlparse can parse str as well as bytes
|
||||||
|
shasum_url = more_itertools.one(
|
||||||
|
asset['browser_download_url']
|
||||||
|
for asset in j['assets']
|
||||||
|
if urllib.parse.urlparse(asset['browser_download_url']).path.split('/')[-1].endswith('.sha256')
|
||||||
|
)
|
||||||
|
shasum_text = requests.get(shasum_url).text
|
||||||
|
shasum_data = jc.parse("hashsum", shasum_text, quiet=True)[0]
|
||||||
|
package_hash, package_filename = shasum_data["hash"], shasum_data["filename"]
|
||||||
|
del shasum_data, shasum_text, shasum_url
|
||||||
|
|
||||||
|
# OpenSSL Github repo has tag names "openssl-<version>" as of this writing like we need
|
||||||
|
# but let's not rely on that
|
||||||
|
# splitext doesn't work with a chained extension, it only splits off the last one
|
||||||
|
package_name, package_version_str = re.match(r"([^-]+-(.*?))\.\D", package_filename).groups()
|
||||||
|
package_version = packaging.version.Version(package_version_str)
|
||||||
|
|
||||||
|
package_url = more_itertools.one(
|
||||||
|
asset['browser_download_url']
|
||||||
|
for asset in j['assets']
|
||||||
|
if urllib.parse.urlparse(asset['browser_download_url']).path.split('/')[-1] == package_filename
|
||||||
|
)
|
||||||
|
|
||||||
|
result = _OpenSSLVersionInfo(package_version, package_name, package_url, package_hash)
|
||||||
|
self.append(result)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
class _ReadlineVersionInfo(typing.NamedTuple):
|
||||||
|
version : packaging.version.Version
|
||||||
|
package_name : str
|
||||||
|
url : str
|
||||||
|
hash : str
|
||||||
|
|
||||||
|
class ReadlineVersionsDirectory(KeyedList[_ReadlineVersionInfo, packaging.version.Version]):
|
||||||
|
key_field = "version"
|
||||||
|
|
||||||
|
def get_store_latest_release(self):
|
||||||
|
if not self:
|
||||||
|
self._store_latest_release()
|
||||||
|
return self._latest_release()
|
||||||
|
|
||||||
|
def _store_latest_release(self):
|
||||||
|
candidates = ReadlineVersionsDirectory()
|
||||||
|
|
||||||
|
pattern = r'(?P<package_name>readline-(?P<version>\d+(?:\.\d+)+)).tar\.gz$'
|
||||||
|
for name, url in DownloadPage.enum_download_entries(
|
||||||
|
'https://ftpmirror.gnu.org/readline/', pattern, VersionDirectory.session):
|
||||||
|
m = re.match(pattern, name)
|
||||||
|
version = packaging.version.Version(m.group('version'))
|
||||||
|
candidates.append(_ReadlineVersionInfo(
|
||||||
|
version,
|
||||||
|
m.group('package_name'),
|
||||||
|
url,
|
||||||
|
""
|
||||||
|
))
|
||||||
|
max_item = candidates._latest_release()
|
||||||
|
hash_ = Url.sha256_url(max_item.url, VersionDirectory.session)
|
||||||
|
|
||||||
|
result = _ReadlineVersionInfo(
|
||||||
|
max_item.version,
|
||||||
|
max_item.package_name,
|
||||||
|
max_item.url,
|
||||||
|
hash_)
|
||||||
|
self.append(result)
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
def _latest_release(self):
|
||||||
|
return self[max(self.keys())]
|
||||||
|
|
||||||
|
class _VersionDirectory:
|
||||||
|
def __init__(self, session):
|
||||||
|
self.existing = CPythonExistingScriptsDirectory()
|
||||||
|
self.available = CPythonAvailableVersionsDirectory(session)
|
||||||
|
self.openssl = OpenSSLVersionsDirectory()
|
||||||
|
self.readline = ReadlineVersionsDirectory()
|
||||||
|
self.session = session
|
||||||
|
VersionDirectory : _VersionDirectory
|
||||||
|
|
||||||
|
class DownloadPage:
|
||||||
|
class _DownloadPageEntry(typing.NamedTuple):
|
||||||
|
name: str
|
||||||
|
url: str
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def enum_download_entries(cls, url, pattern, session=None,
|
||||||
|
make_name = lambda m: m.string ) \
|
||||||
|
-> typing.Generator[_DownloadPageEntry, None, None]:
|
||||||
|
"""
|
||||||
|
Enum download entries in a standard Apache directory page
|
||||||
|
(incl. CPython download page https://www.python.org/ftp/python/)
|
||||||
|
or a GNU mirror directory page
|
||||||
|
(https://ftpmirror.gnu.org/<package>/ destinations)
|
||||||
|
"""
|
||||||
|
if session is None:
|
||||||
|
session = requests_html.HTMLSession()
|
||||||
|
response = session.get(url)
|
||||||
|
page = response.html
|
||||||
|
table = page.find("pre", first=True)
|
||||||
|
# some GNU mirrors format entries as a table
|
||||||
|
# (e.g. https://mirrors.ibiblio.org/gnu/readline/)
|
||||||
|
if table is None:
|
||||||
|
table = page.find("table", first=True)
|
||||||
|
links = table.find("a")
|
||||||
|
for link in links:
|
||||||
|
href = link.attrs['href']
|
||||||
|
# CPython entries are directories
|
||||||
|
name = link.text
|
||||||
|
# skip directory entries
|
||||||
|
if not (m:=re.match(pattern, name)):
|
||||||
|
continue
|
||||||
|
name = make_name(m)
|
||||||
|
yield cls._DownloadPageEntry(name, urllib.parse.urljoin(response.url, href))
|
||||||
|
|
||||||
|
|
||||||
|
class Re:
|
||||||
|
@dataclasses.dataclass
|
||||||
|
class _interval:
|
||||||
|
group: typing.Union[int, str, None]
|
||||||
|
start: int
|
||||||
|
end: int
|
||||||
|
@staticmethod
|
||||||
|
def sub_groups(match: re.Match,
|
||||||
|
/, *args: [typing.AnyStr],
|
||||||
|
**kwargs: [typing.AnyStr])\
|
||||||
|
-> typing.AnyStr:
|
||||||
|
repls={i:repl for i,repl in enumerate(args) if repl is not None}
|
||||||
|
repls.update({n:repl for n,repl in kwargs.items() if repl is not None})
|
||||||
|
|
||||||
|
intervals: sortedcontainers.SortedList[Re._interval]=\
|
||||||
|
sortedcontainers.SortedKeyList(key=operator.attrgetter("start","end"))
|
||||||
|
|
||||||
|
for group_id in itertools.chain(range(1,len(match.groups())), match.groupdict().keys()):
|
||||||
|
if group_id not in repls:
|
||||||
|
continue
|
||||||
|
if match.start(group_id) == -1:
|
||||||
|
continue
|
||||||
|
intervals.add(Re._interval(group_id,match.start(group_id),match.end(group_id)))
|
||||||
|
del group_id
|
||||||
|
|
||||||
|
last_interval=Re._interval(None,0,0)
|
||||||
|
result=""
|
||||||
|
for interval in intervals:
|
||||||
|
if interval.start < last_interval.end:
|
||||||
|
raise ValueError(f"Cannot replace intersecting matches "
|
||||||
|
f"for groups {last_interval.group} and {interval.group} "
|
||||||
|
f"(position {interval.start})")
|
||||||
|
if interval.end == interval.start and \
|
||||||
|
last_interval.start == last_interval.end == interval.start:
|
||||||
|
raise ValueError(f"Cannot replace consecutive zero-length matches "
|
||||||
|
f"for groups {last_interval.group} and {interval.group} "
|
||||||
|
f"(position {interval.start})")
|
||||||
|
|
||||||
|
result+=match.string[last_interval.end:interval.start]+repls[interval.group]
|
||||||
|
last_interval = interval
|
||||||
|
result+=match.string[last_interval.end:]
|
||||||
|
|
||||||
|
return result
|
||||||
|
|
||||||
|
class Url:
|
||||||
|
@staticmethod
|
||||||
|
def sha256_url(url, session=None):
|
||||||
|
if session is None:
|
||||||
|
session = requests_html.HTMLSession()
|
||||||
|
logger.info(f"Downloading and computing hash of {url}")
|
||||||
|
h=hashlib.sha256()
|
||||||
|
r=session.get(url,stream=True)
|
||||||
|
total_bytes=int(r.headers.get('content-length',0)) or float('inf')
|
||||||
|
with tqdm.tqdm(total=total_bytes, unit='B', unit_scale=True, unit_divisor=1024) as t:
|
||||||
|
for c in r.iter_content(1024):
|
||||||
|
t.update(len(c))
|
||||||
|
h.update(c)
|
||||||
|
return h.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
||||||
@ -32,7 +32,11 @@ CONDA_REPO = "https://repo.anaconda.com"
|
|||||||
MINICONDA_REPO = CONDA_REPO + "/miniconda"
|
MINICONDA_REPO = CONDA_REPO + "/miniconda"
|
||||||
ANACONDA_REPO = CONDA_REPO + "/archive"
|
ANACONDA_REPO = CONDA_REPO + "/archive"
|
||||||
|
|
||||||
|
auto_accept_tos_fmt="""export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
|
""".strip()
|
||||||
|
|
||||||
install_script_fmt = """
|
install_script_fmt = """
|
||||||
|
{auto_accept_tos}
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
{install_lines}
|
{install_lines}
|
||||||
* )
|
* )
|
||||||
@ -215,7 +219,9 @@ class CondaVersion(NamedTuple):
|
|||||||
# since 4.8, Miniconda specifies versions explicitly in the file name
|
# since 4.8, Miniconda specifies versions explicitly in the file name
|
||||||
raise ValueError("Miniconda 4.8+ is supposed to specify a Python version explicitly")
|
raise ValueError("Miniconda 4.8+ is supposed to specify a Python version explicitly")
|
||||||
if self.flavor == "anaconda":
|
if self.flavor == "anaconda":
|
||||||
# https://docs.anaconda.com/free/anaconda/reference/release-notes/
|
# https://www.anaconda.com/docs/tools/anaconda-org/release-notes
|
||||||
|
if v >= (2025,6):
|
||||||
|
return PyVersion.PY313
|
||||||
if v >= (2024,6):
|
if v >= (2024,6):
|
||||||
return PyVersion.PY312
|
return PyVersion.PY312
|
||||||
if v >= (2023,7):
|
if v >= (2023,7):
|
||||||
@ -233,6 +239,13 @@ class CondaVersion(NamedTuple):
|
|||||||
return PyVersion.PY36
|
return PyVersion.PY36
|
||||||
|
|
||||||
raise ValueError(self.flavor)
|
raise ValueError(self.flavor)
|
||||||
|
|
||||||
|
def requires_tos_accept(self):
|
||||||
|
"""
|
||||||
|
requires to accept TOS for installation
|
||||||
|
"""
|
||||||
|
return self.flavor == Flavor.MINICONDA \
|
||||||
|
and self.version_str.info() >= (25,)
|
||||||
|
|
||||||
|
|
||||||
class CondaSpec(NamedTuple):
|
class CondaSpec(NamedTuple):
|
||||||
@ -302,7 +315,8 @@ def make_script(specs: List[CondaSpec]):
|
|||||||
return install_script_fmt.format(
|
return install_script_fmt.format(
|
||||||
install_lines="\n".join(install_lines),
|
install_lines="\n".join(install_lines),
|
||||||
tflavor=specs[0].tflavor,
|
tflavor=specs[0].tflavor,
|
||||||
)
|
auto_accept_tos = auto_accept_tos_fmt if specs[0].version.requires_tos_accept() else ""
|
||||||
|
).lstrip()
|
||||||
|
|
||||||
|
|
||||||
def get_existing_condas(name):
|
def get_existing_condas(name):
|
||||||
|
|||||||
@ -124,20 +124,25 @@ def add_version(release, distributions):
|
|||||||
else:
|
else:
|
||||||
logger.info('Did not find specs for %(distribution)s', locals())
|
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']
|
|
||||||
|
|
||||||
if version in SKIPPED_RELEASES:
|
def main():
|
||||||
continue
|
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 version in SKIPPED_RELEASES:
|
||||||
|
continue
|
||||||
|
|
||||||
# mambaforge is retired https://github.com/conda-forge/miniforge/releases/tag/24.11.2-0
|
logger.info('Looking for %(version)s in %(out_dir)s', locals())
|
||||||
if version_tuple(version) >= (24,11,2):
|
|
||||||
distributions = DISTRIBUTIONS
|
|
||||||
else:
|
|
||||||
distributions = DISTRIBUTIONS_PRE25
|
|
||||||
|
|
||||||
if any(not list(out_dir.glob(f'{distribution}*-{version}')) for distribution in distributions):
|
# mambaforge is retired https://github.com/conda-forge/miniforge/releases/tag/24.11.2-0
|
||||||
logger.info('Downloading %(version)s', locals())
|
if version_tuple(version) >= (24, 11, 2):
|
||||||
add_version(release, distributions)
|
distributions = DISTRIBUTIONS
|
||||||
|
else:
|
||||||
|
distributions = DISTRIBUTIONS_PRE25
|
||||||
|
|
||||||
|
if any(not list(out_dir.glob(f'{distribution}*-{version}')) for distribution in distributions):
|
||||||
|
logger.info('Downloading %(version)s', locals())
|
||||||
|
add_version(release, distributions)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
|||||||
@ -1,2 +1,9 @@
|
|||||||
|
more_itertools
|
||||||
requests-html
|
requests-html
|
||||||
|
fake_useragent<2
|
||||||
lxml[html_clean]
|
lxml[html_clean]
|
||||||
|
packaging
|
||||||
|
requests
|
||||||
|
sortedcontainers
|
||||||
|
tqdm
|
||||||
|
jc @ git+https://github.com/native-api/jc@haslib_mode
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Anaconda3-2025.06-0-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-aarch64.sh#e6177f844f6156f07978c85b1f18ca3b7724d5ab5dba44b88a7f6b2452ba6271" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-0-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-aarch64.sh#e6177f844f6156f07978c85b1f18ca3b7724d5ab5dba44b88a7f6b2452ba6271" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Anaconda3-2025.06-0-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.sh#08db13f6db5dd4f99b3a6db96c68d064d50ea23742013b70f588e3a27a5204da" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-0-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-Linux-x86_64.sh#08db13f6db5dd4f99b3a6db96c68d064d50ea23742013b70f588e3a27a5204da" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Anaconda3-2025.06-0-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-MacOSX-arm64.sh#195f234204e2f18803cea38bbebefcaac5a3d8d95e2e4ee106d1b87b23b9fc4a" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-0-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-MacOSX-arm64.sh#195f234204e2f18803cea38bbebefcaac5a3d8d95e2e4ee106d1b87b23b9fc4a" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Anaconda3-2025.06-0-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-MacOSX-x86_64.sh#8625a155ff1d2848afa360e70357e14c25f0ac7ac21e4e4bf15015bc58b08d06" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-0-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-0-MacOSX-x86_64.sh#8625a155ff1d2848afa360e70357e14c25f0ac7ac21e4e4bf15015bc58b08d06" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Anaconda3-2025.06-1-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-aarch64.sh#98dfb82732991f3f4d385a265da5fd2190d65ec31ceafa0b93f3c5edf4431a5b" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-1-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-aarch64.sh#98dfb82732991f3f4d385a265da5fd2190d65ec31ceafa0b93f3c5edf4431a5b" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Anaconda3-2025.06-1-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-x86_64.sh#82976426a2c91fe1453281def386f9ebebd8fdb45dc6c970b54cfef4e9120857" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-1-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-Linux-x86_64.sh#82976426a2c91fe1453281def386f9ebebd8fdb45dc6c970b54cfef4e9120857" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Anaconda3-2025.06-1-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-MacOSX-arm64.sh#f9366a024ac6f043dc224986c54f1b4e1226e6ccb6291d83bdadb489f159d847" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-1-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-MacOSX-arm64.sh#f9366a024ac6f043dc224986c54f1b4e1226e6ccb6291d83bdadb489f159d847" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Anaconda3-2025.06-1-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-MacOSX-x86_64.sh#58139fe195337f3041259e3a611339ed3afa4d164cc9aa2a7e8e84c0673e3670" "anaconda" verify_py312
|
install_script "Anaconda3-2025.06-1-MacOSX-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.06-1-MacOSX-x86_64.sh#58139fe195337f3041259e3a611339ed3afa4d164cc9aa2a7e8e84c0673e3670" "anaconda" verify_py313
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
19
plugins/python-build/share/python-build/anaconda3-2025.12-1
Normal file
19
plugins/python-build/share/python-build/anaconda3-2025.12-1
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
|
"Linux-aarch64" )
|
||||||
|
install_script "Anaconda3-2025.12-1-Linux-aarch64" "https://repo.anaconda.com/archive/Anaconda3-2025.12-1-Linux-aarch64.sh#9ba6b32919dfd1964377a4ac5c5e4de645b6bd09efab4a25aaf6e121a60e525c" "anaconda" verify_py313
|
||||||
|
;;
|
||||||
|
"Linux-x86_64" )
|
||||||
|
install_script "Anaconda3-2025.12-1-Linux-x86_64" "https://repo.anaconda.com/archive/Anaconda3-2025.12-1-Linux-x86_64.sh#132f1f312d05e391906b959ad83aa411b97ece55966bb34df011ef41ba60a35c" "anaconda" verify_py313
|
||||||
|
;;
|
||||||
|
"MacOSX-arm64" )
|
||||||
|
install_script "Anaconda3-2025.12-1-MacOSX-arm64" "https://repo.anaconda.com/archive/Anaconda3-2025.12-1-MacOSX-arm64.sh#f998f0918b9f06e08c3444f2b2c897fd3036da6725441ca064aa71ad47c75481" "anaconda" verify_py313
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
{ 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
|
||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-Linux-aarch64.sh#d8a975d2194aab5ace390c273c5328be89342b956711c1648d02c87e4c4ffeb1" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-Linux-aarch64.sh#d8a975d2194aab5ace390c273c5328be89342b956711c1648d02c87e4c4ffeb1" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py310_25.1.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-Linux-s390x.sh#087d1cb3708da2a07def69e925731a87b500a9b5befec5e7666422480a5edc67" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-Linux-s390x.sh#087d1cb3708da2a07def69e925731a87b500a9b5befec5e7666422480a5edc67" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-Linux-x86_64.sh#2346f43213d3e96abca95d0a7df2575d52c66030f2feb90d3d58ed3eabe76aa3" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-Linux-x86_64.sh#2346f43213d3e96abca95d0a7df2575d52c66030f2feb90d3d58ed3eabe76aa3" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-MacOSX-arm64.sh#e52fabc1c331e79cb4a348eea0ac9fc75742609ed5a41370a1e8790a97c13449" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-MacOSX-arm64.sh#e52fabc1c331e79cb4a348eea0ac9fc75742609ed5a41370a1e8790a97c13449" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-MacOSX-x86_64.sh#3d9720b16428a924b09f460f942be1f841c28d9ceeff9149051a8f4241745839" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-0-MacOSX-x86_64.sh#3d9720b16428a924b09f460f942be1f841c28d9ceeff9149051a8f4241745839" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-1-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-Linux-aarch64.sh#"a72a3247d4c5843bf9ba3e902218ada02e2b75b16260541befd7ac0961077fa9 "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-Linux-aarch64.sh#a72a3247d4c5843bf9ba3e902218ada02e2b75b16260541befd7ac0961077fa9" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py310_25.1.1-1-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-Linux-s390x.sh#072b62a97432048e5ad1e9a987c6739de719192f6c19c79b06d1e05424cd4c35" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-1-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-Linux-s390x.sh#072b62a97432048e5ad1e9a987c6739de719192f6c19c79b06d1e05424cd4c35" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-1-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-Linux-x86_64.sh#585972959914f1f9be463284d477717eb10f7306bda63f2ec3c4c86047b9dd72" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-Linux-x86_64.sh#585972959914f1f9be463284d477717eb10f7306bda63f2ec3c4c86047b9dd72" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-1-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-MacOSX-arm64.sh#0be344f9eb9e7cf7c2d45598922674e599739c9a9f6c5ee1436238005da9dd03" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-MacOSX-arm64.sh#0be344f9eb9e7cf7c2d45598922674e599739c9a9f6c5ee1436238005da9dd03" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-1-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-MacOSX-x86_64.sh#497d6deb3932f8f0257a3db515419e871a0f1ecb155e0fd80d13ca7bbccbecac" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-1-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-1-MacOSX-x86_64.sh#497d6deb3932f8f0257a3db515419e871a0f1ecb155e0fd80d13ca7bbccbecac" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-2-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-Linux-aarch64.sh#5f61143e93d9d48a82aa99a1d7b1c77561f599b9a67ab954862e6e8d6a25c0cc" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-Linux-aarch64.sh#5f61143e93d9d48a82aa99a1d7b1c77561f599b9a67ab954862e6e8d6a25c0cc" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py310_25.1.1-2-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-Linux-s390x.sh#89d689248a6855da3e6087cfeebaad6886e4ef46b4e96671bf251bb9aa6b1499" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-2-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-Linux-s390x.sh#89d689248a6855da3e6087cfeebaad6886e4ef46b4e96671bf251bb9aa6b1499" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-2-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-Linux-x86_64.sh#7f298109ab95b5436632973a04189a125282cc948f1dd1b03fa9cb6c71443915" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-2-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-Linux-x86_64.sh#7f298109ab95b5436632973a04189a125282cc948f1dd1b03fa9cb6c71443915" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-2-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-MacOSX-arm64.sh#119e3196d9e67f8eb0f88d4a3188849b5b8bf14a8dd87873c0bff7ce016eea52" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-2-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-MacOSX-arm64.sh#119e3196d9e67f8eb0f88d4a3188849b5b8bf14a8dd87873c0bff7ce016eea52" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py310_25.1.1-2-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-MacOSX-x86_64.sh#543d635dcd34256ac87ffe7a242259cf8f639d51a503da4e4eb3e29ecf406302" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.1.1-2-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.1.1-2-MacOSX-x86_64.sh#543d635dcd34256ac87ffe7a242259cf8f639d51a503da4e4eb3e29ecf406302" "miniconda" verify_py310
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
|
"Linux-aarch64" )
|
||||||
|
install_script "Miniconda3-py310_25.11.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.11.1-1-Linux-aarch64.sh#cbac1da35d4c8635384f58b9a776c23fcb3c4dc0b936b8d4d0526f2d0a4b1c4c" "miniconda" verify_py310
|
||||||
|
;;
|
||||||
|
"Linux-x86_64" )
|
||||||
|
install_script "Miniconda3-py310_25.11.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.11.1-1-Linux-x86_64.sh#f6174765edd75e1ef2bb3f16e99266d291deebf6532f2f7e800569afc084d0eb" "miniconda" verify_py310
|
||||||
|
;;
|
||||||
|
"MacOSX-arm64" )
|
||||||
|
install_script "Miniconda3-py310_25.11.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.11.1-1-MacOSX-arm64.sh#c83c7a20dd45442ef05321637872bdd9ee13395098e9bb1a22a28b1dccdd9a31" "miniconda" verify_py310
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
{ echo
|
||||||
|
colorize 1 "ERROR"
|
||||||
|
echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||||
|
echo
|
||||||
|
} >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.3.1-1-Linux-aarch64.sh#7879e8e2c89d26d8c4776fbad72656afda697e67e2e70b9b8eef368b111d2253" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.3.1-1-Linux-aarch64.sh#7879e8e2c89d26d8c4776fbad72656afda697e67e2e70b9b8eef368b111d2253" "miniconda" verify_py310
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.5.1-0-Linux-aarch64.sh#6886af5e5db79dfb4429cde937b6f806d02b0e98dd11249c74917661fc7b1f4b" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.5.1-0-Linux-aarch64.sh#6886af5e5db79dfb4429cde937b6f806d02b0e98dd11249c74917661fc7b1f4b" "miniconda" verify_py310
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.5.1-1-Linux-aarch64.sh#630f724622a3f45f66b3b08f708bc44e2cb595ad147f68750271c6352cb4d734" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.5.1-1-Linux-aarch64.sh#630f724622a3f45f66b3b08f708bc44e2cb595ad147f68750271c6352cb4d734" "miniconda" verify_py310
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.7.0-2-Linux-aarch64.sh#e13bd0e0b4f70841f78aea8a978eb35cd6afb0af3e2d2b8f85d24636bb56bc21" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.7.0-2-Linux-aarch64.sh#e13bd0e0b4f70841f78aea8a978eb35cd6afb0af3e2d2b8f85d24636bb56bc21" "miniconda" verify_py310
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.9.1-1-Linux-aarch64.sh#28fc3db9c7ee63cedab38b0e6006409f1f448be7ffc57b270623efd4422b0608" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.9.1-1-Linux-aarch64.sh#28fc3db9c7ee63cedab38b0e6006409f1f448be7ffc57b270623efd4422b0608" "miniconda" verify_py310
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py310_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.9.1-3-Linux-aarch64.sh#bc58460f17ec60d6c920d4352dd4d5e465aa22b56580bd4cd57c9693859761ec" "miniconda" verify_py310
|
install_script "Miniconda3-py310_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py310_25.9.1-3-Linux-aarch64.sh#bc58460f17ec60d6c920d4352dd4d5e465aa22b56580bd4cd57c9693859761ec" "miniconda" verify_py310
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-Linux-aarch64.sh#737f02e2e6c192afbef000f6dba79f4dbbe852193c6890243516ea50d916d31c" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-Linux-aarch64.sh#737f02e2e6c192afbef000f6dba79f4dbbe852193c6890243516ea50d916d31c" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py311_25.1.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-Linux-s390x.sh#6244e894c56afc095eba0d2c2e88125af1a6a661187b136b8d1abc1392cca8eb" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-Linux-s390x.sh#6244e894c56afc095eba0d2c2e88125af1a6a661187b136b8d1abc1392cca8eb" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-Linux-x86_64.sh#9bc631a7edfc015bbf944d5f48c3852e7c0c83aeae0359b75bee9f402942413a" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-Linux-x86_64.sh#9bc631a7edfc015bbf944d5f48c3852e7c0c83aeae0359b75bee9f402942413a" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-MacOSX-arm64.sh#0189917c28f8c3a8e9f113532225d4878e6f018d215739ccff92f99750fe7083" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-MacOSX-arm64.sh#0189917c28f8c3a8e9f113532225d4878e6f018d215739ccff92f99750fe7083" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-MacOSX-x86_64.sh#af0d2916b3e3aad814f246a85c48ec9658e2b5f4d1cc7f09246d197fa18169c8" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-0-MacOSX-x86_64.sh#af0d2916b3e3aad814f246a85c48ec9658e2b5f4d1cc7f09246d197fa18169c8" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-1-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-Linux-aarch64.sh#288aa5b21b97db7f09bf6da03323b3a3b97d461a4c5bf666be58312eb6b6e311" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-Linux-aarch64.sh#288aa5b21b97db7f09bf6da03323b3a3b97d461a4c5bf666be58312eb6b6e311" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py311_25.1.1-1-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-Linux-s390x.sh#e0c755e9e2e26f75cccda56fe978e7a964ed559f474486421a0022b7351bc108" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-1-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-Linux-s390x.sh#e0c755e9e2e26f75cccda56fe978e7a964ed559f474486421a0022b7351bc108" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-1-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-Linux-x86_64.sh#03a253f7ca5cf1fdfca2aedced769d8479cb559b7c92e70f24c176fd9d23bc8e" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-Linux-x86_64.sh#03a253f7ca5cf1fdfca2aedced769d8479cb559b7c92e70f24c176fd9d23bc8e" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-1-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-MacOSX-arm64.sh#871ca583ee0be45d5fa36eba4143a6701e775c500c7b30ac519ef1a0205d78c3" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-MacOSX-arm64.sh#871ca583ee0be45d5fa36eba4143a6701e775c500c7b30ac519ef1a0205d78c3" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-1-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-MacOSX-x86_64.sh#deb025449147280611e6ca8bf89291cddb6eab06e2bff0114ac05f6f67b5ca89" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-1-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-1-MacOSX-x86_64.sh#deb025449147280611e6ca8bf89291cddb6eab06e2bff0114ac05f6f67b5ca89" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-2-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-Linux-aarch64.sh#8a1d4407fce7ec552ac6ed655ce93d83549e02b819cacefbb7f640f9051e638b" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-Linux-aarch64.sh#8a1d4407fce7ec552ac6ed655ce93d83549e02b819cacefbb7f640f9051e638b" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py311_25.1.1-2-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-Linux-s390x.sh#0b4d5a3f16dcb2d230ba5dfdfdb848c854006aab6dd1bd3dbf29fcddf04b07a4" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-2-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-Linux-s390x.sh#0b4d5a3f16dcb2d230ba5dfdfdb848c854006aab6dd1bd3dbf29fcddf04b07a4" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-2-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-Linux-x86_64.sh#d8c1645776c0758214e4191c605abe5878002051316bd423f2b14b22d6cb4251" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-2-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-Linux-x86_64.sh#d8c1645776c0758214e4191c605abe5878002051316bd423f2b14b22d6cb4251" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-2-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-MacOSX-arm64.sh#140b80b4d285bbbcc8616891876ec3613e46acbedb02321b9ddc03ff0784c584" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-2-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-MacOSX-arm64.sh#140b80b4d285bbbcc8616891876ec3613e46acbedb02321b9ddc03ff0784c584" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py311_25.1.1-2-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-MacOSX-x86_64.sh#41c4ed1ce9f44049346a7efd8311919f82a8115637eced8796b5d18599f50cae" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.1.1-2-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.1.1-2-MacOSX-x86_64.sh#41c4ed1ce9f44049346a7efd8311919f82a8115637eced8796b5d18599f50cae" "miniconda" verify_py311
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
|
"Linux-aarch64" )
|
||||||
|
install_script "Miniconda3-py311_25.11.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.11.1-1-Linux-aarch64.sh#ed0c6cc091802bc4d1440260d60d431b263f22d5cb9be5df71e7ff176c8f1cd8" "miniconda" verify_py311
|
||||||
|
;;
|
||||||
|
"Linux-x86_64" )
|
||||||
|
install_script "Miniconda3-py311_25.11.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.11.1-1-Linux-x86_64.sh#cf5fe14f1be074b82908f188ff759b61ddf87ed15a766f8641182ebf190832b4" "miniconda" verify_py311
|
||||||
|
;;
|
||||||
|
"MacOSX-arm64" )
|
||||||
|
install_script "Miniconda3-py311_25.11.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.11.1-1-MacOSX-arm64.sh#5d76efda2d459389e35d5406494230bb78635bdb99500bda7d7eb3c4e3742f1c" "miniconda" verify_py311
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
{ echo
|
||||||
|
colorize 1 "ERROR"
|
||||||
|
echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||||
|
echo
|
||||||
|
} >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.3.1-1-Linux-aarch64.sh#8d2470bdbee7e93d9b4972a3272b63673ba62113282378f98f23b423cc61ef59" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.3.1-1-Linux-aarch64.sh#8d2470bdbee7e93d9b4972a3272b63673ba62113282378f98f23b423cc61ef59" "miniconda" verify_py311
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.5.1-0-Linux-aarch64.sh#3862c5ecba0949c3bdbeeb7d072664215924fbccb25f0d3f33782362c5405e22" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.5.1-0-Linux-aarch64.sh#3862c5ecba0949c3bdbeeb7d072664215924fbccb25f0d3f33782362c5405e22" "miniconda" verify_py311
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.5.1-1-Linux-aarch64.sh#39a6d853df41b74aabe37dd666732f7556f81584af789693d7e3005d7a04c64f" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.5.1-1-Linux-aarch64.sh#39a6d853df41b74aabe37dd666732f7556f81584af789693d7e3005d7a04c64f" "miniconda" verify_py311
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.7.0-2-Linux-aarch64.sh#28ca561ec2d9a1ae72fbf3f833b8918c747ce21f57d79e218e47bf7d4d2ce792" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.7.0-2-Linux-aarch64.sh#28ca561ec2d9a1ae72fbf3f833b8918c747ce21f57d79e218e47bf7d4d2ce792" "miniconda" verify_py311
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.9.1-1-Linux-aarch64.sh#4e0723b9d76aa491cf22511dac36f4fdec373e41d2a243ff875e19b8df39bf94" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.9.1-1-Linux-aarch64.sh#4e0723b9d76aa491cf22511dac36f4fdec373e41d2a243ff875e19b8df39bf94" "miniconda" verify_py311
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py311_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.9.1-3-Linux-aarch64.sh#92a4df72178d87626072b39aca8fa4721f29d192ed0d70e268586f63b41f7657" "miniconda" verify_py311
|
install_script "Miniconda3-py311_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py311_25.9.1-3-Linux-aarch64.sh#92a4df72178d87626072b39aca8fa4721f29d192ed0d70e268586f63b41f7657" "miniconda" verify_py311
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-Linux-aarch64.sh#ae9d3ea83df97e78fd51c452d0bc75005a28d504c22db6f1000822293f916b54" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-Linux-aarch64.sh#ae9d3ea83df97e78fd51c452d0bc75005a28d504c22db6f1000822293f916b54" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py312_25.1.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-Linux-s390x.sh#fa0b443ea73c71abd29eb51212c7b032d5089cbb2761aa07f91668b903a2a575" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-Linux-s390x.sh#fa0b443ea73c71abd29eb51212c7b032d5089cbb2761aa07f91668b903a2a575" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-Linux-x86_64.sh#832de27a5a35b7963f0d83466abada3eb138e51985255f190e0dc350427a9dd1" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-Linux-x86_64.sh#832de27a5a35b7963f0d83466abada3eb138e51985255f190e0dc350427a9dd1" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-MacOSX-arm64.sh#24821d2c87598ae0f8e697e612cdf41d0dbc9ae563cae8aacd878d50d1a86e1e" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-MacOSX-arm64.sh#24821d2c87598ae0f8e697e612cdf41d0dbc9ae563cae8aacd878d50d1a86e1e" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-MacOSX-x86_64.sh#65f91c564abced759ce7fca099239b7ed4ae9835cb4b64a11923cd3b5f57f5f1" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-0-MacOSX-x86_64.sh#65f91c564abced759ce7fca099239b7ed4ae9835cb4b64a11923cd3b5f57f5f1" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-1-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-Linux-aarch64.sh#c8a2112c5ed07196a0e7cf0682ff39c9a28eac5862df49659af7d4f6906efa70" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-Linux-aarch64.sh#c8a2112c5ed07196a0e7cf0682ff39c9a28eac5862df49659af7d4f6906efa70" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py312_25.1.1-1-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-Linux-s390x.sh#f644f5c18985078e6cd1af9c517f9634dbb3199a86f75eb90a9fb303289ebf0b" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-1-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-Linux-s390x.sh#f644f5c18985078e6cd1af9c517f9634dbb3199a86f75eb90a9fb303289ebf0b" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-1-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-Linux-x86_64.sh#2cc524b9b47b268e1a3ecca1f7f3c1bb4142f42a10001c88fb69c6664ca8a9a6" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-Linux-x86_64.sh#2cc524b9b47b268e1a3ecca1f7f3c1bb4142f42a10001c88fb69c6664ca8a9a6" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-1-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-MacOSX-arm64.sh#c8f316330308f712b94dd7ac2a6048f87d6b364c3354f4e619ed4aef6d99dfad" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-MacOSX-arm64.sh#c8f316330308f712b94dd7ac2a6048f87d6b364c3354f4e619ed4aef6d99dfad" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-1-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-MacOSX-x86_64.sh#29fce1ea800ff167e2f44d5a0dbd33124384b33520fd481378908e94de68b1a1" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-1-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-1-MacOSX-x86_64.sh#29fce1ea800ff167e2f44d5a0dbd33124384b33520fd481378908e94de68b1a1" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-2-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-Linux-aarch64.sh#6d05b9f9b7f327b90797a4cf56d68c81578bab2f63257a3e7a8b72cb0f0e4b5d" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-Linux-aarch64.sh#6d05b9f9b7f327b90797a4cf56d68c81578bab2f63257a3e7a8b72cb0f0e4b5d" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py312_25.1.1-2-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-Linux-s390x.sh#55c681937c27e13a8ed818d1fec182e623e0308fffc1b10605896dac15f90077" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-2-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-Linux-s390x.sh#55c681937c27e13a8ed818d1fec182e623e0308fffc1b10605896dac15f90077" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-2-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-Linux-x86_64.sh#4766d85b5f7d235ce250e998ebb5a8a8210cbd4f2b0fea4d2177b3ed9ea87884" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-2-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-Linux-x86_64.sh#4766d85b5f7d235ce250e998ebb5a8a8210cbd4f2b0fea4d2177b3ed9ea87884" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-2-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-MacOSX-arm64.sh#16e7eea739d470d0c3451e9bb779bbfa169b98cfb283d2d6508945e0c6b36ada" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-2-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-MacOSX-arm64.sh#16e7eea739d470d0c3451e9bb779bbfa169b98cfb283d2d6508945e0c6b36ada" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py312_25.1.1-2-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-MacOSX-x86_64.sh#0df9f4b7d063a78d18fd02af2b0a97121879af00b535ea79ee23d68d1005e6f8" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.1.1-2-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.1.1-2-MacOSX-x86_64.sh#0df9f4b7d063a78d18fd02af2b0a97121879af00b535ea79ee23d68d1005e6f8" "miniconda" verify_py312
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
|
"Linux-aarch64" )
|
||||||
|
install_script "Miniconda3-py312_25.11.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.11.1-1-Linux-aarch64.sh#f51aa82c395a2c5854c28ef8b7a24e252d5daca4a7a054ec8d9d6847d1d84518" "miniconda" verify_py312
|
||||||
|
;;
|
||||||
|
"Linux-x86_64" )
|
||||||
|
install_script "Miniconda3-py312_25.11.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.11.1-1-Linux-x86_64.sh#498ddb7c091002e4fd76e3496d91d2d915b183d1d850bef6e060fd45e2523213" "miniconda" verify_py312
|
||||||
|
;;
|
||||||
|
"MacOSX-arm64" )
|
||||||
|
install_script "Miniconda3-py312_25.11.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.11.1-1-MacOSX-arm64.sh#febaaeddd0deff2d3b034f7ef99efcab7169549d9be4175e1870170d59377a58" "miniconda" verify_py312
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
{ echo
|
||||||
|
colorize 1 "ERROR"
|
||||||
|
echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||||
|
echo
|
||||||
|
} >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.3.1-1-Linux-aarch64.sh#4b8078ef311bad880b2497c098d734cd0e7316410a4f4fa1a8dbf6ab9ade98ea" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.3.1-1-Linux-aarch64.sh#4b8078ef311bad880b2497c098d734cd0e7316410a4f4fa1a8dbf6ab9ade98ea" "miniconda" verify_py312
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.5.1-0-Linux-aarch64.sh#9bd5765f163568f4ac85b8189aa2b260d1febb1080d085bb2535a3cae2d7f0e4" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.5.1-0-Linux-aarch64.sh#9bd5765f163568f4ac85b8189aa2b260d1febb1080d085bb2535a3cae2d7f0e4" "miniconda" verify_py312
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.5.1-1-Linux-aarch64.sh#b007c6307c9a2081b8abfa0ff16caf0117226a7a9485031853fea125795de7ca" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.5.1-1-Linux-aarch64.sh#b007c6307c9a2081b8abfa0ff16caf0117226a7a9485031853fea125795de7ca" "miniconda" verify_py312
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.7.0-2-Linux-aarch64.sh#edc03373d75b3a06de594a7f819ad351bd2fa7602854f392107998e62468c783" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.7.0-2-Linux-aarch64.sh#edc03373d75b3a06de594a7f819ad351bd2fa7602854f392107998e62468c783" "miniconda" verify_py312
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.9.1-1-Linux-aarch64.sh#11ab86931679e6d9b15112f2e866dad1fcbd89a039a6442c0bce7b86fd282f0a" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.9.1-1-Linux-aarch64.sh#11ab86931679e6d9b15112f2e866dad1fcbd89a039a6442c0bce7b86fd282f0a" "miniconda" verify_py312
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py312_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.9.1-3-Linux-aarch64.sh#8c5c1d38011fed8053d7bdaaf7fab372c3f71dbb77791e07692fb8059b7828bd" "miniconda" verify_py312
|
install_script "Miniconda3-py312_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py312_25.9.1-3-Linux-aarch64.sh#8c5c1d38011fed8053d7bdaaf7fab372c3f71dbb77791e07692fb8059b7828bd" "miniconda" verify_py312
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
|
"Linux-aarch64" )
|
||||||
|
install_script "Miniconda3-py313_25.11.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.11.1-1-Linux-aarch64.sh#9f39cc8c46ca37afed5e563cc234b3add34fea2f1119e076dcae7a377ca6b8ee" "miniconda" verify_py313
|
||||||
|
;;
|
||||||
|
"Linux-x86_64" )
|
||||||
|
install_script "Miniconda3-py313_25.11.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.11.1-1-Linux-x86_64.sh#e0b10e050e8928e2eb9aad2c522ee3b5d31d30048b8a9997663a8a460d538cef" "miniconda" verify_py313
|
||||||
|
;;
|
||||||
|
"MacOSX-arm64" )
|
||||||
|
install_script "Miniconda3-py313_25.11.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.11.1-1-MacOSX-arm64.sh#9f84ad10ea513fb59bb714933bc8dc092bd25fdb03c236868f5d5af3c26a1fd4" "miniconda" verify_py313
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
{ echo
|
||||||
|
colorize 1 "ERROR"
|
||||||
|
echo ": The binary distribution of Miniconda is not available for $(anaconda_architecture 2>/dev/null || true)."
|
||||||
|
echo
|
||||||
|
} >&2
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py313_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.3.1-1-Linux-aarch64.sh#4caa0c266ab726b440ccad40a74774167494e001da5de281b74f2d5673e4ace9" "miniconda" verify_py313
|
install_script "Miniconda3-py313_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.3.1-1-Linux-aarch64.sh#4caa0c266ab726b440ccad40a74774167494e001da5de281b74f2d5673e4ace9" "miniconda" verify_py313
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py313_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.5.1-0-Linux-aarch64.sh#368d5250682c12d3e1810e8cf5ce4f08e95ccc56c96dcf559567a6b4f72b203d" "miniconda" verify_py313
|
install_script "Miniconda3-py313_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.5.1-0-Linux-aarch64.sh#368d5250682c12d3e1810e8cf5ce4f08e95ccc56c96dcf559567a6b4f72b203d" "miniconda" verify_py313
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py313_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.5.1-1-Linux-aarch64.sh#b7d611dcaa638efd700a4a4eb24fbcb9f7b94cc1773d7c655959c330d0b68e16" "miniconda" verify_py313
|
install_script "Miniconda3-py313_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.5.1-1-Linux-aarch64.sh#b7d611dcaa638efd700a4a4eb24fbcb9f7b94cc1773d7c655959c330d0b68e16" "miniconda" verify_py313
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py313_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.7.0-2-Linux-aarch64.sh#350dc95067e0c87bcaa67367e60ea1caae01872adeb945c760bb4a67518d9673" "miniconda" verify_py313
|
install_script "Miniconda3-py313_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.7.0-2-Linux-aarch64.sh#350dc95067e0c87bcaa67367e60ea1caae01872adeb945c760bb4a67518d9673" "miniconda" verify_py313
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py313_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.9.1-1-Linux-aarch64.sh#a0de4562c368a8b5ca4385843f405684c79bea7aa3b75d7513ff99c0c6435d51" "miniconda" verify_py313
|
install_script "Miniconda3-py313_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.9.1-1-Linux-aarch64.sh#a0de4562c368a8b5ca4385843f405684c79bea7aa3b75d7513ff99c0c6435d51" "miniconda" verify_py313
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py313_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.9.1-3-Linux-aarch64.sh#036053e7e6e5866435bc1a11711b41293e5bf0776bb4aa9a7ea46d01f30eda31" "miniconda" verify_py313
|
install_script "Miniconda3-py313_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py313_25.9.1-3-Linux-aarch64.sh#036053e7e6e5866435bc1a11711b41293e5bf0776bb4aa9a7ea46d01f30eda31" "miniconda" verify_py313
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-0-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-Linux-aarch64.sh#6813ed27242f8c6a000fcdc0b2bb93253411a22ef110eec915b7d1a4aab3587b" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-Linux-aarch64.sh#6813ed27242f8c6a000fcdc0b2bb93253411a22ef110eec915b7d1a4aab3587b" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py39_25.1.1-0-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-Linux-s390x.sh#8220e1e67cc73a51d90108f5bdf5451aefae0b00d400958ae7d42e21d9a32999" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-0-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-Linux-s390x.sh#8220e1e67cc73a51d90108f5bdf5451aefae0b00d400958ae7d42e21d9a32999" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-0-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-Linux-x86_64.sh#13a5870ab5b5c75f23a54eac2ba8dbff38bd4bd33d52aecbc6154ca0ff488e10" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-0-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-Linux-x86_64.sh#13a5870ab5b5c75f23a54eac2ba8dbff38bd4bd33d52aecbc6154ca0ff488e10" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-0-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-MacOSX-arm64.sh#6d60e9a8e0f531e09791f033529a6142ceb39ec7d23f8fc8231d287e39cdb30d" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-0-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-MacOSX-arm64.sh#6d60e9a8e0f531e09791f033529a6142ceb39ec7d23f8fc8231d287e39cdb30d" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-0-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-MacOSX-x86_64.sh#3752cbfae31526e53cae1b2976e183787fc98782c63bbd048853ed8860616051" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-0-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-0-MacOSX-x86_64.sh#3752cbfae31526e53cae1b2976e183787fc98782c63bbd048853ed8860616051" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-1-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-Linux-aarch64.sh#ae55c260fd250154627f74d0ede010c99c20741698d7d687b2dfca0aa14ce2d5" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-Linux-aarch64.sh#ae55c260fd250154627f74d0ede010c99c20741698d7d687b2dfca0aa14ce2d5" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py39_25.1.1-1-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-Linux-s390x.sh#6957a17c17e86fe43ba3c2e18dcfc1415710410c4a36f7a1c46fbc64aab4fb27" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-1-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-Linux-s390x.sh#6957a17c17e86fe43ba3c2e18dcfc1415710410c4a36f7a1c46fbc64aab4fb27" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-1-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-Linux-x86_64.sh#c5ec876718798ccd6ce93ce38eb3253ef103244ea6efaa8c978df19047ba916a" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-1-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-Linux-x86_64.sh#c5ec876718798ccd6ce93ce38eb3253ef103244ea6efaa8c978df19047ba916a" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-1-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-MacOSX-arm64.sh#d717fb09b137a048d9b2f6ee9d3e7ef63ab841e35d80cb37f40d20ac949915c2" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-1-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-MacOSX-arm64.sh#d717fb09b137a048d9b2f6ee9d3e7ef63ab841e35d80cb37f40d20ac949915c2" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-1-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-MacOSX-x86_64.sh#a01dd65f2463bdec15abc1f796847912c67caaf78ea1c67f038ec02aa8c3adaf" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-1-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-1-MacOSX-x86_64.sh#a01dd65f2463bdec15abc1f796847912c67caaf78ea1c67f038ec02aa8c3adaf" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,18 +1,19 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-2-Linux-aarch64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-Linux-aarch64.sh#5afee04df06c923462341cfc87727100a67fa854550d0d7a2e6295005168e6b7" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-Linux-aarch64.sh#5afee04df06c923462341cfc87727100a67fa854550d0d7a2e6295005168e6b7" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"Linux-s390x" )
|
"Linux-s390x" )
|
||||||
install_script "Miniconda3-py39_25.1.1-2-Linux-s390x.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-Linux-s390x.sh#94a10a8a43dfd0360ecad9df24ef768db1b776d1a76fc2df1928d76c0bbb5535" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-2-Linux-s390x" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-Linux-s390x.sh#94a10a8a43dfd0360ecad9df24ef768db1b776d1a76fc2df1928d76c0bbb5535" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"Linux-x86_64" )
|
"Linux-x86_64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-2-Linux-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-Linux-x86_64.sh#b40682cedf1e1755c02555f8d3d98aadb4607a68da7caf72a9bbe1fb9ae0b904" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-2-Linux-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-Linux-x86_64.sh#b40682cedf1e1755c02555f8d3d98aadb4607a68da7caf72a9bbe1fb9ae0b904" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"MacOSX-arm64" )
|
"MacOSX-arm64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-2-MacOSX-arm64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-MacOSX-arm64.sh#b50b4c46b481d3c9cb4befdbcf18087748d85eee9148c56a35f199940d607933" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-2-MacOSX-arm64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-MacOSX-arm64.sh#b50b4c46b481d3c9cb4befdbcf18087748d85eee9148c56a35f199940d607933" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
"MacOSX-x86_64" )
|
"MacOSX-x86_64" )
|
||||||
install_script "Miniconda3-py39_25.1.1-2-MacOSX-x86_64.sh" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-MacOSX-x86_64.sh#92109afe5edcc06d3a3c61b0faf1edd3e3e2539eaad637d2711305ccd0065046" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.1.1-2-MacOSX-x86_64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.1.1-2-MacOSX-x86_64.sh#92109afe5edcc06d3a3c61b0faf1edd3e3e2539eaad637d2711305ccd0065046" "miniconda" verify_py39
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
{ echo
|
{ echo
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.3.1-1-Linux-aarch64.sh#435f9b5640716dd770e9abe404c54db7d3493cb61a814c5de1fe345ea017d4a6" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.3.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.3.1-1-Linux-aarch64.sh#435f9b5640716dd770e9abe404c54db7d3493cb61a814c5de1fe345ea017d4a6" "miniconda" verify_py39
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.5.1-0-Linux-aarch64.sh#e4311fcce812cce6a914e7a82fb1180d278eaa705e40be6789795781d375fe53" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.5.1-0-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.5.1-0-Linux-aarch64.sh#e4311fcce812cce6a914e7a82fb1180d278eaa705e40be6789795781d375fe53" "miniconda" verify_py39
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.5.1-1-Linux-aarch64.sh#a1078a803928d8f8f1fd29a2bdad6689f19239844ee3beb84372f66f00cbfb19" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.5.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.5.1-1-Linux-aarch64.sh#a1078a803928d8f8f1fd29a2bdad6689f19239844ee3beb84372f66f00cbfb19" "miniconda" verify_py39
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.7.0-2-Linux-aarch64.sh#18befc78dbfca5bbdc2c8085f2bedd0345a5fbf7d0f1e189fddaf2d17f31d3af" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.7.0-2-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.7.0-2-Linux-aarch64.sh#18befc78dbfca5bbdc2c8085f2bedd0345a5fbf7d0f1e189fddaf2d17f31d3af" "miniconda" verify_py39
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.9.1-1-Linux-aarch64.sh#983ef280dec1d0f965b6b6133c585ce902e07136105d4977aa5de3aa027cfa55" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.9.1-1-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.9.1-1-Linux-aarch64.sh#983ef280dec1d0f965b6b6133c585ce902e07136105d4977aa5de3aa027cfa55" "miniconda" verify_py39
|
||||||
|
|||||||
@ -1,3 +1,4 @@
|
|||||||
|
export CONDA_PLUGINS_AUTO_ACCEPT_TOS=true
|
||||||
case "$(anaconda_architecture 2>/dev/null || true)" in
|
case "$(anaconda_architecture 2>/dev/null || true)" in
|
||||||
"Linux-aarch64" )
|
"Linux-aarch64" )
|
||||||
install_script "Miniconda3-py39_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.9.1-3-Linux-aarch64.sh#2cf395401906b6968cfd2bc5b522ad4dca40374987e790c4daa83f049d132841" "miniconda" verify_py39
|
install_script "Miniconda3-py39_25.9.1-3-Linux-aarch64" "https://repo.anaconda.com/miniconda/Miniconda3-py39_25.9.1-3-Linux-aarch64.sh#2cf395401906b6968cfd2bc5b522ad4dca40374987e790c4daa83f049d132841" "miniconda" verify_py39
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
@ -0,0 +1,27 @@
|
|||||||
|
From 3fec519d6b326918f39ceb142ef762042ce8365f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ivan Pozdeev <vano@mail.mipt.ru>
|
||||||
|
Date: Fri, 26 Dec 2025 13:39:21 +0300
|
||||||
|
Subject: [PATCH] Recognize an argument to -j in MAKEFLAGS
|
||||||
|
|
||||||
|
---
|
||||||
|
setup.py | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/setup.py b/setup.py
|
||||||
|
index ad8fb81b218..5666deaf67b 100644
|
||||||
|
--- a/setup.py
|
||||||
|
+++ b/setup.py
|
||||||
|
@@ -307,8 +307,8 @@ def __init__(self, dist):
|
||||||
|
self.failed_on_import = []
|
||||||
|
self.missing = []
|
||||||
|
self.disabled_configure = []
|
||||||
|
- if '-j' in os.environ.get('MAKEFLAGS', ''):
|
||||||
|
- self.parallel = True
|
||||||
|
+ if (m:=re.search(r'(?:^|\s)(?:-j|--jobs)(?:\s+|=)?(\d*)',os.environ.get('MAKEFLAGS', ''))) is not None:
|
||||||
|
+ self.parallel = int(m.group(1)) if m.group(1) else True
|
||||||
|
|
||||||
|
def add(self, ext):
|
||||||
|
self.extensions.append(ext)
|
||||||
|
--
|
||||||
|
2.36.1.windows.1
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user