Originally reported at https://bugzilla.redhat.com/show_bug.cgi?id=1913726 "--verbose causes fedmod rpm2flatpak to fail with Python AssertionError", seen with fedmod-0.6.3-12.fc33.noarch.
After fedmod fetch-metadata, e.g. fedmod --verbose rpm2flatpak libreoffice fails with
fedmod fetch-metadata
fedmod --verbose rpm2flatpak libreoffice
ERROR:root:Unexpected exception: AssertionError() Traceback (most recent call last): File "/usr/lib/python3.9/site-packages/_fedmod/cli.py", line 35, in run rc = _cli_commands.main(sys.argv[1:], standalone_mode=False, File "/usr/lib/python3.9/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/usr/lib/python3.9/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/lib/python3.9/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/lib/python3.9/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/usr/lib/python3.9/site-packages/_fedmod/cli.py", line 142, in rpm2flatpak fg.run(output_modulemd, output_containerspec, force=force, flathub=flathub, File "/usr/lib/python3.9/site-packages/_fedmod/flatpak_generator.py", line 258, in run super().run(output_modulemd) File "/usr/lib/python3.9/site-packages/_fedmod/module_generator.py", line 140, in run self._calculate_dependencies() File "/usr/lib/python3.9/site-packages/_fedmod/flatpak_generator.py", line 146, in _calculate_dependencies all_needed_packages = _depchase.ensure_installable( File "/usr/lib/python3.9/site-packages/_fedmod/_depchase.py", line 267, in ensure_installable return _solve(solver, pkgnames, full_info=full_info) File "/usr/lib/python3.9/site-packages/_fedmod/_depchase.py", line 202, in _solve dep_details = _get_dependency_details(pool, solver.transaction()) File "/usr/lib/python3.9/site-packages/_fedmod/_depchase.py", line 125, in _get_dependency_details assert matches AssertionError Traceback (most recent call last): File "/usr/bin/fedmod", line 33, in <module> sys.exit(load_entry_point('fedmod==0.6.3', 'console_scripts', 'fedmod')()) File "/usr/lib/python3.9/site-packages/_fedmod/cli.py", line 35, in run rc = _cli_commands.main(sys.argv[1:], standalone_mode=False, File "/usr/lib/python3.9/site-packages/click/core.py", line 782, in main rv = self.invoke(ctx) File "/usr/lib/python3.9/site-packages/click/core.py", line 1259, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) File "/usr/lib/python3.9/site-packages/click/core.py", line 1066, in invoke return ctx.invoke(self.callback, **ctx.params) File "/usr/lib/python3.9/site-packages/click/core.py", line 610, in invoke return callback(*args, **kwargs) File "/usr/lib/python3.9/site-packages/_fedmod/cli.py", line 142, in rpm2flatpak fg.run(output_modulemd, output_containerspec, force=force, flathub=flathub, File "/usr/lib/python3.9/site-packages/_fedmod/flatpak_generator.py", line 258, in run super().run(output_modulemd) File "/usr/lib/python3.9/site-packages/_fedmod/module_generator.py", line 140, in run self._calculate_dependencies() File "/usr/lib/python3.9/site-packages/_fedmod/flatpak_generator.py", line 146, in _calculate_dependencies all_needed_packages = _depchase.ensure_installable( File "/usr/lib/python3.9/site-packages/_fedmod/_depchase.py", line 267, in ensure_installable return _solve(solver, pkgnames, full_info=full_info) File "/usr/lib/python3.9/site-packages/_fedmod/_depchase.py", line 202, in _solve dep_details = _get_dependency_details(pool, solver.transaction()) File "/usr/lib/python3.9/site-packages/_fedmod/_depchase.py", line 125, in _get_dependency_details assert matches AssertionError
(It succeeds when leaving out --verbose.)
I get the same when trying trying to run fedmod --dataset=f36 resolve-deps --json gnutls - without the --json it works though
fedmod --dataset=f36 resolve-deps --json gnutls
--json
It actually doesn't work with --verbose or --debug as well
--verbose
--debug
So it asserts when processing the (glibc-gconv-extra(x86-64) = 2.35-4.fc36 if redhat-rpm-config) in my case. Does fedmod support the rich dependencies?
(glibc-gconv-extra(x86-64) = 2.35-4.fc36 if redhat-rpm-config)
Owen told me about the following changes that he has locally applied:
diff --git a/_fedmod/_depchase.py b/_fedmod/_depchase.py index daeac3b..1cebb3c 100644 --- a/_fedmod/_depchase.py +++ b/_fedmod/_depchase.py @@ -6,6 +6,7 @@ import collections import functools import logging import os +import re import smartcols import solv @@ -95,6 +96,12 @@ def _iterate_all_requires(package): yield dep +_BOOLEAN_KEYWORDS = re.compile(r" (?:and|or|if|with|without|unless) ") + +def _dependency_is_conditional(dependency): + return _BOOLEAN_KEYWORDS.search(str(dependency)) is not None + + def _get_dependency_details(pool, transaction): cache = {} @@ -122,7 +129,11 @@ def _get_dependency_details(pool, transaction): if s in candq } # It was possible to resolve set, so something is wrong here - assert matches + if not matches: + if _dependency_is_conditional(dep): + log.debug("Conditional dependency {} doesn't need to be satisfied".format(dep)) + else: + raise RuntimeError("Dependency {} isn't satisfied in resolved packages!".format(dep)) cache[dep] = matches # While multiple packages providing the same thing is rare, it's
Also if using the resolve-deps for updating the Fedora Flatpak runtime, then the following patch needs to be applied (if not already applied in a particular modules/flatpak-runtime branch).
diff --git a/tools/generate-runtime-report.py b/tools/generate-runtime-report.py index 1ded093..b589378 100755 --- a/tools/generate-runtime-report.py +++ b/tools/generate-runtime-report.py @@ -240,6 +240,9 @@ def add_packages(source, which, resolve_deps=False, only_if_exists=False): for package in resolved_packages: for req, providers in package['requires'].items(): + # boolean dependency that didn't need to be satisfied + if len(providers) == 0: + continue provider = nvr_to_name(providers[0]) provider_package = packages.get(provider, None) if provider_package is None: # filtered out of the resolve-deps output - e.g., fedora-release
Login to comment on this ticket.