【问题标题】: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