I think the problem goes down to how dependencies are populated in the sysroot. I raised this question in oe-core mailing list https://lists.openembedded.org/g/openembedded-core/message/189324 , but didn't get an answer yet.

DEPENDS += "protobuf" will only install the main package of protobuf to the sysroot, because it assumes that nativesdk-protobuf-compiler is also part of the main package (which is not). I guess the part of the system populating sysroot deals with recipes only, and not with packages. I'm still trying to understand how that should be addressed properly. My understanding is that either all packages should be installed to sysroot (which recipe claims it provides), or we need a way to indicate a package level dependency (i.e. nativesdk-protobuf-compiler in this case)

Any ideas?

Slava

On 18.10.2023 14:28, Samuli Piippo wrote:
Following simple test recipe will fail now when trying to use Protobuf with CMake.

inherit cmake
DEPENDS += "protobuf"

do_configure:prepend() {
    echo "find_package(Protobuf CONFIG)" > ${S}/CMakeLists.txt
}

BBCLASSEXTEND = "nativesdk"

---
CMake Error at tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-test/1.0/recipe-sysroot/usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/lib/cmake/protobuf/protobuf-targets.cmake:107 (message):
  The imported target "protobuf::protoc" references the file

 
"tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-test/1.0/recipe-sysroot/usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/bin/protoc-23.4.0"

  but this file does not exist.
---

I don't quite see why every project/recipe should fix this independently when the simple workaround for this yocto-specific issue is available (namely the use of SYSROOT_DIRS).

-samuli

ps. qtgrpc recipe and other Qt6 recipes are now visible in the layerindex https://layers.openembedded.org/layerindex/recipe/348210/


On Thu, 12 Oct 2023 at 15:06, Vyacheslav Yurkov <[email protected]> wrote:

    I'd like to follow-up on this and say that I see this issue now
    with nativesdk build, in particular nativesdk-grpc recipe fails in
    master with the same error. I hope that's partially related to the
    issue everybody is confused about, but I'd like understand how to
    properly fix it.

    |   The imported target "protobuf::protoc" references the file
    |
    |
    
"/home/uvv/projects/poky/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-grpc/1.56.2/recipe-sysroot/usr/local/oe-sdk-hardcoded-buildpath/sysroots/x86_64-pokysdk-linux/usr/bin/protoc-23.4.0"
    |
    |   but this file does not exist.  Possible reasons include:
    |
    |   * The file was deleted, renamed, or moved to another location.

    The protoc-23.4.0 file already exists in the recipe-sysroot-native.

    And we do want protoc to be present in the SDK, but nativesdk
    build is a cross-compilation, because SDKMACHINE and HOST might be
    different.
    In this particular grpc case there's an option to say where the
    actual protoc executable is (
    
-D_gRPC_PROTOBUF_PROTOC_EXECUTABLE=/home/uvv/projects/poky/build/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-grpc/1.56.2/recipe-sysroot-native/usr/bin/protoc
    is passed to grpc).

    So there shouldn't be any issues here, but nativesdk build still
    fails.

    Looking into it further I see that protoc is actually packaged by
    protobuf-compiler package, but when I try to add a package
    dependency to grpc recipe I get this:

    nativesdk-protobuf RPROVIDES nativesdk-protobuf-compiler

    Moreover, if I go into devshell and forcefully install
    nativesdk-libprotobuf-compiler, then `bitbake nativesdk-grpc` is
    happy and compiles!

    So something wrong with the dependencies in protobuf recipe, but I
    can't figure out yet what exactly. Any ideas?

    Regards,
    Slava

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#105610): 
https://lists.openembedded.org/g/openembedded-devel/message/105610
Mute This Topic: https://lists.openembedded.org/mt/101679410/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to