gpt4 book ai didi

linux - yocto:在 linux-yocto-custom 中使用 SRCREV ="${AUTOREV}"时 do_validate_branches() 失败

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:52 24 4
gpt4 key购买 nike

我正在设置 yocto v1.7.1“dizzy”,以便根据 checkin 本地 git 存储库的自定义 Linux 内核版本构建自定义 Linux 镜像。

在执行构建过程时,它在 do_validate_branches() 期间失败并出现以下错误消息。

DEBUG: Executing shell function do_validate_branches
usage: git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>
or: git cat-file (--batch|--batch-check) < <list_of_objects>

<type> can be one of: blob, tree, commit, tag
-t show object type
-s show object size
-e exit with zero when there's no error
-p pretty-print object's content
--textconv for blob objects, run textconv on object's content
--batch[=<format>] show info and content of objects fed from the standard input
--batch-check[=<format>]
show info about objects fed from the standard input

ERROR: is not a valid commit ID.
ERROR: The kernel source tree may be out of sync
WARNING: exit code 1 from a shell command.
ERROR: Function failed: do_validate_branches (log file is located at etc..)

查看 do_validate_branches 生成的代码,问题似乎是因为它正在调用 git cat-file -t ${machine_srcrev} ,但是${machine_srcrev}是一个空字符串。此外,这似乎是因为我在 linux-yocto-custom.bb

中使用了以下内容
SRCREV="${AUTOREV}"

因为当我用修订号替换它时,我不再遇到问题,例如......

SRCREV="7035c2a67d964acbb5d917f470bcda42691a3d9c"

问题是我实际上希望这个配方是从分支的头部构建的,所以放置一个特定的修订版似乎不是我想要的,SRCREV="${AUTOREV}"似乎是我真正想要的。但如上所述,这使得 ${SRCREV_machine}是一个空字符串,而不是 AUTOINC正如我认为应该评估的那样。

任何人都可以告诉我如何让食谱既遵循头脑又不必不断更新食谱以包含正确的SRCREV并让它通过do_validate_branches() ?我在这里缺少什么?

编辑:更多信息...

如果我按如下方式修改我的kernel-yocto.bbclass,问题似乎也得到解决...@285

-    machine_srcrev="${SRCREV_machine}" 
+ machine_srcrev="${@ get_machine_branch(d, "${SRCREV}" )}"

我对我的更改的理解是我正在明确地重新获取 $SRCREV来 self 的机器分支。原件似乎认为已经存储在 ${SRCREV_machine} 中。虽然原始结果是空字符串,而我的更改结果是 AUTOINC .

尽管我仍然认为我一定错过了一些东西,因为我不需要编辑基类。但我总是更倾向于认为我错过了一些东西,而不是这是一个错误。也许我应该将其发布到 yocto 邮件列表的某个地方。

最佳答案

在 yocto 邮件列表上进行一些小讨论之后... http://thread.gmane.org/gmane.linux.embedded.yocto.general/24316

摘要:

看来do_validate_branches()中的当前逻辑并没有完全证明。

特别是,SRCREV_machine 在到达 do_validate_branches() 时似乎未正确设置,至少在我使用 linux-yocto-custom.bb 并尝试使用 SRCREV="${AUTOREV}" 跟踪源分支的头部的情况下是如此。目前正在对其进行研究和重新设计,希望能发布 v1.8。

一个好的解决方法是在 linux-yocto-custom.bb 中设置 SRCREV_machine。特别是,您可以在设置 SRCREV 变量后直接将其设置为与您的 SRCREV 变量相同的值。所以它看起来像...

SRCREV="${AUTOREV}"
SRCREV_machine="${AUTOREV}" # or SRCREV_machine="${SRCREV}"

请记住,最终当您锁定正在构建的源版本并将 "${AUTOREV}" 替换为特定修订版时,此问题就会消失。

因此,只有当您构建的源代码仍在进行时,才需要进行开发构建,因此您希望使用 "${AUTOREV}" 跟踪移动头。

关于linux - yocto:在 linux-yocto-custom 中使用 SRCREV ="${AUTOREV}"时 do_validate_branches() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29677294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com