All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Hatle <mark.hatle@windriver.com>
To: <poky@yoctoproject.org>
Subject: Re: [yocto] problem about package and subpackage
Date: Wed, 18 Apr 2012 10:45:27 -0500	[thread overview]
Message-ID: <4F8EE197.7020404@windriver.com> (raw)
In-Reply-To: <4F8ED502.9060904@mlbassoc.com>

On 4/18/12 9:51 AM, Gary Thomas wrote:
> On 2012-04-18 08:46, caterwaul wrote:
>>
>>
>>
>>
>> At  2012-04-18  22:06:36,"Gary  Thomas"<gary@mlbassoc.com>   wrote:
>>> On  2012-04-18  07:57,  caterwaul  wrote:
>>>>   At    2012-04-18    19:57:21,"Gary    Thomas"<gary@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_
>
>

This is the difference between a "DEPENDS" and an "RDEPENDS" as well.  DEPENDS 
are recipe names or recipe provides (think source code level).  While RDEPENDS 
are "runtime" depends on binary package name, or some other provide on a binary 
package level.

For an image or task, you would add "dhcp" to the DEPENDS, and dhcp-client to 
your RDEPENDS.  (It happens that an image recipe is a bit unique and RDEPENDS is 
specified as IMAGE_INSTALL...)

--Mark


      reply	other threads:[~2012-04-18 15:45 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-18 11:29 problem about package and subpackage caterwaul
2012-04-18 11:57 ` Gary Thomas
     [not found]   ` <2cd5df9.23e9d.136c5be57cf.Coremail.caterwaul@163.com>
2012-04-18 14:06     ` [yocto] " Gary Thomas
     [not found]       ` <6f919fc8.2471e.136c5eb4771.Coremail.caterwaul@163.com>
2012-04-18 14:51         ` Gary Thomas
2012-04-18 15:45           ` Mark Hatle [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F8EE197.7020404@windriver.com \
    --to=mark.hatle@windriver.com \
    --cc=poky@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.