bitbake 没有打电话给我 do_install
bitbake not calling my do_install
我有一个方法应该是将 运行 级别的脚本复制到 /etc/init.d 并从 /etc/rc5 创建一个符号 link 但是 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 -c install init-wifi' 强制 bitbake 运行 配方,它将安装文件 "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
然而,当我的图像构建并安装在我的模块上时,脚本和 links 不存在。
几天来一直在努力解决这个问题,搜索也没有产生太大的帮助。
有什么想法吗?
谢谢!
您没有将新食谱添加到图像食谱中。
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"
FILES
The list of directories or files that are placed in packages.
To use the FILES variable, provide a package name override that identifies the resulting package. Then, provide a space-separated list of files or paths that identify the files you want included as part of the resulting package. Here is an example:
FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile"
LPS,
感谢您的帮助和建议。和他们一起,我能够得到它来安装文件并创建 link.
我对 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 问题:Symlink /etc/rc5.d/S90wifi_start.sh in init-wifi 指向 TMPDIR [symlink-to -sysroot]
所以我想我会重新审视我是如何做 link 的,但我 'off top dead-center' 并再次向前迈进。
谢谢!
-史蒂夫
我有一个方法应该是将 运行 级别的脚本复制到 /etc/init.d 并从 /etc/rc5 创建一个符号 link 但是 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 -c install init-wifi' 强制 bitbake 运行 配方,它将安装文件 "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
然而,当我的图像构建并安装在我的模块上时,脚本和 links 不存在。
几天来一直在努力解决这个问题,搜索也没有产生太大的帮助。
有什么想法吗?
谢谢!
您没有将新食谱添加到图像食谱中。
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"
FILES
The list of directories or files that are placed in packages.
To use the FILES variable, provide a package name override that identifies the resulting package. Then, provide a space-separated list of files or paths that identify the files you want included as part of the resulting package. Here is an example:
FILES_${PN} += "${bindir}/mydir1/ ${bindir}/mydir2/myfile"
LPS,
感谢您的帮助和建议。和他们一起,我能够得到它来安装文件并创建 link.
我对 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 问题:Symlink /etc/rc5.d/S90wifi_start.sh in init-wifi 指向 TMPDIR [symlink-to -sysroot]
所以我想我会重新审视我是如何做 link 的,但我 'off top dead-center' 并再次向前迈进。
谢谢!
-史蒂夫