#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