patchew-project / patchew

A patch email tracking and testing system
MIT License
72 stars 24 forks source link

importer fails to start offlineimap #133

Closed dcaratti closed 2 years ago

dcaratti commented 3 years ago

deploying a fresh importer, it's possible to see the following error:

     Traceback (most recent call last):
       File "/usr/lib/python3.9/site-packages/offlineimap/utils/distro_utils.py", line 11, in <module>
         from platform import linux_distribution
     ImportError: cannot import name 'linux_distribution' from 'platform' (/usr/lib64/python3.9/platform.py)
     During handling of the above exception, another exception occurred:
     Traceback (most recent call last):
       File "/usr/bin/offlineimap", line 19, in <module>
         from offlineimap import OfflineImap
       File "/usr/lib/python3.9/site-packages/offlineimap/__init__.py", line 20, in <module>
         from offlineimap.init import OfflineImap
       File "/usr/lib/python3.9/site-packages/offlineimap/init.py", line 34, in <module>
         from offlineimap import threadutil, accounts, folder, mbnames
       File "/usr/lib/python3.9/site-packages/offlineimap/accounts.py", line 26, in <module>
         from offlineimap.repository import Repository
       File "/usr/lib/python3.9/site-packages/offlineimap/repository/__init__.py", line 20, in <module>
         from offlineimap.repository.IMAP import IMAPRepository, MappedIMAPRepository
       File "/usr/lib/python3.9/site-packages/offlineimap/repository/IMAP.py", line 28, in <module>
         from offlineimap.utils.distro_utils import get_os_sslcertfile, \
       File "/usr/lib/python3.9/site-packages/offlineimap/utils/distro_utils.py", line 13, in <module>
         from distro import linux_distribution
     ModuleNotFoundError: No module named 'distro'

this is probably due to python3 deprecation of platform.linux_distribution builtin. Installing python3-distro (like in the following patch) proved to restore offlineimap functionality.

--- a/scripts/dockerfiles/importer.docker
+++ b/scripts/dockerfiles/importer.docker
@@ -1,5 +1,5 @@
 FROM fedora:latest
-RUN dnf install -y python offlineimap findutils git wget
+RUN dnf install -y python python3-distro offlineimap findutils git wget
 RUN git config --global user.email "importer@patchew.org"
 RUN git config --global user.name "Patchew Importer"
 RUN mkdir -p -m 0700 ~/.ssh

but probably it's a temporary workaround, the real fix should be in offlineimap code (e.g. no more using platform.linux_distribution) or in the offlineimap specfile (e.g. adding a dependency for python3-distro).