Hi Samuli,

Le mer. 8 nov. 2023, 22:30, Samuli Piippo <[email protected]> a
écrit :

> Hi Clément,
>
> Were you able to reproduce the issue?
>

Sorry I'm on vacation without access to a laptop at the moment.

But if I understand the issue is not related to a target or native recipes
issue, right?

It's only when building the SDK and then try to build an application with
it right?

Maybe there is a missing dependency when building the SDK.

Regards,
Clement



> On Tue, 24 Oct 2023 at 16:33, Samuli Piippo via lists.openembedded.org
> <[email protected]> wrote:
>
>> The protoc binary is not enabled for target builds. Try nativesdk build
>> and it should then fail to find it.
>>
>> On Tue, 24 Oct 2023 at 14:53, Clément Péron <[email protected]> wrote:
>>
>>> Hi,
>>>
>>> I have pushed a branch on my repo:
>>> https://github.com/clementperon/meta-openembedded/tree/test_protobuf
>>>
>>> and tried to reproduce the issue on my setup with the following kas yaml
>>> file.
>>>
>>> But I don't see any issue at the configure stage.
>>>
>>> cat
>>> XXXX/cortexa57-poky-linux-musl/test-protobuf/0.3/temp/log.do_configure
>>>
>>> Show that -- Version:23.4.0 of Protobuf is found without any issue
>>>
>>> Cmake host version is
>>> $> cmake --version
>>> cmake version 3.27.7
>>>
>>> I'm missing something ?
>>>
>>> Regards,
>>> Clement
>>>
>>> kas.yml
>>> ====================
>>> header:
>>>   version: 8
>>>
>>> machine: qemuarm64
>>> distro: poky
>>> target:
>>>   - test-protobuf
>>>
>>> repos:
>>>   poky:
>>>     url: https://git.yoctoproject.org/git/poky
>>>     path: layers/poky
>>>     refspec: master
>>>     layers:
>>>       meta:
>>>       meta-poky:
>>>       meta-yocto-bsp:
>>>
>>>   meta-openembedded:
>>>     url: https://github.com/clementperon/meta-openembedded
>>>     path: layers/meta-openembedded
>>>     refspec: test_protobuf
>>>     layers:
>>>       meta-oe:
>>>       meta-networking:
>>>       meta-python:
>>>
>>> bblayers_conf_header:
>>>   standard: |
>>>     POKY_BBLAYERS_CONF_VERSION = "2"
>>>     BBPATH = "${TOPDIR}"
>>>     BBFILES ?= ""
>>>
>>> local_conf_header:
>>>   libc: |
>>>     TCLIBC = "musl"
>>>   standard: |
>>>     CONF_VERSION = "2"
>>>     PACKAGE_CLASSES = "package_ipk"
>>>   debug-tweaks: |
>>>     EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
>>>
>>>   diskmon: |
>>>     BB_DISKMON_DIRS = "\
>>>         STOPTASKS,${TMPDIR},1G,100K \
>>>         STOPTASKS,${DL_DIR},1G,100K \
>>>         STOPTASKS,${SSTATE_DIR},1G,100K \
>>>         STOPTASKS,/tmp,100M,100K \
>>>         ABORT,${TMPDIR},100M,1K \
>>>         ABORT,${DL_DIR},100M,1K \
>>>         ABORT,${SSTATE_DIR},100M,1K \
>>>         ABORT,/tmp,10M,1K"
>>> ======================
>>>
>>> On Sun, 22 Oct 2023 at 20:45, Vyacheslav Yurkov <[email protected]>
>>> wrote:
>>> >
>>> > I'm a bit confused here.
>>> >
>>> > I just did 'find
>>> tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-grpc/1.56.2/ -name
>>> "protoc*"' and I see protoc binary only in recipe-sysroot-native. That
>>> tells me that protoc, which is a part of nativesdk-protobuf-compiler, is
>>> not installed to recipe-sysroot.
>>> >
>>> > What am I missing here?
>>> >
>>> > Slava
>>> >
>>> > On 20.10.2023 09:35, Martin Jansa wrote:
>>> >
>>> > do_prepare_recipe_sysroot doesn't install any packages to RSS. Only
>>> package manager on target or in do_rootfs uses packages.
>>> >
>>> > It installs the files from dependency populate_sysroot task.
>>> >
>>> > On Fri, Oct 20, 2023 at 9:11 AM Samuli Piippo <[email protected]>
>>> wrote:
>>> >>
>>> >> Dependency to the recipe name will always install all packages to RSS.
>>> >> You can verify this by checking that the libprotoc.so from the
>>> nativesdk-protobuf-compile package is in the sysroot.
>>> >> The problem you are facing is the fact that binaries are not
>>> installed into the sysroot (for nativesdk builds), so you are only missing
>>> the bin/protoc-23.4.0 file.
>>> >> The proposed and twice reverted fix for this is the aforementioned
>>> SYSROOT_DIRS.
>>> >>
>>> >> -samuli
>>> >>
>>> >> On Fri, 20 Oct 2023 at 09:17, Vyacheslav Yurkov <[email protected]>
>>> wrote:
>>> >>>
>>> >>> 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 (#106489): 
https://lists.openembedded.org/g/openembedded-devel/message/106489
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