Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.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
尤克托。由git命令生成的包版本_Git_Yocto_Bitbake - Fatal编程技术网

尤克托。由git命令生成的包版本

尤克托。由git命令生成的包版本,git,yocto,bitbake,Git,Yocto,Bitbake,是否有任何选项可以从git输出设置配方中的包版本? 我有一个诀窍,通过设置SRCREV=“${AUTOREV}”,总是从git下载最新版本,我想通过bitbake将包版本“PV”设置为git descripe--abbrev=4--dirty--always--long的输出,我能够管理一些代码来归档这个目标,但我觉得这个解决方案并不是完美的,但无论如何,请看看原因 首先,让我们根据配方和git存储库比较输出git命令(git descripe--abbrev=4--dirty--always-

是否有任何选项可以从git输出设置配方中的包版本?
我有一个诀窍,通过设置
SRCREV=“${AUTOREV}”
,总是从git下载最新版本,我想通过bitbake将包版本“PV”设置为
git descripe--abbrev=4--dirty--always--long
的输出,我能够管理一些代码来归档这个目标,但我觉得这个解决方案并不是完美的,但无论如何,请看看原因

首先,让我们根据配方和git存储库比较输出git命令(git descripe--abbrev=4--dirty--always--long)*,以确保它按预期工作:

  • 基于配方的bitbake生成的PV:

    $ bitbake --environment hello-world | grep ^PV=
    PV="4b5f"
    
  • 输出git存储库:

    $ git remote -v | grep fetch
    origin  https://github.com/leachim6/hello-world.git (fetch)
    $ git describe --abbrev=4 --always --long
    4b5f
    
如何存档?出于测试目的,我选择了repository,最近我使用bitbake方法定义PV,该方法允许我将此类函数的输出设置为PV,配方内容:

$ cat ../meta-test/recipes-hello-world/hello-world/hello-world_git.bb
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2c4ac2930215d12ccb72d945112a0fa3"

SRC_URI = "git://github.com/leachim6/hello-world.git;protocol=https"
SRCREV = "4b5ff1ef90ceb442f5633fc9e5d28297ac0f69ff"

PV = "${@define_pn(d)}"

def define_pn(d):
    import subprocess
    source_dir = d.getVar('DL_DIR') + "/git2/github.com.leachim6.hello-world.git/"
    cmd = "git describe --abbrev=4 --always --long"
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True, cwd=source_dir)
    out, err =  proc.communicate()
    return out.decode("utf-8").rstrip()
关于这个解决方案,我的主要内容是如何在python函数中正确设置source\u dir变量,这将非常灵活。例如,我试图使用${S}变量,但运气不好-我在解析配方时遇到了python错误-。我在bitbake代码方面不是很先进,但也许其他人可以提供更好的方法来设置这个正确的路径


*当我使用带有--dirty标志的原始命令时,在bitbake输出中有PV=“4b5f dirty”,没有它,输出与git存储库中的输出相同。

我知道,固定路径不是最好的解决方案,但您的解决方案对我有好处。谢谢你的帮助。不幸的是,它似乎不起作用。BitBake正在尝试在PV变量运行
do_fetch
之前展开该变量,因此该目录尚不存在。不幸的是,我认为git无法进行远程描述,因此需要强制fetcher运行(在该指针处,我们可能也可以从中知道下载目录)。您的权利当我尝试从头开始构建它时,我遇到了相同的问题。在我的情况下,我们放弃了这种方法。伙计们,你们是对的,我的建议并没有像预期的那样有效@到@tomasz3dk你能不能取消我的投票,然后我会删除它。然而,现在我认为基于git版本设置PV是不可能的,或者您是否以某种方式管理了它?