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]]
-=-=-=-=-=-=-=-=-=-=-=-