2017-08-17 7 views
1

Ce problème concerne Openembedded/Yocto.'aucun module nommé setuptools' mais il est contenu dans la variable DEPENDS

J'ai un code source qui doit être compilé par un script python3 personnalisé. Cela signifie que certains scripts python3 doivent être exécutés pendant le processus do_compile(). Le script importe setuptools, par conséquent, j'ai ajouté DEPENDS += "python3-setuptools-native" à la recette. Pour autant que je comprenne la documentation, cela devrait rendre le module setuptools disponible pour le processus de construction (natif). Mais lorsque bitbake exécute le processus do_compile(), j'obtiens cette erreur: no module named 'setuptools'.

Permettez-moi de le décomposer à un minimum (non) exemple de travail:

DOSSIER: test.bb

LICENSE = "BSD" 
LIC_FILES_CHKSUM = "file://test/LICENSE;md5=d41d8cd98f00b204e9800998ecf8427e" 

DEPENDS += "python3-setuptools-native" 

SRC_URI = "file://test.py \ 
      file://LICENSE" 

do_compile() { 
    python3 ${S}/../test.py 
} 

DOSSIER: test.py

import setuptools 

print("HELLO") 

bitbaking:

$ bitbake test 
ERROR: test-1.0-r0 do_compile: Function failed: do_compile (log file is located at /path/to/test/1.0-r0/temp/log.do_compile.8532) 
ERROR: Logfile of failure stored in: /path/to/test/1.0-r0/temp/log.do_compile.8532 
Log data follows: 
| DEBUG: Executing shell function do_compile 
| Traceback (most recent call last): 
| File "/path/to/test-1.0/../test.py", line 1, in <module> 
|  import setuptools 
| ImportError: No module named 'setuptools' 
| WARNING: exit code 1 from a shell command. 
| ERROR: Function failed: do_compile (log file is located at /path/to/test/1.0-r0/temp/log.do_compile.8532) 
ERROR: Task (/path/to/test.bb:do_compile) failed with exit code '1' 
NOTE: Tasks Summary: Attempted 400 tasks of which 398 didn't need to be rerun and 1 failed. 
NOTE: Writing buildhistory 

Summary: 1 task failed: 
    /path/to/test.bb:do_compile 
Summary: There was 1 ERROR message shown, returning a non-zero exit code. 

Est-ce que mon exepectation est incorrecte, que DEPENDS += "python3-setuptools-native" rend le module python3 'setuptools' disponible pour le script python3 dans do_compile()? Comment puis-je accomplir cela?

Répondre

1

Sous le capot un peu plus est nécessaire pour obtenir le support de setuptools. Heureusement, il y a une classe pour gérer que:

inherit setuptools3 

Cela devrait être tout ce qu'il faut pour emballer un setuptools de projet basé OE-Core. Tant que votre projet a un fichier setup.py standard, vous n'avez pas besoin d'écrire les fonctions do_compile() ou do_install().

Si vous avez besoin de regarder les détails, meta/classes/setuptools3.bbclass et meta/classes/distutils3.bbclass devraient contenir ce dont vous avez besoin (y compris la façon peu évidente d'appeler python natif à partir d'une recette).