Зависимости Buildroot Python (_sqlite3)

Полный отказ от ответственности: последние 6 недель я использую buildroot. Это мое первое знакомство со встроенным Linux, поэтому я все еще очень экологичен, но смог решить 99% своих проблем сам. по большей части процесс был простым.

Чтобы занять себя, пока я застрял, дома и не могу работать, я работал над проектом встраиваемого оборудования. Я выбрал свое оборудование, построил прототип, изучил основы buildroot, поднял базовую систему, оптимизировал конфигурацию ядра, построил собственное дерево устройств для своего оборудования, и я доволен до этого момента.

Параллельно я программировал целевое приложение на python на моем рабочем столе, оно зависит от нескольких библиотек (аппаратная абстракция, связь, отображение и т. Д.), Но относительно прямолинейно.

Я дошел до того, что у меня есть список необходимых пакетов для встраивания в мою систему buildroot. Здесь отлично подходят инструменты buildroot, использующие инструмент scanpypi:

~/buildroot$ utils/scanpypi diskcache -o package

Простое добавление всех зависимостей в /package/config.in позволило выбрать их в menuconfig и добавить в рецепт.

Проблема возникает во время сборки, когда сборка модуля python не выполняется для модуля выше python-diskcache.

У него есть зависимости от нескольких вещей, но одна из них - slqite3, она была добавлена ​​как: основной модуль python "sqlite module" внешний пакет "библиотеки python-pysqlite3"> база данных> sqlite

Однако при сборке он не работает:

>>> python-diskcache 4.1.0 Building
Traceback (most recent call last):
File "setup.py", line 5, in <module>
import diskcache
File "/home/buildroot/output/build/python-diskcache-4.1.0/diskcache/__init__.py", line 9, in <module>
from .core import Cache, Disk, EmptyDirWarning, JSONDisk, UnknownFileWarning, Timeout
File "/home/buildroot/output/build/python-diskcache-4.1.0/diskcache/core.py", line 14, in <module>
import sqlite3
File "/home/buildroot/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/python3.8/sqlite3/__init__.py", line 23, in <module>
from sqlite3.dbapi2 import *
File "/home/buildroot/output/host/arm-buildroot-linux-uclibcgnueabihf/sysroot/usr/lib/python3.8/sqlite3/dbapi2.py", line 27, in <module>
from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'
make[1]: *** [package/pkg-generic.mk:269: /home/buildroot/output/build/python-diskcache-4.1.0/.stamp_built] Error 1
make: *** [Makefile:84: _all] Error 2

При поиске решения кажется, что _sqlite3 - это модуль C, внешний по отношению к python, для связи с базой данных sqlite. Он должен быть установлен с помощью python (с использованием 3.8) и должен быть включен в buildroot с включением основного модуля sqlite.

обсуждение 1 обсуждение 2

Есть несколько исправлений для решения этой проблемы на хосте (например, apt get install libsqlite3-dev и переустановите / перенастройте python). Очевидно, что это невозможно в образе, и установки sqlite и python3 являются последними сборками и устанавливаются в образ во время сборки.

Я действительно изо всех сил пытаюсь понять проблему или то, как я могу ее исправить. У меня есть несколько теорий, основанных на обсуждении, но я не уверен.

1) python устанавливается на изображение до sqlite, поэтому соответствующий модуль не получает cp или символическую ссылку на установку python.

2) есть еще одна неизвестная зависимость, которая не выполняется во время сборки, и она молча терпит неудачу

любые идеи или помощь будут очень признательны.

Спасибо


person kjn    schedule 06.05.2020    source источник
comment
вы могли бы это решить?   -  person Leevi L    schedule 23.11.2020