sstate: Add detail to shared area warning

Submitted by Saul Wold on Oct. 2, 2012, 10 p.m.

Details

Message ID 1349215201-30117-1-git-send-email-sgw@linux.intel.com
State New
Headers show

Commit Message

Saul Wold Oct. 2, 2012, 10 p.m.
[YOCTO #3191]

Signed-off-by: Saul Wold <sgw@linux.intel.com>
---
 meta/classes/sstate.bbclass |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Patch hide | download patch | download mbox

diff --git a/meta/classes/sstate.bbclass b/meta/classes/sstate.bbclass
index 03f083e..ca50483 100644
--- a/meta/classes/sstate.bbclass
+++ b/meta/classes/sstate.bbclass
@@ -158,7 +158,7 @@  def sstate_install(ss, d):
             if realmatch:
                 match.append(f)
     if match:
-        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
+        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))
 
     # Write out the manifest
     f = open(manifest, "w")

Comments

Phil Blundell Oct. 2, 2012, 10 p.m.
On Tue, 2012-10-02 at 15:00 -0700, Saul Wold wrote:
> -        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
> +        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))

That seems potentially misleading: the file that needs fixing isn't
necessarily the one that triggers this warning.  What would be ideal
would be to have it output the names of all recipes that have tried to
stage the files in question so that the user can make an informed
decision about which one ought to be putting them there.

p.
Phil Blundell Oct. 2, 2012, 10:05 p.m.
On Tue, 2012-10-02 at 15:06 -0700, Saul Wold wrote:
> On 10/02/2012 03:00 PM, Phil Blundell wrote:
> > On Tue, 2012-10-02 at 15:00 -0700, Saul Wold wrote:
> >> -        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
> >> +        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))
> >
> > That seems potentially misleading: the file that needs fixing isn't
> > necessarily the one that triggers this warning.  What would be ideal
> > would be to have it output the names of all recipes that have tried to
> > stage the files in question so that the user can make an informed
> > decision about which one ought to be putting them there.
> >
> True enough, but we don't have that information at that time, but it 
> gives more information than we had before, as to which recipe was adding 
> the files, I guess if I change the wording to something like
> "verify" or "check"?

Yeah, sounds good.

p.
Saul Wold Oct. 2, 2012, 10:06 p.m.
On 10/02/2012 03:00 PM, Phil Blundell wrote:
> On Tue, 2012-10-02 at 15:00 -0700, Saul Wold wrote:
>> -        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
>> +        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))
>
> That seems potentially misleading: the file that needs fixing isn't
> necessarily the one that triggers this warning.  What would be ideal
> would be to have it output the names of all recipes that have tried to
> stage the files in question so that the user can make an informed
> decision about which one ought to be putting them there.
>
True enough, but we don't have that information at that time, but it 
gives more information than we had before, as to which recipe was adding 
the files, I guess if I change the wording to something like
"verify" or "check"?

Sau!

> p.
>
>
>
>
Martin Jansa Oct. 2, 2012, 10:11 p.m.
On Tue, Oct 02, 2012 at 11:00:53PM +0100, Phil Blundell wrote:
> On Tue, 2012-10-02 at 15:00 -0700, Saul Wold wrote:
> > -        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
> > +        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))
> 
> That seems potentially misleading: the file that needs fixing isn't
> necessarily the one that triggers this warning.  What would be ideal
> would be to have it output the names of all recipes that have tried to
> stage the files in question so that the user can make an informed
> decision about which one ought to be putting them there.

Maybe something like master.list was before
http://git.openembedded.org/openembedded-core/commit/?id=603daf343ad3f18c8adb799e3625ae2a18d94f56
with added recipe name, but that doesn't detect files already 
stored in sysroot directly from do_configure/do_compile etc like RP
suspects python recipe is doing in this case.

And yes it does, to use that to compile own extensions later.

do_compile:
        install -d ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
        install -d ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
        install -m 0644 pyconfig.h ${STAGING_INCDIR}/python${PYTHON_MAJMIN}/
        install -m 0644 Makefile ${STAGING_LIBDIR}/python${PYTHON_MAJMIN}/config/
..


Cheers,
Richard Purdie Oct. 2, 2012, 10:20 p.m.
On Tue, 2012-10-02 at 23:00 +0100, Phil Blundell wrote:
> On Tue, 2012-10-02 at 15:00 -0700, Saul Wold wrote:
> > -        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
> > +        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))
> 
> That seems potentially misleading: the file that needs fixing isn't
> necessarily the one that triggers this warning.  What would be ideal
> would be to have it output the names of all recipes that have tried to
> stage the files in question so that the user can make an informed
> decision about which one ought to be putting them there.

*if* you can get that information. The python recipe is poking things
into the sysroot outside the knowledge of sstate, then triggering a
warning. We have no way to know who put files there if it wasn't done
through sstate.

This isn't to say we shouldn't improve the message and use the sstate
manifests to find any culprits, just that we can't find an answer in all
cases.

Cheers,

Richard
Richard Purdie Oct. 2, 2012, 10:22 p.m.
On Wed, 2012-10-03 at 00:11 +0200, Martin Jansa wrote:
> On Tue, Oct 02, 2012 at 11:00:53PM +0100, Phil Blundell wrote:
> > On Tue, 2012-10-02 at 15:00 -0700, Saul Wold wrote:
> > > -        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
> > > +        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))
> > 
> > That seems potentially misleading: the file that needs fixing isn't
> > necessarily the one that triggers this warning.  What would be ideal
> > would be to have it output the names of all recipes that have tried to
> > stage the files in question so that the user can make an informed
> > decision about which one ought to be putting them there.
> 
> Maybe something like master.list was before
> http://git.openembedded.org/openembedded-core/commit/?id=603daf343ad3f18c8adb799e3625ae2a18d94f56
> with added recipe name, but that doesn't detect files already 

We can list any sstate manifest files (tmp/sstate-control) also adding
that file which may or may not have a listing of it. We might as well
just grep those files and print matches.

We are not going back to a master.list file, its a performance headache.

Cheers,

Richard
McClintock Matthew-B29882 Oct. 3, 2012, 1 a.m.
On Tue, Oct 2, 2012 at 5:22 PM, Richard Purdie
<richard.purdie@linuxfoundation.org> wrote:
> On Wed, 2012-10-03 at 00:11 +0200, Martin Jansa wrote:
>> On Tue, Oct 02, 2012 at 11:00:53PM +0100, Phil Blundell wrote:
>> > On Tue, 2012-10-02 at 15:00 -0700, Saul Wold wrote:
>> > > -        bb.warn("The recipe is trying to install files into a shared area when those files already exist. Those files are:\n   %s" % "\n   ".join(match))
>> > > +        bb.warn("The %s recipe is trying to install files into a shared area when those files already exist (please fix %s). Those files are:\n   %s" % (d.getVar('PN', True), d.getVar('FILE', True), "\n   ".join(match)))
>> >
>> > That seems potentially misleading: the file that needs fixing isn't
>> > necessarily the one that triggers this warning.  What would be ideal
>> > would be to have it output the names of all recipes that have tried to
>> > stage the files in question so that the user can make an informed
>> > decision about which one ought to be putting them there.
>>
>> Maybe something like master.list was before
>> http://git.openembedded.org/openembedded-core/commit/?id=603daf343ad3f18c8adb799e3625ae2a18d94f56
>> with added recipe name, but that doesn't detect files already
>
> We can list any sstate manifest files (tmp/sstate-control) also adding
> that file which may or may not have a listing of it. We might as well
> just grep those files and print matches.
>
> We are not going back to a master.list file, its a performance headache.

I had to do this manually recently, so this error would be very useful ;)

-M