All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: Robert Yang <liezhi.yang@windriver.com>
Cc: bitbake-devel@lists.openembedded.org
Subject: Re: [PATCH 2/2] taskdata.py: set PREFERRED_VERSION when it is in the item
Date: Mon, 09 Sep 2013 16:32:53 +0100	[thread overview]
Message-ID: <1378740773.3484.126.camel@ted> (raw)
In-Reply-To: <27659d52912f96cb30a1a2d44638b262b50c1acc.1378121138.git.liezhi.yang@windriver.com>

On Mon, 2013-09-02 at 09:41 -0400, Robert Yang wrote:
> There is an error if we:
> 
> $ bitbake make (the make-3.82 will be built)
> // Edit make.inc
> $ bitbake make-3.81
> [snip]
>  *** 0004:    mfile = open(manifest)
>      0005:    entries = mfile.readlines()
>      0006:    mfile.close()
>      0007:
>      0008:    for entry in entries:
> Exception: IOError: [Errno 2] No such file or directory: xxx
> [snip]
> 
> Set the PREFERRED_VERSION if we find the version info in the item would fix the
> problem, I think that we need iterate in all the packages since it seems that
> we can't know wether the item is just a PN or PN-PV unless we compare them,
> what can I think is check len(all_p) == 1, but this doesn't work when the same
> recipe is multiple layers.
> 
> [YOCTO #5067]
> 
> Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
> ---
>  bitbake/lib/bb/taskdata.py |   15 +++++++++++++++
>  1 file changed, 15 insertions(+)
> 
> diff --git a/bitbake/lib/bb/taskdata.py b/bitbake/lib/bb/taskdata.py
> index 58fe199..38a3191 100644
> --- a/bitbake/lib/bb/taskdata.py
> +++ b/bitbake/lib/bb/taskdata.py
> @@ -430,6 +430,21 @@ class TaskData:
>  
>          all_p = dataCache.providers[item]
>  
> +        # Check whether item has the one of following formats and set the
> +        # PREFERRED_VERSION if it does:
> +        # - <pn>-<pv>
> +        # - <pn>-<pv>-<pr> (when no PE)
> +        # - <pn>-<pe>_<pv>-<pr> (when PE)
> +        for fn in all_p:
> +            pn = dataCache.pkg_fn[fn]
> +            pe = dataCache.pkg_pepvpr[fn][0]
> +            pv = dataCache.pkg_pepvpr[fn][1]
> +            pr = dataCache.pkg_pepvpr[fn][2]
> +            if not pe and (item == "%s-%s" % (pn, pv) or item == "%s-%s-%s" % (pn, pv, pr)):
> +                cfgData.setVar("PREFERRED_VERSION_" + pn, pv)
> +            elif pe and item == "%s-%s_%s-%s" % (pn, pe, pv, pr):
> +                cfgData.setVar("PREFERRED_VERSION_" + pn, pv)
> +
>          eligible, foundUnique = bb.providers.filterProviders(all_p, item, cfgData, dataCache)
>          eligible = [p for p in eligible if not self.getfn_id(p) in self.failed_fnids]
>  


This is a neat solution and I'm torn over it. On the one hand it does
address the problem. On the other hand:

a) Its implementation specific knowledge since bitbake.conf in OE-Core
is responsible for the extra PROVIDES
b) It would confuse things if some recipe does DEPENDS = "make-3.81"
c) The performance of this code isn't going to be good

b) can be fixed by adding a bb.warn(), c) might be either not much of an
issue or could be fixed, a) is a real problem though.

I've put a counter proposal on the OE-Core mailing list suggesting we
simplify PROVIDES in bitbake.conf. Depending on the feedback, we can
either take that patch or this one with a bb.warn() added. Need some
user feedback...

Cheers,

Richard



      reply	other threads:[~2013-09-09 15:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-02 13:41 [PATCH 0/2] taskdata.py: set PREFERRED_VERSION when it is in the item Robert Yang
2013-09-02 13:41 ` [PATCH 1/2] providers.py: enhance the runtime debug degbug messgae Robert Yang
2013-09-02 13:41 ` [PATCH 2/2] taskdata.py: set PREFERRED_VERSION when it is in the item Robert Yang
2013-09-09 15:32   ` Richard Purdie [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=1378740773.3484.126.camel@ted \
    --to=richard.purdie@linuxfoundation.org \
    --cc=bitbake-devel@lists.openembedded.org \
    --cc=liezhi.yang@windriver.com \
    /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.