【问题标题】:bitbake not calling my do_installbitbake 没有调用我的 do_install
【发布时间】:2017-10-23 15:30:50
【问题描述】:

我有一个配方,应该将运行级别脚本复制到 /etc/init.d 并从 /etc/rc5 创建到它的符号链接但是 do_install 函数似乎没有被调用。

在我的层的结构之下。问题 bb 文件是树底部的 init-wifi.bb。带有 bbappends 的其他食谱工作正常。

.
├── conf
│   └── layer.conf
├── recipes-connectivity
│   ├── alsa
│   │   ├── alsa-lib
│   │   └── alsa-lib_1.0.29.bbappend
│   └── wpa-supplicant
│       ├── wpa-supplicant
│       │   ├── wpa_supplicant.conf
│       │   └── wpa_supplicant.conf-sane
│       └── wpa-supplicant_2.4.bbappend
├── recipes-core
│   ├── base-files
│   │   ├── base-files
│   │   │   └── profile
│   │   └── base-files_%.bbappend
│   └── init-ifupdown
│       ├── init-ifupdown-1.0
│       │   └── interfaces
│       └── init-ifupdown_1.0.bbappend
└── recipes-my
    └── init-wifi
        ├── files
        │   └── wifi_start.sh
        └── init-wifi.bb

下面是 init-wifi.bb 配方:

SUMMARY = "x"
LICENSE = "CLOSED"
#PR = "r0"
SRC_URI += "file://wifi_start.sh"

#INITSCRIPT_NAME = "wifi_start.sh"
#INITSCRIPT_PARAMS = "defaults 90"

do_install() {
    install -d ${D}${sysconfdir}/init.d
    install -d ${D}${sysconfdir}/rcS.d
    install -d ${D}${sysconfdir}/rc1.d
    install -d ${D}${sysconfdir}/rc2.d
    install -d ${D}${sysconfdir}/rc3.d
    install -d ${D}${sysconfdir}/rc4.d
    install -d ${D}${sysconfdir}/rc5.d


    install -m 0755 ${WORKDIR}/wifi_start.sh  ${D}${sysconfdir}/init.d/

    ln -sf ${D}${syscondir}/init.d/wifi_start.sh {D}${sysconfdir}/rc5.d/S90wifi_start.sh

}

如果我在 do_install 函数之外向 bb 文件引入错误,我会在调用 bitbake 时收到错误,所以我知道我的配方文件正在被找到并被解析。但是,如果我在 do_install 函数中引入错误,则不会调用它。此外,我没有看到脚本被安装到工作或图像目录中(在删除故意调试错误之后)。

如果我强制 bitbake 使用“bitbake -c install init-wifi”运行配方,它将安装文件“work/image”目录:

tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/initwifi/0.0-r0/image/etc/init.d/wifi_start.sh

tmp/work/cortexa7hf-vfp-neon-poky-linux-gnueabi/initwifi/0.0-r0/wifi_start.sh

但是,当我的图像在我的模块上构建和安装时,脚本和链接不存在。

为此苦苦挣扎了几天,搜索也没有产生太大帮助。

有什么想法吗?

谢谢!

【问题讨论】:

    标签: yocto bitbake


    【解决方案1】:

    您没有将新配方添加到图像配方中。

    IMAGE_INSTALL_append = " init-wifi " 
    

    编辑

    我以前也这样做过,效果很好。 我可以看到的差异是:

    SRC_URI += "file://wifi_start.sh"
    

    应该是

    SRC_URI = "file://wifi_start.sh"
    

    因为您正在创建 SRC_URI,而不是添加到现有的。

    我曾经为我使用的每个文件添加 md5 校验和。

    你应该添加

    FILES_${PN} += "${sysconfdir}/profile.d"
    FILES_${PN} += "${sysconfdir}/rcS.d"
    FILES_${PN} += "${sysconfdir}/rc1.d"
    FILES_${PN} += "${sysconfdir}/rc2.d"
    FILES_${PN} += "${sysconfdir}/rc3.d"
    FILES_${PN} += "${sysconfdir}/rc4.d"
    FILES_${PN} += "${sysconfdir}/rc5.d"
    

    来自Yocto man

    文件

    放置在包中的目录或文件的列表。

    要使用 FILES 变量,请提供一个包名称覆盖来标识生成的包。然后,提供一个以空格分隔的文件或路径列表,用于标识您希望包含在结果包中的文件。这是一个例子:

    FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile"
    

    【讨论】:

    • 我尝试将 IMAGE_INSTALL_append = "init-wifi" 添加到我的配方、layer.conf 和 local.conf 中,但似乎都没有在工作/安装目录中设置文件。跨度>
    【解决方案2】:

    LPS,

    感谢您的帮助和建议。有了它们,我就可以安装文件并创建链接。

    我对我的 init-wifi.bb 文件进行了建议的更改:

    SUMMARY = "x"
    LICENSE = "CLOSED"
    #PR = "r0"
    SRC_URI = "file://wifi_start.sh"
    
    
    FILES_${PN} += "${sysconfdir}/init.d"
    FILES_${PN} += "${sysconfdir}/rcS.d"
    FILES_${PN} += "${sysconfdir}/rc1.d"
    FILES_${PN} += "${sysconfdir}/rc2.d"
    FILES_${PN} += "${sysconfdir}/rc3.d"
    FILES_${PN} += "${sysconfdir}/rc4.d"
    FILES_${PN} += "${sysconfdir}/rc5.d"
    
    
    do_install() {
    
    install -d ${D}${sysconfdir}/init.d
    install -d ${D}${sysconfdir}/rcS.d
    install -d ${D}${sysconfdir}/rc1.d
    install -d ${D}${sysconfdir}/rc2.d
    install -d ${D}${sysconfdir}/rc3.d
    install -d ${D}${sysconfdir}/rc4.d
    install -d ${D}${sysconfdir}/rc5.d   
    
    install -m 0755 ${WORKDIR}/wifi_start.sh  ${D}${sysconfdir}/init.d/   
    
    ln -sf ${D}${syscondir}/init.d/wifi_start.sh      ${D}${sysconfdir}/rc5.d/S90wifi_start.sh
    
    }
    

    另外,我必须将下面建议的行添加到 meta-mylayer/conf/layer.conf

    IMAGE_INSTALL_append = " init-wifi "
    

    我收到警告:

    警告:QA 问题:init-wifi 中的符号链接 /etc/rc5.d/S90wifi_start.sh 指向 TMPDIR [symlink-to-sysroot]

    所以我想我会重新审视我是如何做链接的,但我“偏离了上死点”并再次前进。

    谢谢!

    -史蒂夫

    【讨论】:

    • 不确定协议。所以我标记了你的回复。再次感谢!您的帮助是不可或缺的,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2018-03-14
    • 2013-09-01
    • 2015-04-06
    • 2016-01-22
    • 2018-07-17
    • 2016-03-08
    • 2015-06-23
    • 2018-04-03
    相关资源
    最近更新 更多