文件不是从配方安装的
Files are not installed from recipe
我正在尝试创建自定义配方来签署从 u-boot.bb 生成的 u-boot 映像。
我有 2 个自定义食谱:
1. u-boot.bb - clones, compiles and deploys u-boot resulting u-boot.elf.
2. u-boot-sign.bb - depends on u-boot.bb. Gets u-boot.elf, passes it through
custom signing procedure and deploys the result.
为了签名,我不得不使用位于外部存储库中的 python 脚本形式的自定义程序。
导致问题的部分是从 u-boot.bb 配方访问已部署的 u-boot.elf 二进制文件。我找不到将 u-boot.elf 二进制文件公开给 u-boot-sign.bb 配方的方法。
从一个配方公开图像二进制文件,以便在另一个配方中访问、签名和部署的正确方法应该是什么?
为了在食谱之间和交叉编译范围之间共享文件,我在安装二进制文件时使用了 ${datadir}
(通过 do_install
)。这允许我通过 recipe-sysroot
.
访问 FILES:${PN}
描述的所有文件
u-boot.bb
- 导出配方:
…
do_install() {
install -d ${D}${datadir}/u-boot-2016/
install -m 0644 ${B}/${UBOOT_ELF_BINARY} ${D}${datadir}/u-boot-2016
}
FILES:${PN} = "${datadir}/u-boot-2016"
…
u-boot-sign.bb
- 取决于配方
…
DEPENDS += " u-boot python3-native"
do_sign() {
${STAGING_BINDIR_NATIVE}/python3-native/python3 sign.py \
-i ${RECIPE_SYSROOT}${datadir}/u-boot-2016/${UBOOT_ELF_BINARY}
}
…
灵感来自Here
编辑
有人建议我不要使用 ${datadir}
传输这样的文件。对于中间文件,更好的方法是使用 /firmware
,就像在 meta-arm
.
中所做的那样
u-boot.bb
- 导出配方:
…
do_install() {
install -D -p -m 0644 ${B}/${UBOOT_ELF_BINARY} ${D}/firmware/${UBOOT_ELF_BINARY}
}
FILES:${PN} = "/firmware"
SYSROOT_DIRS += "/firmware"
…
u-boot-sign.bb
- 取决于配方
…
DEPENDS += " u-boot python3-native"
do_sign() {
${STAGING_BINDIR_NATIVE}/python3-native/python3 sign.py \
-i ${RECIPE_SYSROOT}/firmware/u-boot-2016/${UBOOT_ELF_BINARY}
}
…
还需要在SYSROOT_DIRS
的基础上加上/firmware
。
我正在尝试创建自定义配方来签署从 u-boot.bb 生成的 u-boot 映像。
我有 2 个自定义食谱:
1. u-boot.bb - clones, compiles and deploys u-boot resulting u-boot.elf.
2. u-boot-sign.bb - depends on u-boot.bb. Gets u-boot.elf, passes it through
custom signing procedure and deploys the result.
为了签名,我不得不使用位于外部存储库中的 python 脚本形式的自定义程序。
导致问题的部分是从 u-boot.bb 配方访问已部署的 u-boot.elf 二进制文件。我找不到将 u-boot.elf 二进制文件公开给 u-boot-sign.bb 配方的方法。
从一个配方公开图像二进制文件,以便在另一个配方中访问、签名和部署的正确方法应该是什么?
为了在食谱之间和交叉编译范围之间共享文件,我在安装二进制文件时使用了 ${datadir}
(通过 do_install
)。这允许我通过 recipe-sysroot
.
FILES:${PN}
描述的所有文件
u-boot.bb
- 导出配方:
…
do_install() {
install -d ${D}${datadir}/u-boot-2016/
install -m 0644 ${B}/${UBOOT_ELF_BINARY} ${D}${datadir}/u-boot-2016
}
FILES:${PN} = "${datadir}/u-boot-2016"
…
u-boot-sign.bb
- 取决于配方
…
DEPENDS += " u-boot python3-native"
do_sign() {
${STAGING_BINDIR_NATIVE}/python3-native/python3 sign.py \
-i ${RECIPE_SYSROOT}${datadir}/u-boot-2016/${UBOOT_ELF_BINARY}
}
…
灵感来自Here
编辑
有人建议我不要使用 ${datadir}
传输这样的文件。对于中间文件,更好的方法是使用 /firmware
,就像在 meta-arm
.
u-boot.bb
- 导出配方:
…
do_install() {
install -D -p -m 0644 ${B}/${UBOOT_ELF_BINARY} ${D}/firmware/${UBOOT_ELF_BINARY}
}
FILES:${PN} = "/firmware"
SYSROOT_DIRS += "/firmware"
…
u-boot-sign.bb
- 取决于配方
…
DEPENDS += " u-boot python3-native"
do_sign() {
${STAGING_BINDIR_NATIVE}/python3-native/python3 sign.py \
-i ${RECIPE_SYSROOT}/firmware/u-boot-2016/${UBOOT_ELF_BINARY}
}
…
还需要在SYSROOT_DIRS
的基础上加上/firmware
。