Bitbake 依赖于 AAA 数据包,它将依赖于 AAA-dev
Bitbake depends AAA packet, it will rdepends AAA-dev
我在一个已经存在的.bb
文件中添加依赖包,比如在.bb
文件中添加DPENDS="AAA"
行,当我编译.bb
文件时,它失败了XXX rdepends on AAA-dev [dev-deps]
,然后我搜索 google,所有答案几乎都是在 .bb
文件中添加行 INSANE_SKIP_${PN} += "dev-deps"
或 RDEPENDS_${PN}_remove = "AAA-dev"
。
但我的问题是为什么?为什么一个数据包依赖 AAA 数据包,它也应该 RDPENDS
AAA-dev,有没有其他答案可以解决这个问题
bb
源文件是:
inherit autotools qcommon
DESCRIPTION = "Daemon to handle AT commands"
DEPENDS = "glib-2.0 qmi qmi-framework qmi-client-helper ocean-link"
SRC_DIR = "${WORKSPACE}/atfwd-daemon/"
S = "${WORKDIR}/atfwd-daemon/"
PR = "r3"
EXTRA_OECONF += "--with-glib --with-common-includes=${STAGING_INCDIR}"
do_configure_append() {
echo "/*This is compiled to generate, only look don't try*/" > ${S}atfwd_config.h
echo "#ifndef _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
echo "#define _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
#//<!-- ODM feature caogang@2015-07-13
if [ "${PRJ_NAU8810}" = "NAU8810_CODEC" ]; then
echo "#define NAU8810_CODEC" >> ${S}atfwd_config.h
fi
if [ "${FEATURE_ACDB_ENABLE}" = "true" ]; then
echo "#define FEATURE_ACDB_ENABLE 1" >> ${S}atfwd_config.h
fi
if [ "${PRJ_XXX}" != "" ]; then
echo "#define ${PRJ_XXX}" >> ${S}atfwd_config.h
fi
#//end-->
我在onenet pkg上添加了一个DEPENDS
inherit autotools qcommon
DESCRIPTION = "Daemon to handle AT commands"
DEPENDS = "glib-2.0 qmi qmi-framework qmi-client-helper ocean-link onenet"
SRC_DIR = "${WORKSPACE}/atfwd-daemon/"
S = "${WORKDIR}/atfwd-daemon/"
PR = "r3"
EXTRA_OECONF += "--with-glib --with-common-includes=${STAGING_INCDIR}"
do_configure_append() {
echo "/*This is compiled to generate, only look don't try*/" > ${S}atfwd_config.h
echo "#ifndef _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
echo "#define _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
#//<!-- ODM feature caogang@2015-07-13
if [ "${PRJ_NAU8810}" = "NAU8810_CODEC" ]; then
echo "#define NAU8810_CODEC" >> ${S}atfwd_config.h
fi
if [ "${FEATURE_ACDB_ENABLE}" = "true" ]; then
echo "#define FEATURE_ACDB_ENABLE 1" >> ${S}atfwd_config.h
fi
if [ "${PRJ_XXX}" != "" ]; then
echo "#define ${PRJ_XXX}" >> ${S}atfwd_config.h
fi
#//end-->
onenet.bb
是:
inherit pkgconfig cmake
DESCRIPTION = "onenet sdk"
LICENSE = "PD"
PR = "r0"
LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=bae84cdd023be37582157d865da54cc6"
SRCREV = "065d98dd8de91544315d6167ce73626ce739666d"
SRC_URI = "git://github.com/cm-heclouds/MQTT.git;protocol=https"
S = "${WORKDIR}/git/mqtt_sdk"
do_install() {
install -d ${D}/usr/lib
install -d ${D}/usr/include/onenet
install -m 0644 ${B}/bin/libmqtt.so -D ${D}/usr/lib/
for inc in $(find ${S} -name *.h ! -name 'cJSON.h'); do
install -m 0644 ${inc} -D ${D}/usr/include/onenet
done
}s
完整性检查文档解释了这一点:
dev-deps: Checks that all packages except -dev or -staticdev packages
do not depend on -dev packages, which would be a packaging bug.
它告诉您在您当前的配方中 "XXX" runtime-depends "AAA-dev" 并且这通常是一个错误。您需要先找出 how/why 添加了此依赖项,然后才能确定正确的解决方案。
根据添加的方法:问题似乎是 onenet build 生成了一个未版本控制的“.so”文件。这通常是一个错误(实际的库文件应该是 "libmqtt.so.1.1" 并且未版本化的文件应该只是版本化文件的符号链接)。我很惊讶你在构建 onenet 时没有在这个问题上遇到致命错误。您是否为此抑制了 QA 错误?
既然你已经设法以某种方式构建了 onenet,你现在可能有一个 onenet-dev 包,它错误地包含了实际的库:构建系统在 atfwd-daemon 构建期间注意到这一点,向 onenet-dev 添加了运行时依赖性(因为那是图书馆所在的地方)然后 QA 错误触发,因为正常的包不应该依赖于 -dev 包。
可能的修复:
- 要么修复 onenet 构建系统,使其生成版本库,要么
强制将.so文件打包到实际的onenet包中,而不是onenet-dev,像这样:
FILES_${PN}-dev = "${includedir}/"
FILES_${PN} += "${libdir}/libmqtt.so"
一个额外的建议:使用目录变量而不是像 /usr/include 和 /usr/lib 这样的路径(就像我上面做的那样)是一个很好的 "Best Practice".
我在一个已经存在的.bb
文件中添加依赖包,比如在.bb
文件中添加DPENDS="AAA"
行,当我编译.bb
文件时,它失败了XXX rdepends on AAA-dev [dev-deps]
,然后我搜索 google,所有答案几乎都是在 .bb
文件中添加行 INSANE_SKIP_${PN} += "dev-deps"
或 RDEPENDS_${PN}_remove = "AAA-dev"
。
但我的问题是为什么?为什么一个数据包依赖 AAA 数据包,它也应该 RDPENDS
AAA-dev,有没有其他答案可以解决这个问题
bb
源文件是:
inherit autotools qcommon
DESCRIPTION = "Daemon to handle AT commands"
DEPENDS = "glib-2.0 qmi qmi-framework qmi-client-helper ocean-link"
SRC_DIR = "${WORKSPACE}/atfwd-daemon/"
S = "${WORKDIR}/atfwd-daemon/"
PR = "r3"
EXTRA_OECONF += "--with-glib --with-common-includes=${STAGING_INCDIR}"
do_configure_append() {
echo "/*This is compiled to generate, only look don't try*/" > ${S}atfwd_config.h
echo "#ifndef _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
echo "#define _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
#//<!-- ODM feature caogang@2015-07-13
if [ "${PRJ_NAU8810}" = "NAU8810_CODEC" ]; then
echo "#define NAU8810_CODEC" >> ${S}atfwd_config.h
fi
if [ "${FEATURE_ACDB_ENABLE}" = "true" ]; then
echo "#define FEATURE_ACDB_ENABLE 1" >> ${S}atfwd_config.h
fi
if [ "${PRJ_XXX}" != "" ]; then
echo "#define ${PRJ_XXX}" >> ${S}atfwd_config.h
fi
#//end-->
我在onenet pkg上添加了一个DEPENDS
inherit autotools qcommon
DESCRIPTION = "Daemon to handle AT commands"
DEPENDS = "glib-2.0 qmi qmi-framework qmi-client-helper ocean-link onenet"
SRC_DIR = "${WORKSPACE}/atfwd-daemon/"
S = "${WORKDIR}/atfwd-daemon/"
PR = "r3"
EXTRA_OECONF += "--with-glib --with-common-includes=${STAGING_INCDIR}"
do_configure_append() {
echo "/*This is compiled to generate, only look don't try*/" > ${S}atfwd_config.h
echo "#ifndef _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
echo "#define _ATFWD_CONFIG_H_" >> ${S}atfwd_config.h
#//<!-- ODM feature caogang@2015-07-13
if [ "${PRJ_NAU8810}" = "NAU8810_CODEC" ]; then
echo "#define NAU8810_CODEC" >> ${S}atfwd_config.h
fi
if [ "${FEATURE_ACDB_ENABLE}" = "true" ]; then
echo "#define FEATURE_ACDB_ENABLE 1" >> ${S}atfwd_config.h
fi
if [ "${PRJ_XXX}" != "" ]; then
echo "#define ${PRJ_XXX}" >> ${S}atfwd_config.h
fi
#//end-->
onenet.bb
是:
inherit pkgconfig cmake
DESCRIPTION = "onenet sdk"
LICENSE = "PD"
PR = "r0"
LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=bae84cdd023be37582157d865da54cc6"
SRCREV = "065d98dd8de91544315d6167ce73626ce739666d"
SRC_URI = "git://github.com/cm-heclouds/MQTT.git;protocol=https"
S = "${WORKDIR}/git/mqtt_sdk"
do_install() {
install -d ${D}/usr/lib
install -d ${D}/usr/include/onenet
install -m 0644 ${B}/bin/libmqtt.so -D ${D}/usr/lib/
for inc in $(find ${S} -name *.h ! -name 'cJSON.h'); do
install -m 0644 ${inc} -D ${D}/usr/include/onenet
done
}s
完整性检查文档解释了这一点:
dev-deps: Checks that all packages except -dev or -staticdev packages do not depend on -dev packages, which would be a packaging bug.
它告诉您在您当前的配方中 "XXX" runtime-depends "AAA-dev" 并且这通常是一个错误。您需要先找出 how/why 添加了此依赖项,然后才能确定正确的解决方案。
根据添加的方法:问题似乎是 onenet build 生成了一个未版本控制的“.so”文件。这通常是一个错误(实际的库文件应该是 "libmqtt.so.1.1" 并且未版本化的文件应该只是版本化文件的符号链接)。我很惊讶你在构建 onenet 时没有在这个问题上遇到致命错误。您是否为此抑制了 QA 错误?
既然你已经设法以某种方式构建了 onenet,你现在可能有一个 onenet-dev 包,它错误地包含了实际的库:构建系统在 atfwd-daemon 构建期间注意到这一点,向 onenet-dev 添加了运行时依赖性(因为那是图书馆所在的地方)然后 QA 错误触发,因为正常的包不应该依赖于 -dev 包。
可能的修复:
- 要么修复 onenet 构建系统,使其生成版本库,要么
强制将.so文件打包到实际的onenet包中,而不是onenet-dev,像这样:
FILES_${PN}-dev = "${includedir}/" FILES_${PN} += "${libdir}/libmqtt.so"
一个额外的建议:使用目录变量而不是像 /usr/include 和 /usr/lib 这样的路径(就像我上面做的那样)是一个很好的 "Best Practice".