将全功能 git 添加到 yocto build

Add full featured git to yocto build

我对 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 的轻量级版本,您的 git version 看起来不错。

Git 由 git_2.23.0.bb 在您的 sources/poky 中编译 文件夹。如果您查看食谱,您会发现它包含 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

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

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

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 \
"

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