0

I'm banging my head against the wall on this - mostly because I'm really new to Yocto and just getting into the swing of things. I've been building the image github.com/EttusResearch/oe-manifests and been successfully.

Now, I'd like to add tensorflow as a package, avoiding it's bazel and java dependancies I decided to create a recipe of my own, using the whl for armv7.

I've followed this article: Yocto recipe python whl package

And used this whl repo: https://github.com/lhelontra/tensorflow-on-arm/releases

I created a layer and then added a recipe which I've named tensorflow_2.0.0.bb which contains:


SRC_URI = "https://github.com/lhelontra/tensorflow-on-arm/releases/download/v2.0.0/tensorflow-2.0.0-cp37-none-linux_armv7l.whl;downloadfilename=v2.0.0.zip;subdir=${BP}"

SRC_URI[md5sum] = "0af281677f40e4aa1da7bb1b2ba72e18"
SRC_URI[sha256sum] = "3cb1be51fe3081924ddbe69e92a51780458accafd12e39482a872b27b3afff8c"


LICENSE = "BSD-3-Clause"
inherit nativesdk python3-dir                                                                       

LIC_FILES_CHKSUM = "file:///${S}/tensorflow-2.0.0.dist-info/LICENSE;md5=64a34301f8e355f57ec992c2af3e5157"

PV ="2.0.0"                                                                                        
PN = "tensorflow"                                                                 

do_unpack[depends] += "unzip-native:do_populate_sysroot"                                            

PROVIDES += "tensorflow"                                                          
DEPENDS += "python3"                                                                     

FILES_${PN} += "\                                                                                   
    ${libdir}/${PYTHON_DIR}/site-packages/* \                                                       
"                                                                                                   

do_install() {                                                                                      
    install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/tensorflow-2.0.0.dist-info                 
    install -d ${D}${libdir}/${PYTHON_DIR}/site-packages/tensorflow                                

    install -m 644 ${S}/tensorflow/* ${D}${libdir}/${PYTHON_DIR}/site-packages/tensorflow/          
    install -m 644 ${S}/tensorflow-2.0.0.dist-info/* ${D}${libdir}/${PYTHON_DIR}/site-packages/tensorflow-2.0.0.dist-info/
}

The problem is, during building this recipe I get the following error:

ERROR: Nothing PROVIDES 'virtual/x86_64-oesdk-linux-compilerlibs' (but /home/sudilav/oe-core/../meta-tensorflow/recipes-devtools/tensorflow/tensorflow_2.0.0.bb DEPENDS on or otherwise requires it). Close matches:
  virtual/nativesdk-x86_64-oesdk-linux-compilerlibs
  virtual/x86_64-oesdk-linux-go-crosssdk
  virtual/x86_64-oesdk-linux-gcc-crosssdk
ERROR: Required build target 'tensorflow' has no buildable providers.
Missing or unbuildable dependency chain was: ['tensorflow', 'virtual/x86_64-oesdk-linux-compilerlibs']

Given I'm downloading and unzipping a whl, I can't see why it's flagging up these dependancies. I think the whl does compile, but it's a lot of code to check through. Has anyone seen this before? There's not much from google on this error :/

Ed Jones
  • 104
  • 6

1 Answers1

0

Bitbake has a tool to create a file with the dependencies tree.

bitbake -g

or, for a specific recipe:

bitbake -g {recipe name}

There is a dedicated tool too display these trees, like kgraphviewer and also online tools. I personally just open these files with a text editor, they are pretty easy to read.

Just search the file for "virtual/x86_64-oesdk-linux-compilerlibs" and see who needs it.

Hope this helps.

Ilya S
  • 141
  • 5
  • 1
    This is not useful? You've just posted about a generic debugging command people traditionally use, you've not gifted any insight into my specific problem. – Ed Jones Dec 20 '20 at 15:35