[yocto] Control which host components are included in ADT output?

Evade Flow evadeflow at gmail.com
Tue Oct 9 15:11:00 PDT 2012


I have a question about the ADT and how it selects host SDK components.
If I type:

% bitbake meta-toolchain-sdk

I wind up getting hundreds of target libs when I extract the generated
tarball:

% pwd
/opt/poky/1.2.1/sysroots
% ls armv5te-poky-linux-gnueabi/usr/lib | wc -l
696

but a relatively small number of host libs:

% ls i686-pokysdk-linux/usr/lib | wc -l
53

Is this normal? Taking libxml2 as an example:

% ls -1 armv5te-poky-linux-gnueabi/usr/lib/libxml*
armv5te-poky-linux-gnueabi/usr/lib/libxml2.la
armv5te-poky-linux-gnueabi/usr/lib/libxml2.so
armv5te-poky-linux-gnueabi/usr/lib/libxml2.so.2
armv5te-poky-linux-gnueabi/usr/lib/libxml2.so.2.7.8
% ls -1 i686-pokysdk-linux/usr/lib/libxml*
zsh: no matches found: i686-pokysdk-linux/usr/lib/libxml*

It seems desirable to have libxml2 be part of the SDK I give to my
development team. We have a lot of test applications that can be run on
the host, and I don't like the thought of somebody wasting time chasing
a bug that turns out to be due to the fact that he is linking against a
different (system-installed) version of libxml2 rather than the target
version.

Skimming the ADT manual, this section seems to hint at a solution:

 - http://www.yoctoproject.org/docs/current/adt-manual/adt-manual.html#adt-package

But I can't quite follow all the steps. :-% It says (using libglade as
an example):

  First, you should generate the ipk file for the libglade package and
  add it into a working opkg repository. Use these commands:

    $ bitbake libglade
    $ bitbake package-index


Being totally new to opkg, this lost me. What does the 'package-index'
target actually do?  Does bitbake "add it [libglade] into a working opkg
repository" for me, or am I supposed to take the output of the command
and do something with it? I had a look in these two locations for
'package-index' and came up empty:

 - http://www.yoctoproject.org/docs/current/dev-manual/dev-manual.html
 - http://www.yoctoproject.org/docs/current/poky-ref-manual/poky-ref-manual.html

What's the best place to look for these kinds of references when I get
stuck on something?

The ADT docs go on to say:

  Next, source the environment setup script found in the Yocto Project
  files. Follow that by setting up the installation destination to point
  to your sysroot as <sysroot_dir>. Finally, have an OPKG configuration
  file <conf_file> that corresponds to the opkg repository you have just
  created.

     $ opkg-cl –f <conf_file> -o <sysroot_dir> update
     $ opkg-cl –f <cconf_file> -o <sysroot_dir> \
        --force-overwrite install libglade
     $ opkg-cl –f <cconf_file> -o <sysroot_dir> \
        --force-overwrite install libglade-dbg
     $ opkg-cl –f <conf_file> -o <sysroot_dir> \
        --force-overwrite install libglade-dev

<sysroot_dir> I understand, but what is <conf_file>? Did bitbake
generate this for me? Am I supposed to create one by hand? Where? These
instructions are a little hard to follow due to the use of placeholders
rather than concrete arguments. I think a complete, explicit example
would help a lot here.

Also, it seems likely that the above commands would only install a
libglade compiled for the target? How would I generate a libglade for
the host?

Another question is: is there a way to tune the ADT tarball to be a
better fit for my needs so that I don't need to add so many packages by
hand after-the-fact?

Any advice much appreciated, thanks!



More information about the yocto mailing list