Создание рецептов для недоступных приложений Python
Поскольку influxdb-python
и pynmea2
недоступны как стандартные рецепты Python, я начал с создания рецептов для них с использованием devtool
.
* 1007.* Шаги
используйте devtool
для добавления influxdb-python
devtool add influxdb-python https://github.com/influxdata/influxdb-python/archive/v5.2.0.tar.gz
используйте devtool
длядобавьте pynmea2
devtool add pynmea2 https://github.com/Knio/pynmea2/archive/1.7.1.tar.gz
Вышеупомянутые шаги создают папку workspace
в вашем $BUILD_DIR
и создают автоматически сгенерированные рецепты для репозиториев..
Отредактируйте рецепты
devtool edit-recipe influxdb-python
добавьте или отметьте DEPEND_${PN}
и RDEPENDS_${PN}
к своим рецептам соответственно.Я добавил все requirements.txt
для influxdb-python
к RDEPENDS_${PN}
, а именно
RDEPEND_${PN} += "${PYTHON_PN}-modules ${PYTHON_PN}-requests ${PYTHON_PN}-dateutil ${PYTHON_PN}-pytz ${PYTHON_PN}-six"
ПРИМЕЧАНИЕ : я не добавил pandas
или numpy
поскольку они не относятся к моей заявке.
Я также добавил DEPENDS_${PN} = "${PYTHON_PN}-modules
.
ПРИМЕЧАНИЕ : выполните то же самое для pynmea2
, но поскольку у него нет requirements.txt
, я добавил RDEPENDS_${PN} = "${PYTHON_PN}-modules"
, поэтому все основные вещи доступны на цели.
Структура рецепта
GitHub Gist для рецептов
Я следовал структуре папки meta-python
, где каждый из рецептов состоит из:
recipe.inc
recipe_version_number.bb
В influxdb_python.inc
сохраните весь материал, сгенерированный из devtool
, а именно
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)
#
# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is
# your responsibility to verify that the values are complete and correct.
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=046523829184aac3703a4c60c0ae2104"
HOMEPAGE = "https://github.com/influxdb/influxdb-python"
SUMMARY = "InfluxDB client"
SRC_URI = "https://github.com/influxdata/influxdb-python/archive/v${PV}.tar.gz"
SRC_URI[md5sum] = "105d88695151e241523b31dd1375096e"
SRC_URI[sha256sum] = "620de85bcca5207b06ec1565884b6d10b4be01d579a78e08b1e922f453fdac05"
DEPENDS_${PN} = "${PYTHON_PN}-modules"
RDEPENDS_${PN} = "${PYTHON_PN}-modules ${PYTHON_PN}-requests ${PYTHON_PN}-dateutil ${PYTHON_PN}-pytz ${PYTHON_PN}-six"
В influxdb_python_5.2.0.bb
я добавил следующие строки:
inherit setuptools3 pypi
require influxdb-python.inc
ПРИМЕЧАНИЕ : я добавил setuptools3
, поскольку хочу, чтобы мое приложение запускалось на python3.5
.Для python2.7 используйте setuptools
.
Аналогично, я сделал то же самое для pynmea2.inc
:
# Recipe created by recipetool
# This is the basis of a recipe and may need further editing in order to be fully functional.
# (Feel free to remove these comments when editing.)
#
# WARNING: the following LICENSE and LIC_FILES_CHKSUM values are best guesses - it is
# your responsibility to verify that the values are complete and correct.
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=bb5e173bc54080cb25079199959ba6b6"
HOMEPAGE = "https://github.com/Knio/pynmea2"
SUMMARY = "Python library for the NMEA 0183 protcol"
SRC_URI = "https://github.com/Knio/pynmea2/archive/${PV}.tar.gz"
SRC_URI[md5sum] = "a90baf61f4e676bef76099e4bd7c0581"
SRC_URI[sha256sum] = "8f8f68623bd2d5dab7f04a9c31813a3f4aa15467db0373cbce6b9b0ae44ca48e"
#DEPENDS_${PN} = "${PYTHON_PN}-datetime ${PYTHON_PN}-threading ${PYTHON_PN}-io"
DEPENDS_${PN} = "${PYTHON_PN}-modules"
# WARNING: the following rdepends are determined through basic analysis of the
# python sources, and might not be 100% accurate.
RDEPENDS_${PN} = "${PYTHON_PN}-modules"
Для pynmea2_1.7.1.bb
:
inherit setuptools3 pypi
require pynmea2.inc
Выпечка рецептов
Вы можете проверить их с помощью bitbake -k influxdb-python
и bitbake -k pynmea2
или devtool build influxdb-python
и devtool build pynmea2
Если у вас нет ошибок, вы можете развернуть их на целииспользуя:
devtool deploy-target influxdb-python user@machineIP:dest_folder
Проверки
Вы можете проверить, запустив оболочку python
# python3
>> import influxdb-python
>> import pyserial
, если при импорте выдается ошибка отсутствия отсутствующих модулей, то это успех !!
Завершающие шаги
ПРИМЕЧАНИЕ : если вы используете krogoth
или ниже, вам придется вручную переместить свои рецепты на мета-слой
- Теперь включите эти рецепты в свои
conf/local.conf
с IMAGE_INSTALL_append = " influxdb-python pynmea2"
и bitbake -k your-image-name
Пользовательское приложение
Еще не тестировалось.
Но я думаю, я просто добавлю свой апp Как упоминалось в YoctoCookBook Repository для hello-world
с моим слоем meta
.
NUGGETS
${PYTHON_PN}-modules
действительно спаситель.Я пытался вручную добавить deps во время выполнения и каждый раз, когда я развертывал его на плате, всегда отсутствовали некоторые зависимости.Но добавление modules
решило все недостающие проблемы deps в экземпляре.
Я не уверен, когда использовать DEPENDS_${PN}
, но я предполагаю, что большинство приложений на python зависят от базового python-modules
поэтому я добавил их.
НЕ ЭКСПЕРТ ЙОКТО но это только мои выводы за последние 2 недели.В Yocto не хватает подходящих примеров для Python.надеюсь, это кому-нибудь поможет.