使用 Yocto 配方克隆 Git 存储库

问题描述 投票:0回答:2

我有一堆 Yocto 配方文件,其中包含各种 git 存储库的配置,格式为

SRC_URI = "git://XXX;protocol=ssh;branch=YYY;"
SRCREV = "abc123"

我想知道是否可以使用这些文件在配置的分支+提交哈希处克隆 git 存储库。然后我想单独构建这些存储库(不使用 Yocto/Bitbake)

我从 Bitbake 的源代码中发现了 git.py ,它似乎在 Bitbake 中执行克隆操作。我可以围绕这个模块编写一个包装器,但想知道是否有一个预先构建的命令可以让我使用 Bitbake 调用这个模块。

git yocto bitbake yocto-recipe
2个回答
1
投票

您可以在

openembedded/bitbake/lib/bb/fetch2/git.py
中看到您提到的克隆示例:

        # If the repo still doesn't exist, fallback to cloning it
        if not os.path.exists(ud.clonedir):
            # We do this since git will use a "-l" option automatically for local urls where possible
            if repourl.startswith("file://"):
                repourl = repourl[7:]
            clone_cmd = "LANG=C %s clone --bare --mirror %s %s --progress" % (ud.basecmd, shlex.quote(repourl), ud.clonedir)
            if ud.proto.lower() != 'file':
                bb.fetch2.check_network_access(d, clone_cmd, ud.url)
            progresshandler = GitProgressHandler(d)
            runfetchcmd(clone_cmd, d, log=progresshandler)

您必须编写类似的代码(在您的情况下没有

--bare
选项)来克隆您自己的存储库。


OP爸爸添加了评论

我通过编写一个简单的 shell 脚本来解锁自己,该脚本可以 grep

SRC_URI/SRCREV
并提取相关详细信息。


0
投票

当您使用 bitbake 获取存储库时,它们将被放置在 yocto workdir 中,如果您想使用其他方法来构建它们,您必须分别指向每个 workdir。然而,正如 OP_Daddy 所建议的,使用包装器脚本读取 SRC_URI 和 SRC_REV 并在您想要的路径中获取它们会更加结构化。

另一方面,如果您打算使用 bitbake 来获取它们并使用 yocto 中的另一种构建方法,您可以通过以下方式禁用编译阶段:

do_compile(){ : }
同样的情况也会发生在 

do_install

do_deploy

© www.soinside.com 2019 - 2024. All rights reserved.