Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
yocto:do_在linux yocto自定义中使用SRCREV=“${AUTOREV}”验证分支()失败_Linux_Git_Linux Kernel_Yocto_Bitbake - Fatal编程技术网

yocto:do_在linux yocto自定义中使用SRCREV=“${AUTOREV}”验证分支()失败

yocto:do_在linux yocto自定义中使用SRCREV=“${AUTOREV}”验证分支()失败,linux,git,linux-kernel,yocto,bitbake,Linux,Git,Linux Kernel,Yocto,Bitbake,我正在设置Yoctov1.7.1Dizzy,以便从本地git存储库中签入的定制Linux内核版本构建定制Linux映像 在完成构建过程时,它会在do_validate_分支期间失败,并显示以下错误消息 DEBUG: Executing shell function do_validate_branches usage: git cat-file (-t|-s|-e|-p|<type>|--textconv) <object> or: git cat-file (--

我正在设置Yoctov1.7.1Dizzy,以便从本地git存储库中签入的定制Linux内核版本构建定制Linux映像

在完成构建过程时,它会在do_validate_分支期间失败,并显示以下错误消息

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..)
因为当我用修订号替换它时,我不再遇到问题,例如

SRCREV="7035c2a67d964acbb5d917f470bcda42691a3d9c"
问题是,我实际上希望这个配方是从分支的负责人那里构建的,因此,提出一个特定的修订似乎不是我想要的,而SRCREV=${AUTOREV}似乎是我真正想要的。但是如上所述,这使得${SRCREV_machine}是一个空字符串,而不是我认为应该计算为的AUTOINC

有没有人能给我提供一些见解,告诉我如何让菜谱既遵循菜头,又不必不断更新菜谱以包含正确的SRCREV,并使其通过do_validate_分支?我错过了什么

编辑:更多信息

如果我修改kernel-yocto.bbclass如下,这个问题似乎也得到了解决@285

-    machine_srcrev="${SRCREV_machine}" 
+    machine_srcrev="${@ get_machine_branch(d, "${SRCREV}" )}"
我对我的更改的理解是,我正在明确地从我的机器分支重新获取$SRCREV。原始版本似乎认为它已经存储在${SRCREV_machine}中。虽然原始结果为空字符串,而我的更改结果为AUTOINC


尽管我仍然认为我肯定遗漏了一些东西,因为我不需要编辑基类。但我总是更倾向于认为我遗漏了什么,而不是这是一个bug。也许我应该把这个发到某个地方的yocto邮件列表上。

在对yocto邮件列表进行了一些小讨论之后。。。

总结:

do_validate_分支中的当前逻辑似乎不是完全证明

特别是,当SRCREV_机器开始执行_validate_分支时,它似乎没有正确设置,至少在这个例子中,我使用linux-yocto-custom.bb并尝试使用SRCREV=${AUTOREV}跟踪源分支的头部。目前正在对其进行研究和修改,有望在v1.8版本中发布

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

SRCREV="${AUTOREV}"
SRCREV_machine="${AUTOREV}"    # or SRCREV_machine="${SRCREV}"
请记住,最终当您锁定从中生成的源版本并用特定版本替换${AUTOREV}时,这个问题就会消失


因此,只有在源代码仍在进行构建时,这种变通方法才是开发构建所必需的,因此您希望使用${AUTOREV}跟踪移动的头部。

不确定这是否对您的情况是必要的,但是您是否在I have PV=${LINUX_VERSION}+git${SRCPV}中将SRCPV添加到了PV per?是的它包含在我运行yocto bsp create得到的原始文件中。这似乎可以通过构建期间生成的目录结构得到证实,其中包含3.14.28+GitaToInc+7035c2a67d-r0目录。
SRCREV="${AUTOREV}"
SRCREV_machine="${AUTOREV}"    # or SRCREV_machine="${SRCREV}"