Crash de HPLIP sur Ubuntu 23.04

Je possède un combo imprimante laser / scanner de marque HP, qui habituellement fonctionne plutôt bien sous Ubuntu : il suffit d'installer HPLIP (paquets hplip et hplip-gui) et ça marche plus ou moins tout seul. Aujourd'hui j'avais un papier à scanner. Confiant, j'allume l'imprimante, lance le logiciel Simple Scan et clique sur le bouton « Numériser »...

Là, le logiciel de HP me dit qu'il me manque un plugin et qu'il faudrait l'installer. Il me semblait l'avoir déjà fait, mais bon, étant donné que je suis passé à Ubuntu 23.04 depuis la dernière fois que j'ai utilisé cet engin, pourquoi pas... 🙄️

Popup de HPLIP demandant l'installation du plugin

Je clique donc sur le bouton « Next », puis dans la boite de dialogue suivante je laisse l'option de téléchargement depuis les serveurs de HP cochée puis je clique de nouveau sur « Next ».

Installation du plugin HPLIP depuis les serveurs de HP

Et... ça ne fonctionne pas : Ubuntu m'indique que le logiciel a planté... Fichtre ! 😖️

Crash de HPLIP sous Ubuntu

L'interface graphique de HPLIP n'étant pas très bavarde sur les raisons du crash, je décide de relancer l'utilitaire d'installation de plugin en ligne de commande, en activant son option de debug :

hp-plugin -g

Et cette fois-ci, lorsque l'application se vautre de nouveau à la même étape que précédemment, une jolie stack trace Python s'affiche dans mon terminal :

Traceback (most recent call last):
  [...]
  File "/usr/share/hplip/base/password.py", line 119, in __readAuthType
    distro_name = get_distro_std_name(os_name)
                  ^^^^^^^^^^^^^^^^^^^
NameError: name 'get_distro_std_name' is not defined. Did you mean: 'get_distro_name'?

Tiens, il semblerait que les tests soient en options chez les devs de HP... 😅️

En y regardant de plus près, j'ai l'impression que les développeurs du logiciel ont entamé un refactoring de cette partie du code mais qu'ils ont oublié quelques références à la fonction get_distro_std_name(os_name) qui semble être à présent remplacée par get_distro_name().

Voyons si on peut corriger ça rapidement. Pour commencer on fait une copie de sauvegarde du fichier original au cas où :

sudo cp /usr/share/hplip/base/password.py /usr/share/hplip/base/password.py.bak

Puis on remplace les occurrences de get_distro_std_name(os_name) par la nouvelle fonction (il y en a deux, lignes 119 et 322) :

sudo sed -i "s/get_distro_std_name(os_name)/get_distro_name()/" /usr/share/hplip/base/password.py

Il ne reste plus qu'à relancer l'installation du plugin pour voir si ça se passe mieux...

hp-plugin -g

Et effectivement, cette fois-ci ça se passe beaucoup mieux ! 😁️

Installation réussie du plugin HPLIP

Au final rien de dramatique, j'ai été capable de corriger le souci en une quinzaine de minutes (heureusement que je n'étais pas pressé), mais je suis assez déçu que les développeurs de HPLIP ne mettent pas plus de soin au développement de leur logiciel.

Je vous mets ci-dessous le lien vers le rapport de bug sur Launchpad si vous voulez suivre sa résolution :

J'espère en tout cas que cet article pourra être utile à ceux qui rencontrent un problème similaire. 🙃️