[SRU] safeeyes crashed with ModuleNotFoundError in /usr/lib/python3/dist-packages/safeeyes/utility.py: No module named 'distutils'

Bug #2075269 reported by Sudip Mukherjee
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
safeeyes (Debian)
New
Unknown
safeeyes (Ubuntu)
Fix Released
Medium
Unassigned
Noble
In Progress
Undecided
Unassigned

Bug Description

[ Impact ]

safeeyes is completely unusable. It will fail immediately when the user tries to start the application and will crash with the error:

$ safeeyes --help
Traceback (most recent call last):
  File "/usr/bin/safeeyes", line 33, in <module>
    sys.exit(load_entry_point('safeeyes==2.1.5', 'console_scripts', 'safeeyes')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/bin/safeeyes", line 25, in importlib_load_entry_point
    return next(matches).load()
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/metadata/__init__.py", line 205, in load
    module = import_module(match.group('module'))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/usr/lib/python3/dist-packages/safeeyes/__main__.py", line 32, in <module>
    from safeeyes import utility
  File "/usr/lib/python3/dist-packages/safeeyes/utility.py", line 35, in <module>
    from distutils.version import LooseVersion
ModuleNotFoundError: No module named 'distutils'

[ Test Plan ]

install safeeyes

1) quick test:
open a terminal and use the command "safeeyes --help"

If the package is not fixed it will crash with the above error.

2) Detailed test:
start safeeyes from the launcher menu.
click on the safeeyes icon in the status bar to open the menu and then click on setting in the menu.

Change the time limits for intervals. ( I used 1 minute for interval between short breaks and interval between long breaks)
Select the "Plugins" tab and disable "Smart Pause".
close the settings.

After the time interval is over "safeeyes" will lock the screen with a message.

[ Where problems could occur ]

This upstream patch is changing the way it compares versions of the plugins at startup. As a worst case scenario if the changed code does not work then safeeyes will not start. But considering the fact the safeeyes is unusable now, the user should not see any new regression than what already exists.

[ Other Info ]

1. An extra runtime dependency on python3-packaging was added.
2. This has been fixed in Oracular.
3. In the Debian bug, the upstream co-maintainer mentioned something about a build problem. But I am not sure what problem they saw. There was no build problem in Oracular and the package in Oracular works as expected. I have built the SRU upload in a PPA and there was no build problem in Noble either. The PPA build log can be seen at: https://launchpad.net/~sudipmuk/+archive/ubuntu/test-ppa1/+build/28725597

[ Original Bug Description ]

safeeyes crashes immediately when executed.

$ safeeyes
Traceback (most recent call last):
  File "/usr/bin/safeeyes", line 33, in <module>
    sys.exit(load_entry_point('safeeyes==2.1.9', 'console_scripts', 'safeeyes')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/bin/safeeyes", line 25, in importlib_load_entry_point
    return next(matches).load()
           ^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/metadata/__init__.py", line 205, in load
    module = import_module(match.group('module'))
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/usr/lib/python3/dist-packages/safeeyes/__main__.py", line 32, in <module>
    from safeeyes import utility
  File "/usr/lib/python3/dist-packages/safeeyes/utility.py", line 35, in <module>
    from distutils.version import LooseVersion
ModuleNotFoundError: No module named 'distutils'

ProblemType: Crash
DistroRelease: Ubuntu 24.10
Package: safeeyes 2.1.9-1
ProcVersionSignature: Ubuntu 6.8.0-31.31-generic 6.8.1
Uname: Linux 6.8.0-31-generic x86_64
ApportVersion: 2.28.1-0ubuntu4
Architecture: amd64
CasperMD5CheckResult: pass
CrashCounter: 1
CurrentDesktop: ubuntu:GNOME
Date: Tue Jul 30 21:37:42 2024
ExecutablePath: /usr/bin/safeeyes
InstallationDate: Installed on 2024-06-17 (43 days ago)
InstallationMedia: Ubuntu 24.10 "Oracular Oriole" - Daily amd64 (20240617)
InterpreterPath: /usr/bin/python3.12
JournalErrors:
 Jul 30 21:37:38 hostname org.gnome.Characters[11690]: MESA: error: ZINK: failed to choose pdev
 Jul 30 21:37:38 hostname org.gnome.Characters[11690]: libEGL warning: egl: failed to create dri2 screen
PackageArchitecture: all
ProcCmdline: /usr/bin/python3 /usr/bin/safeeyes
ProcEnviron:
 LANG=en_US.UTF-8
 PATH=(custom, no user)
 SHELL=/bin/bash
 TERM=xterm-256color
 XDG_RUNTIME_DIR=<set>
Python3Details: /usr/bin/python3.12, Python 3.12.4, python3-minimal, 3.12.3-0ubuntu1
PythonArgs: ['/usr/bin/safeeyes']
PythonDetails: N/A
SourcePackage: safeeyes
Title: safeeyes crashed with ModuleNotFoundError in /usr/lib/python3/dist-packages/safeeyes/utility.py: No module named 'distutils'
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin plugdev sudo users

Revision history for this message
Sudip Mukherjee (sudipmuk) wrote :
tags: removed: need-duplicate-check
Changed in safeeyes (Ubuntu):
importance: Undecided → Medium
information type: Private → Public
Changed in safeeyes (Debian):
status: Unknown → New
Changed in safeeyes (Ubuntu):
status: New → In Progress
assignee: nobody → Sudip Mukherjee (sudipmuk)
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package safeeyes - 2.1.9-1ubuntu1

---------------
safeeyes (2.1.9-1ubuntu1) oracular; urgency=medium

  * Fix crash by removing use of distutils. (LP: #2075269)
    - Add dependency on python3-packaging.

 -- Sudip Mukherjee <email address hidden> Thu, 01 Aug 2024 19:18:50 +0100

Changed in safeeyes (Ubuntu):
status: In Progress → Fix Released
Changed in safeeyes (Ubuntu Noble):
status: New → In Progress
assignee: nobody → Sudip Mukherjee (sudipmuk)
Changed in safeeyes (Ubuntu):
assignee: Sudip Mukherjee (sudipmuk) → nobody
summary: - safeeyes crashed with ModuleNotFoundError in /usr/lib/python3/dist-
- packages/safeeyes/utility.py: No module named 'distutils'
+ [SRU] safeeyes crashed with ModuleNotFoundError in
+ /usr/lib/python3/dist-packages/safeeyes/utility.py: No module named
+ 'distutils'
description: updated
Changed in safeeyes (Ubuntu Noble):
assignee: Sudip Mukherjee (sudipmuk) → nobody
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.