Рецепт Yocto с использованием cmake не может найти git

Я пытаюсь создать рецепт для mongo-cxx-driver (https://github.com/mongodb/mongo-cxx-driver). У меня есть рабочие рецепты для libbson и mongo-c-driver, которые являются требованиями, но когда я пытаюсь собрать mongo-cxx-driver, он терпит неудачу при попытке клонировать репозиторий git.

$ bitbake mongo-cxx-driver

| CMake Error at 
/home/hme/projects/platform/yocto/poky/build/tmp/work/core2-64-poky-linux/mongo-cxx-driver/3.1.3-r0/recipe-sysroot-native/usr/share/cmake-3.8/Modules/ExternalProject.cmake:1805 (message):
|   error: could not find git for clone of EP_mnmlstc_core
| Call Stack (most recent call first):
|   /home/hme/projects/platform/yocto/poky/build/tmp/work/core2-64-poky-linux/mongo-cxx-driver/3.1.3-r0/recipe-sysroot-native/usr/share/cmake-3.8/Modules/ExternalProject.cmake:2560 (_ep_add_download_command)
|   src/bsoncxx/third_party/CMakeLists.txt:19 (ExternalProject_Add)
| 
| 
| -- Configuring incomplete, errors occurred!

Рецепт:

DESCRIPTION = "MongoDB C++ driver"
SECTION = "libs"
HOMEPAGE = "https://github.com/mongodb/mongo-cxx-driver"
LICENSE = "Apache-2.0"
DEPENDS = "libbson mongo-c-driver git-native"

inherit cmake pkgconfig

SRC_URI = "https://github.com/mongodb/mongo-cxx-driver/archive/r${PV}.tar.gz"

SRC_URI[md5sum] = "fd1ff0f9b2122225e3b402c2bae30427"
SRC_URI[sha256sum] = "cb1b371eb34e991b8bfac65146f862cd379aa8f7270c430e5f3d71d843245ed9"

LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"

S = "${WORKDIR}/mongo-cxx-driver-r${PV}"

Если я бегу:

$ bitbake -c devshell mongo-cxx-driver

и строить вручную через devshell, работает нормально.

Любые идеи, что может быть не так?


person hme    schedule 01.11.2017    source источник
comment
Не найти git во время настройки — это проблема, которую вы, вероятно, не должны решать: рецепт не должен ничего загружать во время настройки. Вы должны клонировать необходимые репозитории git во время выборки (возможно, просто добавив их в SRC_URI) и выяснить, как сообщать системе сборки местоположение загруженных источников во время настройки. В качестве альтернативы узнайте, можете ли вы указать системе сборки использовать вместо этого внешний (системный) компонент и отдельно упаковать другой проект.   -  person Jussi Kukkonen    schedule 01.11.2017


Ответы (2)


Вы должны попробовать добавить:

OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "BOTH"

к вашему рецепту после наследования cmake

person Nayfe    schedule 01.11.2017
comment
@Nayfe, что делает OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = BOTH? - person apex; 04.09.2019
comment
Это позволяет cmake искать программы в sysroot хоста, а не только в целевом sysroot. - person Nayfe; 04.09.2019

Пакет git-native, вероятно, указан в ASSUME_PROVIDED переменная. Если это так, вам нужно добавить git-replacement-native в зависимости от вашего рецепта.

person admo    schedule 23.11.2020