Рецепт Yocto/OpenEmbedded Включая пути к библиотеке от хоста

Я могу позволить себе роскошь иметь дело с бесконечным раем ошибок и предупреждений, которым является OpenEmbedded. Хорошей новостью является то, что я, наконец, добрался до своего рецепта, но я столкнулся с проблемой, когда мой рецепт включает пути включения и библиотеки с моего хост-компьютера. Насколько мне известно, это небезопасно для кросс-компиляции. Кто-нибудь из вас, замечательные люди, взглянет на мой рецепт и скажет, не делаю ли я что-нибудь глупое? Я был бы очень признателен, потому что это заставляет меня чувствовать себя полным идиотом.

Вот мой рецепт OpenEmbedded:

#TODO fixup license type
#Built by Rob.

DESCRIPTION = "librem" 
HOMEPAGE = ""
SECTION = "meta-miku"
DEPENDS = "zlib re"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

# This tells bitbake where to find the files we're providing on the local filesystem
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"

S = "${WORKDIR}/rem-0.5.2"
INSANE_SKIP_${PN}-dev += "dev-elf"
#INSANE_SKIP_${PN} += "installed-vs-shipped"

SRC_URI = "https://github.com/creytiv/rem/archive/v0.5.2.tar.gz"
SRC_URI[md5sum] = "4d63ab174fb7957b6805fd0de6991fd2"
SRC_URI[sha256sum] = "cef1b29631a35926982502f0eecc0950d40d2585241d0598ff18e70e2dfcfcb6"

do_compile() {
oe_runmake ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}" 
}

do_install () {
oe_runmake install ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}" DESTDIR=${D}${libdir}
install -d ${D}${libdir}/
install -m 0644 ${S}/librem.a ${D}${libdir}/librem.a
install -m 0644 ${S}/librem.so ${D}${libdir}/librem.so
install -d ${D}${libdir}/pkgconfig
install -m 0644 ${S}/librem.pc ${D}${libdir}/pkgconfig/librem.pc
}

И вот мои предупреждения:

WARNING: rem-1.0-r0 do_package: QA Issue: rem: Files/directories were installed but not shipped in any package:
  /usr/lib64/usr/include
  /usr/lib64/usr/include/rem
  /usr/lib64/usr/include/rem/rem_auconv.h
  /usr/lib64/usr/include/rem/rem_fir.h
  /usr/lib64/usr/include/rem/rem_aumix.h
  /usr/lib64/usr/include/rem/rem_video.h
  /usr/lib64/usr/include/rem/rem_audio.h
  /usr/lib64/usr/include/rem/rem_vidconv.h
  /usr/lib64/usr/include/rem/rem_dtmf.h
  /usr/lib64/usr/include/rem/rem_aubuf.h
  /usr/lib64/usr/include/rem/rem_au.h
  /usr/lib64/usr/include/rem/rem_dsp.h
  /usr/lib64/usr/include/rem/rem_vidmix.h
  /usr/lib64/usr/include/rem/rem_vid.h
  /usr/lib64/usr/include/rem/rem_goertzel.h
  /usr/lib64/usr/include/rem/rem_auresamp.h
  /usr/lib64/usr/include/rem/rem_autone.h
  /usr/lib64/usr/include/rem/rem_g711.h
  /usr/lib64/usr/include/rem/rem_aufile.h
  /usr/lib64/usr/include/rem/rem.h
  /usr/lib64/usr/lib/librem.a
  /usr/lib64/usr/lib/librem.so
  /usr/lib64/usr/lib/pkgconfig
  /usr/lib64/usr/lib/pkgconfig/librem.pc
Please set FILES such that these items are packaged. Alternatively if they are unneeded, avoid installing them or delete them within do_install.
rem: 24 installed and not shipped files. [installed-vs-shipped]
WARNING: rem-1.0-r0 do_package_qa: QA Issue: rem: The compile log indicates that host include and/or library paths were used.
         Please check the log '/media/rob/a72581e8-3ca3-4dc1-b3b8-6db5464de098/qc_openEmbedded/apps_proc/build/tmp-glibc/work/aarch64-linaro-linux/rem/1.0-r0/temp/log.do_compile' for more information. [compile-host-path]
WARNING: rem-1.0-r0 do_package_qa: QA Issue: No GNU_HASH in the elf binary: '/media/rob/a72581e8-3ca3-4dc1-b3b8-6db5464de098/qc_openEmbedded/apps_proc/build/tmp-glibc/work/aarch64-linaro-linux/rem/1.0-r0/packages-split/rem-dev/usr/lib64/librem.so' [ldflags]
NOTE: Tasks Summary: Attempted 420 tasks of which 407 didn't need to be rerun and all succeeded.
NOTE: Writing buildhistory

Summary: There were 4 WARNING messages shown.

person RobGries    schedule 08.11.2017    source источник


Ответы (1)


Это именно то, о чем говорит вам предупреждение в вашем выводе bitbake. Файлы обрабатываются и устанавливаются, однако в выводе нет ссылки на них, поэтому они не отправляются.

Установите FILES таким образом, чтобы эти элементы были упакованы. В качестве альтернативы, если они не нужны, не устанавливайте их или удалите в do_install. rem: 24 установленных и не отправленных файла. [установлено против отправлено]

Включите файлы в свой рецепт Yocto:

#TODO fixup license type
#Built by Rob.

DESCRIPTION = "librem" 
HOMEPAGE = ""
SECTION = "meta-miku"
DEPENDS = "zlib re"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

# This tells bitbake where to find the files we're providing on the local filesystem
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:"

S = "${WORKDIR}/rem-0.5.2"
INSANE_SKIP_${PN}-dev += "dev-elf"
#INSANE_SKIP_${PN} += "installed-vs-shipped"

SRC_URI = "https://github.com/creytiv/rem/archive/v0.5.2.tar.gz"
SRC_URI[md5sum] = "4d63ab174fb7957b6805fd0de6991fd2"
SRC_URI[sha256sum] = "cef1b29631a35926982502f0eecc0950d40d2585241d0598ff18e70e2dfcfcb6"

do_compile() {
    oe_runmake ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}" 
}

do_install () {
    oe_runmake install ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST}" DESTDIR=${D}${libdir}
    install -d ${D}${libdir}/
    install -m 0644 ${S}/librem.a ${D}${libdir}/librem.a
    install -m 0644 ${S}/librem.so ${D}${libdir}/librem.so
    install -d ${D}${libdir}/pkgconfig
    install -m 0644 ${S}/librem.pc ${D}${libdir}/pkgconfig/librem.pc
}

FILES_${PN} += "\
    /usr/lib64/usr/include \ 
    /usr/lib64/usr/include/rem \
    /usr/lib64/usr/include/rem/rem_auconv.h \
    /usr/lib64/usr/include/rem/rem_fir.h \
    /usr/lib64/usr/include/rem/rem_aumix.h \
    /usr/lib64/usr/include/rem/rem_video.h \
    /usr/lib64/usr/include/rem/rem_audio.h \
    /usr/lib64/usr/include/rem/rem_vidconv.h \
    /usr/lib64/usr/include/rem/rem_dtmf.h \
    /usr/lib64/usr/include/rem/rem_aubuf.h \
    /usr/lib64/usr/include/rem/rem_au.h \
    /usr/lib64/usr/include/rem/rem_dsp.h \
    /usr/lib64/usr/include/rem/rem_vidmix.h \
    /usr/lib64/usr/include/rem/rem_vid.h \
    /usr/lib64/usr/include/rem/rem_goertzel.h \
    /usr/lib64/usr/include/rem/rem_auresamp.h \
    /usr/lib64/usr/include/rem/rem_autone.h \
    /usr/lib64/usr/include/rem/rem_g711.h \
    /usr/lib64/usr/include/rem/rem_aufile.h \
    /usr/lib64/usr/include/rem/rem.h \
    /usr/lib64/usr/lib/librem.a \
    /usr/lib64/usr/lib/librem.so \
    /usr/lib64/usr/lib/pkgconfig \
    /usr/lib64/usr/lib/pkgconfig/librem.pc \
"

или, в качестве альтернативы, более простым способом было бы просто использовать подстановочный знак, который улавливает все

FILES_${PN} += "/usr/lib64/usr/*"
person Brendan    schedule 20.11.2017