我对yocto和linux都很陌生,我正试图为我的IMX8 SOM构建一个映像,包括一个功能齐全的git版本。到目前为止,我已经成功地构建了映像,并在目标上运行它,但是git功能不全,因为不支持子模块。
为了将git添加到图像中,我只需将"git“添加到local.conf的local.conf变量中。因此,我甚至不知道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发布于 2020-12-09 10:47:27
谢谢你的回复!
与此同时,我找到了解决办法:
我只需在IMAGE_INSTALL_append中添加git-perltools。
对于yocto等人来说,我想详细总结一下我的方法:为了找到git的配方,我使用了find sources | grep git,其中的“源代码”是包含所有层的目录。不幸的是,这会产生一个相当长的列表,但是在其中您可以找到git配方(在我的例子中是git_2.23.0.bb)。回顾一下,对于grep来说,"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-子模块”包含在"PERLTOOLS“变量中,它表明自己就是我所要寻找的。在第二个片段中,您可以看到"PERLTOOLS“在包"${PN}-perltools”中使用,该包解析为git-perltools。
因此,我在我的IMAGE_INSTALL_append中添加了"git-perltools“,并尝试了一下。
发布于 2020-12-09 01:32:39
不存在轻量级版本的git,您的git version看起来也不错。
Git是由菜谱git_2.23.0.bb在源代码/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
https://stackoverflow.com/questions/65180267
复制相似问题