Включите массив numpy arrayobject.h в рецепт bitbake - как исправить порядок установки? - PullRequest
0 голосов
/ 10 марта 2020

Мой python пакет зависит от расширения c, которое, в свою очередь, использует numpy arrayobject.h. Я построил образ без пакета и подтвердил, что этот файл существует: /usr/lib/python3.5/site-packages/numpy/core/include. Я также пропатчил setup.py distutil следующим образом:

diff --git a/setup.py b/setup.py
index 99dcc2a..ecb2675 100644
--- a/setup.py
+++ b/setup.py
@@ -11,8 +11,12 @@ building_wheel = bool(sys.argv[1].strip() == 'bdist_wheel')


 def get_numpy_include():
-    import numpy
-    return numpy.get_include()
+    try:
+        import numpy
+        return numpy.get_include()
+
+    except ImportError:
+        return '/usr/lib/python3.5/site-packages/numpy/core/include'


 def get_build_include(lib_name):
@@ -106,6 +110,7 @@ setup(
             name='ringnes.ringbuffer_base',
             sources=sources,
             libraries=clibraries,
+            include_dirs=[get_numpy_include()],
             define_macros=[(sensor_type, 0)]),
         Extension(
             name='ringnes.mseed_ext',

Таким образом, каталог жестко запрограммирован, но тот факт, что я должен отловить исключение импорта, указывает на то, что numpy еще не доступен, и, следовательно, arrayobject.h тоже отсутствует.

Итак, вопрос: как я могу убедиться, что numpy есть до того, как bb сработает в этом рецепте?

Это (важная часть) рецепт. Обратите внимание на DEPENDS (хотя этого было достаточно):

inherit setuptools3

# Experimenting with CFLAGS
# TARGET_CFLAGS_append = " -I/usr/lib/python3.5/site-packages/numpy/core/include"

LAYERDEPENDS += " \ 
    meta-openembedded \
    meta-python \
"

DEPENDS += " \ 
    python3-numpy \
"

RDEPENDS_${PN} += " \
    python3-numpy \
    python3-scipy \
    python3-cryptography \
    python3-smbus \
    python3-psutil \
    python3-hbmqtt \
"

RRECOMMENDS_${PN} += " \
    python3-wifi \
"

1 Ответ

0 голосов
/ 11 марта 2020

Простой ответ - указать зависимость от нативного (целевого) numpy:

DEPENDS += " \ 
    python3-numpy-native \
"

Я еще не подтвердил, что все собирается до конца, но, по крайней мере, arrayobject.h кажется доступны сейчас.

РЕДАКТИРОВАТЬ: Кажется, что теперь все работает нормально. Добавление python3-numpy-native также сделало патч для numpy устаревшим.

...