# HG changeset patch # User Goffi # Date 1563911861 -7200 # Node ID 150085e39072f46a5fd0dcbdece1860e1adac574 # Parent 0a92bb60db12c6656ccd5dfc34a6b4d766481d17 flatpak (build_manifest): version can be forced in setup_requirements + force cython version in cagou template diff -r 0a92bb60db12 -r 150085e39072 flatpak/_tpl_org.salutatoi.Cagou.json --- a/flatpak/_tpl_org.salutatoi.Cagou.json Fri Jun 28 15:21:43 2019 +0200 +++ b/flatpak/_tpl_org.salutatoi.Cagou.json Tue Jul 23 21:57:41 2019 +0200 @@ -2,7 +2,7 @@ "_build_settings": { "wrapped_command": "cagou", "dev_repos": {"type": "hg", "url": "https://repos.goffi.org/cagou"}, - "setup_requirements": ["cython"], + "setup_requirements": [["cython", "0.29.10"]], "icon": "https://repos.goffi.org/sat_media/raw-file/tip/icons/muchoslava/svg/cagou_profil_bleu_avec_cou.svg", "desktop_file": "org.salutatoi.Cagou.desktop", "appdata_file": "_tpl_org.salutatoi.Cagou.appdata.xml" diff -r 0a92bb60db12 -r 150085e39072 flatpak/build_manifest.py --- a/flatpak/build_manifest.py Fri Jun 28 15:21:43 2019 +0200 +++ b/flatpak/build_manifest.py Tue Jul 23 21:57:41 2019 +0200 @@ -232,7 +232,13 @@ """Generate module for a Python package @param package_name(str, list[str]): name of the Python package - use list of str to get several packages at once + use list of str to get several packages at once. + A (name, version) tuple (or any size 2 iterable) can be used to force version of a + package. + If package is a list with iterables, it will be modified in place to keep only the + name as string. This is because version is not needed anymore after that, but + name is still used to remove dependencies already installed with setup + requirements. @param step_name(None, str): name of the step, None to use package_name @param step_message(None, str): message of the step (None to use default one) use empty string to disable it @@ -250,13 +256,22 @@ return cache package_names = [package_name] if single else package_name data = [] - for name in package_names: + + for idx, name in enumerate(package_names): + if not isinstance(name, str): + if version is not None: + raise ValueError( + "forced version can't be used with packages versions (i.e. tuples)") + name, forced_version = name + package_names[idx] = name + else: + forced_version = version r = requests.get(f"https://pypi.org/pypi/{name}/json") r.raise_for_status() releases_data = [] for version_raw, release_data in r.json()["releases"].items(): - if version is not None and version != version_raw: + if forced_version is not None and forced_version != version_raw: continue release_version = parse_version(version_raw) if release_version.is_prerelease and not with_pre: