使用buildroot

时间:2019-04-15 06:04:22

标签: python linux buildroot

我正在尝试在Linux映像中包含我的Python脚本(对于Raspberry Pi)。我有11个脚本,我希望将它们保存在一个看起来像这样的文件中: /app/scripts/all_my_python_scripts.py 由于这一点,我将能够在引导时间之后调用脚本以自动启动守护程序。

当前,我在/ path-to-buildroot / buildroot / package / python-scripts中拥有这些.mk和Config.in文件:

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中,并通过makefile对其进行精确化,但这听起来并不合逻辑……我想存在一个更简单的方法。

有时buildroot尝试下载某些文件……有时它会编译,但是什么也没有发生。但是,我注意到我看不到“通话消息”,我遗漏了一些东西...

2 个答案:

答案 0 :(得分:2)

首先,.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)。更简单,检查一下是否符合您的需求。

答案 1 :(得分:0)

I fixed my problem, it was variable name issue, I rename PYTHON_SCRIPTS in SCRIPTS, below the correct Makefile:

buildroot/package/scripts/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))