[yocto] Custom recipe - resolving "do_package_qa: QA Issue: -dev package contains non-symlink .so"

Andre McCurdy armccurdy at gmail.com
Tue Aug 22 16:45:20 PDT 2017


On Tue, Aug 22, 2017 at 12:18 PM, Jussi Kukkonen
<jussi.kukkonen at intel.com> wrote:
> On 22 August 2017 at 17:43, Colin Helliwell <colin.helliwell at ln-systems.com>
> wrote:
>> > On 22 August 2017 at 15:13 Jussi Kukkonen <jussi.kukkonen at intel.com>
>> > wrote:
>> > On 22 August 2017 at 16:43, <colin.helliwell at ln-systems.com> wrote:
>> > > I have a custom recipe (for the AWS SDK), which is failing at the
>> > > package_qa
>> > > stage.
>> > > The recipe is a very basic cmake styley, and on its own seems to begin
>> > > with:
>> > > 'bitbake -f -c package aws-sdk'  completes without errors.
>> > >
>> > > But for 'bitbake -c package_qa aws-sdk) I get:
>> > >
>> > > ERROR: aws-sdk-1.1.31-r0 do_package_qa: QA Issue: -dev package
>> > > contains
>> > > non-symlink .so: aws-sdk-dev path
>> > >
>> > > '/work/armv7a-neon-poky-linux-gnueabi/aws-sdk/1.1.31-r0/packages-split/aws-s
>> > > dk-dev/usr/lib/libaws-cpp-sdk-core.so'
>> > > -dev package contains non-symlink .so: aws-sdk-dev path
>> > >
>> > > '/work/armv7a-neon-poky-linux-gnueabi/aws-sdk/1.1.31-r0/packages-split/aws-s
>> > > dk-dev/usr/lib/libaws-cpp-sdk-s3.so' [dev-elf]
>> > >
>> > > I'd appreciate help with resolving this. Thanks.>
>> > >
>> >
>> > It looks like aws-sdk installs .so files that are actual libraries (and
>> > not symlinks to the versioned libraries as would be the usual case). The
>> > best solution would be to get aws to install versioned libraries but if
>> > that's not an option, you probably want to package the .so files in the
>> > actual library package, not the -dev package (which is the default since
>> > usually .so are symlinks for development and the actually versioned ).
>> >
>> > You may have to set both FILES_${PN}-dev and FILES_${PN} (so the former
>> > doesn't grab the so files, and the latter does)
>> >
>> > HTH,
>> >   Jussi
>>
>> Thanks for the tips, Jussi.
>> I'm managing to get a little further, added
>> INSANE_SKIP_${PN}-dev += "dev-elf"
>
> I suggest not doing this. It seems the warning is valid so you should fix
> the issue, not silence the warning.

Right, and especially true for the dev-elf QA check. Putting an actual
elf .so file in a -dev package introduces a run-time dependency on the
-dev package, which causes header files etc to be pulled into the
final image. Trying to disable the "dev-elf" QA test should be QA test
failure in itself... :-)

>> FILES_${PN}-dev += "${libdir}/libaws-cpp-sdk-core.so
>> ${libdir}/libaws-cpp-sdk-s3.so"
>
>
> ${PN}-dev should _not_ contain so files (in your special case). The issue is
> that the default value contains "${libdir}/lib*.so" already (it's not quite
> so simple but see meta/conf/bitbake.conf for details if interested). You
> should be able to just redefine the variable completely:
>
>     FILES_${PN}-dev = "${includedir}"

Completely over-riding any of the default packaging rules isn't ideal.
To force .so files into main package the following is a little
cleaner:

  FILES_SOLIBSDEV = ""
  FILES_${PN} += "${libdir}/*.so"

>> FILES_${PN} += "${libdir}/libaws-cpp-sdk-core.so
>> ${libdir}/libaws-cpp-sdk-s3.so"
>
>
> This looks correct to me.
>
> Jussi
>
> --
> _______________________________________________
> yocto mailing list
> yocto at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/yocto
>



More information about the yocto mailing list