diff options
author | André Apitzsch <git@apitzsch.eu> | 2023-04-08 13:11:23 +0300 |
---|---|---|
committer | André Apitzsch <git@apitzsch.eu> | 2023-04-08 13:11:26 +0300 |
commit | 11aedfb650af4e3be9e934658b9b12f863203024 (patch) | |
tree | 6d71a1c81d0ce46186297e96fd60b7cbcb53f8f5 /scripts | |
parent | f5f12102e71ae0a0158155fb3bdec161d3ab8dab (diff) |
other: Cover more modules with update_flatpak_manifest
Also compare the python version when updating modules, to support
updating packages that provide several *.whl files, like protobuf.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/update_flatpak_manifest.py | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/scripts/update_flatpak_manifest.py b/scripts/update_flatpak_manifest.py index 27c1ce16f..875ec009e 100755 --- a/scripts/update_flatpak_manifest.py +++ b/scripts/update_flatpak_manifest.py @@ -24,17 +24,21 @@ def get_package_type(module: ruamel.yaml.comments.CommentedMap) -> str: return 'sdist' def get_current_version(module: ruamel.yaml.comments.CommentedMap - ) -> Optional[str]: + ) -> tuple[Optional[str], Optional[str]]: name = module['name'].replace('python3-','') url = module['sources'][0]['url'] if url.endswith('.git'): - return None + return None, None file_name = url.split('/')[-1] file_name = file_name.replace(name, '') - return file_name.split('-')[1].replace('.tar.gz', '') + parts = file_name.split('-') + pkg_version = parts[1].replace('.tar.gz', '') + py_version = parts[2] if '.tar.gz' not in parts[1] else None + return pkg_version, py_version def get_latest_version(package_name: str, - package_type: str + package_type: str, + py_version: Optional[str] ) -> tuple[str, Optional[str]]: with urlopen(f'{PYPI_INDEX}/{package_name}/json') as f: data = f.read() @@ -42,10 +46,13 @@ def get_latest_version(package_name: str, version = d['info']['version'] sha = None for entry in d['releases'][version]: - if entry['packagetype'] == package_type: - if sha is not None: - return version, None - sha = entry['digests']['sha256'] + if entry['packagetype'] != package_type: + continue + if py_version is not None and entry['python_version'] != py_version: + continue + if sha is not None: + return version, None + sha = entry['digests']['sha256'] return version, sha def update_module(module: ruamel.yaml.comments.CommentedMap) -> None: @@ -54,12 +61,12 @@ def update_module(module: ruamel.yaml.comments.CommentedMap) -> None: return package_type = get_package_type(module) - current_version = get_current_version(module) + current_version, py_version = get_current_version(module) if current_version is None: return name = module['name'].replace('python3-','') - latest_version, sha = get_latest_version(name, package_type) + latest_version, sha = get_latest_version(name, package_type, py_version) if current_version == latest_version: return |