devtool使用介绍(3)

2.4.3 使用devtool upgrade创建支持新版本软件的recipe版本

devtool upgrade命令将一个存在的recipe升级到上游的最新版本。 在软件的整个生命周期中,recipe均由其上游publishers不断进行版本升级。 您可以使用devtool upgrade 工作流程来确保用于构建的recipe与上游的recipe是最新的。

注意
有几种方法可以升级recipe - devtool upgrade恰好是其中一种。 您可以在《Yocto项目开发任务手册》的“Upgrading Recipes”部分中了解有关升级recipe的所有方法。

devtool upgrade命令具有足够的灵活性,可让你指定源代码修订和版本控制方案,将代码提取到devtool的The Workspace Layer Structure中或从中提取出来,以及使用fetchers 支持的任何源文件格式。
下图显示了与devtool upgrade命令一起使用的常见开发流程:
在这里插入图片描述1.启动升级:流程的顶部显示了使用devtool upgrade命令的典型场景。 需要满足以下条件:

  • recipe存在于devtool工作空间外部的本地层中。
  • 新版本的源文件存在于recipe中SRC_URI指向的相同位置(例如,名称中具有新版本号的压缩包,或在上游Git库中的修订版本)。
    常见的情况是第三方软件已经过修订,因此已经升级。 您可以访问的recipe可能在您自己的图层中。 因此,您需要升级recipe以使用软件的更新版本:
devtool upgrade -V version recipe

默认情况下,devtool upgrade命令将源代码提取到The Workspace Layer Structure中的sources目录中。 如果要将代码提取到任何其他位置,则需要使用以下命令提供srctree位置参数:

$ devtool upgrade -V version recipe srctree
注意
在此示例中,“-V”选项指定新版本。 如果您不使用“ -V”,则该命令会将recipe升级到最新版本。

如果recipe中SRC_URI语句指向的源文件位于Git存储库中,则必须提供“ -S”选项并为软件指定一个修订版本。
一旦devtool找到了recipe,它就会使用SRC_URI变量来定位源代码和其他开发人员提供的任何本地补丁文件。 结果是该命令会在工作空间中生成全部源代码,包括recipe的新版本以及附加文件。

此外,如果你有任何非补丁本地文件(即在SRC_URI语句中使用file://项引用的文件,不包括*. /)。patch/或*.diff),这些文件被复制到新创建的源树下的oe-local-files文件夹中。在这里复制文件为您提供了一个方便的区域,您可以从中修改文件。您对这些文件所做的任何更改或添加都将在下一次构建软件时合并到构建中,就像您可能对源代码所做的其他更改一样。

2.解决升级产生的任何冲突:由于软件升级到新版本,可能存在冲突。如果recipe在SRC_URI中指定的某些补丁文件与新版本软件中所做的更改相冲突,则会发生冲突。对于这种情况,您需要通过编辑源代码并遵循正常的git rebase冲突解决过程来解决冲突。

在进入下一步之前,请确保解决通过使用更新或不同版本的软件所产生的任何此类冲突。

3.构建recipe或重新构建镜像:您采取的下一步取决于您将如何处理新代码。
如果你最终需要将构建输出移动到目标硬件上,使用以下devtool命令:

$ devtool build recipe

另一方面,如果你想要一个镜像从工作区中包含recipe的包,以便立即部署到设备上(例如用于测试目的),你可以使用devtool build-image命令:

$ devtool build-image image

4.部署构建输出:当您使用devtool Build命令或bitbake来构建你的recipe时,您可能想要查看生成的构建输出在目标硬件上是否如预期的那样工作。

注意
这个步骤假设你已经有一个先前构建的镜像,该镜像已经在QEMU中运行或在实际的硬件上运行。另外,假设镜像部署到目标,SSH已安装在镜像中,并且镜像运行在你的开发机器可以通过网络访问或从你的开发机器访问的实际硬件上。

您可以使用devtool deploy-target命令将生成的输出部署到该目标硬件:

$ devtool deploy-target recipe target

目标是作为SSH服务器运行的实时目标计算机。

当然,您也可以使用devtool build-image命令将构建的镜像部署到实际硬件。 但是,devtool没有提供允许您执行此操作的特定命令。

5.使用recipe完成工作:devtool finish命令在本地Git存储库中创建与提交对应的所有补丁,将新recipe移动到更稳定的层,然后重置recipe,以便正常构建recipe,而不是从工作区中构建recipe 。

在devtool finish命令期间,你在oe-local-files目录中所做的任何工作都会保留在recipe旁边的原始文件中。

如果指定的目标层与原始源层相同,则在添加新版本之前,将删除recipe的旧版本和相关文件。

$ devtool finish recipe layer
注意
要转换为补丁的任何更改都必须提交到源树中的Git存储库。

作为devtool finish命令的最后一个过程,将恢复标准层和上游源的状态,以便您可以从这些区域而不是工作区构建recipe。

注意
如果你决定不继续你的工作,你可以使用devtool reset命令回退。如果使用此命令,请注意将保留源树。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值