Копирование скрипта Python в rootfs с помощью buildroot - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь включить мои скрипты Python в мой образ Linux (для Raspberry Pi). У меня есть 11 сценариев, и я хотел бы иметь их в файле, который выглядит следующим образом: /app/scripts/all_my_python_scripts.py Благодаря этому после загрузки я смогу вызвать скрипт для автоматического запуска демона.

В настоящее время у меня есть эти файлы .mk и Config.in в / path-to-buildroot / buildroot / package / python-scripts:

Config.in

config BR2_PACKAGE_PYTHON_SCRIPTS
    bool "python-scripts"
    default "y"
    help
      Import all Python (3.7.2) scripts

python-scripts.mk

PYTHON_PYTHON_SCRIPTS_VERSION = 1.0
PYTHON_PYTHON_SCRIPTS_SOURCE = ../../scripts/
PYTHON_PYTHON_SCRIPTS_LICENSE = BSD-3-Clause
PYTHON_PYTHON_SCRIPTS_TYPE = distutils

define PYTHON_PYTHON_SCRIPTS_COPY
    @$(call MESSAGE,"Syncing python scripts to $(TARGET_DIR)")
    cp ../../scripts/* $(TARGET_DIR)/scripts/
endef
$(eval $(generic-package))

Я пытался изменить исходный путь и «универсальный пакет», но проблема все та же. Я также корректно обновляю buildroot / package / Confin.in и дважды проверил с помощью make menuconfig. В настоящее время я пытаюсь сохранить свои скрипты на python (до компиляции), сохранить их в buildroot / dl и проверить их через make-файл, но это не звучит логично ... Я предполагаю, что существует более простой способ.

Иногда buildroot пытается загрузить какой-нибудь файл ... иногда он компилируется, но ничего не происходит. Тем не менее, я замечаю, что не вижу своего «СООБЩЕНИЯ», я что-то упускаю ...

Ответы [ 2 ]

2 голосов
/ 16 апреля 2019

Во-первых, префикс переменных в файле .mk должен иметь префикс, равный имя файла, без '.mk', в верхнем регистре и с подчеркиванием вместо тире:

  • PYTHON_PYTHON_SCRIPTS_VERSION -> PYTHON_SCRIPTS_VERSION
  • PYTHON_PYTHON_SCRIPTS_SOURCE -> PYTHON_SCRIPTS_SOURCE
  • и т.д.

Кроме того, в Buildroot нет шага «COPY», поэтому переменная PYTHON_SCRIPTS_COPY игнорируется. Вы, вероятно, хотите использовать шаг «УСТАНОВИТЬ»:

  • PYTHON_PYTHON_SCRIPTS_COPY -> PYTHON_SCRIPTS_INSTALL_TARGET_CMDS

Наконец, шаг "SCRIPTS_TYPE" специфичен для инфраструктуры пакетов Python. Поскольку вы используете общую инфраструктуру пакетов, эта переменная будет игнорироваться.


Примечание: совершенно другое решение, если вам просто нужно скопировать файлы в ваших rootfs, это использовать наложение корневой файловой системы (BR2_ROOTFS_OVERLAY). Проще, проверьте это и посмотрите, подходит ли оно вашим потребностям.

0 голосов
/ 17 апреля 2019

Я исправил свою проблему, это была проблема с именем переменной, я переименовал PYTHON_SCRIPTS в SCRIPTS, ниже правильного Makefile:

Buildroot / пакет / скрипты / scripts.mk

    ################################################################################
#
# scripts
#
################################################################################

SCRIPTS_VERSION = 1.0
SCRIPTS_DEV_DIR = ../scripts/
SCRIPTS_SITE = ../scripts
SCRIPTS_SITE_METHOD = local
SCRIPTS_INSTALL_TARGET = YES

define SCRIPTS_INSTALL_TARGET_CMDS
    rm -v $(TARGET_DIR)/scripts/*
    rsync -av $(SCRIPTS_DEV_DIR) $(TARGET_DIR)/scripts/
endef

$(eval $(generic-package))
...