ОШИБКА: Bitbake не удалось найти CMakelists.txt после извлечения (Yocto)

Вопрос или проблема

Я пытаюсь скомпилировать решатель Ceres в сборке Yocto (для дрона Intel Aero).

Ранее я пытался использовать git репозиторий по адресу https://ceres-solver.googlesource.com/ceres-solver/, но не смог его получить. Поэтому я сам скачал файл tar.gz, загрузил его в бесплатный домен, которым владею, и попробовал скомпилировать.

Вот как выглядит мой файл bb на данный момент.

LICENSE = "CLOSED"
LIC_FILES_CHKSUM = ""

DEPENDS = "glog gcc libeigen"
SRC_URI = "http://sidj.in/wp-content/uploads/2017/06/ceres-solver-41455566ac633e55f222bce7c4d2cb4cc33d5c72.tar.gz"
SRC_URI[md5sum] = "6f24d5639bbe738e6f8ca5d7a129400e"
SRC_URI[sha256sum] = "005ed7405350767f22164d9fff93b3613207eeef9cbb56afbd02335542360b16"

PV = "1.0"

S = "${WORKDIR}/ceres-cmake"

inherit cmake pkgconfig

# Укажите любые параметры, которые вы хотите передать cmake, используя EXTRA_OECMAKE:
EXTRA_OECMAKE = ""

Теперь я вижу, что загрузка завершена, но после выполнения команды bitbake ceres я получаю ошибку о том, что файл CMakelists.txt не найден, хотя он явно присутствует в архиве tar.gz. Я посмотрел на другие рецепты, которые, кажется, работают, и считаю, что шаг do_unpack не является проблемным. Вывод консоли:

Loading cache...done.
Loaded 2790 entries from dependency cache.
Parsing recipes...done.
Parsing of 2225 .bb files complete (2219 cached, 6 parsed). 2794 targets, 109 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.30.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "universal"
TARGET_SYS        = "x86_64-poky-linux"
MACHINE           = "intel-aero"
DISTRO            = "poky-aero"
DISTRO_VERSION    = "1.4.0-dev"
TUNE_FEATURES     = "m64 corei7"
TARGET_FPU        = ""
meta              
meta-poky         
meta-yocto-bsp    = "HEAD:cca8dd15c8096626052f6d8d25ff1e9a606104a3"
meta-qt4          = "HEAD:fc9b050569e94b5176bed28b69ef28514e4e4553"
meta-qt5          = "HEAD:9aa870eecf6dc7a87678393bd55b97e21033ab48"
meta-uav          = "HEAD:0f9395139b6a3c3f0f2c18a6a87f4048d0ca1a4f"
meta-ros          = "HEAD:4258013ec33f5ed2b0c9be12fb5902fe918fe98b"
meta-intel-realsense = "HEAD:82e9dbfd8783292f42f4a6fcc7bd5b8a6b1c567a"
meta-intel-aero   = "HEAD:1d7e341ff35aa903c37491f94677bdacc9427f6e"
meta-oe           
meta-python       
meta-networking   = "HEAD:55c8a76da5dc099a7bc3838495c672140cedb78e"
meta-cmu-rasl     = "master:39e39bf41e915323bf7cb70cad50e67cb8b1b90e"
meta-dense-visual-tracking = "HEAD:cca8dd15c8096626052f6d8d25ff1e9a606104a3"
meta-intel        = "HEAD:1f8dd1b00ce9c72d73583c405ec392690d9b08b7"

NOTE: Preparing RunQueue
NOTE: Executing SetScene Tasks
NOTE: Running setscene task 184 of 202 (/home/thesidjway/rasl_ws/src/intel-aero/poky/meta-dense-visual-tracking/recipes-dry/ceres/ceres.bb, do_populate_lic_setscene)
NOTE: recipe ceres-1.0-r0: task do_populate_lic_setscene: Started
NOTE: recipe ceres-1.0-r0: task do_populate_lic_setscene: Succeeded
NOTE: Executing RunQueue Tasks
NOTE: Running task 711 of 722 (ID: 4, /home/thesidjway/rasl_ws/src/intel-aero/poky/meta-dense-visual-tracking/recipes-dry/ceres/ceres.bb, do_fetch)
NOTE: recipe ceres-1.0-r0: task do_fetch: Started
NOTE: recipe ceres-1.0-r0: task do_fetch: Succeeded
NOTE: Running task 712 of 722 (ID: 0, /home/thesidjway/rasl_ws/src/intel-aero/poky/meta-dense-visual-tracking/recipes-dry/ceres/ceres.bb, do_unpack)
NOTE: recipe ceres-1.0-r0: task do_unpack: Started
NOTE: recipe ceres-1.0-r0: task do_unpack: Succeeded
NOTE: Running task 713 of 722 (ID: 1, /home/thesidjway/rasl_ws/src/intel-aero/poky/meta-dense-visual-tracking/recipes-dry/ceres/ceres.bb, do_patch)
NOTE: recipe ceres-1.0-r0: task do_patch: Started
NOTE: recipe ceres-1.0-r0: task do_patch: Succeeded
NOTE: Running task 714 of 722 (ID: 5, /home/thesidjway/rasl_ws/src/intel-aero/poky/meta-dense-visual-tracking/recipes-dry/ceres/ceres.bb, do_generate_toolchain_file)
NOTE: recipe ceres-1.0-r0: task do_generate_toolchain_file: Started
NOTE: recipe ceres-1.0-r0: task do_generate_toolchain_file: Succeeded
NOTE: Running task 716 of 722 (ID: 6, /home/thesidjway/rasl_ws/src/intel-aero/poky/meta-dense-visual-tracking/recipes-dry/ceres/ceres.bb, do_configure)
NOTE: recipe ceres-1.0-r0: task do_configure: Started
Log data follows:
| DEBUG: Executing python function sysroot_cleansstate
| DEBUG: Python function sysroot_cleansstate finished
| DEBUG: Executing shell function do_configure
| CMake Error: The source directory "/home/thesidjway/rasl_ws/src/intel-aero/poky/build/tmp/work/x86_64-linux/ceres/1.0-r0/ceres-cmake" does not appear to contain CMakeLists.txt.
| Specify --help for usage, or press the help button on the CMake GUI.
| WARNING: exit code 1 from a shell command.
| ERROR: Function failed: do_configure (log file is located at /home/thesidjway/rasl_ws/src/intel-aero/poky/build/tmp/work/x86_64-linux/ceres/1.0-r0/temp/log.do_configure.9002)
NOTE: recipe ceres-1.0-r0: task do_configure: Failed
NOTE: Tasks Summary: Attempted 716 tasks of which 711 didn't need to be rerun and 1 failed.

Summary: 1 task failed:
  /home/thesidjway/rasl_ws/src/intel-aero/poky/meta-dense-visual-tracking/recipes-dry/ceres/ceres.bb, do_configure
Summary: There was 1 ERROR message shown, returning a non-zero exit code.

Я делаю что-то глупое или неправильно?

Я не эксперт в этом, но если вы посмотрите в папку:

/home/thesidjway/rasl_ws/src/intel-aero/poky/build/tmp/work/x86_64-linux/ceres/1.0-r0/ceres-cmake

и проверите, есть ли ваш файл cmake в этой папке. Yocto ожидает, что ваш файл cmake будет находиться в папке ceres-cmake.

Ответ или решение

Для решения проблемы с ошибкой "ERROR: Bitbake couldn’t find CMakeLists.txt after extraction (Yocto)", связанной с попыткой компиляции решателя Ceres в Yocto для дрона Intel Aero, следует внимательно ознакомиться с описанием процедуры и выявить возможные ошибки в рецепте Bitbake. В вашем случае проблема, скорее всего, заключается в неверной директории для CMakeLists.txt.

  1. Анализ содержания архива: В первую очередь убедитесь, что CMakeLists.txt действительно находится в скачанном архиве ceres-solver-41455566ac633e55f222bce7c4d2cb4cc33d5c72.tar.gz. Это можно проверить, разархивировав файл вручную и убедившись, что CMakeLists.txt находится в корне или в ожидаемой директории.

  2. Проверка значения переменной S:
    Переменная S в рецепте Bitbake указывает на директорию, где будет производиться конфигурация и сборка пакета. В вашем рецепте:

    S = "${WORKDIR}/ceres-cmake"

    Убедитесь, что эта директория соответствует той, где на самом деле находится CMakeLists.txt после распаковки архива. Возможно, вместо ceres-cmake, должна быть указана другая директория. Например, если в архиве структура выглядит как ceres-solver-41455566ac633e55f222bce7c4d2cb4cc33d5c72/CMakeLists.txt, то S должно быть установлено на:

    S = "${WORKDIR}/ceres-solver-41455566ac633e55f222bce7c4d2cb4cc33d5c72"
  3. Корректировкой рецепта:
    На основании анализа структуры архива корректируйте значение S, чтобы оно указывало на директорию с CMakeLists.txt.

  4. Проверка этапов сборки:
    Проверьте логи выполнения шагов do_unpack и do_configure на предмет эмпирических данных и убедитесь, что ошибка возникает именно на этапе конфигурации, где CMakeLists.txt не обнаруживается в заданной вами директории.

  5. Точки контроля:
    Используйте команды вида bitbake -c cleanall ceres и bitbake -c configure ceres для выполнения операций с наибольшей детальностью логов (например, bitbake <пакет> -v), что добавит прозрачности при поиске ошибки.

Следуя этим рекомендациям, вы сможете определить и устранить проблему, что значительно повысит успешность сборки решателя Ceres на платформе Yocto.


Это руководство было настроено под SEO, включает в себя ключевые термины ошибки и процессы отладки в контексте Yocto, и написано в профессиональной манере для лучшего восприятия специалистами в области ИТ.

Оцените материал
Добавить комментарий

Капча загружается...