【问题标题】:Add full featured git to yocto build将功能齐全的 git 添加到 yocto build
【发布时间】:2021-03-18 16:09:30
【问题描述】:

我对 yocto 和 linux 都很陌生,我正在尝试为我的 IMX8 SOM 构建一个映像,包括一个功能齐全的 git 版本。 到目前为止,我已成功构建映像并在目标上运行它,但由于不支持子模块,git 的功能并不完整。
为了将 git 添加到图像中,我只需将“git”添加到我的 local.conf 的 IMAGE_INSTALL_append 变量中。因此,我什至不知道 git 的来源是从中获取的,更糟糕​​的是,我不知道如何找到。
我使用的基本 yocto 项目可在 https://github.com/tq-systems/ci-meta-tq/tree/zeus-tqma8 获得,并由 SOM 供应商维护。
由于 yocto 过度使用 git,我很难找到有关此问题的任何信息。任何有关如何向我的图像添加功能齐全的 git 版本的帮助表示赞赏。

更多信息:

cat /etc/os-release:  
ID="fsl-imx-wayland"
NAME="NXP i.MX Release Distro"  
VERSION="5.4-zeus (zeus)"  
VERSION_ID="5.4-zeus"  
PRETTY_NAME="NXP i.MX Release Distro 5.4-zeus (zeus)"  

git --version:  
git version 2.23.0

【问题讨论】:

标签: git embedded-linux yocto


【解决方案1】:

感谢您的回复!
同时我找到了解决方案:
我只需将 git-perltools 添加到 IMAGE_INSTALL_append。

对于和我一样刚接触 yocto 等的每个人,我想详细总结一下我的方法: 为了找到 git 的配方,我使用了find sources | grep git,其中“sources”是包含所有层的目录。不幸的是,这会产生一个很长的列表,但在其中你可以找到 git 配方(在我的例子中是 git_2.23.0.bb)。回想起来,用 grep 搜索“git_”来减少列表大小更有价值。
正如 OliverB 提到的,配方包括 git.inc。我看了一下,里面有两个有趣的代码sn-ps:

PERLTOOLS = " \
    ${libexecdir}/git-core/git-add--interactive \
    ${libexecdir}/git-core/git-archimport \
    ${libexecdir}/git-core/git-cvsexportcommit \
    ${libexecdir}/git-core/git-cvsimport \
    ${libexecdir}/git-core/git-cvsserver \
    ${bindir}/git-cvsserver \
    ${libexecdir}/git-core/git-difftool \
    ${libexecdir}/git-core/git-send-email \
    ${libexecdir}/git-core/git-svn \
    ${libexecdir}/git-core/git-instaweb \
    ${libexecdir}/git-core/git-submodule \
    ${libexecdir}/git-core/git-am \
    ${libexecdir}/git-core/git-request-pull \
    ${datadir}/gitweb/gitweb.cgi \
    ${datadir}/git-core/templates/hooks/prepare-commit-msg.sample \
    ${datadir}/git-core/templates/hooks/pre-rebase.sample \
    ${datadir}/git-core/templates/hooks/fsmonitor-watchman.sample \
"

和:

# Git tools requiring perl
PACKAGES =+ "${PN}-perltools"
FILES_${PN}-perltools += " \
    ${PERLTOOLS} \
    ${libdir}/perl \
    ${datadir}/perl5 \
"

正如您在上面的 sn-p 中看到的那样,“git-submodule”包含在“PERLTOOLS”变量中,这表明它本身就是我正在寻找的东西。 在第二个 sn-p 中,您可以看到,在解析为 git-perltools 的包“${PN}-perltools”中使用了“PERLTOOLS”。
因此,我在 local.conf 的 IMAGE_INSTALL_append 中添加了“git-perltools”并试了一下。

【讨论】:

    【解决方案2】:

    没有轻量级版本的 git,你的 git version 看起来不错。

    Git 由 sources/poky 文件夹中的配方 git_2.23.0.bb 编译。如果您查看配方,您会发现它包含 git.inc。这是定义源 url 的地方

    SRC_URI = "${KERNELORG_MIRROR}/software/scm/git/git-${PV}.tar.gz;name=tarball \
               ${KERNELORG_MIRROR}/software/scm/git/git-manpages-${PV}.tar.gz;name=manpages"
    

    生成的 git SRC_URI 应该类似于 https://cdn.kernel.org/pub/software/scm/git/git-2.23.0.tar.gz

    【讨论】:

      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-21
      相关资源
      最近更新 更多