Re: Modified GENIVI Cannelloni recipe with strange side effects


Zoran
 

Hello Laurent,

U R correct (and why I am not surprised?!). :-)

The correct recipe is here (it becomes very simplistic, seems):
https://github.com/ZoranStojsavljevic/meta-socketcan/blob/master/recipes-can/cannelloni/cannelloni.bb

I have (out of my ignorance) one question, which confuses me: Why this
functionality does not reside in do_install_append () (I would expect
this to be correct one, but it seems that inheritance in bitbake has
changed)?

Many thanks (what we, ignorant YOCTO guys, will do without the experts),
Zoran
_______

On Wed, Feb 19, 2020 at 7:05 PM Laurent Gauthier
<laurent.gauthier@soccasys.com> wrote:

Hi Zoran,

I just saw your reply now.

I think that you might want to remove the INHIBIT_SYSROOT_STRIP and
other INHIBIT_* options from your recipe.

For reference a message from Khem warning that this option should be
used sparingly:

* https://www.yoctoproject.org/pipermail/yocto/2019-March/044415.html

My best guess is that the use of this option is directly linked to
chrpath being needed.

As this recipe is being built with a rather clean looking
CMakeLists.txt none of these weird options are needed.

Kind regards, Laurent.

On Mon, Feb 17, 2020 at 8:01 AM Zoran Stojsavljevic
<zoran.stojsavljevic@gmail.com> wrote:

The issue I see is that the following files have been build but NOT installed:

* libcannelloni-common.so.0
* libcannelloni-common.so.0.0.1
Not quite... The solution is outlined here (in function do_install):
+ ## ERROR: QA Issue: package cannelloni contains bad RPATH
+ ## quick fix is in a do_install or do_install_append do
+ chrpath -d ${D}${bindir}/cannelloni

https://github.com/ZoranStojsavljevic/meta-socketcan/blob/master/recipes-can/cannelloni/cannelloni.bb
https://github.com/ZoranStojsavljevic/meta-socketcan/blob/master/recipes-can/cannelloni/cannelloni.bb_GENIVI

I admit, your first email has shaken my head, so I can see things much
more clear. :-)

My best guess, this solution is just a workaround (not the final one),
since I have in ${D} the following:

cannelloni-1.0: package cannelloni contains bad RPATH
/home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/build:
in file /home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/packages-split/cannelloni/usr/bin/cannelloni
[rpaths]

So, since my limited knowledge about bitbake build systems ends here,
somebody from YOCTO primes (potentially Khem Raj, Ross Burton, maybe
even Richard Purdie) should look more closely into this issue
(apologies for my unsolicited suggestions).

Laurent,

Once again, thank you for unselfish help,
Zoran
_______


On Fri, Feb 14, 2020 at 2:20 PM Laurent Gauthier
<laurent.gauthier@soccasys.com> wrote:

Hi Zoran,

You are almost there! I can feel it... :-)

The issue I see is that the following files have been build but NOTinstalled:

* libcannelloni-common.so.0
* libcannelloni-common.so.0.0.1

If you make sure that they are installed that should fix your issue.

Based on the info you provided no RDEPENDS seems to be required as it
all appears that everything is in one package named "cannelloni",
rather than a package for the main executable and then packages for
libraries.

Kind regards, Laurent.

On Fri, Feb 14, 2020 at 12:43 PM Zoran Stojsavljevic
<zoran.stojsavljevic@gmail.com> wrote:

Hello Laurent,

Many thanks to you for the help. :-)

I did some modifications, and now I have all the elements in there/in place:

[user@fedora31-ssd cannelloni]$ cd ../../../build/tmp
[user@fedora31-ssd tmp]$ find . -name libcannelloni*
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/image/usr/lib/libcannelloni-common.so
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/sysroot-destdir/usr/lib/libcannelloni-common.so
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/package/usr/lib/.debug/libcannelloni-common.so
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/package/usr/lib/libcannelloni-common.so
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/packages-split/cannelloni/usr/lib/libcannelloni-common.so
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/packages-split/cannelloni-dbg/usr/lib/.debug/libcannelloni-common.so
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/build/libcannelloni-common.so.0
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/build/libcannelloni-common.so.0.0.1
./work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/build/libcannelloni-common.so
./sysroots-components/cortexa8hf-neon/cannelloni/usr/lib/libcannelloni-common.so

I miss the very end of your thoughts. Namely:

The name of the package containing the shared library is name of the
xxx first-level directory "packages-split/xxx".
So, how should I write the RDEPENDS command?

Something as: RDEPENDS_${PN} = "???"

What should I put on the right side of the equation (according to the above traces)?

Thank you,
Zoran
_______

On Fri, Feb 14, 2020 at 11:49 AM Laurent Gauthier <laurent.gauthier@soccasys.com> wrote:

Hi Zoran,

The issue seems to be that the executable /usr/bin/cannelloni has a
reference to a shared library (libcannelloni-common.so.0) for which
the Yocto build system is not able to determine automatically which
package provides it.

Based on the name I would assume that this package should be created
by the same recipe that produces this executable (one recipe produces
multiple packages).

The most probable reason for this is that the new version of the
package you are trying to build does not install the "missing" shared
library properly. But here are some steps you could follow to try to
determine the stage of build/install/package where the shared library
goes missing.

To debug this I would suggest that you check that this
"libcannelloni-common.so.0" shared library is present in several
directories.

First in the build directory:

* /home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/build

If it is not there that would be very surprising. I will assume that
it is present. Let us know if it is not.

Then the next location to check for this shared library is the following:

* /home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/package

If the file is not there, then it means that the recipe did not
"install" it (as this directory is populated by do_install).

If the file is there then you can check if it is correctly assigned in
a package by determining if it is also found in:

* /home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/packages-split

If the file is not there, then it means that the recipe did not
"package" it properly (as this directory is populated by do_package).
You should review the recipe for any anomaly in assigning installed
files to individual packages.

If the file is there then you probably should add the package that
contains the shared library in the RDEPENDS for the "cannelloni"
package.

The name of the package containing the shared library is name of the
xxx first-level directory "packages-split/xxx".

Not sure if that will solve your issue, but hopefully that will help.

Kind Regards, Laurent.

On Fri, Feb 14, 2020 at 11:27 AM Zoran <zoran.stojsavljevic@gmail.com> wrote:

Hello List,

I am trying to solve very interesting ERROR I am getting with slightly modified GENIVI Canneloni recipe:
https://github.com/ZoranStojsavljevic/meta-socketcan/blob/master/recipes-can/cannelloni/cannelloni.bb

If I take the recipe as is, everything works fine, with:
## SRCREV = "${AUTOREV}"
SRCREV = "0fb6880b719b8acf2b4210b264b7140135e4be8a"

Everything works fine, but if I swap the static hash with auto latest hash (SRCREV = "${AUTOREV}":
SRCREV = "${AUTOREV}"
## SRCREV = "0fb6880b719b8acf2b4210b264b7140135e4be8a"

I am getting these ERRORS, which seems to me very strange?!
_______

Sstate summary: Wanted 11 Found 6 Missed 5 Current 1398 (54% match, 99% complete)
NOTE: Executing Tasks
NOTE: Setscene tasks completed
ERROR: cannelloni-1.0-r0 do_package_qa: QA Issue: package cannelloni contains bad RPATH /home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/build: in file /home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/packages-split/cannelloni/usr/bin/cannelloni [rpaths]
ERROR: cannelloni-1.0-r0 do_package_qa: QA Issue: /usr/bin/cannelloni contained in package cannelloni requires libcannelloni-common.so.0, but no providers found in RDEPENDS_cannelloni? [file-rdeps]
ERROR: cannelloni-1.0-r0 do_package_qa: QA run found fatal errors. Please consider fixing them.
ERROR: Logfile of failure stored in: /home/user/projects2/beaglebone-black/bbb-yocto/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/cannelloni/1.0-r0/temp/log.do_package_qa.255490
ERROR: Task (/home/user/projects2/beaglebone-black/bbb-yocto/meta-socketcan/recipes-can/cannelloni/cannelloni.bb:do_package_qa) failed with exit code '1'
NOTE: Tasks Summary: Attempted 3791 tasks of which 3788 didn't need to be rerun and 1 failed.
_______

Any advise how to make GENIVI Cannelloni recipe to work with: SRCREV = "${AUTOREV}" ???

Thank you,
Zoran



--
Laurent Gauthier
Phone: +33 630 483 429
http://soccasys.com


--
Laurent Gauthier
Phone: +33 630 483 429
http://soccasys.com


--
Laurent Gauthier
Phone: +33 630 483 429
http://soccasys.com

Join yocto@lists.yoctoproject.org to automatically receive all group messages.