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 (#105720):
https://lists.openembedded.org/g/openembedded-devel/message/105720
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]]
-=-=-=-=-=-=-=-=-=-=-=-