add_miniforge.py: Support different Python version lines, improvements
* report more progress * don't download SHA files for unsupported architectures
This commit is contained in:
parent
51937ccc19
commit
e0504fc2f8
@ -11,7 +11,6 @@ logger = logging.getLogger(__name__)
|
|||||||
logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO'))
|
logging.basicConfig(level=os.environ.get('LOGLEVEL', 'INFO'))
|
||||||
|
|
||||||
MINIFORGE_REPO = 'conda-forge/miniforge'
|
MINIFORGE_REPO = 'conda-forge/miniforge'
|
||||||
PYTHON_VERSION = '310'
|
|
||||||
DISTRIBUTIONS = ['miniforge', 'mambaforge']
|
DISTRIBUTIONS = ['miniforge', 'mambaforge']
|
||||||
|
|
||||||
install_script_fmt = """
|
install_script_fmt = """
|
||||||
@ -38,7 +37,7 @@ here = Path(__file__).resolve()
|
|||||||
out_dir: Path = here.parent.parent / "share" / "python-build"
|
out_dir: Path = here.parent.parent / "share" / "python-build"
|
||||||
|
|
||||||
def download_sha(url):
|
def download_sha(url):
|
||||||
logger.debug('Downloading SHA file %(url)s', locals())
|
logger.info('Downloading SHA file %(url)s', locals())
|
||||||
tup = tuple(reversed(requests.get(url).text.replace('./', '').rstrip().split()))
|
tup = tuple(reversed(requests.get(url).text.replace('./', '').rstrip().split()))
|
||||||
logger.debug('Got %(tup)s', locals())
|
logger.debug('Got %(tup)s', locals())
|
||||||
return tup
|
return tup
|
||||||
@ -56,7 +55,7 @@ def create_spec(filename, sha, url):
|
|||||||
'filename': filename,
|
'filename': filename,
|
||||||
'sha': sha,
|
'sha': sha,
|
||||||
'url': url,
|
'url': url,
|
||||||
'py_version': PYTHON_VERSION,
|
'py_version': py_version(version),
|
||||||
'flavor': flavor,
|
'flavor': flavor,
|
||||||
'os': os,
|
'os': os,
|
||||||
'arch': arch,
|
'arch': arch,
|
||||||
@ -67,13 +66,29 @@ def create_spec(filename, sha, url):
|
|||||||
|
|
||||||
return spec
|
return spec
|
||||||
|
|
||||||
|
def py_version(release):
|
||||||
|
"""Suffix for `verify_pyXXX` to call in the generated build script"""
|
||||||
|
release_line = tuple(int(part) for part in release.split(".")[:2])
|
||||||
|
# current version: mentioned under https://github.com/conda-forge/miniforge?tab=readme-ov-file#miniforge3
|
||||||
|
# transition points:
|
||||||
|
# https://github.com/conda-forge/miniforge/blame/main/Miniforge3/construct.yaml
|
||||||
|
# look for "- python <version>" in non-pypy branch and which tag the commit is first in
|
||||||
|
if release_line >= (24,5):
|
||||||
|
# yes, they jumped from 3.10 directly to 3.12
|
||||||
|
# https://github.com/conda-forge/miniforge/commit/bddad0baf22b37cfe079e47fd1680fdfb2183590
|
||||||
|
return "312"
|
||||||
|
if release_line >= (4,14):
|
||||||
|
return "310"
|
||||||
|
raise ValueError("Bundled Python version unknown for release `%s'"%release)
|
||||||
|
|
||||||
def supported(filename):
|
def supported(filename):
|
||||||
return ('pypy' not in filename) and ('Windows' not in filename)
|
return ('pypy' not in filename) and ('Windows' not in filename)
|
||||||
|
|
||||||
def add_version(release):
|
def add_version(release):
|
||||||
tag_name = release['tag_name']
|
tag_name = release['tag_name']
|
||||||
download_urls = { f['name']: f['browser_download_url'] for f in release['assets'] }
|
download_urls = { f['name']: f['browser_download_url'] for f in release['assets'] }
|
||||||
shas = dict([download_sha(url) for (name, url) in download_urls.items() if name.endswith('.sha256') and tag_name in name])
|
# can assume that sha files are named similar to release files so can also check supported(on their names)
|
||||||
|
shas = dict([download_sha(url) for (name, url) in download_urls.items() if name.endswith('.sha256') and supported(os.path.basename(name)) and tag_name in name])
|
||||||
specs = [create_spec(filename, sha, download_urls[filename]) for (filename, sha) in shas.items() if supported(filename)]
|
specs = [create_spec(filename, sha, download_urls[filename]) for (filename, sha) in shas.items() if supported(filename)]
|
||||||
|
|
||||||
for distribution in DISTRIBUTIONS:
|
for distribution in DISTRIBUTIONS:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user