fedora-infra / koschei

Continuous integration for Fedora packages
GNU General Public License v2.0
37 stars 15 forks source link

AttributeError: module 'hawkey' has no attribute 'Repo' #291

Closed claneys closed 5 years ago

claneys commented 5 years ago

Deploying a Koschei instance, I had the following issue:

juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]: detected unhandled Python exception in '/usr/lib/python3.7/site-packages/koschei/backend/main.py'
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]: Traceback (most recent call last):
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib64/python3.7/runpy.py", line 193, in _run_module_as_main
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     "__main__", mod_spec)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib64/python3.7/runpy.py", line 85, in _run_code
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     exec(code, run_globals)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/main.py", line 67, in <module>
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     main()
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/main.py", line 58, in main
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     svc(backend.KoscheiBackendSession()).run_service()
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/service.py", line 100, in run_service
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     self.main()
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/services/repo_resolver.py", line 61, in main
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     self.process_repo(collection)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/services/repo_resolver.py", line 80, in process_repo
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     with self.prepared_repo(collection, repo_id) as sack:
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib64/python3.7/contextlib.py", line 112, in __enter__
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     return next(self.gen)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/services/repo_resolver.py", line 132, in prepared_repo
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     with self.session.repo_cache.get_sack(repo_descriptor) as sack:
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib64/python3.7/contextlib.py", line 112, in __enter__
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     return next(self.gen)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/repo_cache.py", line 85, in get_sack
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     with self.get_item(repo_descriptor) as sack:
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib64/python3.7/contextlib.py", line 112, in __enter__
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     return next(self.gen)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/file_cache.py", line 209, in get_item
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     item = self.create_item(cache_key, self._cachedir)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/repo_cache.py", line 62, in create_item
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     sack = repo_util.load_sack(cachedir, repo_descriptor, download=True)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/repo_util.py", line 95, in load_sack
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     repo = get_repo(repo_dir, repo_descriptor, download)
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:   File "/usr/lib/python3.7/site-packages/koschei/backend/repo_util.py", line 58, in get_repo
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]:     repo = hawkey.Repo(str(repo_descriptor))
juin 10 09:15:55 kojihub01.lorient.iot koschei-repo-resolver[30093]: AttributeError: module 'hawkey' has no attribute 'Repo'

For what I saw, Repo class is only available with the latest 0.33 python3-hawkey from rpm-software-management/libdnf repository and Fedora 29 provides version 0.31 which do not have this class.

mizdebsk commented 5 years ago

This is a regression in libdnf and it should be fixed in libdnf. For fedora 29 you need libdnf-0.31.0-3.fc29 or newer, which is a stable update: https://bodhi.fedoraproject.org/updates/FEDORA-2019-74e1dd1341

claneys commented 5 years ago

Thanks. Works like a charm now.