Добавить полнофункциональный git в сборку yocto

#git #embedded-linux #yocto

#git #встроенный-linux #yocto

Вопрос:

Я довольно новичок как в yocto, так и в Linux, и я пытаюсь создать образ для своего IMX8 SOM, включая полнофункциональную версию git. До сих пор мне удавалось создать образ и запустить его в target, но git не является полнофункциональным, поскольку подмодули не поддерживаются.
Чтобы добавить git к изображению, я просто добавил «git» в переменную IMAGE_INSTALL_append моего 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
 

Комментарии:

1. git рецепт является частью поки: git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta /…

Ответ №1:

Спасибо за ответы!
Тем временем я нашел решение:
мне просто нужно было добавить git-perltools в IMAGE_INSTALL_append.

Для всех, кто так же новичок в yocto и т. Д., Как и я, я хочу подробно изложить свой подход: чтобы найти рецепт для git, я использовал find sources | grep git , где «источники» — это каталог, содержащий все слои. К сожалению, это приводит к довольно длинному списку, но в нем вы можете найти рецепт git (в моем случае git_2.23.0.bb ). Оглядываясь назад, более полезно использовать grep для «git_», чтобы уменьшить размер списка.
Как упоминал Оливерб, в состав рецепта входит 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.
Поэтому я добавил «git-perltools» в IMAGE_INSTALL_append в моем local.conf и попробовал.

Ответ №2:

Не существует такой вещи, как облегченная версия 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"
 

Результирующий SRC_URI для git должен быть примерно таким https://cdn.kernel.org/pub/software/scm/git/git-2.23.0.tar.gz