【问题标题】:How to clone a git repo with its submodules recursively in Yocto如何在 Yocto 中递归地克隆 git repo 及其子模块
【发布时间】:2016-09-30 21:31:47
【问题描述】:

有没有其他方法可以克隆 Bitbake 配方文件中的所有依赖文件夹(类似于使用递归标签)?我目前正在这样做:

SRC_URI="git://[uri_a];...;name=a \
     git://[uri_b];...;destsuffix=git/a/b;name=b \
     git://[uri_c];...;destsuffix=git/a/b/c;name=c"

其中“b”和“c”是“a”的子模块。

【问题讨论】:

    标签: git git-clone yocto bitbake


    【解决方案1】:

    你有

    gitsm:// 
    

    你使用它的方式和

    一样
    git://
    

    有关更多信息,您可以在此处阅读: http://www.yoctoproject.org/docs/latest/bitbake-user-manual/bitbake-user-manual.html#gitsm-fetcher

    【讨论】:

    • 谢谢大卫。但是在将工作 SRC_URI="git://" 替换为“gitsm://”并对模块进行位烘焙后,我遇到以下错误:错误:函数失败:提取器失败:提取命令失败,退出代码为 1,输出:cp:无法统计'/home/ram/yocto/build/downloads/git2/github.com.Azure.azure-iot-sdks.git/modules':没有这样的文件或目录
    • @RamPrasad 如果您没有对您的食谱运行 bitbake clean,请执行此操作。将 SRC_URI 从“git://”切换到“gitsm://”需要这样做。
    • @jku 我在文档中读到了这一点,并在对配方进行位烘焙之前运行了“bitbake -c clean recipe”。忘了在评论中提到这一点:(
    【解决方案2】:

    在尝试gitsm 失败后,我手动将子模块的获取添加到配置步骤:

    do_configure_prepend() {
      cd ${WORKDIR}/git
      git submodule update --init --recursive
    }
    

    注意:应用与gitsm 相同的限制,即:

    Git 子模块提取器不是完整的提取器实现。 fetcher 存在无法正确使用正常源镜像基础架构的已知问题。此外,它获取的子模块源对许可和源归档基础架构不可见。

    【讨论】:

    • 知道为什么在尝试您的解决方案时出现访问错误? Cloning into... git@gitlab.com: Permission denied (publickey,keyboard-interactive). fatal: Could not read from remote repository.
    • 这是意料之中的——事实上这就是 gitsm:// 存在的原因。在获取源代码期间,yocto 使更多环境可用,从而允许访问您的 ssh-agent。在“构建”步骤期间,环境非常锁定。 gitsm:// 应该是解决方案 - 直到最近才为我们工作 - 你对 gitsm:// 有什么问题?
    【解决方案3】:

    按照上面的描述(来自 mr_georg)在大多数情况下都有效,但在 qt5 应用程序的配方上失败了。通过以下修改,配方起作用了:

    do_configure_prepend() {
      cd ${WORKDIR}/git
      git submodule update --init --recursive
      cd -
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      相关资源
      最近更新 更多