Broadlink - Dépendances Dead après maj vers Buster - module python3 cryptography

Bonjour,

la solution de contournement appliquée par fleaux a consisté à récupérer une ancienne version du plugin-broadlink qui utilisait encore python2.
Ce qui au moins depuis le 01/01/2021 ne peut pas être pérenne. A la prochaine mise à jour du plugin le problème apparaitra de nouveau.

Si on utilise la méthode officielle qui consiste à télécharger le plugin broadlink via le Market Jeedom, il y a actuellement un souci.

Dans la Log Debug Broadlink :

ModuleNotFoundError: No module named ‹ cryptography ›

C’est un problème d’installation de la dépendance python3 « cryptography » utilisé par le plugin broadlink.
La version du plugin broadlink du 15/01/2021 (beta et stable) fonctionnait le 15/01/2021, et installait cryptography-3.3.1.

Le script d’installation des dépendances contient la commande :

sudo pip3 install cryptography

Depuis le 9 février c’est cryptography-3.4.x qui est installé (voir ici : cryptography · PyPI)

A partir des images de Jeedom SAS (https://images.jeedom.com) rpi, smart et x86-64 (antérieures au 04/01/2021), pip (l’installateur de modules Python) est initialement en version pip 18.1.

Pour l’installation du module python3 cryptography :

  • dans une VM (architecture x86_64/amd64)
    c’est un fichier de type wheel qui est téléchargé : cryptography-3.4.5-cp36-abi3-manylinux2014_x86_64.whl
    et le module est correctement installé.
    (EDIT : en fait ce n’est plus le cas avec la dernière image Jeedom du 03/02/2021 : jeedom-debian-buster-amd64-4.1.19.iso)

  • sur une Smart ou sur un RPi 3B+ ou 4, en Buster 64 Bits (architecture arm64/aarch64)
    c’est le fichier de type source qui est téléchargé : cryptography-3.4.5.tar.gz
    il y a donc une compilation qui est lancée mais elle n’est pas complète parce que le compilateur Rust est manquant.

Dans la Log Broadlink_update :
l’extrait intéressant est le suivant :

[…]
running build_rust
=============================DEBUG ASSISTANCE=============================
If you are seeing a compilation error please try the following steps to
successfully install cryptography:

  1. Upgrade to the latest pip and try again. This will fix errors for most
    users. See: This page has moved - pip documentation v24.0
  2. Read Installation — Cryptography 43.0.0.dev1 documentation for specific
    instructions for your platform.
  3. Check our frequently asked questions for more information:
    Frequently asked questions — Cryptography 43.0.0.dev1 documentation
  4. Ensure you have a recent Rust toolchain installed:
    Installation — Cryptography 43.0.0.dev1 documentation
  5. If you are experiencing issues with Rust for this release only you may
    set the environment variable CRYPTOGRAPHY_DONT_BUILD_RUST=1.
    =============================DEBUG ASSISTANCE=============================
    error: Can not find Rust compiler
    […]

Cela dit en premier lieu de mettre à jour pip.
Ce qui aura pour effet de télécharger le fichier de type wheel au lieu de télécharger le fichier de type source et la compilation ne sera alors pas nécessaire.
Mais, /!\ ATTENTION, Jeedom n’utilisant pas d’environnement virtuel python,
depuis le 23/01/2021 la mise à jour de pip peut avoir un impact non maitrisé sur les plugins de jeedom qui sont toujours en python2.
Je suggère de bien lire aussi le flash sur python ici : [Présentation] akenad - #22 par akenad

Donc un sujet de méditation pour Jeedom SAS.

Cas de mise en pratique :

après installation de jeedom-debian-buster-amd64-4.1.19.iso

(Les commandes pip, pip2 et pip3 ci-après ne modifient rien. Elles permettent seulement de visualiser les versions avant et après les commandes python et python3 pour la mise à jour de pip)

si on met à jour pip (root ou sudo) :

avant la mise à jour :

# pip --version
pip 18.1 ... (python 2.7)

# pip2 --version
pip 18.1 ... (python 2.7)

# pip3 --version
pip 18.1 ... (python 3.7)

python -m pip install -U pip

# pip --version
pip 20.3.4 ... (python 2.7)
 
# pip2 --version
pip 20.3.4 ... (python 2.7)

# pip3 --version
pip 18.1 ... (python 3.7)

python3 -m pip install -U pip

# pip --version
pip 21.0.1 ... (python 3.7)

# pip2 --version
pip 20.3.4 ... (python 2.7)
 
# pip3 --version
pip 21.0.1 ... (python 3.7)

alors l’installation des dépendances du plugin-broadlink fonctionne (le module python3 cryptography s’installe).
Mais /!\ ATTENTION si les commandes de mises à jour indiquées ci-dessus sont lancées il y a un impact sur les plugins toujours en python2 qui utilisent encore la commande pip (et pas pip2) lors de l’installation des dépendances et la commande python (et pas python2) lors du lancement du démon.

Une alternative à la mise à jour de pip, pour l’instant, pour le cas précis qui nous intéresse ici, et donc un contournement temporaire, est de fixer la version du module cryptography qui s’installait encore au 15/01/2021, à savoir le 3.3.1 :

sudo pip3 install cryptography==3.3.1

akenad :slight_smile:

2 « J'aime »