[poky] [yocto] problem about package and subpackage

Gary Thomas gary at mlbassoc.com
Wed Apr 18 07:51:46 PDT 2012


On 2012-04-18 08:46, caterwaul wrote:
>
>
>
>
> At  2012-04-18  22:06:36,"Gary  Thomas"  <gary at mlbassoc.com>  wrote:
>>On  2012-04-18  07:57,  caterwaul  wrote:
>>>  At    2012-04-18    19:57:21,"Gary    Thomas"    <gary at mlbassoc.com>    wrote:
>>>>On    2012-04-18    05:29,    caterwaul    wrote:
>>>>>    Hi,
>>>>>
>>>>>    I    wanted    to    add    dhcp(4.2.0)    into    my    image.    And    I    added    "dhcp"    into    IMAGE_INSTALL    of    my    image's    bb    file.    After    I    runing    bitbake,    the    dhcp    package    is    normally    fetched    and    compiled
>>>>>    and    so    on.    But    during    do_rootfs    bitbake    reported    as    follow:
>>>>>    Processing    dhcp...
>>>>>    Unable    to    find    package    dhcp    (dhcp)!
>>>>>    ERROR:    Function    'do_rootfs'    failed
>>>>>
>>>>>    I    note    that    in    /meta/recipes-connectivity/dhcp/dhcp4.inc    the    dhcp    package    is    split    into    4    subpackages(PACKAGES    +=    "dhcp-server    dhcp-client    dhcp-relay    dhcp-omshell").    Now    If    I
>>>>>    remove    "dhcp"    from    IMAGE_INSTALL    and    add    these    4    subpackages'    name    into    IMAGE_INSTALL    and    run    bitbake    AGAIN,    they    can    be    normally    added    into    my    final    image.
>>>>>
>>>>>    I've    tried    to    modify    last    part    of    dhcp4.inc    as    follow:    But    bitbake    still    reported    "Unable    to    find    package    dhcp"
>>>>>    FILES_${PN}    =    ""
>>>>>    FILES_${PN}    +=    "${sbindir}/dhcpd    ${sysconfdir}/init.d/dhcp-server    ${sysconfdir}/default/dhcp-server    ${sysconfdir}/dhcp/dhcpd.conf"
>>>>>    FILES_${PN}    +=    "${sbindir}/dhcrelay    ${sysconfdir}/init.d/dhcp-relay    ${sysconfdir}/default/dhcp-relay"
>>>>>    FILES_${PN}    +=    "${base_sbindir}/dhclient    ${base_sbindir}/dhclient-script    ${sysconfdir}/dhcp/dhclient.conf"
>>>>>    FILES_${PN}    +=    "${bindir}/omshell"
>>>>>    RDEPENDS_${PN}    =    "bash"
>>>>>
>>>>>    So    How    should    I    config    bitbake    to    get    my    image    with    dhcp    by    running    bitbake    ONLY    ONCE?
>>>>
>>>>There    is    no    "dhcp"    package,    only    dhcp-client,    dhcp-relay,    dhcp-server.
>>>>Pick    the    functionality    you    need    and    use    the    appropriate    package(s)
>>>>
>>>
>>>
>>>  Thank  you  very  much.  But  maybe  my  question  is  not  clear.  What  I  mean  is:
>>>  If  I  pick  dhcp-server  dhcp-client  dhcp-relay  and  dhcp-omshell,  bitbake  will  NOT  start  to  build  and  report  can  NOT  find  these  packages.  On  the  other  hand,  if  I  pick  dhcp,  bitbake
>>>  will  start  to  build,  but  at  do_rootfs  stage  it  will  report  "Unable  to  find  package  dhcp  (dhcp)!"(at  this  moment  all  dhcp-xxx  packages  has  actually  been  generated  there).  So  I  want
>>>  to  know  how  to  config  bitbake  to  complete  the  build  and  produce  image  with  whole  or  part  of  dhcp.
>>
>>You  are  confusing  packages  with  recipes.    Bitbake  only  knows  how  to
>>build  recipes  which  in  turn  create  packages.    Most  of  the  time,  the
>>packages  have  the  same  name  as  the  recipe,  but  not  always.    Sometimes
>>a  recipe  only  creates  "component"  packages  which,  as  in  the  case  of  dhcp,
>>do  not  include  a  package  with  exactly  the  same  name  as  the  recipe.
>>
>>In  order  to  get  any  of  these  component  packages  built,  one  needs  to
>>tell  bitbake  to  build  the  recipe  (if  you  are  trying  to  force  it  on
>>the  command  line).    However,  the  image  needs  to  use  the  package  names,
>>as  that's  what  gets  installed.
>>
>>Maybe  a  bit  confusing,  but  that's  how  it  works.
>>
>>n.b.  Please  keep  replies  on  the  mailing  list  so  that  everyone  may  benefit
>>
>
> Thank you again. Could you explain more about how to tell bitbake which recipe I want and which package I want? Should I add both the recipe name(dhcp) and the package names(dhcp-xxx) into IMAGE_INSTALL of the image's recipe? If so, how does bitbake know which name in IMAGE_INSTALL is for recipe and which is for package?

As I said above, you use recipe names when you are running bitbake
from the command line, e.g.
   % bitbake dhcp
   % bitbake core-image-minimal
As part of the process of building recipes, bitbake learns what _packages_
are created by each recipe.  Thus, inside recipes, you use package names,
not recipe names.  So to add dhcp-client to your image, simply add that
package, not the recipe name.  bitbake will then realize that it needs to
build the dhcp _recipe_ in order to build the dhcp-client _package_


-- 
------------------------------------------------------------
Gary Thomas                 |  Consulting for the
MLB Associates              |    Embedded world
------------------------------------------------------------



More information about the poky mailing list