Как скомпилировать SampleApp Alexa-SDK с помощью bitbake для RaspberryPi

Я пытаюсь добавить собственный слой для Alexa-SDK. Я создал файл *.bb, и когда я запускаю команду bitbake alexa, каждая задача завершается успешно. Но я не могу найти исполняемый файл SampleApp в каталоге /tmp/deploy или /work.

Вот мой *.bb файл

SUMMARY = "bitbake-alexa recipe" 
DESCRIPTION = "Alexa SDK"  
SECTION = "alexa" 
LICENSE = "CLOSED"

SRC_URI = "git://github.com/alexa/avs-devicesdk.git;branch=master;protocol=https"

SRCREV = "8bf0160c5e56a3d5ebc1e1caeab14afc8658b0da"

INSANE_SKIP_${PN} = "dev-so" 
TARGET_CC_ARCH += "${LDFLAGS}"

S = "${WORKDIR}/git" 
SB = "${WORKDIR}/build"

AVS_DIR ?= "/home/root/Alexa_SDK"

inherit cmake
EXTRA_OECMAKE = "-DCMAKE_BUILD_TYPE=RELEASE \
                 -DGSTREAMER_MEDIA_PLAYER=ON \
                 -DCMAKE_INSTALL_PREFIX=${D}${AVS_DIR}/avs-sdk-client \
                 -DPORTAUDIO=ON  \
                 -DPORTAUDIO_LIB_PATH=${STAGING_LIBDIR}/libportaudio.so \
                 -DPORTAUDIO_INCLUDE_DIR=${STAGING_INCDIR} \
"

RDEPENDS_${PN} += "bash perl" 
DEPENDS = "curl sqlite3 portaudio-v19 gstreamer1.0-plugins-base"

do_compile() {
    cd ${SB}
    oe_runmake ${PARALLEL_MAKE} SampleApp 
}

do_install() {
    install -d -m 0755 ${D}${AVS_DIR}
    install -d -m 0755 ${D}/sounds
    install -d -m 0755 ${D}/database
    install -d -m 0755 ${D}${AVS_DIR}/avs-sdk-client

    cd ${SB}
    find ./ -executable -type f -exec cp --parents -v {} 
   ${D}/${AVS_DIR}/avs-sdk-client \;

    find ./ -name *.py -exec cp --parents -v {} ${D}/${AVS_DIR}/avs-sdk-client \;

    find ${D}/${AVS_DIR}/avs-sdk-client -name "*.py" -exec sed -e s#${SB}#${AVS_DIR}/avs-sdk-client#g -i {} \;

    mkdir ${D}/${AVS_DIR}/avs-sdk-client/Integration
    mkdir ${D}/${AVS_DIR}/libs
    cd ${D}/${AVS_DIR}/libs
    find ../avs-sdk-client -executable -type f -exec ${WORKDIR}/libsInstall.sh {} \;

    cp -r -L ${S} ${D}/${AVS_DIR}/avs-device-sdk
    cd ${D}/${AVS_DIR}/avs-device-sdk
    git repack -a -d 
}

FILES_${PN} = "${AVS_DIR} /sounds /database" 
BBCLASSEXTEND = "native"

Пожалуйста, предложите, что мне не хватает, поскольку я хочу сделать SampleApp частью образа и запустить его на RaspberryPi.

Обновленный файл .bb

 SUMMARY = "bitbake-alexa recipe" DESCRIPTION = "Alexa SDK"  SECTION = "alexa" LICENSE = "CLOSED"

    SRC_URI = "git://github.com/alexa/avs-device-sdk.git;branch=master;protocol=https"

    SRCREV = "8bf0160c5e56a3d5ebc1e1caeab14afc8658b0da"


    S = "${WORKDIR}/git" SB = "${WORKDIR}/build"

    TARGET_CXXFLAGS += " -D_GLIBCXX_USE_CXX11_ABI=0
    -Wno-error=class-memaccess" 
inherit cmake 
INSANE_SKIP_${PN} = "install-vs-shipped" 
INSANE_SKIP_${PN} = "ldflags"

    AVS_DIR ?= "/home/root/Alexa_SDK"


    EXTRA_OECMAKE = " \     -DCMAKE_BUILD_TYPE=DEBUG \  -DGSTREAMER_MEDIA_PLAYER=ON \
            -DCMAKE_INSTALL_PREFIX=${D}${AVS_DIR}/avs-sdk-client \  -DPORTAUDIO=ON \    -DPORTAUDIO_LIB_PATH=${STAGING_LIBDIR}/libportaudio.so \    -DPORTAUDIO_INCLUDE_DIR=${STAGING_INCDIR} \ " RDEPENDS_${PN} += "bash 
            perl" 
            DEPENDS = " \   curl \  sqlite3 \
            portaudio-v19 \     gstreamer1.0-plugins-base \      
            gstreamer1.0-plugins-base \
            gstreamer1.0-plugins-good \
            gstreamer1.0-plugins-bad \  gstreamer1.0-plugins-ugly \      
          gstreamer1.0-libav \ "
 do_install(){
         install -d -m 0755 ${D}${AVS_DIR}
         install -d -m 0755 ${D}${AVS_DIR}/avs-sdk-client
         find ./ -executable -type f -exec cp --parents -v {} 
         ${D}/${AVS_DIR}/avs-sdk-client \;
         find ./ -name *.py -exec cp --parents -v {} ${D}/${AVS_DIR}/avs- 
         sdk-client \;
         find ${D}/${AVS_DIR}/avs-sdk-client -name "*.py" -exec sed -e 
         s#${SB}#${AVS_DIR}/avs-sdk-client#g -i {} \;
         mkdir ${D}/${AVS_DIR}/libs
         cd ${D}/${AVS_DIR}/libs
         find ../avs-sdk-client -executable -type f -exec 
         ${WORKDIR}/libsInstall.sh {} \;
         cp -r -L ${S} ${D}/${AVS_DIR}/avs-device-sdk
         cd ${D}/${AVS_DIR}/avs-device-sdk
         git repack -a -d
         rm .git/objects/info/alternates
 }

FILES_${PN}  += "${bindir}/SampleApp \
                          ${AVSDIR} \"

person Sarush    schedule 16.07.2019    source источник
comment
Можете ли вы отредактировать свой пост с правильным отступом в рецепте? Кажется, он пропускает некоторые возвраты каретки   -  person Nayfe    schedule 16.07.2019
comment
Если вы хотите использовать внешние источники, вам необходимо ознакомиться с руководством по externalsrc   -  person Nayfe    schedule 16.07.2019
comment
Папка сборки по умолчанию уже определена как ${B}, поэтому вам не нужно определять переменную ${SB}. Вам не нужно использовать cd, лучше oe_runmake -C ${S}/SampleApp   -  person Nayfe    schedule 16.07.2019
comment
@Nayfe Я пытался скомпилировать с использованием предложенных изменений, но это не работает, так как это проект на основе CMake, поэтому параметр -C не работает.   -  person Sarush    schedule 18.07.2019
comment
СООБЩЕНИЕ ОБ ОШИБКЕ: make -j 8 -C yocto/poky-warrior/build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/alexa/0.1-r0/git/SampleApp | make: Вход в каталог 'yocto/poky-warrior/build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/alexa/0.1-r0/git/SampleApp' | make: *** Цели не указаны и make-файл не найден. Останавливаться. | make: Выход из каталога 'yocto/poky-warrior/build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/alexa/0.1-r0/git/SampleApp' | ОШИБКА: ошибка oe_runmake   -  person Sarush    schedule 18.07.2019
comment
Упс, моя ошибка. Возможно, полностью удалить блок do_compile(){} и оставить поведение по умолчанию inherit cmake. Затем добавьте PACKAGES += "${PN}-sampleapp" и FILES_${PN}-sampleapp = "${bindir}/sampleapp ...", чтобы создать отдельный пакет только для примера приложения?   -  person Nayfe    schedule 18.07.2019
comment
@Nayfe Я удалил функцию do_compile, и ее компиляция прошла нормально, но в do_package она выдает установленные, а не отправленные файлы. [установлено-отправлено] ошибка. я обновил свой файл bb выше. Пожалуйста, посмотрите, так как это срочно.   -  person Sarush    schedule 24.07.2019


Ответы (1)


Поскольку здесь вы используете cmake, вам не нужно писать здесь do_compile(), так как cmake bbclass примет его, когда вы наследуете cmake.

Если CmakeLists.txt для вашего приложения в порядке, yocto скомпилирует его и создаст необходимые бины/библиотеки как его часть.

Можете добавить

     FILES_${PN}  += "${bindir}/sample app \
                      ${AVSDIR} \
                      sounds"

Затем добавьте свой пакет в соответствующую группу пакетов или добавьте в local.conf.

IMAGE_INSTALL_append = "sampleApp"

Проверьте, получаете ли вы сейчас нужные бины в rootfs.

person Vysakh A V    schedule 21.07.2019