我有一堆 Yocto 配方文件,其中包含各种 git 存储库的配置,格式为
SRC_URI = "git://XXX;protocol=ssh;branch=YYY;"
SRCREV = "abc123"
我想知道是否可以使用这些文件仅在配置的分支+提交哈希处克隆 git 存储库。然后我想单独构建这些存储库(不使用 Yocto/Bitbake)
我从 Bitbake 的源代码中发现了 git.py ,它似乎在 Bitbake 中执行克隆操作。我可以围绕这个模块编写一个包装器,但想知道是否有一个预先构建的命令可以让我使用 Bitbake 调用这个模块。
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
选项)来克隆您自己的存储库。
我通过编写一个简单的 shell 脚本来解锁自己,该脚本可以 grep
并提取相关详细信息。SRC_URI/SRCREV
当您使用 bitbake 获取存储库时,它们将被放置在 yocto workdir 中,如果您想使用其他方法来构建它们,您必须分别指向每个 workdir。然而,正如 OP_Daddy 所建议的,使用包装器脚本读取 SRC_URI 和 SRC_REV 并在您想要的路径中获取它们会更加结构化。
另一方面,如果您打算使用 bitbake 来获取它们并使用 yocto 中的另一种构建方法,您可以通过以下方式禁用编译阶段:
do_compile(){
:
}
同样的情况也会发生在 do_install
和
do_deploy
上